From 4f4c6d904ef03cf03c54fd84519be5107062915b Mon Sep 17 00:00:00 2001 From: Bahfir Abbes Date: Sun, 20 Dec 2015 13:37:46 +0100 Subject: [PATCH 001/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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 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

    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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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/380] 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 da17e6e676de53dd5dafcc2c2746aa7b136e1f36 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 10 Mar 2016 23:52:06 +0100 Subject: [PATCH 042/380] New add sync with api to create/update all rates --- htdocs/admin/multicurrency.php | 103 ++++++++++++++++-- .../class/multicurrency.class.php | 11 ++ 2 files changed, 106 insertions(+), 8 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index b1ad347d8b7..afb396a0217 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/multicurrency.lib.php'; require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; + // Translations $langs->load("multicurrency"); @@ -41,10 +42,17 @@ if (! $user->admin) { // Parameters $action = GETPOST('action', 'alpha'); - +$sync_response = GETPOST('sync_response'); /* * Actions */ +if (!empty($sync_response)) +{ + $sync_response = json_decode($sync_response); + MultiCurrency::syncRates($sync_response); + exit; +} + if (preg_match('/set_(.*)/',$action,$reg)) { $code=$reg[1]; @@ -64,7 +72,7 @@ if (preg_match('/del_(.*)/',$action,$reg)) $code=$reg[1]; if (dolibarr_del_const($db, $code, 0) > 0) { - Header("Location: ".$_SERVER["PHP_SELF"]); + header("Location: ".$_SERVER["PHP_SELF"]); exit; } else @@ -224,8 +232,8 @@ print ''; print ''; @@ -244,16 +252,95 @@ print ''; print ''; print '
     '; print '
    '; print ''; -print ''; -print ' '; +print ''; +print ' '; print ''; print '
    '; print '
    '; - -print ''; - print '
    '; + +print ''; + + print ''; print ''; print ''."\n"; print ''; -print ''."\n"; +print ''."\n"; $var=!$var; print ''; diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index fd6da3816ea..c78e7784ad1 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -520,6 +520,17 @@ class MultiCurrency extends CommonObject return false; } + + /** + * Sync rates from api + * + * @param array $response array of reponse from api to sync dolibarr rates + */ + public static function syncRates($response) + { + $TRate = $response['quotes']; + $timestamp = $response['timestamp']; + } } /** From a45ffeecca5eba9e050b2c36207fc1c923897a26 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Mar 2016 18:21:57 +0100 Subject: [PATCH 043/380] Missing changelog --- ChangeLog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2144fe54620..dbc858dc1d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,18 @@ English Dolibarr ChangeLog -------------------------------------------------------------- + +***** ChangeLog for 3.5.8 compared to 3.5.7 ***** +FIX: #4291 Correctly filter external calendar GETPOSTs +FIX: bad calculation for stock value +FIX: bad stock valo +FIX: change order date on clone (as everywhere else) +FIX: CVE CVE-2015-8685 +FIX: The hours of date filter aren't correct +FIX: #3442 Remove useless syslog +FIX: #3448 Pass expected date format +FIX: #3471 3.5 Rounding issue when dispatching non-integer + ***** ChangeLog for 3.5.7 compared to 3.5.6 ***** Fix: Paypal link were broken due to SSL v3 closed. Fix: [ bug #1769 ] Error when installing to a PostgreSQL DB that contains numbers From 32d0f9a8d771685d962e405b9f0c76d9a586df19 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Mar 2016 18:27:04 +0100 Subject: [PATCH 044/380] Prepare 3.6.7 --- 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 d1784fb4863..3c1d1fdea0e 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -29,7 +29,7 @@ * \brief File that include conf.php file and commons lib like functions.lib.php */ -if (! defined('DOL_VERSION')) define('DOL_VERSION','3.6.6'); +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.6.7'); if (! defined('EURO')) define('EURO',chr(128)); // Define syslog constants From e669dac3980f7da1e11d20a4b16d7ab0484497f3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Mar 2016 18:28:39 +0100 Subject: [PATCH 045/380] Prepare 3.6.7 --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index fe638ab3902..9a0da671af3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 3.6.7 compared to 3.6.6 ***** +FIX: #4291 Correctly filter external calendar GETPOSTs +FIX: CVE CVE-2015-8685 ***** ChangeLog for 3.6.6 compared to 3.6.5 ***** FIX: #3734 Do not show empty links of deleted source objects in stock movement list From 3134af5013984bb356716e9254891788f4312ef4 Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 11 Mar 2016 23:42:02 +0100 Subject: [PATCH 046/380] Fix sync with currencylayer --- htdocs/admin/multicurrency.php | 84 ++++++++++------ .../class/multicurrency.class.php | 95 +++++++++++++++++-- 2 files changed, 142 insertions(+), 37 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index afb396a0217..e4f4fc34301 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -225,32 +225,6 @@ print '' print ''; print ''; -$var=!$var; -print ''; -print ''; -print ''; -print ''; - -$var=!$var; -print ''; -print ''; -print ''; -print ''; - print '
    '.$langs->trans("Currencies").' '.$langs->trans("Rate").''.$langs->trans("Rate").' 
    '.$langs->transnoentitiesnoconv("multicurrency_appId").' '; -print '
    '; -print ''; -print ''; -print ' '; -print ''; -print '
    '; -print '
    '.$langs->transnoentitiesnoconv("multicurrency_currencyFromToRate").' '; -print '
    '; -print ''; -print ''; -print ' '; // CURRENCY_BASE - CURRENCY_ENTITY - ID_ENTITY -print ''; -print '
    '; -print '
    '; print '
    '; @@ -306,7 +280,8 @@ print ''; +$var=false; +print ''; +print ''; +print ''."\n"; +print ''; +print ''."\n"; + +$var=!$var; +print ''; +print ''; +print ''; +print ''; + +$var=!$var; +print ''; +print ''; +print ''; +print ''; + +$var=!$var; +print ''; +print ''; +print ''; +print ''; + +print '
    '.$langs->trans("CurrencyLayerAccount").' '.$langs->trans("Value").' 
    '.$langs->transnoentitiesnoconv("multicurrency_appId").' '; +print '
    '; +print ''; +print ''; +print ' '; +print ''; +print '
    '; +print '
    '.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").' '; +print '
    '; +print ''; +print ''; +print ' '; // Default: USD +print ''; +print '
    '; +print '
    '.$langs->transnoentitiesnoconv("multicurrency_alternateCurrencySource").' '; +print '
    '; +print ''; +print ''; +print ' '; // Example: EUR +print ''; +print '
    '; +print '
    '; +print '
    '; print ''; print ''; print ''."\n"; print ''; -print ''."\n"; +print ''."\n"; $var=!$var; print ''; diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index c78e7784ad1..36c392b5930 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -208,7 +208,7 @@ class MultiCurrency extends CommonObject $this->errors[] = 'Error ' . $this->db->lasterror(); dol_syslog('Currency::fetch ' . join(',', $this->errors), LOG_ERR); - return - 1; + return -1; } } @@ -383,7 +383,7 @@ class MultiCurrency extends CommonObject * * @param double $rate rate value * - * @return bool false if KO, true if OK + * @return int -1 if KO, 1 if OK */ public function addRate($rate) { @@ -402,6 +402,40 @@ class MultiCurrency extends CommonObject } } + /** + * Try get label of code in llx_currency then add rate + * + * @param string $code currency code + * @param double $rate new rate + * + * @return int -1 if KO, 1 if OK, 2 if label found and OK + */ + function addRateFromDolibarr($code, $rate) + { + global $db, $user; + + $currency = new MultiCurrency($db); + $currency->code = $code; + $currency->name = $code; + + $sql = 'SELECT label FROM '.MAIN_DB_PREFIX.'c_currencies WHERE code_iso = "'.$db->escape($code).'"'; + $resql = $db->query($sql); + if ($resql && ($line = $db->fetch_object($resql))) + { + $currency->name = $line->label; + } + + if ($currency->create($user) > 0) + { + $currency->addRate($rate); + + if (!empty($line)) return 2; + else return 1; + } + + return -1; + } + /** * Update rate in database * @@ -520,7 +554,37 @@ class MultiCurrency extends CommonObject return false; } - + + /** + * With free account we can't set source then recalcul all rates to force another source + * + * @param stdClass $TRate Object containing all currencies rates + * @return -1 if KO, 0 if nothing, 1 if OK + */ + public static function recalculRates(&$TRate) + { + global $conf; + + if (!empty($conf->global->MULTICURRENCY_ALTERNATE_SOURCE)) + { + $alternate_source = 'USD'.$conf->global->MULTICURRENCY_ALTERNATE_SOURCE; + if (!empty($TRate->{$alternate_source})) + { + $coef = $TRate->USDUSD / $TRate->{$alternate_source}; + foreach ($TRate as $attr => &$rate) + { + $rate *= $coef; + } + + return 1; + } + + return -1; // Alternate souce not found + } + + return 0; // Nothing to do + } + /** * Sync rates from api * @@ -528,8 +592,27 @@ class MultiCurrency extends CommonObject */ public static function syncRates($response) { - $TRate = $response['quotes']; - $timestamp = $response['timestamp']; + global $db,$conf; + + $TRate = $response->quotes; + $timestamp = $response->timestamp; + + if (self::recalculRates($TRate) >= 0) + { + foreach ($TRate as $currency_code => $rate) + { + $code = substr($currency_code, 3, 3); + $obj = new MultiCurrency($db); + if ($obj->fetch(null, $code) > 0) + { + $obj->updateRate($rate); + } + else + { + self::addRateFromDolibarr($code, $rate); + } + } + } } } @@ -724,7 +807,7 @@ class CurrencyRate extends CommonObjectLine if ($error) { $this->db->rollback(); - return - 1 * $error; + return -1 * $error; } else { $this->db->commit(); From 0a533660b8834d83a5738e42c6da4e33c4bfdddb Mon Sep 17 00:00:00 2001 From: phf Date: Sat, 12 Mar 2016 21:17:09 +0100 Subject: [PATCH 047/380] Fix travis phpcs --- htdocs/compta/prelevement/create.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index 33d02bff05b..c2607d5b83d 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -65,7 +65,7 @@ if ($action == 'create') $result=$bprev->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET); if ($result < 0) { - setEventMessages($bprev->error , $bprev->errors, 'errors'); + setEventMessages($bprev->error, $bprev->errors, 'errors'); } if ($result == 0) { From 889c72611d258140c7d15b00144995c74e78aa20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 19 Mar 2016 23:00:33 +0100 Subject: [PATCH 048/380] NEW Created Account::__toString, Account::getFieldsToShow and Account::getAccountNumberOrder to refactor the way account number was shown --- htdocs/compta/bank/card.php | 223 +++++------------- htdocs/compta/bank/class/account.class.php | 102 ++++++++ htdocs/core/lib/pdf.lib.php | 96 +++----- .../class/companybankaccount.class.php | 87 ++----- htdocs/societe/rib.php | 147 +++--------- htdocs/user/bank.php | 147 +++--------- htdocs/user/class/userbankaccount.class.php | 87 ++----- 7 files changed, 295 insertions(+), 594 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index b33b0438552..defa0163891 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2014-2015 Alexandre Spangaro * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2016 Marcos García * * 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 @@ -387,65 +388,28 @@ if ($action == 'create') print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $name = 'code_banque'; + $size = 8; + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $name = 'code_guichet'; + $size = 8; + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $name = 'number'; + $size = 18; + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $name = 'cle_rib'; + $size = 3; + $content = $account->cle_rib; } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } $ibankey="IBANNumber"; $bickey="BICNumber"; @@ -651,64 +615,20 @@ else print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $content = $account->cle_rib; } - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } $ibankey="IBANNumber"; @@ -939,65 +859,28 @@ else print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $name = 'code_banque'; + $size = 8; + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $name = 'code_guichet'; + $size = 8; + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $name = 'number'; + $size = 18; + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $name = 'cle_rib'; + $size = 3; + $content = $account->cle_rib; } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } $ibankey="IBANNumber"; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index bad817d7a21..123f4537a58 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -238,6 +238,31 @@ class Account extends CommonObject ); } + /** + * Shows the account number in the appropiate format + * + * @return string + */ + public function __toString() + { + $string = ''; + + foreach ($this->getFieldsToShow() as $val) { + + if ($val == 'BankCode') { + $string .= $this->code_banque.' '; + } elseif ($val == 'BankAccountNumber') { + $string .= $this->number.' '; + } elseif ($val == 'DeskCode') { + $string .= $this->code_guichet.' '; + } elseif ($val == 'BankAccountNumberKey') { + $string .= $this->cle_rib.' '; + } + } + + return trim($string); + } + /** * Return if a bank account need to be conciliated @@ -1230,6 +1255,83 @@ class Account extends CommonObject } + /** + * Returns the fields in order that this bank account should show to the user + * Will return an array with the following values: + * - BankAccountNumber + * - BankCode + * - BankAccountNumberKey + * - DeskCode + * + * Some countries show less or more bank account properties to the user + * + * @return array + * @see useDetailedBBAN + */ + public function getFieldsToShow() + { + //Get the required properties depending on the country + $detailedBBAN = $this->useDetailedBBAN(); + + if ($detailedBBAN == 0) { + return array( + 'BankAccountNumber' + ); + } elseif ($detailedBBAN == 2) { + return array( + 'BankCode', + 'BankAccountNumber' + ); + } + + //Get the order the properties are shown + return self::getAccountNumberOrder(); + } + + /** + * Returns the components of the bank account in order. + * Will return an array with the following values: + * - BankAccountNumber + * - BankCode + * - BankAccountNumberKey + * - DeskCode + * + * @return array + */ + public static function getAccountNumberOrder() + { + global $conf; + + $fieldlists = array( + 'BankCode', + 'DeskCode', + 'BankAccountNumber', + 'BankAccountNumberKey' + ); + + if (!empty($conf->global->BANK_SHOW_ORDER_OPTION)) { + if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) { + if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') { + $fieldlists = array( + 'BankCode', + 'DeskCode', + 'BankAccountNumberKey', + 'BankAccountNumber' + ); + } + } else { + //Replace the old AccountNumber key with the new BankAccountNumber key + $fieldlists = explode( + ' ', + preg_replace('/ ?[^Bank]AccountNumber ?/', 'BankAccountNumber', + $conf->global->BANK_SHOW_ORDER_OPTION) + ); + } + } + + return $fieldlists; + } + /** * Initialise an instance with random values. diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index a952159b874..026ed206286 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -9,7 +9,7 @@ * Copyright (C) 2012-2015 Raphaël Doursenaud * Copyright (C) 2014 Cedric GROSS * Copyright (C) 2014 Teddy Andreotti <125155@supinfo.com> - * Copyright (C) 2015 Marcos García + * Copyright (C) 2015-2016 Marcos García * * 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 @@ -646,64 +646,42 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0,$default // key = check control key used only when $usedetailedbban = 1 if (empty($onlynumber)) $pdf->line($curx+1, $cury+1, $curx+1, $cury+6); - if ($usedetailedbban == 1) - { - $fieldstoshow=array('bank','desk','number','key'); - if ($conf->global->BANK_SHOW_ORDER_OPTION == 1) $fieldstoshow=array('bank','desk','key','number'); - } - else if ($usedetailedbban == 2) - { - $fieldstoshow=array('bank','number'); - } - else dol_print_error('','Value returned by function useDetailedBBAN not managed'); - - foreach ($fieldstoshow as $val) - { - if ($val == 'bank') - { - // Bank code - $tmplength=18; - $pdf->SetXY($curx, $cury+4); - $pdf->SetFont('','',$default_font_size - 3);$pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->code_banque), 0, 'C', 0); - $pdf->SetXY($curx, $cury+1); - $curx+=$tmplength; - $pdf->SetFont('','B',$default_font_size - 4);$pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankCode"), 0, 'C', 0); - if (empty($onlynumber)) $pdf->line($curx, $cury+1, $curx, $cury+7); - } - if ($val == 'desk') - { - // Desk - $tmplength=18; - $pdf->SetXY($curx, $cury+4); - $pdf->SetFont('','',$default_font_size - 3);$pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->code_guichet), 0, 'C', 0); - $pdf->SetXY($curx, $cury+1); - $curx+=$tmplength; - $pdf->SetFont('','B',$default_font_size - 4);$pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("DeskCode"), 0, 'C', 0); - if (empty($onlynumber)) $pdf->line($curx, $cury+1, $curx, $cury+7); - } - if ($val == 'number') - { - // Number - $tmplength=24; - $pdf->SetXY($curx, $cury+4); - $pdf->SetFont('','',$default_font_size - 3);$pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->number), 0, 'C', 0); - $pdf->SetXY($curx, $cury+1); - $curx+=$tmplength; - $pdf->SetFont('','B',$default_font_size - 4);$pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankAccountNumber"), 0, 'C', 0); - if (empty($onlynumber)) $pdf->line($curx, $cury+1, $curx, $cury+7); - } - if ($val == 'key') - { - // Key - $tmplength=13; - $pdf->SetXY($curx, $cury+4); - $pdf->SetFont('','',$default_font_size - 3);$pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->cle_rib), 0, 'C', 0); - $pdf->SetXY($curx, $cury+1); - $curx+=$tmplength; - $pdf->SetFont('','B',$default_font_size - 4);$pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankAccountNumberKey"), 0, 'C', 0); - if (empty($onlynumber)) $pdf->line($curx, $cury+1, $curx, $cury+7); - } - } + + foreach ($account->getFieldsToShow() as $val) + { + $pdf->SetXY($curx, $cury+4); + $pdf->SetFont('','',$default_font_size - 3); + + if ($val == 'BankCode') { + // Bank code + $tmplength = 18; + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + // Desk + $tmplength = 18; + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + // Number + $tmplength = 24; + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + // Key + $tmplength = 13; + $content = $account->cle_rib; + } else { + dol_print_error($this->db, 'Unexpected value for getFieldsToShow: '.$val); + break; + } + + $pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($content), 0, 'C', 0); + $pdf->SetXY($curx, $cury + 1); + $curx += $tmplength; + $pdf->SetFont('', 'B', $default_font_size - 4); + $pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities($val), 0, 'C', 0); + if (empty($onlynumber)) { + $pdf->line($curx, $cury + 1, $curx, $cury + 7); + } + } $curx=$savcurx; $cury+=8; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index f71b04b7730..fe34f57fd6d 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -3,6 +3,7 @@ * Copyright (C) 2010-2013 Laurent Destailleur * Copyright (C) 2012 Regis Houssin * Copyright (C) 2013 Peter Fontaine + * Copyright (C) 2016 Marcos García * * 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 @@ -60,7 +61,7 @@ class CompanyBankAccount extends Account /** * Create bank information record * - * @param Object $user User + * @param User $user User * @return int <0 if KO, >= 0 if OK */ function create($user='') @@ -222,79 +223,27 @@ class CompanyBankAccount extends Account } } - /** - * Return RIB - * - * @param boolean $displayriblabel Prepend or Hide Label - * @return string RIB - */ - function getRibLabel($displayriblabel = true) - { - global $langs,$conf; + /** + * Return RIB + * + * @param boolean $displayriblabel Prepend or Hide Label + * @return string RIB + */ + public function getRibLabel($displayriblabel = true) + { + $rib = ''; - if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib) - { - if ($this->label && $displayriblabel) $rib = $this->label." : "; + if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib) { - // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; + if ($this->label && $displayriblabel) { + $rib = $this->label." : "; } - $fieldlistsarray=explode(' ',$fieldlists); - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->code_banque.' '; - } - } + $rib .= (string) $this; + } - if ($val == 'DeskCode') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->code_guichet.' '; - } - } - - if ($val == 'BankCode') - { - if ($this->useDetailedBBAN() == 2) - { - $rib.=$this->code_banque.' '; - } - } - - if ($val == 'AccountNumber') - { - $rib.=$this->number.' '; - } - - if ($val == 'BankAccountNumberKey') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->cle_rib.' '; - } - } - } - } - else - { - $rib=''; - } - - return $rib; - } + return $rib; + } /** * Set RIB as Default diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index c7f087daf72..0d8cdcc1264 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2013 Peter Fontaine - * Copyright (C) 2015 Marcos García + * Copyright (C) 2015-2016 Marcos García * * 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 @@ -254,64 +254,22 @@ if ($socid && $action != 'edit' && $action != "create") print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) + + foreach($account->getFieldsToShow() as $val) { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + if ($val == 'BankCode') { + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $content = $account->cle_rib; } - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } print ''; @@ -473,65 +431,28 @@ if ($socid && $action == 'edit' && $user->rights->societe->creer) print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $name = 'code_banque'; + $size = 8; + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $name = 'code_guichet'; + $size = 8; + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $name = 'number'; + $size = 18; + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $name = 'cle_rib'; + $size = 3; + $content = $account->cle_rib; } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } // IBAN diff --git a/htdocs/user/bank.php b/htdocs/user/bank.php index b4f070a2187..951c3a6ef7e 100644 --- a/htdocs/user/bank.php +++ b/htdocs/user/bank.php @@ -4,7 +4,7 @@ * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2013 Peter Fontaine - * Copyright (C) 2015 Marcos García + * Copyright (C) 2015-2016 Marcos García * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify @@ -149,64 +149,20 @@ if ($id && $action != 'edit') print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $content = $account->cle_rib; } - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } print ''; @@ -290,65 +246,28 @@ if ($id && $action == 'edit' && $user->rights->user->user->creer) print ''; // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; - } - $fieldlistsarray=explode(' ',$fieldlists); - - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } + foreach ($account->getFieldsToShow() as $val) { + if ($val == 'BankCode') { + $name = 'code_banque'; + $size = 8; + $content = $account->code_banque; + } elseif ($val == 'DeskCode') { + $name = 'code_guichet'; + $size = 8; + $content = $account->code_guichet; + } elseif ($val == 'BankAccountNumber') { + $name = 'number'; + $size = 18; + $content = $account->number; + } elseif ($val == 'BankAccountNumberKey') { + $name = 'cle_rib'; + $size = 3; + $content = $account->cle_rib; } - if ($val == 'DeskCode') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'BankCode') - { - if ($account->useDetailedBBAN() == 2) - { - print ''; - print ''; - print ''; - } - } - - if ($val == 'AccountNumber') - { - print ''; - print ''; - print ''; - } - - if ($val == 'BankAccountNumberKey') - { - if ($account->useDetailedBBAN() == 1) - { - print ''; - print ''; - print ''; - } - } + print ''; + print ''; + print ''; } // IBAN diff --git a/htdocs/user/class/userbankaccount.class.php b/htdocs/user/class/userbankaccount.class.php index a91d064c7f8..4e88233fe35 100644 --- a/htdocs/user/class/userbankaccount.class.php +++ b/htdocs/user/class/userbankaccount.class.php @@ -4,6 +4,7 @@ * Copyright (C) 2012 Regis Houssin * Copyright (C) 2013 Peter Fontaine * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016 Marcos García * * 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 @@ -57,7 +58,7 @@ class UserBankAccount extends Account /** * Create bank information record * - * @param Object $user User + * @param User $user User * @return int <0 if KO, >= 0 if OK */ function create($user='') @@ -177,78 +178,26 @@ class UserBankAccount extends Account } } - /** - * Return RIB - * - * @param boolean $displayriblabel Prepend or Hide Label - * @return string RIB - */ - function getRibLabel($displayriblabel = true) - { - global $langs,$conf; + /** + * Return RIB + * + * @param boolean $displayriblabel Prepend or Hide Label + * @return string RIB + */ + public function getRibLabel($displayriblabel = true) + { + $rib = ''; - if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib) - { - if ($this->label && $displayriblabel) $rib = $this->label." : "; + if ($this->code_banque || $this->code_guichet || $this->number || $this->cle_rib) { - // Show fields of bank account - $fieldlists='BankCode DeskCode AccountNumber BankAccountNumberKey'; - if (! empty($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if (is_numeric($conf->global->BANK_SHOW_ORDER_OPTION)) - { - if ($conf->global->BANK_SHOW_ORDER_OPTION == '1') $fieldlists='BankCode DeskCode BankAccountNumberKey AccountNumber'; - } - else $fieldlists=$conf->global->BANK_SHOW_ORDER_OPTION; + if ($this->label && $displayriblabel) { + $rib = $this->label." : "; } - $fieldlistsarray=explode(' ',$fieldlists); - foreach($fieldlistsarray as $val) - { - if ($val == 'BankCode') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->code_banque.' '; - } - } + $rib .= (string) $this; + } - if ($val == 'DeskCode') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->code_guichet.' '; - } - } - - if ($val == 'BankCode') - { - if ($this->useDetailedBBAN() == 2) - { - $rib.=$this->code_banque.' '; - } - } - - if ($val == 'AccountNumber') - { - $rib.=$this->number.' '; - } - - if ($val == 'BankAccountNumberKey') - { - if ($this->useDetailedBBAN() == 1) - { - $rib.=$this->cle_rib.' '; - } - } - } - } - else - { - $rib=''; - } - - return $rib; - } + return $rib; + } } From eff5e2ebd7e611fde44f9693cbfe8a722ae93db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 19 Mar 2016 23:02:09 +0100 Subject: [PATCH 049/380] Replaced old AccountNumber key with BankAccountNumber key --- htdocs/admin/bank.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/bank.php b/htdocs/admin/bank.php index 048e351044d..e15987b69cb 100644 --- a/htdocs/admin/bank.php +++ b/htdocs/admin/bank.php @@ -155,10 +155,10 @@ print "\n"; $bankorder[0][0]=$langs->trans("BankOrderGlobal"); $bankorder[0][1]=$langs->trans("BankOrderGlobalDesc"); -$bankorder[0][2]='BankCode DeskCode AccountNumber BankAccountNumberKey'; +$bankorder[0][2]='BankCode DeskCode BankAccountNumber BankAccountNumberKey'; $bankorder[1][0]=$langs->trans("BankOrderES"); $bankorder[1][1]=$langs->trans("BankOrderESDesc"); -$bankorder[1][2]='BankCode DeskCode BankAccountNumberKey AccountNumber'; +$bankorder[1][2]='BankCode DeskCode BankAccountNumberKey BankAccountNumber'; $var = true; $i=0; From 661ee72d55a377932068266d271a7e6c88f6ddea Mon Sep 17 00:00:00 2001 From: phf Date: Sun, 20 Mar 2016 15:17:30 +0100 Subject: [PATCH 050/380] UPDATE move ajax request in js file and call a new php file to update all rates --- htdocs/admin/multicurrency.php | 91 +----------------- htdocs/multicurrency/ajax/updaterates.php | 35 +++++++ htdocs/multicurrency/js/currencylayer.js.php | 98 ++++++++++++++++++++ 3 files changed, 136 insertions(+), 88 deletions(-) create mode 100644 htdocs/multicurrency/ajax/updaterates.php create mode 100644 htdocs/multicurrency/js/currencylayer.js.php diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index e4f4fc34301..235b16ba100 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -42,16 +42,10 @@ if (! $user->admin) { // Parameters $action = GETPOST('action', 'alpha'); -$sync_response = GETPOST('sync_response'); /* * Actions */ -if (!empty($sync_response)) -{ - $sync_response = json_decode($sync_response); - MultiCurrency::syncRates($sync_response); - exit; -} + if (preg_match('/set_(.*)/',$action,$reg)) { @@ -145,8 +139,9 @@ if ($resql) */ $page_name = "MultiCurrency"; +$morejs = array('/multicurrency/js/currencylayer.js.php'); -llxHeader('', $langs->trans($page_name)); +llxHeader('', $langs->trans($page_name), '', '', '', '', $morejs); // Subheader $linkback = '' @@ -228,86 +223,6 @@ print ''; print '
    '.$langs->trans("Currencies").' '.$langs->trans("Rate").' '.$langs->trans("Rate").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("DeskCode").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("BankAccountNumber").'
    '.$langs->trans("BankAccountNumberKey").'
    '.$langs->trans($val).'
    '.$account->bank.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("DeskCode").''.$account->code_guichet.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("BankAccountNumber").''.$account->number.'
    '.$langs->trans("BankAccountNumberKey").''.$account->cle_rib.'
    '.$langs->trans($val).''.$content.'
    '.$langs->trans("BankCode").'
    '.$langs->trans("DeskCode").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("BankAccountNumber").'
    '.$langs->trans("BankAccountNumberKey").'
    '.$langs->trans($val).'
    '.$account->bank.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("DeskCode").''.$account->code_guichet.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("BankAccountNumber").''.$account->number.'
    '.$langs->trans("BankAccountNumberKey").''.$account->cle_rib.'
    '.$langs->trans($val).''.$content.'
    '.$langs->trans("IBAN").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("DeskCode").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("BankAccountNumber").'
    '.$langs->trans("BankAccountNumberKey").'
    '.$langs->trans($val).'
    '.$account->bank.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("DeskCode").''.$account->code_guichet.'
    '.$langs->trans("BankCode").''.$account->code_banque.'
    '.$langs->trans("BankAccountNumber").''.$account->number.'
    '.$langs->trans("BankAccountNumberKey").''.$account->cle_rib.'
    '.$langs->trans($val).''.$content.'
    '.$langs->trans("IBAN").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("DeskCode").'
    '.$langs->trans("BankCode").'
    '.$langs->trans("BankAccountNumber").'
    '.$langs->trans("BankAccountNumberKey").'
    '.$langs->trans($val).'
    '; print '
    '; -print ''; - $var=false; print ''; print ''; diff --git a/htdocs/multicurrency/ajax/updaterates.php b/htdocs/multicurrency/ajax/updaterates.php new file mode 100644 index 00000000000..663e68a647c --- /dev/null +++ b/htdocs/multicurrency/ajax/updaterates.php @@ -0,0 +1,35 @@ + + * Copyright (C) 2016 Pierre-Henry Favre + * + * 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 . + */ + +if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disables token renewal +if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); +if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); +if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); +if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +if (! defined('NOREQUIREHOOK')) define('NOREQUIREHOOK','1'); + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; + +$sync_response = GETPOST('sync_response'); + +if (!empty($sync_response)) +{ + $sync_response = json_decode($sync_response); + MultiCurrency::syncRates($sync_response); +} \ No newline at end of file diff --git a/htdocs/multicurrency/js/currencylayer.js.php b/htdocs/multicurrency/js/currencylayer.js.php new file mode 100644 index 00000000000..0b563aae266 --- /dev/null +++ b/htdocs/multicurrency/js/currencylayer.js.php @@ -0,0 +1,98 @@ + + * Copyright (C) 2016 Pierre-Henry Favre + * + * 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 . + */ + +include '../../main.inc.php'; +$langs->load('errors'); + +?> + +function getXMLHttpRequest() +{ + var xhr = null; + if (window.XMLHttpRequest || window.ActiveXObject) + { + if (window.ActiveXObject) + { + try + { + xhr = new ActiveXObject("Msxml2.XMLHTTP"); + } + catch(e) + { + xhr = new ActiveXObject("Microsoft.XMLHTTP"); + } + } + else + { + xhr = new XMLHttpRequest(); + } + } + else + { + if (typeof $ !== "undefined") $.jnotify("transnoentitiesnoconv('multicurrency_error_browser_incompatible'); ?>", "error"); + else alert("transnoentitiesnoconv('multicurrency_error_browser_incompatible'); ?>"); + + return null; + } + + return xhr; +} + +function request(url, callback) +{ + var xhr = getXMLHttpRequest(); + xhr.onreadystatechange = function() + { + if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) + { + callback(xhr.responseText); + } + + }; + + xhr.open("GET", url, true); + xhr.send(null); +} + +function syncronize_rates() +{ + document.getElementById("bt_sync").disabled = true; + var url_sync = "http://apilayer.net/api/live?access_key=global->MULTICURRENCY_APP_ID; ?>&format=1global->MULTICURRENCY_APP_SOURCE)) echo '&source='.$conf->global->MULTICURRENCY_APP_SOURCE; ?>"; + request(url_sync, update_rates); +} + +function update_rates(responseText) +{ + var response = JSON.parse(responseText); + if (response.success) + { + var url = "/multicurrency/ajax/updaterates.php?sync_response="+JSON.stringify(response); + request(url, reloadpage); + } + else + { + if (typeof $ !== "undefined") $.jnotify("transnoentitiesnoconv('multicurrency_syncronize_error'); ?>: "+response.error.info, "error"); + else alert("transnoentitiesnoconv('multicurrency_syncronize_error'); ?>: "+response.error.info); + } +} + +function reloadpage(responseText) +{ + document.getElementById("bt_sync").disabled = false; + window.location.href = window.location.pathname; +} From 00bf8caa8caef6c77599a70480e998c92da210c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 25 Mar 2016 17:55:58 +0100 Subject: [PATCH 051/380] FIX #4870 --- 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 6c5c1496eec..678db0f95bd 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2726,7 +2726,7 @@ abstract class CommonObject { $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; $sql.= " SET fk_incoterms = ".($id_incoterm > 0 ? $id_incoterm : "null"); - $sql.= ", location_incoterms = '".($id_incoterm > 0 ? $this->db->escape($location) : "null")."'"; + $sql.= ", location_incoterms = ".($id_incoterm > 0 ? "'".$this->db->escape($location)."'" : "null"); $sql.= " WHERE rowid = " . $this->id; dol_syslog(get_class($this).'::setIncoterms', LOG_DEBUG); $resql=$this->db->query($sql); From 08970e67d72f23d8cfd063da91b543763e118ff4 Mon Sep 17 00:00:00 2001 From: philippe grand Date: Fri, 25 Mar 2016 18:16:58 +0100 Subject: [PATCH 052/380] fix a lot of beug --- .../doc/pdf_standard.modules.php | 398 +++++++++--------- 1 file changed, 205 insertions(+), 193 deletions(-) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 0731b803ca3..c24daba0c20 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -1,6 +1,7 @@ * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016 Philippe Grand * * 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 @@ -68,7 +69,6 @@ class pdf_standard extends ModeleExpenseReport $langs->load("main"); $langs->load("trips"); $langs->load("project"); - $langs->load("trips"); $this->db = $db; $this->name = ""; @@ -91,8 +91,8 @@ class pdf_standard extends ModeleExpenseReport $this->option_condreg = 1; // Affiche conditions reglement $this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_multilang = 1; // Dispo en plusieurs langues - $this->option_escompte = 1; // Affiche si il y a eu escompte - $this->option_credit_note = 1; // Support credit notes + $this->option_escompte = 0; // Affiche si il y a eu escompte + $this->option_credit_note = 0; // Support credit notes $this->option_freetext = 1; // Support add of a personalised text $this->option_draft_watermark = 1; // Support add of a watermark on drafts @@ -104,14 +104,14 @@ class pdf_standard extends ModeleExpenseReport // Define position of columns $this->posxpiece=$this->marge_gauche+1; - $this->posxdesc=20; - $this->posxdate=85; - $this->posxtype=105; - $this->posxprojet=125; - $this->posxtva=145; - $this->posxup=162; - $this->posxqty=176; - $this->postotalttc=186; + $this->posxcomment=$this->marge_gauche+10; + $this->posxdate=80; + $this->posxtype=97; + $this->posxprojet=116; + $this->posxtva=136; + $this->posxup=148; + $this->posxqty=166; + $this->postotalttc=178; if ($this->page_largeur < 210) // To work with US executive format { $this->posxdate-=20; @@ -127,7 +127,6 @@ class pdf_standard extends ModeleExpenseReport $this->localtax1=array(); $this->localtax2=array(); $this->atleastoneratenotnull=0; - $this->atleastonediscount=0; } @@ -199,7 +198,7 @@ class pdf_standard extends ModeleExpenseReport // Create pdf instance $pdf=pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance - $heightforinfotot = 50; // Height reserved to output the info and total part + $heightforinfotot = 40; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) $pdf->SetAutoPageBreak(1,0); @@ -230,15 +229,6 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - // Positionne $this->atleastonediscount si on a au moins une remise - for ($i = 0 ; $i < $nblignes ; $i++) - { - if ($object->lines[$i]->remise_percent) - { - $this->atleastonediscount++; - } - } - // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); @@ -249,9 +239,9 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetTextColor(0,0,0); $tab_top = 95; - $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)?95:10); - $tab_height = 110; - $tab_height_newpage = 110; + $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)?65:10); + $tab_height = 130; + $tab_height_newpage = 150; // Show notes $notetoshow=empty($object->note_public)?'':$object->note_public; @@ -297,7 +287,7 @@ class pdf_standard extends ModeleExpenseReport $piece_comptable = $i +1; $curY = $nexY; - $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage + $pdf->SetFont('','', $default_font_size - 2); // Into loop to work with multipage $pdf->SetTextColor(0,0,0); $pdf->setTopMargin($tab_top_newpage); @@ -305,18 +295,17 @@ class pdf_standard extends ModeleExpenseReport $pageposbefore=$pdf->getPage(); // Description of product line - $curX = $this->posxdesc-1; + $curX = $this->posxcomment-1; $showpricebeforepagebreak=1; // Accountancy piece - $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell($this->posxcomment-$this->posxpiece-1, 3, $this->posxpiece-1, $curY, $piece_comptable, 0, 1); - + $pdf->SetXY($this->posxpiece, $curY); + $pdf->MultiCell($this->posxcomment-$this->posxpiece-0.8, 4, $piece_comptable, 0, 'C'); + // Comments - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxcomment, $curY); - $pdf->writeHTMLCell($this->posxdate-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $object->lines[$i]->comments, 0, 1); + $pdf->writeHTMLCell($this->posxdate-$this->posxcomment-0.8, 4, $this->posxcomment-1, $curY, $object->lines[$i]->comments, 0, 1); //nexY $nexY = $pdf->GetY(); @@ -326,65 +315,51 @@ class pdf_standard extends ModeleExpenseReport $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. // Date - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxdate, $curY); - $pdf->MultiCell($this->posxtype-$this->posxdate-1, 3,dol_print_date($object->lines[$i]->date,"day",false,$outpulangs), 0, 'C'); + $pdf->MultiCell($this->posxtype-$this->posxdate-0.8, 4,dol_print_date($object->lines[$i]->date,"day",false,$outpulangs), 0, 'C'); // Type - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxtype, $curY); - $pdf->MultiCell($this->posxprojet-$this->posxtype-1, 3,$outputlangs->transnoentities($object->lines[$i]->type_fees_code), 0, 'C'); + $pdf->MultiCell($this->posxprojet-$this->posxtype-0.8, 4,$outputlangs->transnoentities($object->lines[$i]->type_fees_code), 0, 'C'); // Project - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxprojet, $curY); - $pdf->MultiCell($this->posxtva-$this->posxprojet-1, 3,$object->lines[$i]->projet_ref, 0, 'C'); + $pdf->MultiCell($this->posxtva-$this->posxprojet-0.8, 4,$object->lines[$i]->projet_ref, 0, 'C'); // VAT Rate if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxtva, $curY); - $pdf->MultiCell($this->posxup-$this->posxtva-1, 3,$vat_rate, 0, 'R'); + $pdf->MultiCell($this->posxup-$this->posxtva-0.8, 4,$vat_rate, 0, 'C'); } // Unit price - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxup, $curY); - $pdf->MultiCell($this->posxqty-$this->posxup-1, 3,price($object->lines[$i]->value_unit), 0, 'R'); + $pdf->MultiCell($this->posxqty-$this->posxup-0.8, 4,price($object->lines[$i]->value_unit), 0, 'R'); // Quantity - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->posxqty, $curY); - $pdf->MultiCell($this->postotalttc-$this->posxqty, 3,$object->lines[$i]->qty, 0, 'C'); + $pdf->MultiCell($this->postotalttc-$this->posxqty-0.8, 4,$object->lines[$i]->qty, 0, 'C'); // Total with all taxes - $pdf->SetFont('','', $default_font_size - 1); $pdf->SetXY($this->postotalttc-1, $curY); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 3, price($object->lines[$i]->total_ttc), 0, 'R'); - - $nexY+=5; + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 4, price($object->lines[$i]->total_ttc), 0, 'R'); // Cherche nombre de lignes a venir pour savoir si place suffisante if ($i < ($nblignes - 1)) // If it's not last line { //on recupere la description du produit suivant - $follow_descproduitservice = $object->lines[$i+1]->desc; + $follow_comment = $object->lines[$i+1]->comments; //on compte le nombre de ligne afin de verifier la place disponible (largeur de ligne 52 caracteres) - $nblineFollowDesc = dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4; - // Et si on affiche dates de validite, on ajoute encore une ligne - if ($object->lines[$i]->date_start && $object->lines[$i]->date_end) - { - $nblineFollowDesc += 4; - } + $nblineFollowComment = dol_nboflines_bis($follow_descproduitservice,52,$outputlangs->charset_output)*4; } else // If it's last line { - $nblineFollowDesc = 0; + $nblineFollowComment = 0; } - $nexY+=2; // Passe espace entre les lignes + $nexY+=4; // Passe espace entre les lignes // Detect if some page were added automatically and output _tableau for past pages while ($pagenb < $pageposafter) @@ -590,130 +565,133 @@ class pdf_standard extends ModeleExpenseReport $pdf->SetFont('','B',18); $pdf->SetTextColor(111,81,124); $pdf->MultiCell($this->page_largeur-$this->marge_droite-$posx, 3, $object->getLibStatut(0), '', 'R'); + + if ($showaddress) + { + // Sender properties + $carac_emetteur = ''; + $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->convToOutputCharset($this->emetteur->address); + $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->convToOutputCharset($this->emetteur->zip).' '.$outputlangs->convToOutputCharset($this->emetteur->town); + $carac_emetteur .= "\n"; + // Phone + if ($this->emetteur->phone) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Phone")." : ".$outputlangs->convToOutputCharset($this->emetteur->phone); + // Fax + if ($this->emetteur->fax) $carac_emetteur .= ($carac_emetteur ? ($this->emetteur->tel ? " - " : "\n") : '' ).$outputlangs->transnoentities("Fax")." : ".$outputlangs->convToOutputCharset($this->emetteur->fax); + // EMail + if ($this->emetteur->email) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Email")." : ".$outputlangs->convToOutputCharset($this->emetteur->email); + // Web + if ($this->emetteur->url) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Web")." : ".$outputlangs->convToOutputCharset($this->emetteur->url); - // Sender properties - $carac_emetteur = ''; - $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->convToOutputCharset($this->emetteur->address); - $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->convToOutputCharset($this->emetteur->zip).' '.$outputlangs->convToOutputCharset($this->emetteur->town); - $carac_emetteur .= "\n"; - // Phone - if ($this->emetteur->phone) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Phone")." : ".$outputlangs->convToOutputCharset($this->emetteur->phone); - // Fax - if ($this->emetteur->fax) $carac_emetteur .= ($carac_emetteur ? ($this->emetteur->tel ? " - " : "\n") : '' ).$outputlangs->transnoentities("Fax")." : ".$outputlangs->convToOutputCharset($this->emetteur->fax); - // EMail - if ($this->emetteur->email) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Email")." : ".$outputlangs->convToOutputCharset($this->emetteur->email); - // Web - if ($this->emetteur->url) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Web")." : ".$outputlangs->convToOutputCharset($this->emetteur->url); + // Show sender + $posy=50; + $posx=$this->marge_gauche; + $hautcadre=40; + if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=118; - // Show sender - $posy=50; - $posx=$this->marge_gauche; - $hautcadre=40; - if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=118; + // Show sender frame + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($posx,$posy-5); + $pdf->MultiCell(66,5, $outputlangs->transnoentities("TripSociete")." :",'','L'); + $pdf->SetXY($posx,$posy); + $pdf->SetFillColor(224,224,224); + $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); + $pdf->SetTextColor(0,0,60); - // Show sender frame - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('','B', $default_font_size - 2); - $pdf->SetXY($posx,$posy-5); - $pdf->MultiCell(66,5, $outputlangs->transnoentities("TripSociete")." :",'','L'); - $pdf->SetXY($posx,$posy); - $pdf->SetFillColor(224,224,224); - $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); - $pdf->SetTextColor(0,0,60); + // Show sender name + $pdf->SetXY($posx+2,$posy+3); + $pdf->SetFont('','B', $default_font_size); + $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); - // Show sender name - $pdf->SetXY($posx+2,$posy+3); - $pdf->SetFont('','B', $default_font_size); - $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); + // Show sender information + $pdf->SetXY($posx+2,$posy+8); + $pdf->SetFont('','', $default_font_size - 1); + $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); - // Show sender information - $pdf->SetXY($posx+2,$posy+8); - $pdf->SetFont('','', $default_font_size - 1); - $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); + // Show recipient + $posy=50; + $posx=100; - // Show recipient - $posy=50; - $posx=100; + // Show recipient frame + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','B',8); + $pdf->SetXY($posx,$posy-5); + $pdf->MultiCell(80,5, $outputlangs->transnoentities("TripNDF")." :", 0, 'L'); + $pdf->rect($posx, $posy, $this->page_largeur - $this->marge_gauche - $posx, $hautcadre); - // Show recipient frame - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('','B',8); - $pdf->SetXY($posx,$posy-5); - $pdf->MultiCell(80,5, $outputlangs->transnoentities("TripNDF")." :", 0, 'L'); - $pdf->rect($posx, $posy, $this->page_largeur - $this->marge_gauche - $posx, $hautcadre); + // Informations for trip (dates and users workflow) + if ($object->fk_user_author > 0) + { + $userfee=new User($this->db); + $userfee->fetch($object->fk_user_author); $posy+=3; + $pdf->SetXY($posx+2,$posy); + $pdf->SetFont('','',10); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("DateCreation")." : ".dol_print_date($object->date_create,"day",false,$outpulangs),0,'L'); + } - // Informations for trip (dates and users workflow) - if ($object->fk_user_author > 0) - { - $userfee=new User($this->db); - $userfee->fetch($object->fk_user_author); $posy+=3; - $pdf->SetXY($posx+2,$posy); - $pdf->SetFont('','',10); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("DateCreation")." : ".dol_print_date($object->date_create,"day",false,$outpulangs),0,'L'); - } + if ($object->fk_statut==99) + { + if ($object->fk_user_refuse > 0) + { + $userfee=new User($this->db); + $userfee->fetch($object->fk_user_refuse); $posy+=6; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("REFUSEUR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_REFUS")." : ".$outputlangs->convToOutputCharset($object->detail_refuse),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_REFUS")." : ".dol_print_date($object->date_refuse,"day",false,$outpulangs),0,'L'); + } + } + else if($object->fk_statut==4) + { + if ($object->fk_user_cancel > 0) + { + $userfee=new User($this->db); + $userfee->fetch($object->fk_user_cancel); $posy+=6; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("CANCEL_USER")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_CANCEL")." : ".$outputlangs->convToOutputCharset($object->detail_cancel),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_CANCEL")." : ".dol_print_date($object->date_cancel,"day",false,$outpulangs),0,'L'); + } + } + else + { + if ($object->fk_user_approve > 0) + { + $userfee=new User($this->db); + $userfee->fetch($object->fk_user_approve); $posy+=6; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("VALIDOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("DateApprove")." : ".dol_print_date($object->date_approve,"day",false,$outpulangs),0,'L'); + } + } - if ($object->fk_statut==99) - { - if ($object->fk_user_refuse > 0) - { - $userfee=new User($this->db); - $userfee->fetch($object->fk_user_refuse); $posy+=6; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("REFUSEUR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_REFUS")." : ".$outputlangs->convToOutputCharset($object->detail_refuse),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_REFUS")." : ".dol_print_date($object->date_refuse,"day",false,$outpulangs),0,'L'); - } - } - else if($object->fk_statut==4) - { - if ($object->fk_user_cancel > 0) - { - $userfee=new User($this->db); - $userfee->fetch($object->fk_user_cancel); $posy+=6; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("CANCEL_USER")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("MOTIF_CANCEL")." : ".$outputlangs->convToOutputCharset($object->detail_cancel),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_CANCEL")." : ".dol_print_date($object->date_cancel,"day",false,$outpulangs),0,'L'); - } - } - else - { - if ($object->fk_user_approve > 0) - { - $userfee=new User($this->db); - $userfee->fetch($object->fk_user_approve); $posy+=6; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("VALIDOR")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("DateApprove")." : ".dol_print_date($object->date_approve,"day",false,$outpulangs),0,'L'); - } - } - - if($object->fk_statut==6) - { - if ($object->fk_user_paid > 0) - { - $userfee=new User($this->db); - $userfee->fetch($object->fk_user_paid); $posy+=6; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHORPAIEMENT")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); - $posy+=5; - $pdf->SetXY($posx+2,$posy); - $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_PAIEMENT")." : ".dol_print_date($object->date_paiement,"day",false,$outpulangs),0,'L'); - } - } + if($object->fk_statut==6) + { + if ($object->fk_user_paid > 0) + { + $userfee=new User($this->db); + $userfee->fetch($object->fk_user_paid); $posy+=6; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("AUTHORPAIEMENT")." : ".dolGetFirstLastname($userfee->firstname,$userfee->lastname),0,'L'); + $posy+=5; + $pdf->SetXY($posx+2,$posy); + $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_PAIEMENT")." : ".dol_print_date($object->date_paiement,"day",false,$outpulangs),0,'L'); + } + } + } } @@ -727,9 +705,13 @@ class pdf_standard extends ModeleExpenseReport * @param Translate $outputlangs Output langs * @return void */ - function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs) + function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0) { global $conf; + + // Force to disable hidetop and hidebottom + $hidebottom=0; + if ($hidetop) $hidetop=-1; $default_font_size = pdf_getPDFFontSize($outputlangs); @@ -745,56 +727,86 @@ class pdf_standard extends ModeleExpenseReport // Rect prend une longueur en 3eme param $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height); // line prend une position y en 3eme param - $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); + if (empty($hidetop)) + { + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); + } $pdf->SetFont('','',8); // Accountancy piece - $pdf->SetXY($this->posxpiece-1, $tab_top+1); - $pdf->MultiCell($this->posxdesc-$this->posxpiece-1,1,'','','R'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxpiece-1, $tab_top+1); + $pdf->MultiCell($this->posxcomment-$this->posxpiece-1,1,'','','R'); + } // Comments - $pdf->line($this->posxdesc-1, $tab_top, $this->posxdesc-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxdesc-1, $tab_top+1); - $pdf->MultiCell($this->posxdate-$this->posxdesc-1,1,$outputlangs->transnoentities("Description"),'','L'); + $pdf->line($this->posxcomment-1, $tab_top, $this->posxcomment-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxcomment-1, $tab_top+1); + $pdf->MultiCell($this->posxdate-$this->posxcomment-1,1,$outputlangs->transnoentities("Description"),'','L'); + } // Date $pdf->line($this->posxdate-1, $tab_top, $this->posxdate-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxdate-1, $tab_top+1); - $pdf->MultiCell($this->posxtype-$this->posxdate-1,2, $outputlangs->transnoentities("Date"),'','C'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxdate-1, $tab_top+1); + $pdf->MultiCell($this->posxtype-$this->posxdate-1,2, $outputlangs->transnoentities("Date"),'','C'); + } // Type $pdf->line($this->posxtype-1, $tab_top, $this->posxtype-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxtype-1, $tab_top+1); - $pdf->MultiCell($this->posxprojet-$this->posxtype-1,2, $outputlangs->transnoentities("Type"),'','C'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxtype-1, $tab_top+1); + $pdf->MultiCell($this->posxprojet-$this->posxtype-1,2, $outputlangs->transnoentities("Type"),'','C'); + } // Project $pdf->line($this->posxprojet-1, $tab_top, $this->posxprojet-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxprojet-1, $tab_top+1); - $pdf->MultiCell($this->posxtva-$this->posxprojet-1,2, $outputlangs->transnoentities("Project"),'','C'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxprojet-1, $tab_top+1); + $pdf->MultiCell($this->posxtva-$this->posxprojet-1,2, $outputlangs->transnoentities("Project"),'','C'); + } // VAT if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxtva-1, $tab_top+1); - $pdf->MultiCell($this->posxup-$this->posxtva-1,2, $outputlangs->transnoentities("VAT"),'','C'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxtva-1, $tab_top+1); + $pdf->MultiCell($this->posxup-$this->posxtva-1,2, $outputlangs->transnoentities("VAT"),'','C'); + } } // Unit price $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxup-1, $tab_top+1); - $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PriceU"),'','C'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxup-1, $tab_top+1); + $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PriceU"),'','C'); + } // Quantity $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); - $pdf->SetXY($this->posxqty-1, $tab_top+1); - $pdf->MultiCell($this->postotalttc-$this->posxqty,2, $outputlangs->transnoentities("Qty"),'','R'); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxqty-1, $tab_top+1); + $pdf->MultiCell($this->postotalttc-$this->posxqty,2, $outputlangs->transnoentities("Qty"),'','R'); + } // Total with all taxes $pdf->line($this->postotalttc, $tab_top, $this->postotalttc, $tab_top + $tab_height); - $pdf->SetXY($this->postotalttc-1, $tab_top+1); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 2, $outputlangs->transnoentities("TotalTTC"),'','R'); + if (empty($hidetop)) + { + $pdf->SetXY($this->postotalttc-1, $tab_top+1); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalttc, 2, $outputlangs->transnoentities("TotalTTC"),'','R'); + } $pdf->SetTextColor(0,0,0); } From b3285996dc4bd557580605b170c85e125c48bf8a Mon Sep 17 00:00:00 2001 From: philippe grand Date: Sat, 26 Mar 2016 12:39:08 +0100 Subject: [PATCH 053/380] fix travis issue from commit 139dc9a7 --- .../core/modules/expensereport/doc/pdf_standard.modules.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index c24daba0c20..ee5d0815096 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -696,13 +696,15 @@ class pdf_standard extends ModeleExpenseReport } /** - * Affiche la grille des lignes de factures + * Show table for lines * * @param PDF $pdf Object PDF * @param int $tab_top Tab top * @param int $tab_height Tab height * @param int $nexY next y * @param Translate $outputlangs Output langs + * @param int $hidetop 1=Hide top bar of array and title, 0=Hide nothing, -1=Hide only title + * @param int $hidebottom Hide bottom bar of array * @return void */ function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0) From b8f3264f60b7174674746b3ea9499e64d7c14162 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 29 Mar 2016 11:37:35 +0200 Subject: [PATCH 054/380] FIX: dont retrieve new buying price on margin display --- htdocs/margin/lib/margins.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/margin/lib/margins.lib.php b/htdocs/margin/lib/margins.lib.php index 1f904c44f2d..fa33db181ec 100644 --- a/htdocs/margin/lib/margins.lib.php +++ b/htdocs/margin/lib/margins.lib.php @@ -104,7 +104,7 @@ function getMarginInfos($pvht, $remise_percent, $tva_tx, $localtax1_tx, $localta $marge_tx_ret=''; $marque_tx_ret=''; - if ($fk_pa > 0) { + if ($fk_pa > 0 && empty($paht)) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; $product = new ProductFournisseur($db); if ($product->fetch_product_fournisseur_price($fk_pa)) From 024f55d46182eb5d10035161fb396d687d2d0376 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 29 Mar 2016 12:02:36 +0200 Subject: [PATCH 055/380] FIX: systematic rounding causes prices to be updated without reason --- htdocs/core/tpl/objectline_create.tpl.php | 6 ------ htdocs/core/tpl/objectline_edit.tpl.php | 6 ------ 2 files changed, 12 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 108fb8e1339..feeb61a11e4 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -320,18 +320,12 @@ if (! empty($usemargins) && $user->rights->margins->creer) jQuery(document).ready(function() { global->DISPLAY_MARGIN_RATES)) { ?> - $('#addline').click(function (e) { - return checkFreeLine(e, "np_marginRate"); - }); $("input[name='np_marginRate']:first").blur(function(e) { return checkFreeLine(e, "np_marginRate"); }); global->DISPLAY_MARK_RATES)) { ?> - $('#addline').click(function (e) { - return checkFreeLine(e, "np_markRate"); - }); $("input[name='np_markRate']:first").blur(function(e) { return checkFreeLine(e, "np_markRate"); }); diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index bb75b007524..a9f86f3123c 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -247,9 +247,6 @@ if (! empty($conf->margin->enabled)) if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { ?> - $('#savelinebutton').click(function (e) { - return checkEditLine(e, "np_marginRate"); - }); $("input[name='np_marginRate']:first").blur(function(e) { return checkEditLine(e, "np_marginRate"); }); @@ -258,9 +255,6 @@ if (! empty($conf->margin->enabled)) if (! empty($conf->global->DISPLAY_MARK_RATES)) { ?> - $('#savelinebutton').click(function (e) { - return checkEditLine(e, "np_markRate"); - }); $("input[name='np_markRate']:first").blur(function(e) { return checkEditLine(e, "np_markRate"); }); From 5d4c959d2eadd3f1c18e44f4f14f355623b91efb Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Thu, 31 Mar 2016 12:18:26 +0200 Subject: [PATCH 056/380] Add hook parameters on New search Box --- htdocs/core/ajax/selectsearchbox.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index 6c91974b4a4..1bb2aa47003 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -113,7 +113,7 @@ if (! empty($conf->expensereport->enabled) && empty($conf->global->MAIN_SEARCHFO } -/* Do we really need this. We already have a select for users, and we should be able to filter into user list on employee flag +/* Do we really need this. We already have a select for users, and we should be able to filter into user list on employee flag if (! empty($conf->hrm->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_EMPLOYEE) && $user->rights->hrm->employee->read) { $langs->load("hrm"); @@ -122,7 +122,7 @@ if (! empty($conf->hrm->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_EMPLO */ // Execute hook addSearchEntry -$parameters=array(); +$parameters=array('search_boxvalue'=>$search_boxvalue); $reshook=$hookmanager->executeHooks('addSearchEntry',$parameters); if (empty($reshook)) { From f567a2a0ce3fb46c2e3b97ce451023c0938a233e Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Thu, 31 Mar 2016 12:50:40 +0200 Subject: [PATCH 057/380] Search box hook --- htdocs/core/ajax/selectsearchbox.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index 1bb2aa47003..a5f9edde28e 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -34,6 +34,8 @@ if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); $res=@include '../../main.inc.php'; include_once DOL_DOCUMENT_ROOT.'/core/lib/json.lib.php'; +//global $hookmanager; +$hookmanager->initHooks(array('searchform')); $search_boxvalue=GETPOST('q'); @@ -120,7 +122,6 @@ if (! empty($conf->hrm->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_EMPLO $searchform.=printSearchForm(DOL_URL_ROOT.'/hrm/employee/list.php', DOL_URL_ROOT.'/hrm/employee/list.php', $langs->trans("Employees"), 'employee', 'search_all', 'M', 'searchleftemployee', img_object('','user')); } */ - // Execute hook addSearchEntry $parameters=array('search_boxvalue'=>$search_boxvalue); $reshook=$hookmanager->executeHooks('addSearchEntry',$parameters); @@ -131,13 +132,6 @@ if (empty($reshook)) else $arrayresult=$hookmanager->resArray; - - - - - - - print json_encode($arrayresult); if (is_object($db)) $db->close(); From 1419b0e385e1de0032fcc80c6f77a60556de2f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 31 Mar 2016 17:06:10 +0200 Subject: [PATCH 058/380] Update llx_establishment.sql --- htdocs/install/mysql/tables/llx_establishment.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_establishment.sql b/htdocs/install/mysql/tables/llx_establishment.sql index 8ddc71e1fba..fcf57ac28b6 100644 --- a/htdocs/install/mysql/tables/llx_establishment.sql +++ b/htdocs/install/mysql/tables/llx_establishment.sql @@ -19,7 +19,7 @@ -- Structure de la table llx_establishment -- -CREATE TABLE IF NOT EXISTS llx_establishment ( +CREATE TABLE llx_establishment ( rowid integer NOT NULL auto_increment PRIMARY KEY, entity integer NOT NULL DEFAULT 1, name varchar(50), From 125256c825f04c641658bad3436e19016f75fe6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 31 Mar 2016 17:11:17 +0200 Subject: [PATCH 059/380] Update llx_usergroup_extrafields.sql No need IF NOT EXISTS at install time --- htdocs/install/mysql/tables/llx_usergroup_extrafields.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_usergroup_extrafields.sql b/htdocs/install/mysql/tables/llx_usergroup_extrafields.sql index 0a89810dce5..eca555c4d78 100644 --- a/htdocs/install/mysql/tables/llx_usergroup_extrafields.sql +++ b/htdocs/install/mysql/tables/llx_usergroup_extrafields.sql @@ -16,7 +16,7 @@ -- -- =================================================================== -CREATE TABLE IF NOT EXISTS llx_usergroup_extrafields ( +CREATE TABLE llx_usergroup_extrafields ( rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, fk_object integer NOT NULL, From 90e74b346e7081eb998165f87afe662b12694bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 31 Mar 2016 17:13:38 +0200 Subject: [PATCH 060/380] Update llx_propal_merge_pdf_product.sql No need IF NOT EXISTS at install time --- htdocs/install/mysql/tables/llx_propal_merge_pdf_product.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_propal_merge_pdf_product.sql b/htdocs/install/mysql/tables/llx_propal_merge_pdf_product.sql index 93af93c9190..7f29f4a4614 100644 --- a/htdocs/install/mysql/tables/llx_propal_merge_pdf_product.sql +++ b/htdocs/install/mysql/tables/llx_propal_merge_pdf_product.sql @@ -14,7 +14,7 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . -CREATE TABLE IF NOT EXISTS llx_propal_merge_pdf_product ( +CREATE TABLE llx_propal_merge_pdf_product ( rowid integer NOT NULL auto_increment PRIMARY KEY, fk_product integer NOT NULL, file_name varchar(200) NOT NULL, From 2a19326a3f6c28b7e4261ae48d35b0bec8d1fc49 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 31 Mar 2016 21:47:32 +0200 Subject: [PATCH 061/380] FIX Missing database escaping on supplier price insert/update --- htdocs/product/class/product.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 57fbcd01257..78ea0cb39c7 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2506,7 +2506,7 @@ class Product extends CommonObject $sql = "SELECT rowid, fk_product"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_soc = ".$id_fourn; - $sql.= " AND ref_fourn = '".$ref_fourn."'"; + $sql.= " AND ref_fourn = '".$this->db->escape($ref_fourn)."'"; $sql.= " AND fk_product != ".$this->id; $sql.= " AND entity = ".$conf->entity; @@ -2528,7 +2528,7 @@ class Product extends CommonObject $sql = "SELECT rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_soc = ".$id_fourn; - if ($ref_fourn) $sql.= " AND ref_fourn = '".$ref_fourn."'"; + if ($ref_fourn) $sql.= " AND ref_fourn = '".$this->db->escape($ref_fourn)."'"; else $sql.= " AND (ref_fourn = '' OR ref_fourn IS NULL)"; $sql.= " AND quantity = '".$quantity."'"; $sql.= " AND fk_product = ".$this->id; @@ -2557,7 +2557,7 @@ class Product extends CommonObject $sql.= ", ".$conf->entity; $sql.= ", ".$this->id; $sql.= ", ".$id_fourn; - $sql.= ", '".$ref_fourn."'"; + $sql.= ", '".$this->db->escape($ref_fourn)."'"; $sql.= ", ".$quantity; $sql.= ", ".$user->id; $sql.= ", 0"; From d4529d19c7bc760a9e5153ab3f632dd247a122ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 1 Apr 2016 17:32:58 +0200 Subject: [PATCH 062/380] Update facture.php ref_client in order ref_customer in shipping --- 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 5fab485e655..c13d8197801 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1906,7 +1906,7 @@ if ($action == 'create') $objectsrc->fetch_thirdparty(); $projectid = (! empty($projectid) ? $projectid : $objectsrc->fk_project); - $ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : ''); + $ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : (! empty($objectsrc->ref_customer) ? $objectsrc->ref_customer:'')); $ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : ''); // only if socid not filled else it's allready done upper From 599b225489ceca826190f331a1070e8d85c0c9f3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 2 Apr 2016 14:15:38 +0200 Subject: [PATCH 063/380] FIX Creation of thumb image for size "small" was not done. Conflicts: htdocs/core/lib/files.lib.php --- htdocs/core/lib/files.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 8fc5bea72b6..42615ec51f4 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1139,7 +1139,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite=0, $donotupdatesessio { // Create small thumbs for image (Ratio is near 16/9) // Used on logon for example - $imgThumbSmall = vignette($destpath, $maxwidthsmall, $maxheigthsmall, '_small', 50, "thumbs"); + $imgThumbSmall = vignette($destpath, $maxwidthsmall, $maxheightsmall, '_small', 50, "thumbs"); // Create mini thumbs for image (Ratio is near 16/9) // Used on menu or for setup page for example $imgThumbMini = vignette($destpath, $maxwidthmini, $maxheightmini, '_mini', 50, "thumbs"); From cea48a8dd6a1f269501234428755c1fcb71ca5fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 Apr 2016 19:04:03 +0200 Subject: [PATCH 064/380] FIX bad translation language loaded FIX When changing thirdparty on event card, the showempty option of contact was lost. FIX Bad placeholder shown on combo to select a thirdparty. --- htdocs/comm/action/card.php | 29 ++++++++++++-------- htdocs/core/ajax/contacts.php | 3 +- htdocs/core/class/html.formactions.class.php | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 19633aa13d7..62512562e9a 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -1090,17 +1090,22 @@ if ($id > 0) // Thirdparty - Contact if ($conf->societe->enabled) { - print ''; + print ''; print ''; + $events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php?showempty=1',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled')); + print $form->select_company($object->socid, 'socid', '', 'SelectThirdParty', 1, 0, $events, 0); + print ''; + print ''; // Contact - print ''; + print ''; + print ''; + print ''; } // Project @@ -1108,10 +1113,10 @@ if ($id > 0) { $formproject=new FormProjets($db); - $langs->load("project"); + $langs->load("projects"); - print ''; @@ -1136,7 +1141,7 @@ if ($id > 0) print ''; @@ -1281,7 +1286,7 @@ if ($id > 0) // Third party - Contact if ($conf->societe->enabled) { - print ''; } // Title - print 'global->AGENDA_USE_EVENT_TYPE)?' class="fieldrequired"':'').'>'.$langs->trans("Title").''; + print 'global->AGENDA_USE_EVENT_TYPE)?' class="fieldrequired titlefieldcreate"':'').'>'.$langs->trans("Title").''; // Full day print ''; @@ -664,7 +664,7 @@ if ($action == 'create') // Date start $datep=($datep?$datep:$object->datep); if (GETPOST('datep','int',1)) $datep=dol_stringtotime(GETPOST('datep','int',1),0); - print ''; // Status - print ''; + print ''; print ''; } } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index cee89d0970f..702ecb2042f 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -321,7 +321,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 55413f7ed1d..51e453393a0 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -260,7 +260,7 @@ else $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 9f1cc038cc5..6503ac5ca41 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -98,7 +98,7 @@ $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('project'); +$extralabels = $extrafields->fetch_name_optionals_label('projet'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -213,16 +213,15 @@ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_extrafields as ef on (p.rowid = ef.fk_object)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status as cls on p.fk_opp_status = cls.rowid"; - // We'll need this table joined to the select in order to filter by sale if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON sc.fk_soc = s.rowid"; if ($search_user > 0) { $sql.=", ".MAIN_DB_PREFIX."element_contact as ecp"; } - $sql.= " WHERE p.entity IN (".getEntity('project',1).')'; if (! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users // No need to check company, as filtering of projects must be done by getProjectsAuthorizedForUser @@ -271,6 +270,19 @@ if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); if ($search_sale > 0) $sql.= " AND sc.fk_user = " .$search_sale; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))"; if ($search_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_user; +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -484,15 +496,30 @@ if ($resql) print ''; print ''; } - // Extra fields - if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) - { - foreach($extrafields->attribute_label as $key => $val) + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } - } - // Fields from hook + } + // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index 8caf413c8ee..8ec4eeffedb 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -66,7 +66,7 @@ $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('project'); +$extralabels = $extrafields->fetch_name_optionals_label('projet_task'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // Security check @@ -226,6 +226,7 @@ $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid,"; $sql.= " ".MAIN_DB_PREFIX."projet_task as t"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task_extrafields as ef on (t.rowid = ef.fk_object)"; if ($search_project_user > 0) { $sql.=", ".MAIN_DB_PREFIX."element_contact as ecp"; @@ -275,6 +276,19 @@ if ($search_projectstatus >= 0) $sql .= " AND p.fk_statut = ".$db->escape($searc if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); if ($search_project_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_project_user; if ($search_task_user > 0) $sql.= " AND ect.fk_c_type_contact IN (".join(',',array_keys($listoftaskcontacttype)).") AND ect.element_id = t.rowid AND ect.fk_socpeople = ".$search_task_user; +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -479,14 +493,29 @@ if ($resql) if (! empty($arrayfields['t.duration_effective']['checked'])) print ''; if (! empty($arrayfields['t.progress_calculated']['checked'])) print ''; if (! empty($arrayfields['t.progress']['checked'])) print ''; - // Extra fields - if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) - { - foreach($extrafields->attribute_label as $key => $val) + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } - } + } // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index d32032ef52d..3e49c5954b9 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -408,7 +408,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -604,35 +604,35 @@ if ($resql) { print ''; } // Barcode if (! empty($arrayfields['s.barcode']['checked'])) { print ''; } // Customer code if (! empty($arrayfields['s.code_client']['checked'])) { print ''; } // Supplier code if (! empty($arrayfields['s.code_fournisseur']['checked'])) { print ''; } // Account Customer code if (! empty($arrayfields['s.code_compta']['checked'])) { print ''; } // Account Supplier code @@ -646,21 +646,21 @@ if ($resql) if (! empty($arrayfields['s.town']['checked'])) { print ''; } // Zip if (! empty($arrayfields['s.zip']['checked'])) { print ''; } // State if (! empty($arrayfields['state.nom']['checked'])) { print ''; } // Country @@ -681,42 +681,42 @@ if ($resql) { // IdProf1 print ''; } if (! empty($arrayfields['s.siret']['checked'])) { // IdProf2 print ''; } if (! empty($arrayfields['s.ape']['checked'])) { // IdProf3 print ''; } if (! empty($arrayfields['s.idprof4']['checked'])) { // IdProf4 print ''; } if (! empty($arrayfields['s.idprof5']['checked'])) { // IdProf5 print ''; } if (! empty($arrayfields['s.idprof6']['checked'])) { // IdProf6 print ''; } @@ -782,11 +782,14 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; } diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 161e39a89a8..f4c77644f1f 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -213,7 +213,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -368,7 +368,22 @@ if ($result) { foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } } // Fields from hook From 76ad7f36b924f0d607401d785259d5b8a2f76728 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 Apr 2016 16:03:35 +0200 Subject: [PATCH 070/380] FIX Filter/search on extrafields on lists --- htdocs/comm/propal/list.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index a952c7bb873..ea0e1ce2de2 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -297,7 +297,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -550,12 +550,15 @@ if ($result) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print ''; } } From 43165bab022798c2e06bda2e678db0cb7a72cfc7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 Apr 2016 16:02:29 +0200 Subject: [PATCH 071/380] FIX Filter/search on extrafields on lists Conflicts: dev/skeletons/skeleton_list.php htdocs/projet/list.php htdocs/societe/list.php --- dev/skeletons/skeleton_list.php | 25 ++++++++++++--- htdocs/contact/list.php | 2 +- htdocs/core/class/html.form.class.php | 2 +- htdocs/product/list.php | 2 +- htdocs/projet/list.php | 39 ++++++++++++++++++++---- htdocs/projet/tasks/list.php | 43 +++++++++++++++++++++----- htdocs/societe/list.php | 44 ++++++++++++++++----------- htdocs/user/index.php | 19 ++++++++++-- 8 files changed, 136 insertions(+), 40 deletions(-) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index 834e0b07e2f..cd2ed5405db 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -216,7 +216,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -322,10 +322,25 @@ if ($resql) // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { - foreach($extrafields->attribute_label as $key => $val) - { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; - } + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } + } } // Fields from hook $parameters=array('arrayfields'=>$arrayfields); diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index ee4add6d4c5..d9fa371e443 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -322,7 +322,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 0123d539f50..c925a587b33 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4841,7 +4841,7 @@ class Form /* var_dump($val); var_dump(array_key_exists('enabled', $val)); var_dump(!$val['enabled']);*/ - if (array_key_exists('enabled', $val) && ! $val['enabled']) + if (array_key_exists('enabled', $val) && isset($val['enabled']) && ! $val['enabled']) { unset($array[$key]); // We don't want this field continue; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 8e4f1ac20aa..c78483bb93d 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -260,7 +260,7 @@ else $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 9ae3513fa8a..f520e7ba1a6 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -106,7 +106,7 @@ $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('project'); +$extralabels = $extrafields->fetch_name_optionals_label('projet'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -218,16 +218,15 @@ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_extrafields as ef on (p.rowid = ef.fk_object)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status as cls on p.fk_opp_status = cls.rowid"; - // We'll need this table joined to the select in order to filter by sale if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON sc.fk_soc = s.rowid"; if ($search_user > 0) { $sql.=", ".MAIN_DB_PREFIX."element_contact as ecp"; } - $sql.= " WHERE p.entity IN (".getEntity('project').')'; if (! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // public and assigned to, or restricted to company for external users // No need to check company, as filtering of projects must be done by getProjectsAuthorizedForUser @@ -274,6 +273,19 @@ if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); if ($search_sale > 0) $sql.= " AND sc.fk_user = " .$search_sale; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))"; if ($search_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_user; +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -481,10 +493,25 @@ if ($resql) { foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } - } - // Fields from hook + } + // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index e140ee2f672..0f955484bfe 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -66,7 +66,7 @@ $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('project'); +$extralabels = $extrafields->fetch_name_optionals_label('projet_task'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // Security check @@ -226,6 +226,7 @@ $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid,"; $sql.= " ".MAIN_DB_PREFIX."projet_task as t"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task_extrafields as ef on (t.rowid = ef.fk_object)"; if ($search_project_user > 0) { $sql.=", ".MAIN_DB_PREFIX."element_contact as ecp"; @@ -275,6 +276,19 @@ if ($search_projectstatus >= 0) $sql .= " AND p.fk_statut = ".$db->escape($searc if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); if ($search_project_user > 0) $sql.= " AND ecp.fk_c_type_contact IN (".join(',',array_keys($listofprojectcontacttype)).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".$search_project_user; if ($search_task_user > 0) $sql.= " AND ect.fk_c_type_contact IN (".join(',',array_keys($listoftaskcontacttype)).") AND ect.element_id = t.rowid AND ect.fk_socpeople = ".$search_task_user; +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook @@ -478,14 +492,29 @@ if ($resql) if (! empty($arrayfields['t.duration_effective']['checked'])) print ''; if (! empty($arrayfields['t.progress_calculated']['checked'])) print ''; if (! empty($arrayfields['t.progress']['checked'])) print ''; - // Extra fields - if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) - { - foreach($extrafields->attribute_label as $key => $val) + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } - } + } // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 48202706ff7..80e54742765 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -101,7 +101,7 @@ $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('thirdparty'); +$extralabels = $extrafields->fetch_name_optionals_label('societe'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -170,7 +170,6 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); } } - /* @@ -402,7 +401,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -593,35 +592,35 @@ if ($resql) { print ''; } // Barcode if (! empty($arrayfields['s.barcode']['checked'])) { print ''; } // Customer code if (! empty($arrayfields['s.code_client']['checked'])) { print ''; } // Supplier code if (! empty($arrayfields['s.code_fournisseur']['checked'])) { print ''; } // Account Customer code if (! empty($arrayfields['s.code_compta']['checked'])) { print ''; } // Account Supplier code @@ -635,14 +634,14 @@ if ($resql) if (! empty($arrayfields['s.town']['checked'])) { print ''; } // Zip if (! empty($arrayfields['s.zip']['checked'])) { print ''; } // Country @@ -663,42 +662,42 @@ if ($resql) { // IdProf1 print ''; } if (! empty($arrayfields['s.siret']['checked'])) { // IdProf2 print ''; } if (! empty($arrayfields['s.ape']['checked'])) { // IdProf3 print ''; } if (! empty($arrayfields['s.idprof4']['checked'])) { // IdProf4 print ''; } if (! empty($arrayfields['s.idprof5']['checked'])) { // IdProf5 print ''; } if (! empty($arrayfields['s.idprof6']['checked'])) { // IdProf6 print ''; } @@ -760,7 +759,18 @@ if ($resql) { if (! empty($arrayfields["ef.".$key]['checked'])) { - print ''; } } diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 8710dc87e04..bc2f9249dea 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -213,7 +213,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -368,7 +368,22 @@ if ($result) { foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) print ''; + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } } } // Fields from hook From 198b9ce8fe6f519f6d5d73b6fdd80ea2b3f02a38 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Mon, 4 Apr 2016 18:28:55 +0200 Subject: [PATCH 072/380] Select Preferred Sending Method for a customer --- htdocs/comm/card.php | 33 ++++++++++++++++-- htdocs/comm/propal.php | 3 ++ .../install/mysql/migration/3.9.0-4.0.0.sql | 1 + htdocs/install/mysql/tables/llx_societe.sql | 1 + htdocs/societe/admin/societe.php | 34 +++++++++++++++++++ htdocs/societe/class/societe.class.php | 3 ++ 6 files changed, 73 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index c5630d8c6c1..39e3569fb48 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -124,6 +124,14 @@ if (empty($reshook)) if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } + // mode de reglement + if ($action == 'setshippingmethod' && $user->rights->societe->creer) + { + $object->fetch($id); + $result = $object->setShippingMethod(GETPOST('shipping_method_id','int')); + if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); + } + // assujetissement a la TVA if ($action == 'setassujtva' && $user->rights->societe->creer) { @@ -239,8 +247,8 @@ if ($id > 0) if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { print ''; + print ($object->prefix_comm?$object->prefix_comm:' '); + print ''; } if ($object->client) @@ -431,6 +439,27 @@ if ($id > 0) print ''; } + // Preferred shipping Method + if (! empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD)) { + print '"; + print ''; + } + // Categories if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) { print ''; diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 7d85567f480..d0ee6a81f50 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1304,6 +1304,9 @@ if ($action == 'create') print $soc->getNomUrl(1); print ''; print ''; + if (! empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD) && ! empty($soc->shipping_method_id)) { + $shipping_method_id = $soc->shipping_method_id; + } } else { print ''; print ''; +$var=!$var; +print ""; +print ''; +print ''; +print ''; +print ''; + + /* // COMPANY_USE_SEARCH_TO_SELECT $var=!$var; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index babd8387c5b..d809cd0d3dd 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -840,6 +840,7 @@ class Societe extends CommonObject $sql .= ",cond_reglement = ".(! empty($this->cond_reglement_id)?"'".$this->db->escape($this->cond_reglement_id)."'":"null"); $sql .= ",mode_reglement_supplier = ".(! empty($this->mode_reglement_supplier_id)?"'".$this->db->escape($this->mode_reglement_supplier_id)."'":"null"); $sql .= ",cond_reglement_supplier = ".(! empty($this->cond_reglement_supplier_id)?"'".$this->db->escape($this->cond_reglement_supplier_id)."'":"null"); + $sql .= ", fk_shipping_method_id = ".(! empty($this->shipping_method_id)?"'".$this->db->escape($this->shipping_method_id)."'":"null"); $sql .= ",client = " . (! empty($this->client)?$this->client:0); $sql .= ",fournisseur = " . (! empty($this->fournisseur)?$this->fournisseur:0); @@ -1018,6 +1019,7 @@ class Societe extends CommonObject $sql .= ', s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.parent, s.barcode'; $sql .= ', s.fk_departement, s.fk_pays as country_id, s.fk_stcomm, s.remise_client, s.mode_reglement, s.cond_reglement, s.tva_assuj'; $sql .= ', s.mode_reglement_supplier, s.cond_reglement_supplier, s.localtax1_assuj, s.localtax1_value, s.localtax2_assuj, s.localtax2_value, s.fk_prospectlevel, s.default_lang, s.logo'; + $sql .= ', s.fk_shipping_method'; $sql .= ', s.outstanding_limit, s.import_key, s.canvas, s.fk_incoterms, s.location_incoterms'; $sql .= ', s.fk_multicurrency, s.multicurrency_code'; $sql .= ', fj.libelle as forme_juridique'; @@ -1144,6 +1146,7 @@ class Societe extends CommonObject $this->cond_reglement_id = $obj->cond_reglement; $this->mode_reglement_supplier_id = $obj->mode_reglement_supplier; $this->cond_reglement_supplier_id = $obj->cond_reglement_supplier; + $this->shipping_method_id = ($obj->fk_shipping_method>0)?$obj->fk_shipping_method:null; $this->client = $obj->client; $this->fournisseur = $obj->fournisseur; From e53501f89dc01076c1fbfb1c8745f01c6d5aacc4 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Mon, 4 Apr 2016 18:37:04 +0200 Subject: [PATCH 073/380] add lang --- htdocs/comm/card.php | 2 +- htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 39e3569fb48..0d2c49f06cc 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -124,7 +124,7 @@ if (empty($reshook)) if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } - // mode de reglement + // customer preferred shipping method if ($action == 'setshippingmethod' && $user->rights->societe->creer) { $object->fetch($id); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 814279635e8..3bfcdfa8afe 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1109,6 +1109,7 @@ BrowserIsKO=You are using the web browser %s. This browser is known to be a bad XDebugInstalled=XDebug is loaded. XCacheInstalled=XCache is loaded. AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +AskForPreferredShippingMethod=Ask for preferred Sending Method for Third Parties. FieldEdition=Edition of field %s FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) GetBarCode=Get barcode From 6c87dfafae3c2a63c6a0d2b872d7646959fd8de6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 10:12:03 +0200 Subject: [PATCH 074/380] FIX Bad translation key --- htdocs/core/modules/modExpedition.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modExpedition.class.php b/htdocs/core/modules/modExpedition.class.php index 7cc4c79a00c..fb5e49d2272 100644 --- a/htdocs/core/modules/modExpedition.class.php +++ b/htdocs/core/modules/modExpedition.class.php @@ -230,7 +230,7 @@ class modExpedition extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='Shipments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("expedition","shipment","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateSending",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnit'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateSending",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnits'); if ($idcontacts && ! empty($conf->global->SHIPMENT_ADD_CONTACTS_IN_EXPORT)) $this->export_fields_array[$r]+=array('sp.rowid'=>'IdContact','sp.lastname'=>'Lastname','sp.firstname'=>'Firstname','sp.note_public'=>'NotePublic'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text"); $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_customer'=>"Text",'c.date_creation'=>"Date",'c.date_delivery'=>"Date",'c.tracking_number'=>"Numeric",'c.height'=>"Numeric",'c.width'=>"Numeric",'c.weight'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'ed.qty'=>"Numeric",'d.nom'=>'Text'); From a656e42d42313db3eda3bd5caf9a804aa8e88ef1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 10:16:07 +0200 Subject: [PATCH 075/380] Missing translation --- htdocs/exports/export.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index c1db488f78d..d78a2564e7c 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $langs->load("exports"); $langs->load("users"); +$langs->load("companies"); // Everybody should be able to go on this page //if (! $user->admin) From 2d102d3132478d37072e25bf02d20ffd58d63551 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 10:24:28 +0200 Subject: [PATCH 076/380] Bad translation key --- htdocs/core/modules/modExpedition.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modExpedition.class.php b/htdocs/core/modules/modExpedition.class.php index fb5e49d2272..ea44daee18e 100644 --- a/htdocs/core/modules/modExpedition.class.php +++ b/htdocs/core/modules/modExpedition.class.php @@ -230,7 +230,7 @@ class modExpedition extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='Shipments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("expedition","shipment","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateSending",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnits'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'ThirdParty','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','d.nom'=>'State','co.label'=>'Country','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_customer'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_delivery'=>"DateSending",'c.tracking_number'=>"TrackingNumber",'c.height'=>"Height",'c.width'=>"Width",'c.size'=>"Depth",'c.size_units'=>'SizeUnits','c.weight'=>"Weight",'c.weight_units'=>"WeightUnits",'c.fk_statut'=>'Status','c.note_public'=>"NotePublic",'ed.rowid'=>'LineId','cd.description'=>'Description','ed.qty'=>"Qty",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.weight'=>'ProductWeight','p.weight_units'=>'WeightUnits','p.volume'=>'ProductVolume','p.volume_units'=>'VolumeUnits'); if ($idcontacts && ! empty($conf->global->SHIPMENT_ADD_CONTACTS_IN_EXPORT)) $this->export_fields_array[$r]+=array('sp.rowid'=>'IdContact','sp.lastname'=>'Lastname','sp.firstname'=>'Firstname','sp.note_public'=>'NotePublic'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','ed.qty'=>"Text"); $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_customer'=>"Text",'c.date_creation'=>"Date",'c.date_delivery'=>"Date",'c.tracking_number'=>"Numeric",'c.height'=>"Numeric",'c.width'=>"Numeric",'c.weight'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'ed.qty'=>"Numeric",'d.nom'=>'Text'); From a0a31a3c94747288a0798d8720c4e2cdf4625a85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 11:24:58 +0200 Subject: [PATCH 077/380] Better responsive design for dictionnaries --- htdocs/admin/dict.php | 12 +++++++----- htdocs/theme/eldy/style.css.php | 4 ++++ htdocs/theme/md/style.css.php | 4 ++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index f008a37a805..f904c7f6cf0 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1389,8 +1389,10 @@ if ($id) $valuetoshow = length_accountg($valuetoshow); } + $class='tddict'; + if ($fieldlist[$field] == 'tracking') $class.=' tdoverflowauto'; // Show value for field - if ($showfield) print ''; + if ($showfield) print ''; } } @@ -1690,13 +1692,13 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='') else { print ''; } } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 8b6b842b980..5dd81e0d0e1 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -553,6 +553,10 @@ div.myavailability { text-overflow: ellipsis; white-space: nowrap; } +.tdoverflowauto { + max-width: 0; + overflow: auto; +} /* ============================================================================== */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 49b7bd9c5d9..9f6f2f3cf91 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -543,6 +543,10 @@ div.myavailability { text-overflow: ellipsis; white-space: nowrap; } +.tdoverflowauto { + max-width: 0; + overflow: auto; +} /* ============================================================================== */ From 0f0850664d2b05ebdee5f611f0eb0af126132d44 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 11:47:52 +0200 Subject: [PATCH 078/380] FIX Remove duplicates of shipment modes --- htdocs/install/mysql/migration/repair.sql | 26 +++++++++++++------ .../mysql/tables/llx_c_shipment_mode.key.sql | 20 ++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 htdocs/install/mysql/tables/llx_c_shipment_mode.key.sql diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index eab10d78383..663af76b0cd 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -3,6 +3,17 @@ -- when current version is 2.6.0 or higher. -- + +-- Replace xxx with your IP Address +-- bind-address = xxx.xxx.xxx.xxx +-- CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass'; +-- CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass'; +-- GRANT ALL ON *.* TO 'myuser'@'localhost'; +-- GRANT ALL ON *.* TO 'myuser'@'%'; +-- flush privileges; + + + -- Requests to clean corrupted database @@ -214,14 +225,6 @@ UPDATE llx_projet_task_time set task_datehour = task_date where task_datehour IS -- List of product into 2 categories xxx: select cp.fk_product, count(cp.fk_product) as nb from llx_categorie_product as cp, llx_categorie as c where cp.fk_categorie = c.rowid and c.label like 'xxx-%' group by fk_product having nb > 1; -- List of product with no category xxx yet: select rowid, ref from llx_product where rowid not in (select distinct cp.fk_product from llx_categorie_product as cp, llx_categorie as c where cp.fk_categorie = c.rowid and c.label like 'xxx-%' order by fk_product); --- Replace xxx with your IP Address --- bind-address = xxx.xxx.xxx.xxx --- CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass'; --- CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass'; --- GRANT ALL ON *.* TO 'myuser'@'localhost'; --- GRANT ALL ON *.* TO 'myuser'@'%'; --- flush privileges; - -- Fix type of product 2 does not exists update llx_propaldet set product_type = 1 where product_type = 2; update llx_commandedet set product_type = 1 where product_type = 2; @@ -241,3 +244,10 @@ delete from llx_menu where menu_handler = 'smartphone'; update llx_projet_task as pt set pt.duration_effective = (select SUM(ptt.task_duration) as y from llx_projet_task_time as ptt where ptt.fk_task = pt.rowid) where pt.duration_effective <> (select SUM(ptt.task_duration) as y from llx_projet_task_time as ptt where ptt.fk_task = pt.rowid) +-- Remove duplicate of shipment mode (keep the one with tracking defined) +drop table tmp_c_shipment_mode; +create table tmp_c_shipment_mode as (select code, tracking from llx_c_shipment_mode); +DELETE FROM llx_c_shipment_mode where code IN (select code from tmp_c_shipment_mode WHERE tracking is NULL OR tracking = '') AND code IN (select code from tmp_c_shipment_mode WHERE tracking is NOT NULL AND tracking != '') AND (tracking IS NULL OR tracking = ''); +drop table tmp_c_shipment_mode; + + diff --git a/htdocs/install/mysql/tables/llx_c_shipment_mode.key.sql b/htdocs/install/mysql/tables/llx_c_shipment_mode.key.sql new file mode 100644 index 00000000000..15058c0630e --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_shipment_mode.key.sql @@ -0,0 +1,20 @@ +-- =================================================================== +-- Copyright (C) 2016 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 +-- 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 . +-- +-- =================================================================== + +ALTER TABLE llx_c_shipment_mode ADD UNIQUE INDEX uk_c_shipment_mode (code); + From 3738dae38dbd04dda188d6f5281177eaca5a6cee Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 12:06:47 +0200 Subject: [PATCH 079/380] NEW Add date_rum into table of thirdparty bank account. --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 4 ++++ htdocs/install/mysql/tables/llx_societe_rib.sql | 3 ++- 2 files changed, 6 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 eebeace0b8c..298ffda51cf 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 @@ -349,3 +349,7 @@ ALTER TABLE llx_accounting_account MODIFY COLUMN account_parent integer; DROP INDEX uk_bordereau_cheque ON llx_bordereau_cheque; ALTER TABLE llx_bordereau_cheque CHANGE number ref VARCHAR(30) NOT NULL; CREATE UNIQUE INDEX uk_bordereau_cheque ON llx_bordereau_cheque (ref, entity); + + +ALTER TABLE llx_societe_rib ADD COLUMN date_rum date after rum; + diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index e8f995130d4..88b670f37dc 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -39,7 +39,8 @@ create table llx_societe_rib default_rib smallint NOT NULL DEFAULT 0, rum varchar(32), -- RUM value to use for SEPA generation - frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' + date_rum date, -- Date of mandate + frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' import_key varchar(14) -- import key )ENGINE=innodb; From e7adae13ca347eb20d280ebaa40ebc0753f8eb20 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 12:59:17 +0200 Subject: [PATCH 080/380] Code comment --- htdocs/install/mysql/tables/llx_actioncomm.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_actioncomm.sql b/htdocs/install/mysql/tables/llx_actioncomm.sql index 48b96aee95a..e022b46a859 100644 --- a/htdocs/install/mysql/tables/llx_actioncomm.sql +++ b/htdocs/install/mysql/tables/llx_actioncomm.sql @@ -68,8 +68,8 @@ create table llx_actioncomm recurrule varchar(128), -- contains string with ical format recurring rule like "FREQ=MONTHLY;INTERVAL=2;BYMONTHDAY=19" or "FREQ=WEEKLY;BYDAY=MO" recurdateend datetime, - fk_element integer DEFAULT NULL, - elementtype varchar(255) DEFAULT NULL + fk_element integer DEFAULT NULL, -- For link to an element (proposal, invoice, order, ...) + elementtype varchar(255) DEFAULT NULL -- For link to an element (proposal, invoice, order, ...) )ENGINE=innodb; From d3794bb145d04ad954b197c5e6e5dbac959dd73e Mon Sep 17 00:00:00 2001 From: fmarcet Date: Tue, 5 Apr 2016 16:49:50 +0200 Subject: [PATCH 081/380] FIX: Not removing code into vatrate. --- htdocs/contrat/class/contrat.class.php | 4 ++-- htdocs/fourn/class/fournisseur.facture.class.php | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 37eaa1db04d..74ea611dc96 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -8,7 +8,7 @@ * Copyright (C) 2013 Christophe Battarel * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García - * Copyright (C) 2015 Ferran Marcet + * Copyright (C) 2015-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 @@ -1514,7 +1514,7 @@ class Contrat extends CommonObject // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. $localtaxes_type=getLocalTaxesFromRate($tvatx, 0, $this->societe, $mysoc); - $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. + $tvatx = preg_replace('/\s*\(.*\)/','',$tvatx); // Remove code into vatrate. $tabprice=calcul_price_total($qty, $pu, $remise_percent, $tvatx, $localtax1tx, $localtax2tx, 0, $price_base_type, $info_bits, 1, $mysoc, $localtaxes_type); $total_ht = $tabprice[0]; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 64c988e74e1..8617748d369 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -9,6 +9,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2015 Bahfir Abbes + * Copyright (C) 2015 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 @@ -1269,7 +1270,7 @@ class FactureFournisseur extends CommonInvoice // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. $localtaxes_type=getLocalTaxesFromRate($vatrate,0,$mysoc, $this->thirdparty); - $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. + $vatrate = preg_replace('/\s*\(.*\)/','',$vatrate); // Remove code into vatrate. $tabprice = calcul_price_total($qty, $pu, $remise_percent, $vatrate, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $this->thirdparty, $localtaxes_type); $total_ht = $tabprice[0]; From ed0ab05b93acc836f08c76871f6bb0682e1b1bd9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 17:11:44 +0200 Subject: [PATCH 082/380] FIX Damn, where was the project ref ? --- htdocs/core/modules/modCommande.class.php | 7 ++++--- htdocs/core/modules/modFacture.class.php | 14 ++++++++------ htdocs/core/modules/modPropale.class.php | 7 ++++--- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index 8390e1f10a0..c993cb3eda3 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -178,10 +178,10 @@ class modCommande extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='CustomersOrdersAndOrdersLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("commande","commande","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','co.label'=>'Country','co.code'=>"CountryCode",'s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_client'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_commande'=>"OrderDate",'c.amount_ht'=>"Amount",'c.remise_percent'=>"GlobalDiscount",'c.total_ht'=>"TotalHT",'c.total_ttc'=>"TotalTTC",'c.facture'=>"Billed",'c.fk_statut'=>'Status','c.note_public'=>"Note",'c.date_livraison'=>'DeliveryDate','c.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','c.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','cd.rowid'=>'LineId','cd.label'=>"Label",'cd.description'=>"LineDescription",'cd.product_type'=>'TypeOfLineServiceOrProduct','cd.tva_tx'=>"LineVATRate",'cd.qty'=>"LineQty",'cd.total_ht'=>"LineTotalHT",'cd.total_tva'=>"LineTotalVAT",'cd.total_ttc'=>"LineTotalTTC",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','co.label'=>'Country','co.code'=>"CountryCode",'s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_client'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.date_creation'=>"DateCreation",'c.date_commande'=>"OrderDate",'c.amount_ht'=>"Amount",'c.remise_percent'=>"GlobalDiscount",'c.total_ht'=>"TotalHT",'c.total_ttc'=>"TotalTTC",'c.facture'=>"Billed",'c.fk_statut'=>'Status','c.note_public'=>"Note",'c.date_livraison'=>'DeliveryDate','c.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','c.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin', 'pj.ref'=>'ProjectRef', 'cd.rowid'=>'LineId','cd.label'=>"Label",'cd.description'=>"LineDescription",'cd.product_type'=>'TypeOfLineServiceOrProduct','cd.tva_tx'=>"LineVATRate",'cd.qty'=>"LineQty",'cd.total_ht'=>"LineTotalHT",'cd.total_tva'=>"LineTotalVAT",'cd.total_ttc'=>"LineTotalTTC",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.label'=>'List:c_country:label:label','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.date_creation'=>"Date",'c.date_commande'=>"Date",'c.amount_ht'=>"Numeric",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total_ttc'=>"Numeric",'c.facture'=>"Boolean",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','pj.ref'=>'Text','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:ref','p.ref'=>'Text','p.label'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.label'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"order",'c.ref'=>"order",'c.ref_client'=>"order",'c.fk_soc'=>"order",'c.date_creation'=>"order",'c.date_commande'=>"order",'c.amount_ht'=>"order",'c.remise_percent'=>"order",'c.total_ht'=>"order",'c.total_ttc'=>"order",'c.facture'=>"order",'c.fk_statut'=>"order",'c.note'=>"order",'c.date_livraison'=>"order",'pj.ref'=>'project','cd.rowid'=>'order_line','cd.label'=>"order_line",'cd.description'=>"order_line",'cd.product_type'=>'order_line','cd.tva_tx'=>"order_line",'cd.qty'=>"order_line",'cd.total_ht'=>"order_line",'cd.total_tva'=>"order_line",'cd.total_ttc'=>"order_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('order_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them $keyforselect='commande'; $keyforelement='order'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; @@ -193,6 +193,7 @@ class modCommande extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande as c'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON c.fk_projet = pj.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_extrafields as extra ON c.rowid = extra.fk_object'; diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index f5b4d3dac2e..5ab27f65671 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -180,10 +180,10 @@ class modFacture extends DolibarrModules $this->export_label[$r]='CustomersInvoicesAndInvoiceLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("facture","facture","export","other")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','fd.rowid'=>'LineId','fd.label'=>"Label",'fd.description'=>"LineDescription",'fd.subprice'=>"LineUnitPrice",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.total_ht'=>"LineTotalHT",'fd.total_tva'=>"LineTotalVAT",'fd.total_ttc'=>"LineTotalTTC",'fd.date_start'=>"DateStart",'fd.date_end'=>"DateEnd",'fd.special_code'=>'SpecialCode','fd.product_type'=>"TypeOfLineServiceOrProduct",'fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_sell'=>'ProductAccountancySellCode'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin', 'pj.ref'=>'ProjectRef', 'fd.rowid'=>'LineId','fd.label'=>"Label",'fd.description'=>"LineDescription",'fd.subprice'=>"LineUnitPrice",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.total_ht'=>"LineTotalHT",'fd.total_tva'=>"LineTotalVAT",'fd.total_ttc'=>"LineTotalTTC",'fd.date_start'=>"DateStart",'fd.date_end'=>"DateEnd",'fd.special_code'=>'SpecialCode','fd.product_type'=>"TypeOfLineServiceOrProduct",'fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_sell'=>'ProductAccountancySellCode'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.price'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.label'=>"invoice_line",'fd.description'=>"invoice_line",'fd.subprice'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.special_code'=>'invoice_line','fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_sell'=>'product','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text", 'pj.ref'=>'Text', 'fd.description'=>"Text",'fd.subprice'=>"Numeric",'fd.tva_tx'=>"Numeric",'fd.qty'=>"Numeric",'fd.total_ht'=>"Numeric",'fd.total_tva'=>"Numeric",'fd.total_ttc'=>"Numeric",'fd.date_start'=>"Date",'fd.date_end'=>"Date",'fd.special_code'=>'Numeric','fd.product_type'=>"Numeric",'fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text','p.accountancy_code_sell'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice", 'pj.ref'=>'project', 'fd.rowid'=>'invoice_line','fd.label'=>"invoice_line",'fd.description'=>"invoice_line",'fd.subprice'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_tva'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.date_start'=>"invoice_line",'fd.date_end'=>"invoice_line",'fd.special_code'=>'invoice_line','fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_sell'=>'product','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; @@ -195,6 +195,7 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON f.fk_projet = pj.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON f.fk_user_author = uc.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON f.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object'; @@ -210,10 +211,10 @@ class modFacture extends DolibarrModules $this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("facture","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','p.ref'=>'PaymentRef','p.amount'=>'AmountPayment','pf.amount'=>'AmountPaymentDistributedOnInvoice','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.note'=>'PaymentNote','p.fk_bank'=>'IdTransaction','ba.ref'=>'AccountRef'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin', 'pj.ref'=>'ProjectRef', 'p.rowid'=>'PaymentId','p.ref'=>'PaymentRef','p.amount'=>'AmountPayment','pf.amount'=>'AmountPaymentDistributedOnInvoice','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','pt.code'=>'PaymentMode','p.note'=>'PaymentNote','p.fk_bank'=>'IdTransaction','ba.ref'=>'AccountRef'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Numeric','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"Numeric",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'p.amount'=>'Numeric','pf.amount'=>'Numeric','p.rowid'=>'Numeric','p.ref'=>'Text','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text','pt.code'=>'Text','ba.ref'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user','p.fk_bank'=>'account','ba.ref'=>'account'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"Numeric",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Numeric",'f.total_ttc'=>"Numeric",'f.tva'=>"Numeric",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text", 'pj.ref'=>'Text', 'p.amount'=>'Numeric','pf.amount'=>'Numeric','p.rowid'=>'Numeric','p.ref'=>'Text','p.datep'=>'Date','p.num_paiement'=>'Numeric','p.fk_bank'=>'Numeric','p.note'=>'Text','pt.code'=>'Text','ba.ref'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice", 'pj.ref'=>'project', 'p.rowid'=>'payment','p.ref'=>'payment','p.amount'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','pt.code'=>'payment','p.note'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user','p.fk_bank'=>'account','ba.ref'=>'account'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them $keyforselect='facture'; $keyforelement='invoice'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; @@ -221,6 +222,7 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c on s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON f.fk_projet = pj.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON f.fk_user_author = uc.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON f.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_extrafields as extra ON f.rowid = extra.fk_object'; diff --git a/htdocs/core/modules/modPropale.class.php b/htdocs/core/modules/modPropale.class.php index 65f5a4729b5..32ebb340e71 100644 --- a/htdocs/core/modules/modPropale.class.php +++ b/htdocs/core/modules/modPropale.class.php @@ -171,10 +171,10 @@ class modPropale extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='ProposalsAndProposalsLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("propale","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_client'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.datec'=>"DateCreation",'c.datep'=>"DatePropal",'c.fin_validite'=>"DateEndPropal",'c.remise_percent'=>"GlobalDiscount",'c.total_ht'=>"TotalHT",'c.total'=>"TotalTTC",'c.fk_statut'=>'Status','c.note_public'=>"Note",'c.date_livraison'=>'DeliveryDate','c.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','c.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','cd.rowid'=>'LineId','cd.label'=>"Label",'cd.description'=>"LineDescription",'cd.product_type'=>'TypeOfLineServiceOrProduct','cd.tva_tx'=>"LineVATRate",'cd.qty'=>"LineQty",'cd.total_ht'=>"LineTotalHT",'cd.total_tva'=>"LineTotalVAT",'cd.total_ttc'=>"LineTotalTTC",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_client'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.datec'=>"DateCreation",'c.datep'=>"DatePropal",'c.fin_validite'=>"DateEndPropal",'c.remise_percent'=>"GlobalDiscount",'c.total_ht'=>"TotalHT",'c.total'=>"TotalTTC",'c.fk_statut'=>'Status','c.note_public'=>"Note",'c.date_livraison'=>'DeliveryDate','c.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','c.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin', 'pj.ref'=>'ProjectRef', 'cd.rowid'=>'LineId','cd.label'=>"Label",'cd.description'=>"LineDescription",'cd.product_type'=>'TypeOfLineServiceOrProduct','cd.tva_tx'=>"LineVATRate",'cd.qty'=>"LineQty",'cd.total_ht'=>"LineTotalHT",'cd.total_tva'=>"LineTotalVAT",'cd.total_ttc'=>"LineTotalTTC",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date', 'pj.ref'=>'Text', 'cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal", 'pj.ref'=>'project', 'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them $keyforselect='propal'; $keyforelement='propal'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; @@ -186,6 +186,7 @@ class modPropale extends DolibarrModules $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s '; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'propal as c'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON c.fk_projet = pj.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uv.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propal_extrafields as extra ON c.rowid = extra.fk_object'; From f9d7c27bd2c1b4123cdb4feff1fddd7f61be65c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Apr 2016 17:17:40 +0200 Subject: [PATCH 083/380] FIX Export must use a left join to not loose lines --- htdocs/core/modules/modFicheinter.class.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/modFicheinter.class.php b/htdocs/core/modules/modFicheinter.class.php index 4578a3e60a9..c10b617887e 100644 --- a/htdocs/core/modules/modFicheinter.class.php +++ b/htdocs/core/modules/modFicheinter.class.php @@ -138,15 +138,18 @@ class modFicheinter extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]='InterventionCardsAndInterventionLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r]=array(array("ficheinter","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','f.rowid'=>"InterId",'f.ref'=>"InterRef",'f.datec'=>"InterDateCreation",'f.duree'=>"InterDuration",'f.fk_statut'=>'InterStatus','f.description'=>"InterNote",'fd.rowid'=>'InterLineId','fd.date'=>"InterLineDate",'fd.duree'=>"InterLineDuration",'fd.description'=>"InterLineDesc"); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','f.rowid'=>"InterId",'f.ref'=>"InterRef",'f.datec'=>"InterDateCreation",'f.duree'=>"InterDuration",'f.fk_statut'=>'InterStatus','f.description'=>"InterNote", 'pj.ref'=>'ProjectRef', 'fd.rowid'=>'InterLineId','fd.date'=>"InterLineDate",'fd.duree'=>"InterLineDuration",'fd.description'=>"InterLineDesc"); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','s.fk_pays'=>'List:c_country:label','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.duree'=>"Duree",'f.fk_statut'=>'Statut','f.description'=>"Text",'f.datee'=>"Date",'f.dateo'=>"Date",'f.fulldayevent'=>"Boolean",'fd.date'=>"Date",'fd.duree'=>"Duree",'fd.description'=>"Text",'fd.total_ht'=>"Numeric"); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','s.fk_pays'=>'List:c_country:label','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.duree'=>"Duree",'f.fk_statut'=>'Statut','f.description'=>"Text",'f.datee'=>"Date",'f.dateo'=>"Date",'f.fulldayevent'=>"Boolean",'fd.date'=>"Date",'fd.duree'=>"Duree",'fd.description'=>"Text",'fd.total_ht'=>"Numeric"); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','f.rowid'=>"intervention",'f.ref'=>"intervention",'f.datec'=>"intervention",'f.duree'=>"intervention",'f.fk_statut'=>"intervention",'f.description'=>"intervention",'fd.rowid'=>"inter_line",'fd.date'=>"inter_line",'fd.duree'=>'inter_line','fd.description'=>'inter_line'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','s.fk_pays'=>'List:c_country:label','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.duree'=>"Duree",'f.fk_statut'=>'Statut','f.description'=>"Text",'f.datee'=>"Date",'f.dateo'=>"Date",'f.fulldayevent'=>"Boolean", 'pj.ref'=>'Text', 'fd.date'=>"Date",'fd.duree'=>"Duree",'fd.description'=>"Text",'fd.total_ht'=>"Numeric"); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','f.rowid'=>"intervention",'f.ref'=>"intervention",'f.datec'=>"intervention",'f.duree'=>"intervention",'f.fk_statut'=>"intervention",'f.description'=>"intervention", 'pj.ref'=>'project', 'fd.rowid'=>"inter_line",'fd.date'=>"inter_line",'fd.duree'=>'inter_line','fd.description'=>'inter_line'); $this->export_dependencies_array[$r]=array('inter_line'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them $this->export_sql_start[$r]='SELECT DISTINCT '; - $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'fichinter as f, '.MAIN_DB_PREFIX.'fichinterdet as fd, '.MAIN_DB_PREFIX.'societe as s)'; - $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_fichinter'; + $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'fichinter as f'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pj ON f.fk_projet = pj.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'fichinterdet as fd ON f.rowid = fd.fk_fichinter,'; + $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'societe as s'; + $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid'; $this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('intervention',1).')'; $r++; From 61a077b0ee563a7f24e3ca96040d9bd9717044bb Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 4 Apr 2016 15:06:54 +0200 Subject: [PATCH 084/380] NEW reputation for price supplier --- .../fourn/class/fournisseur.product.class.php | 21 ++++++++++++------- htdocs/langs/en_US/suppliers.lang | 4 ++++ htdocs/product/fournisseurs.php | 14 +++++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 857544aa1bc..69208e5278e 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -178,9 +178,10 @@ class ProductFournisseur extends Product * @param float $remise Discount regarding qty (amount) * @param int $newnpr Set NPR or not * @param int $delivery_time_days Delay in days for delivery (max). May be '' if not defined. + * @param string $supplier_reputation Reputation with this product to the defined supplier (empty, FAVORITE, DONOTORDER) * @return int <0 if KO, >=0 if OK */ - function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0) + function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0, $supplier_reputation='') { global $conf, $langs; //global $mysoc; @@ -191,6 +192,7 @@ class ProductFournisseur extends Product if (empty($charges)) $charges=0; if (empty($availability)) $availability=0; if (empty($remise_percent)) $remise_percent=0; + if (empty($supplier_reputation)) $supplier_reputation=''; if ($delivery_time_days != '' && ! is_numeric($delivery_time_days)) $delivery_time_days = ''; if ($price_base_type == 'TTC') { @@ -225,7 +227,8 @@ class ProductFournisseur extends Product $sql.= " entity = ".$conf->entity.","; $sql.= " info_bits = ".$newnpr.","; $sql.= " charges = ".$charges.","; - $sql.= " delivery_time_days = ".($delivery_time_days != '' ? $delivery_time_days : 'null'); + $sql.= " delivery_time_days = ".($delivery_time_days != '' ? $delivery_time_days : 'null').","; + $sql.= " supplier_reputation = ".(empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'"); $sql.= " WHERE rowid = ".$this->product_fourn_price_id; // TODO Add price_base_type and price_ttc @@ -268,7 +271,7 @@ class ProductFournisseur extends Product { // Add price for this quantity to supplier $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_fournisseur_price("; - $sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, info_bits, entity, delivery_time_days)"; + $sql.= "datec, fk_product, fk_soc, ref_fourn, fk_user, price, quantity, remise_percent, remise, unitprice, tva_tx, charges, unitcharges, fk_availability, info_bits, entity, delivery_time_days,supplier_reputation)"; $sql.= " values('".$this->db->idate($now)."',"; $sql.= " ".$this->id.","; $sql.= " ".$fourn->id.","; @@ -285,8 +288,9 @@ class ProductFournisseur extends Product $sql.= " ".$availability.","; $sql.= " ".$newnpr.","; $sql.= $conf->entity.","; - $sql.= $delivery_time_days; - $sql.=")"; + $sql.= $delivery_time_days.","; + $sql.= (empty($supplier_reputation) ? 'NULL' : "'".$this->db->escape($supplier_reputation)."'"); + $sql.=")"; dol_syslog(get_class($this)."::update_buyprice", LOG_DEBUG); if (! $this->db->query($sql)) @@ -359,7 +363,8 @@ class ProductFournisseur extends Product { global $conf; $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability,"; - $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price + $sql.= " pfp.fk_soc, pfp.ref_fourn, pfp.fk_product, pfp.charges, pfp.unitcharges, pfp.fk_supplier_price_expression, pfp.delivery_time_days,"; // , pfp.recuperableonly as fourn_tva_npr"; FIXME this field not exist in llx_product_fournisseur_price + $sql.=" pfp.supplier_reputation"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " WHERE pfp.rowid = ".$rowid; @@ -389,6 +394,7 @@ class ProductFournisseur extends Product $this->delivery_time_days = $obj->delivery_time_days; //$this->fourn_tva_npr = $obj->fourn_tva_npr; // TODO this field not exist in llx_product_fournisseur_price. We should add it ? $this->fk_supplier_price_expression = $obj->fk_supplier_price_expression; + $this->supplier_reputation = $obj->supplier_reputation; if (empty($ignore_expression) && !empty($this->fk_supplier_price_expression)) { @@ -437,7 +443,7 @@ class ProductFournisseur extends Product $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,"; $sql.= " pfp.rowid as product_fourn_pri_id, pfp.ref_fourn, pfp.fk_product as product_fourn_id, pfp.fk_supplier_price_expression,"; - $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days"; + $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")"; @@ -476,6 +482,7 @@ class ProductFournisseur extends Product $prodfourn->id = $prodid; $prodfourn->fourn_tva_npr = $record["info_bits"]; $prodfourn->fk_supplier_price_expression = $record["fk_supplier_price_expression"]; + $prodfourn->supplier_reputation = $record["supplier_reputation"]; if (!empty($conf->dynamicprices->enabled) && !empty($prodfourn->fk_supplier_price_expression)) { $priceparser = new PriceParser($this->db); diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 46b7eb676d4..759c3c54fc5 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -45,3 +45,7 @@ MenuOrdersSupplierToBill=Supplier orders to invoice NbDaysToDelivery=Delivery delay in days DescNbDaysToDelivery=The biggest deliver delay of the products from this order UseDoubleApproval=Use double approval when amount (without tax) is higher than (The second approval can be done by any user with the dedicated permission. Set to 0 for no double approval) +SupplierReputation=Supplier reputation +DoNotOrderThisProductToThisSupplier=Do not order +NotTheGoodQualitySupplier=Wrong quality +ReputationForThisProduct=Reputation \ No newline at end of file diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index f5fc8c8655c..34f9995267c 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -77,6 +77,8 @@ if ($id > 0 || $ref) $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); +$reputations=array(''=>$langs->trans('Standard'),'FAVORITE'=>$langs->trans('Favorite'),'NOTTHGOOD'=>$langs->trans('NotTheGoodQualitySupplier'), 'DONOTORDER'=>$langs->trans('DoNotOrderThisProductToThisSupplier')); + if (! $sortfield) $sortfield="s.nom"; if (! $sortorder) $sortorder="ASC"; @@ -141,6 +143,7 @@ if (empty($reshook)) $tva_tx = price2num($tva_tx); $price_expression = GETPOST('eid', 'int') ? GETPOST('eid', 'int') : ''; // Discard expression if not in expression mode $delivery_time_days = GETPOST('delivery_time_days', 'int') ? GETPOST('delivery_time_days', 'int') : ''; + $supplier_reputation = GETPOST('supplier_reputation'); if ($tva_tx == '') { @@ -379,6 +382,11 @@ if ($id > 0 || $ref) } print ''; + //reputation + print ''; + // Ref supplier print ''; print_liste_field_titre($langs->trans("Suppliers"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("ReputationForThisProduct")); print_liste_field_titre($langs->trans("SupplierRef")); if (!empty($conf->global->FOURN_PRODUCT_AVAILABILITY)) print_liste_field_titre($langs->trans("Availability"),$_SERVER["PHP_SELF"],"pfp.fk_availability","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("QtyMin"),$_SERVER["PHP_SELF"],"pfp.quantity","",$param,'align="right"',$sortfield,$sortorder); @@ -597,6 +606,11 @@ if ($id > 0 || $ref) print ""; print ''; + print ''; // Supplier print ''; From c2a5ad7d9c800c32cadc6cabc0d456d9c6a32358 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Wed, 6 Apr 2016 10:05:03 +0200 Subject: [PATCH 085/380] FIX sql --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 1 + htdocs/install/mysql/tables/llx_product_fournisseur_price.sql | 3 ++- 2 files changed, 3 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 298ffda51cf..fd144ec5479 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 @@ -353,3 +353,4 @@ CREATE UNIQUE INDEX uk_bordereau_cheque ON llx_bordereau_cheque (ref, entity); ALTER TABLE llx_societe_rib ADD COLUMN date_rum date after rum; +ALTER TABLE llx_product_fournisseur_price ADD supplier_reputation varchar(10) NULL; diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql index e7cf555d24e..717f0617c83 100755 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql @@ -41,5 +41,6 @@ create table llx_product_fournisseur_price fk_user integer, fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation import_key varchar(14), -- Import key - delivery_time_days integer + delivery_time_days integer, + supplier_reputation varchar(10) )ENGINE=innodb; From 11bb4d1cfb425025f3906ffd3832270d63af2056 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Wed, 6 Apr 2016 10:17:13 +0200 Subject: [PATCH 086/380] Show in select --- htdocs/core/class/html.form.class.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1e60fb11377..8ba5766e826 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2095,7 +2095,8 @@ class Form $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration, p.fk_product_type,"; $sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,"; - $sql.= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.fk_soc, s.nom as name"; + $sql.= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.fk_soc, s.nom as name,"; + $sql.= " pfp.supplier_reputation"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; if ($socid) $sql.= " AND pfp.fk_soc = ".$socid; @@ -2234,6 +2235,15 @@ class Form $opt .= " - ".dol_trunc($objp->name,8); $outval.=" - ".dol_trunc($objp->name,8); } + if ($objp->supplier_reputation) + { + //TODO dictionnary + $reputations=array(''=>$langs->trans('Standard'),'FAVORITE'=>$langs->trans('Favorite'),'NOTTHGOOD'=>$langs->trans('NotTheGoodQualitySupplier'), 'DONOTORDER'=>$langs->trans('DoNotOrderThisProductToThisSupplier')); + + $opt .= " - ".$reputations[$objp->supplier_reputation] + $outval.=" - ".$reputations[$objp->supplier_reputation]; + } + } else { From f3ae67a434db3993980c47dd1f9281df930cac21 Mon Sep 17 00:00:00 2001 From: nka11 Date: Tue, 5 Apr 2016 22:17:52 +0200 Subject: [PATCH 087/380] added customer API --- htdocs/societe/class/api_customer.class.php | 302 ++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 htdocs/societe/class/api_customer.class.php diff --git a/htdocs/societe/class/api_customer.class.php b/htdocs/societe/class/api_customer.class.php new file mode 100644 index 00000000000..b189ef70e70 --- /dev/null +++ b/htdocs/societe/class/api_customer.class.php @@ -0,0 +1,302 @@ + + * + * 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 . + */ + + use Luracast\Restler\RestException; +//require_once DOL_DOCUMENT_ROOT . '/societe/class/client.class.php'; + +/** + * API class for client object + * + * @smart-auto-routing false + * @access protected + * @class DolibarrApiAccess {@requires user,external} + * + */ +class CustomerApi extends DolibarrApi +{ + /** + * + * @var array $FIELDS Mandatory fields, checked when create and update object + */ + static $FIELDS = array( + 'name' + ); + + /** + * @var Client $customer {@type Client} + */ + public $customer; + /** + * @var ContactApi $contactapi {@type ContactApi} + */ + public $contactapi; + + /** + * Constructor + * + * @url customer/ + * + */ + function __construct() + { + global $db, $conf; + $this->db = $db; + $this->contactapi = new ContactApi(); + $this->customer = new Client($this->db); + + if (! empty($conf->global->SOCIETE_MAIL_REQUIRED)) { + static::$FIELDS[] = 'email'; + } + } + + /** + * Get properties of a customer object + * + * Return an array with customer informations + * + * @param int $id ID of customer + * @return array|mixed data without useless information + * + * @url GET customer/{id} + * @throws RestException + */ + function get($id) + { + if(! DolibarrApiAccess::$user->rights->societe->lire) { + throw new RestException(401); + } + + $result = $this->customer->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Customer not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('societe',$this->customer->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + return $this->_cleanObjectDatas($this->customer); + } + + /** + * List customers + * + * Get a list of customers + * + * @param Text $email Optional email key + * @param Text $sortfield Sort field + * @param Text $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @return array Array of customer objects + * + * @url GET customer/list + * + */ + function getList($email=NULL , $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { + global $db, $conf; + + $obj_ret = array(); + + $socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : ''; + + // If the internal user must only see his customers, force searching by him + if (! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; + + $sql = "SELECT s.rowid"; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; + + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale + $sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st"; + $sql.= " WHERE s.fk_stcomm = st.id"; + $sql.= " AND s.client IN (1, 3)"; + $sql.= ' AND s.entity IN ('.getEntity('societe', 1).')'; + if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc"; + if ($email != NULL) $sql.= " AND s.email = \"".$email."\""; + if ($socid) $sql.= " AND s.rowid = ".$socid; + if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc"; // Join for the needed table to filter by sale + + // Insert sale filter + if ($search_sale > 0) + { + $sql .= " AND sc.fk_user = ".$search_sale; + } + + $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); + $soc_static = new Client($db); + if($soc_static->fetch($obj->rowid)) { + $obj_ret[] = parent::_cleanObjectDatas($soc_static); + } + $i++; + } + } + else { + throw new RestException(503, 'Error when retrieve thirdparties : ' . $sql); + } + if( ! count($obj_ret)) { + throw new RestException(404, 'Thirdparties not found'); + } + return $obj_ret; + } + + /** + * Search customer by email + * + * @param string $email email id + * + * @return object client with given email + * + * @url GET customer/byemail/{email} + */ + function getByEmail($email) { + $res = $this->getList($email); + if (count($res) == 1) { + $customer = $res[0]; + try { + $customer->contacts = $this->contactapi->getList((int)$customer->id); + } catch (Exception $e) {} + return $customer; + } + return $res; + } + + /** + * Create customer object + * + * @param array $request_data Request datas + * @return int ID of customer + * + * @url POST customer/ + */ + function post($request_data = NULL) + { + if(! DolibarrApiAccess::$user->rights->societe->creer) { + throw new RestException(401); + } + // Check mandatory fields + $result = $this->_validate($request_data); + + foreach($request_data as $field => $value) { + $this->customer->$field = $value; + } + return $this->customer->create(DolibarrApiAccess::$user); + } + + /** + * Update customer + * + * @param int $id Id of thirdparty to update + * @param array $request_data Datas + * @return int + * + * @url PUT customer/{id} + function put($id, $request_data = NULL) + { + if(! DolibarrApiAccess::$user->rights->societe->creer) { + throw new RestException(401); + } + + $result = $this->customer->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Customer not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('societe',$this->customer->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + foreach($request_data as $field => $value) { + $this->customer->$field = $value; + } + + if($this->customer->update($id, DolibarrApiAccess::$user,1,'','','update')) + return $this->get ($id); + + return false; + } + */ + + /** + * Delete customer + * + * @param int $id Thirparty ID + * @return type + * + * @url DELETE customer/{id} + */ + function delete($id) + { + if(! DolibarrApiAccess::$user->rights->societe->supprimer) { + throw new RestException(401); + } + $result = $this->customer->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Customer not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('societe',$this->customer->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + return $this->customer->delete($id); + } + + /** + * Validate fields before create or update object + * + * @param array $data Datas to validate + * @return array + * + * @throws RestException + */ + function _validate($data) + { + $customer = array(); + foreach (ThirdpartyApi::$FIELDS as $field) { + if (!isset($data[$field])) + throw new RestException(400, "$field field missing"); + $customer[$field] = $data[$field]; + } + return $customer; + } +} From a2c5bfa72c971ae2575159d2a23c91ec391dd9a2 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Wed, 6 Apr 2016 10:20:38 +0200 Subject: [PATCH 088/380] FIX parse error --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8ba5766e826..81c0735b9a0 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2240,7 +2240,7 @@ class Form //TODO dictionnary $reputations=array(''=>$langs->trans('Standard'),'FAVORITE'=>$langs->trans('Favorite'),'NOTTHGOOD'=>$langs->trans('NotTheGoodQualitySupplier'), 'DONOTORDER'=>$langs->trans('DoNotOrderThisProductToThisSupplier')); - $opt .= " - ".$reputations[$objp->supplier_reputation] + $opt .= " - ".$reputations[$objp->supplier_reputation]; $outval.=" - ".$reputations[$objp->supplier_reputation]; } From 0978ebc73117ac7cccc0340785330af61122b119 Mon Sep 17 00:00:00 2001 From: nka11 Date: Tue, 5 Apr 2016 15:26:21 +0200 Subject: [PATCH 089/380] Improve categories API to retreive categories of a given Item --- .../categories/class/api_category.class.php | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/htdocs/categories/class/api_category.class.php b/htdocs/categories/class/api_category.class.php index 364147d097d..d66875185a4 100644 --- a/htdocs/categories/class/api_category.class.php +++ b/htdocs/categories/class/api_category.class.php @@ -162,6 +162,86 @@ class CategoryApi extends DolibarrApi } return $obj_ret; } + /** + * List categories of an entity + * + * Get a list of categories + * + * @param string $type Type of category ('member', 'customer', 'supplier', 'product', 'contact') + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @param int $item Id of the item to get categories for + * @return array Array of category objects + * + * @url GET /product/{item}/categories + */ + function getListForItem($type='product', $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $item = 0) { + global $db, $conf; + + $obj_ret = array(); + + if(! DolibarrApiAccess::$user->rights->categorie->lire) { + throw new RestException(401); + } + //if ($type == "") { + //$type="product"; + //} + $sub_type = $type; + $subcol_name = "fk_".$type; + if ($type=="customer" || $type=="supplier") { + $sub_type="societe"; + $subcol_name="fk_soc"; + } + $sql = "SELECT s.rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."categorie as s"; + $sql.= " , ".MAIN_DB_PREFIX."categorie_".$sub_type." as sub "; + $sql.= ' WHERE s.entity IN ('.getEntity('categorie', 1).')'; + $sql.= ' AND s.type='.array_search($type,CategoryApi::$TYPES); + $sql.= ' AND s.rowid = sub.fk_categorie'; + $sql.= ' AND sub.'.$subcol_name.' = '.$item; + + $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); + $category_static = new Categorie($db); + if($category_static->fetch($obj->rowid)) { + $obj_ret[] = parent::_cleanObjectDatas($category_static); + } + $i++; + } + } + else { + throw new RestException(503, 'Error when retrieve category list : '.$category_static->error); + } + if( ! count($obj_ret)) { + throw new RestException(404, 'No category found'); + } + return $obj_ret; + } /** * Get member categories list @@ -193,6 +273,21 @@ class CategoryApi extends DolibarrApi function getListCategoryCustomer($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { return $this->getList('customer', $sortfield, $sortorder, $limit, $page); } + /** + * Get categories for a customer + * + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * + * @return mixed + * + * @url GET /customer/{cusid}/categories + */ + function getListCustomerCategories($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $cusid) { + return $this->getListForItem('customer', $sortfield, $sortorder, $limit, $page, $cusid); + } /** * Get supplier categories list From a43a0a3f4c0f3805b7b8108e7ca5c395053d3922 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Apr 2016 11:21:55 +0200 Subject: [PATCH 090/380] Debug module loan and disable non working features --- ChangeLog | 4 ++ htdocs/core/menus/init_menu_auguria.sql | 4 +- htdocs/core/menus/standard/eldy.lib.php | 4 +- htdocs/core/modules/modLoan.class.php | 2 +- htdocs/langs/en_US/loan.lang | 6 +- htdocs/loan/calc.php | 28 ++++----- htdocs/loan/card.php | 77 ++++++++++--------------- htdocs/loan/note.php | 11 ++-- 8 files changed, 64 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index 290ef468085..63d2f79b531 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,10 @@ 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: - Method select_type_comptes_financiers() has been renamed into selectTypeOfBankAccount() +- 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'; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 0c154e031d8..6078d871f3f 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -199,8 +199,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2223__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/calc.php?leftmenu=tax_loan', 'Calculator', 2, 'companies', '$user->rights->loan->calc', '', 0, 4, __ENTITY__); +--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/payment/list.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan" && ! empty($conf->global->LOAN_SHOW_CALCULATOR)', __HANDLER__, 'left', 2223__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/calc.php?leftmenu=tax_loan', 'Calculator', 2, 'companies', '$user->rights->loan->calc', '', 0, 4, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index bcbcf3b154e..d4d396cf892 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -876,8 +876,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("loan"); $newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); + //if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + if ((empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); } // Social contributions diff --git a/htdocs/core/modules/modLoan.class.php b/htdocs/core/modules/modLoan.class.php index 25f1b7cf2c2..b7e7f822bbc 100644 --- a/htdocs/core/modules/modLoan.class.php +++ b/htdocs/core/modules/modLoan.class.php @@ -51,7 +51,7 @@ class modLoan extends DolibarrModules $this->description = "Loans management"; // Possible values for version are: 'development', 'experimental', 'dolibarr' or version - $this->version = 'experimental'; + $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); $this->special = 0; diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index e082f166959..35060e134dc 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -25,7 +25,7 @@ LoanCalc=Bank Loans Calculator PurchaseFinanceInfo=Purchase & Financing Information SalePriceOfAsset=Sale Price of Asset PercentageDown=Percentage Down -LengthOfMortgage=Length of Mortgage +LengthOfMortgage=Duration of loan AnnualInterestRate=Annual Interest Rate ExplainCalculations=Explain Calculations ShowMeCalculationsAndAmortization=Show me the calculations and amortization @@ -42,10 +42,10 @@ AmountFinanced=Amount Financed AmortizationMonthlyPaymentOverYears=Amortization For Monthly Payment: %s over %s years Totalsforyear=Totals for year MonthlyPayment=Monthly Payment -LoanCalcDesc=This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate.
    This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    +LoanCalcDesc=This mortgage calculator can be used to figure out monthly payments of a loaning, based on the amount borrowed, the term of the loan desired and the interest rate.
    This calculator includes also PMI (Private Mortgage Insurance) for loans where less than 20%% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    GoToInterest=%s will go towards INTEREST GoToPrincipal=%s will go towards PRINCIPAL -YouWillSpend=You will spend %s on your house in year %s +YouWillSpend=You will spend %s in year %s # Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 5dee07411f8..0a384c1c859 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -149,7 +149,7 @@ print '
    '; -print ''; +print ''; print ''; print ''; print ''; @@ -201,7 +201,7 @@ if ($form_complete && $monthly_payment) { $pmi_per_month = 55 * ($financing_price / 100000); - print ''; + /*print ''; print ''; print ''; - print ''; + print '';*/ print ''; print ''; print ''; } - print ''; + /*print ''; print ''; print ''; print ''; + */ + print ''; print ''; print ''; + print '(including '.$pmi_text.')'; print ''; } diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index ee799284ea7..116de7c561d 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -196,13 +196,13 @@ if ($action == 'create') print '
    '.$langs->trans("ActionOnCompany").'
    '.$langs->trans("ActionOnCompany").''; + print '
    '; $events=array(); - $events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled')); - print $form->select_company($object->socid,'socid','',1,1,0,$events); - print '
    '.$langs->trans("Contact").''; + print '
    '.$langs->trans("Contact").''; + print '
    '; $form->select_contacts($object->socid, $object->contactid, 'contactid', 1, '', '', 0, 'minwidth200'); - print '
    '.$langs->trans("Project").''; - $numprojet=$formproject->select_projects($object->socid,$object->fk_project,'projectid'); + print '
    '.$langs->trans("Project").''; + $numprojet=$formproject->select_projects($object->socid, $object->fk_project, 'projectid'); if ($numprojet==0) { print '   '.$langs->trans("AddProject").''; @@ -1120,7 +1125,7 @@ if ($id > 0) } // Priority - print '
    '.$langs->trans("Priority").''; + print '
    '.$langs->trans("Priority").''; print ''; print '
    '.$langs->trans("Description").''; // Editeur wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('note',$object->note,'',240,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_5,90); + $doleditor=new DolEditor('note',$object->note,'',200,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_5,90); $doleditor->Create(); print '
    '.$langs->trans("ActionOnCompany").''.($object->thirdparty->id?$object->thirdparty->getNomUrl(1):$langs->trans("None")); + print '
    '.$langs->trans("ActionOnCompany").''.($object->thirdparty->id?$object->thirdparty->getNomUrl(1):$langs->trans("None")); if (is_object($object->thirdparty) && $object->thirdparty->id > 0 && $object->type_code == 'AC_TEL') { if ($object->thirdparty->fetch($object->thirdparty->id)) diff --git a/htdocs/core/ajax/contacts.php b/htdocs/core/ajax/contacts.php index c0cd9ecfd70..c3788a8baeb 100644 --- a/htdocs/core/ajax/contacts.php +++ b/htdocs/core/ajax/contacts.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2012 Regis Houssin + * Copyright (C) 2016 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 diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 0316fb461cf..9e61804af7a 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -136,7 +136,7 @@ class FormActions if (empty($onlyselect)) { print ' =0)?'':' disabled').'>'; - print '%'; + print '%'; } } else From fded7d3e9a37dff9f15b740be76aeffc75e56dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa?= Date: Sun, 3 Apr 2016 22:17:25 +0200 Subject: [PATCH 065/380] Corrected PHP documentation of calcul_price_total function --- htdocs/core/lib/price.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 21ad2c99d82..e8d4b103a30 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -49,7 +49,7 @@ * @param Societe $seller Thirdparty seller (we need $seller->country_id property). Provided only if seller is the supplier, otherwise $seller will be $mysoc. * @param array $localtaxes_array Array with localtaxes info array('0'=>type1,'1'=>rate1,'2'=>type2,'3'=>rate2) (loaded by getLocalTaxesFromRate(vatrate, 0, ...) function). * @param integer $progress Situation invoices progress (value from 0 to 100, 100 by default) - * @return result[ 0=total_ht, + * @return array [ 0=total_ht, * 1=total_vat, (main vat only) * 2=total_ttc, (total_ht + main vat + local taxes) * 3=pu_ht, From c6aabd3f34c6ed2bf3d42133bc4d760f63aa6101 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 4 Apr 2016 05:29:12 +0200 Subject: [PATCH 066/380] NEW: Move HRM area page in HRM directory --- htdocs/core/menus/init_menu_auguria.sql | 2 +- htdocs/core/menus/standard/eldy.lib.php | 4 ++-- htdocs/{compta => hrm}/hrm.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename htdocs/{compta => hrm}/hrm.php (99%) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 0c154e031d8..4ab32628b9a 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -17,7 +17,7 @@ insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, left insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('projet', '$conf->projet->enabled', 7__+MAX_llx_menu__, __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 70, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('mailing|export|import|opensurvey', '$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled', 8__+MAX_llx_menu__, __HANDLER__, 'top', 'tools', '', 0, '/core/tools.php?mainmenu=tools&leftmenu=', 'Tools', -1, 'other', '$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read', '', 2, 90, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('adherent', '$conf->adherent->enabled', 13__+MAX_llx_menu__, __HANDLER__, 'top', 'members', '', 0, '/adherents/index.php?mainmenu=members&leftmenu=', 'Members', -1, 'members', '$user->rights->adherent->lire', '', 2, 110, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('hrm|holiday|deplacement|expensereport', '$conf->hrm->enabled || $conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled', 15__+MAX_llx_menu__, __HANDLER__, 'top', 'hrm', '', 0, '/compta/hrm.php?mainmenu=hrm&leftmenu=', 'HRM', -1, 'holiday', '$user->rights->hrm->employee->read || $user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire', '', 0, 80, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('hrm|holiday|deplacement|expensereport', '$conf->hrm->enabled || $conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled', 15__+MAX_llx_menu__, __HANDLER__, 'top', 'hrm', '', 0, '/hrm/hrm.php?mainmenu=hrm&leftmenu=', 'HRM', -1, 'holiday', '$user->rights->hrm->employee->read || $user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire', '', 0, 80, __ENTITY__); -- Home - Dashboard insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '1', __HANDLER__, 'left', 90__+MAX_llx_menu__, 'home', '', 1__+MAX_llx_menu__, '/index.php', 'Dashboard', 0, '', '', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index bcbcf3b154e..72e2f0d492c 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -223,9 +223,9 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) $idsel='hrm'; if (empty($noout)) print_start_menu_entry($idsel,$classname,$showmode); - if (empty($noout)) print_text_menu_entry($langs->trans("HRM"), $showmode, DOL_URL_ROOT.'/compta/hrm.php?mainmenu=hrm&leftmenu=', $id, $idsel, $classname, $atarget); + if (empty($noout)) print_text_menu_entry($langs->trans("HRM"), $showmode, DOL_URL_ROOT.'/hrm/hrm.php?mainmenu=hrm&leftmenu=', $id, $idsel, $classname, $atarget); if (empty($noout)) print_end_menu_entry($showmode); - $menu->add('/compta/hrm.php?mainmenu=hrm&leftmenu=', $langs->trans("HRM"), 0, $showmode, $atarget, "hrm", ''); + $menu->add('/hrm/hrm.php?mainmenu=hrm&leftmenu=', $langs->trans("HRM"), 0, $showmode, $atarget, "hrm", ''); } diff --git a/htdocs/compta/hrm.php b/htdocs/hrm/hrm.php similarity index 99% rename from htdocs/compta/hrm.php rename to htdocs/hrm/hrm.php index 3f1b77a6697..daef4feef45 100644 --- a/htdocs/compta/hrm.php +++ b/htdocs/hrm/hrm.php @@ -2,7 +2,7 @@ /* Copyright (C) 2011 Dimitri Mouillard * Copyright (C) 2013-2015 Laurent Destailleur * Copyright (C) 2012-2014 Regis Houssin - * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2015-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 @@ -19,7 +19,7 @@ */ /** - * \file htdocs/compta/hrm.php + * \file htdocs/hrm/hrm.php * \ingroup hrm * \brief Home page for HRM area. */ From e043aebfa10413ab0b217dec1e5e0e1b41989d04 Mon Sep 17 00:00:00 2001 From: gauthier Date: Mon, 4 Apr 2016 11:05:12 +0200 Subject: [PATCH 067/380] NEW : project sharing in select_projetcs_list function --- htdocs/core/class/html.formprojet.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index 5ebc1b2baba..1302bcfe134 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -135,7 +135,7 @@ class FormProjets // Search all projects $sql = 'SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public'; $sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p'; - $sql.= " WHERE p.entity = ".$conf->entity; + $sql.= " WHERE p.entity IN (".getEntity('project', 1).")"; if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")"; if ($socid == 0) $sql.= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)"; if ($socid > 0) $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc IS NULL)"; From 5101c962233115446dae275214c73fadc28a7b56 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 Apr 2016 15:20:21 +0200 Subject: [PATCH 068/380] Restore button to create object from the project view. --- htdocs/comm/action/card.php | 12 +-- htdocs/don/card.php | 10 ++- htdocs/fichinter/card.php | 4 +- htdocs/langs/en_US/commercial.lang | 4 +- htdocs/projet/element.php | 125 +++++++++++++++++++++-------- htdocs/theme/eldy/style.css.php | 6 +- htdocs/theme/md/style.css.php | 6 +- 7 files changed, 119 insertions(+), 48 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 991e0c4a148..29f29a7e8cd 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -649,14 +649,14 @@ if ($action == 'create') // Type of event if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) { - print '
    '.$langs->trans("Type").''; + print '
    '.$langs->trans("Type").''; $default=(empty($conf->global->AGENDA_USE_EVENT_TYPE_DEFAULT)?'':$conf->global->AGENDA_USE_EVENT_TYPE_DEFAULT); $formactions->select_type_actions(GETPOST("actioncode")?GETPOST("actioncode"):($object->type_code?$object->type_code:$default), "actioncode", "systemauto", 0, -1); print '
    '.$langs->trans("EventOnFullDay").'
    '.$langs->trans("DateActionStart").''; + print '
    '.$langs->trans("DateActionStart").''; if (GETPOST("afaire") == 1) $form->select_date($datep,'ap',1,1,0,"action",1,1,0,0,'fulldayend'); else if (GETPOST("afaire") == 2) $form->select_date($datep,'ap',1,1,1,"action",1,1,0,0,'fulldayend'); else $form->select_date($datep,'ap',1,1,1,"action",1,1,0,0,'fulldaystart'); @@ -684,7 +684,7 @@ if ($action == 'create') print '
    '.$langs->trans("Status").' / '.$langs->trans("Percentage").'
    '.$langs->trans("Status").' / '.$langs->trans("Percentage").''; $percent=-1; if (isset($_GET['status']) || isset($_POST['status'])) $percent=GETPOST('status'); @@ -743,7 +743,7 @@ if ($action == 'create') print ''; // Societe, contact - print ''; @@ -332,7 +332,7 @@ if ($action == 'create') print ''; // Country - print ''; @@ -382,7 +382,11 @@ if ($action == 'create') dol_fiche_end(); - print '
         
    '; + print '
    '; + print ''; + print '     '; + print ''; + print '
    '; print "\n"; } diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 964b5f648b1..08d380b0ae4 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1054,7 +1054,7 @@ if ($action == 'create') print '
    '.$langs->trans("ActionOnCompany").''; + print '
    '.$langs->trans("ActionOnCompany").''; if (GETPOST('socid','int') > 0) { $societe = new Societe($db); @@ -834,7 +834,7 @@ if ($action == 'create') print '
    '; print ''; print '     '; - print ''; + print ''; print '
    '; print ""; diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 43f675ea0e9..cd8a2e174f8 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -307,7 +307,7 @@ if ($action == 'create') if (! empty($conf->projet->enabled)) $nbrows++; // Date - print '
    '.$langs->trans("Date").''; + print '
    '.$langs->trans("Date").''; $form->select_date($donation_date?$donation_date:-1,'','','','',"add",1,1); print '
    '; + print '
    '; print $form->select_country(GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
    '; print ''; - print ''; + print ''; print ''; @@ -1159,6 +1159,8 @@ if ($action == 'create') print '
    '; print ''; + print '     '; + print ''; print '
    '; print ''; diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 3397af6fc17..a5795c402ae 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -16,8 +16,8 @@ Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event ? CardAction=Event card PercentDone=Percentage complete -ActionOnCompany=Task about company -ActionOnContact=Task about contact +ActionOnCompany=Event about company +ActionOnContact=Event about contact TaskRDV=Meetings TaskRDVWith=Meeting with %s ShowTask=Show task diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 672a6f80ced..84c72afc7a0 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -90,7 +90,7 @@ $object = new Project($db); include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Security check -$socid=0; +$socid=$object->socid; if ($user->societe_id > 0) $socid=$user->societe_id; $result = restrictedArea($user, 'projet', $projectid, 'projet&project'); @@ -189,7 +189,10 @@ $listofreferent=array( 'class'=>'Propal', 'table'=>'propal', 'datefieldname'=>'datep', - 'urlnew'=>DOL_URL_ROOT.'/comm/propal.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/comm/propal.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'propal', + 'buttonnew'=>'AddProp', + 'testnew'=>$user->rights->propal->creer, 'test'=>$conf->propal->enabled && $user->rights->propale->lire), 'order'=>array( 'name'=>"CustomersOrders", @@ -197,8 +200,11 @@ $listofreferent=array( 'class'=>'Commande', 'table'=>'commande', 'datefieldname'=>'date_commande', - 'urlnew'=>DOL_URL_ROOT.'/commande/card.php?action=create&project_id='.$id, - 'test'=>$conf->commande->enabled && $user->rights->commande->lire), + 'urlnew'=>DOL_URL_ROOT.'/commande/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'orders', + 'buttonnew'=>'CreateOrder', + 'testnew'=>$user->rights->commande->creer, + 'test'=>$conf->commande->enabled && $user->rights->commande->lire), 'invoice'=>array( 'name'=>"CustomersInvoices", 'title'=>"ListInvoicesAssociatedProject", @@ -206,22 +212,43 @@ $listofreferent=array( 'margin'=>'add', 'table'=>'facture', 'datefieldname'=>'datef', - 'urlnew'=>DOL_URL_ROOT.'/compta/facture/card.php?action=create&project_id='.$id, - 'test'=>$conf->facture->enabled && $user->rights->facture->lire), + 'urlnew'=>DOL_URL_ROOT.'/compta/facture.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'bills', + 'buttonnew'=>'CreateBill', + 'testnew'=>$user->rights->facture->creer, + 'test'=>$conf->facture->enabled && $user->rights->facture->lire), 'invoice_predefined'=>array( 'name'=>"PredefinedInvoices", 'title'=>"ListPredefinedInvoicesAssociatedProject", 'class'=>'FactureRec', 'table'=>'facture_rec', 'datefieldname'=>'datec', - 'test'=>$conf->facture->enabled && $user->rights->facture->lire), + 'urlnew'=>DOL_URL_ROOT.'/compta/facture.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'bills', + 'buttonnew'=>'CreateBill', + 'testnew'=>$user->rights->facture->creer, + 'test'=>$conf->facture->enabled && $user->rights->facture->lire), +'proposal_supplier'=>array( + 'name'=>"SuppliersOrders", + 'title'=>"ListSupplierOrdersAssociatedProject", + 'class'=>'CommandeFournisseur', + 'table'=>'commande_fournisseur', + 'datefieldname'=>'date_commande', + 'urlnew'=>DOL_URL_ROOT.'/supplier_proposal/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'supplier_proposal', + 'buttonnew'=>'AddSupplierProposal', + 'testnew'=>$user->rights->supplier_proposal->creer, + 'test'=>$conf->supplier_proposal->enabled && $user->rights->supplier_proposal->lire), 'order_supplier'=>array( 'name'=>"SuppliersOrders", 'title'=>"ListSupplierOrdersAssociatedProject", 'class'=>'CommandeFournisseur', 'table'=>'commande_fournisseur', 'datefieldname'=>'date_commande', - 'urlnew'=>DOL_URL_ROOT.'/fourn/commande/card.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/fourn/commande/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'suppliers', + 'buttonnew'=>'AddSupplierOrder', + 'testnew'=>$user->rights->fournisseur->commande->creer, 'test'=>$conf->supplier_order->enabled && $user->rights->fournisseur->commande->lire), 'invoice_supplier'=>array( 'name'=>"BillsSuppliers", @@ -230,7 +257,10 @@ $listofreferent=array( 'margin'=>'minus', 'table'=>'facture_fourn', 'datefieldname'=>'datef', - 'urlnew'=>DOL_URL_ROOT.'/fourn/facture/card.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/fourn/facture/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'suppliers', + 'buttonnew'=>'AddSupplierInvoice', + 'testnew'=>$user->rights->fournisseur->facture->creer, 'test'=>$conf->supplier_invoice->enabled && $user->rights->fournisseur->facture->lire), 'contract'=>array( 'name'=>"Contracts", @@ -238,7 +268,11 @@ $listofreferent=array( 'class'=>'Contrat', 'table'=>'contrat', 'datefieldname'=>'date_contrat', - 'test'=>$conf->contrat->enabled && $user->rights->contrat->lire), + 'urlnew'=>DOL_URL_ROOT.'/contrat/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'contracts', + 'buttonnew'=>'AddContract', + 'testnew'=>$user->rights->contrat->creer, + 'test'=>$conf->contrat->enabled && $user->rights->contrat->lire), 'intervention'=>array( 'name'=>"Interventions", 'title'=>"ListFichinterAssociatedProject", @@ -246,8 +280,11 @@ $listofreferent=array( 'table'=>'fichinter', 'datefieldname'=>'date_valid', 'disableamount'=>1, - 'urlnew'=>DOL_URL_ROOT.'/contract/card.php?action=create&project_id='.$id, - 'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire), + 'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'interventions', + 'buttonnew'=>'AddIntervention', + 'testnew'=>$user->rights->ficheinter->creer, + 'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire), 'trip'=>array( 'name'=>"TripsAndExpenses", 'title'=>"ListExpenseReportsAssociatedProject", @@ -256,7 +293,10 @@ $listofreferent=array( 'datefieldname'=>'dated', 'margin'=>'minus', 'disableamount'=>1, - 'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/deplacement/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'trips', + 'buttonnew'=>'AddTrip', + 'testnew'=>$user->rights->deplacement->creer, 'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire), 'expensereport'=>array( 'name'=>"ExpenseReports", @@ -266,17 +306,11 @@ $listofreferent=array( 'datefieldname'=>'date', 'margin'=>'minus', 'disableamount'=>0, - 'urlnew'=>DOL_URL_ROOT.'/expensereport/card.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/expensereport/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'trips', + 'buttonnew'=>'AddTrip', + 'testnew'=>$user->rights->expensereport->creer, 'test'=>$conf->expensereport->enabled && $user->rights->expensereport->lire), -'agenda'=>array( - 'name'=>"Agenda", - 'title'=>"ListActionsAssociatedProject", - 'class'=>'ActionComm', - 'table'=>'actioncomm', - 'datefieldname'=>'datep', - 'disableamount'=>1, - 'urlnew'=>DOL_URL_ROOT.'/action/comm/card.php?action=create&project_id='.$id, - 'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire), 'donation'=>array( 'name'=>"Donation", 'title'=>"ListDonationsAssociatedProject", @@ -285,8 +319,23 @@ $listofreferent=array( 'table'=>'don', 'datefieldname'=>'datedon', 'disableamount'=>0, - 'urlnew'=>DOL_URL_ROOT.'/donation/card.php?action=create&project_id='.$id, + 'urlnew'=>DOL_URL_ROOT.'/don/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'donations', + 'buttonnew'=>'AddDonation', + 'testnew'=>$user->rights->don->creer, 'test'=>$conf->don->enabled && $user->rights->don->lire), +'agenda'=>array( + 'name'=>"Agenda", + 'title'=>"ListActionsAssociatedProject", + 'class'=>'ActionComm', + 'table'=>'actioncomm', + 'datefieldname'=>'datep', + 'disableamount'=>1, + 'urlnew'=>DOL_URL_ROOT.'/comm/action/card.php?action=create&projectid='.$id.'&socid='.$socid, + 'lang'=>'agenda', + 'buttonnew'=>'AddEvent', + 'testnew'=>$user->rights->agenda->myactions->create, + 'test'=>$conf->agenda->enabled && $user->rights->agenda->myactions->read), 'project_task'=>array( 'name'=>"TaskTimeValorised", 'title'=>"ListTaskTimeUserProject", @@ -295,7 +344,7 @@ $listofreferent=array( 'table'=>'projet_task', 'datefieldname'=>'task_date', 'disableamount'=>0, - 'test'=>$conf->projet->enabled && $user->rights->projet->lire && $conf->salaries->enabled), + 'test'=>$conf->projet->enabled && $user->rights->projet->lire && $conf->salaries->enabled && empty($conf->global->PROJECT_HIDE_TASKS)), ); if ($action=="addelement") @@ -511,13 +560,18 @@ foreach ($listofreferent as $key => $value) $tablename=$value['table']; $datefieldname=$value['datefieldname']; $qualified=$value['test']; - $urlnew=$value['urlnew']; - + $langtoload=$value['lang']; + $urlnew=$value['urlnew']; + $buttonnew=$value['buttonnew']; + $testnew=$value['testnew']; + if ($qualified) { // If we want the project task array to have details of users //if ($key == 'project_task') $key = 'project_task_time'; - + + if ($langtoload) $langs->load($langtoload); + $element = new $classname($db); $addform=''; @@ -525,7 +579,7 @@ foreach ($listofreferent as $key => $value) $idtofilterthirdparty=0; if (! in_array($tablename, array('facture_fourn', 'commande_fourn'))) $idtofilterthirdparty=$object->thirdparty->id; - if (empty($conf->global->PROJECT_LINK_DISABLE)) + if (empty($conf->global->PROJECT_LINK_ON_OVERWIEW_DISABLED) && $idtofilterthirdparty > 0) { $selectList=$formproject->select_element($tablename, $idtofilterthirdparty, 'minwidth300'); if (! $selectList || ($selectList<0)) @@ -535,7 +589,8 @@ foreach ($listofreferent as $key => $value) elseif($selectList) { // Define form with the combo list of elements to link - $addform.=''; + $addform.='
    '; + $addform.=''; $addform.=''; $addform.=''; $addform.=''; @@ -545,14 +600,16 @@ foreach ($listofreferent as $key => $value) $addform.='
    '; $addform.='
    '.$langs->trans("ThirdParty").''.$soc->getNomUrl(1).'
    '.$langs->trans("ThirdParty").''.$soc->getNomUrl(1).'
    '; $addform.=''; + $addform.=''; } } - /*if (empty($conf->global->PROJECT_CREATE_ELEM_DISABLE) && $urlnew) // Not yet ready. Use instead button on project card + if (empty($conf->global->PROJECT_CREATE_ON_OVERVIEW_DISABLED) && $urlnew) { - $addform.='
    '; - $addform.=''.$langs->trans("Create").''; + $addform.='
    '; + if ($testnew) $addform.=''.($buttonnew?$langs->trans($buttonnew):$langs->trans("Create")).''; + else $addform.=''.($buttonnew?$langs->trans($buttonnew):$langs->trans("Create")).''; $addform.='
    '; - }*/ + } print load_fiche_titre($langs->trans($title), $addform, ''); diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 29e2acc1403..8b6b842b980 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -355,7 +355,8 @@ fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } margin-top: 0; text-align: center; cursor: pointer; - color: #333333; + color: #333333 !important; + text-decoration: none !important; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); @@ -432,6 +433,9 @@ th .button { .maxwidthsearch { /* Max width of column with the search picto */ width: 54px; } +.valigntop { + vertical-align: top; +} .valignmiddle { vertical-align: middle; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 96ad9f0f872..49b7bd9c5d9 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -422,6 +422,9 @@ th .button { width: 54px; } +.valigntop { + vertical-align: top; +} .valignmiddle { vertical-align: middle; } @@ -1828,7 +1831,8 @@ span.butAction, span.butActionDelete { text-align: center; vertical-align: middle; cursor: pointer; - color: #333333; + color: #333333 !important; + text-decoration: none !important; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); From 592a041bc5aee9371679cfe46b40b46a6799454d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 4 Apr 2016 16:02:29 +0200 Subject: [PATCH 069/380] FIX Filter/search on extrafields on lists --- dev/skeletons/skeleton_list.php | 17 +++++++----- htdocs/contact/list.php | 2 +- htdocs/product/list.php | 2 +- htdocs/projet/list.php | 47 ++++++++++++++++++++++++++------- htdocs/projet/tasks/list.php | 43 +++++++++++++++++++++++++----- htdocs/societe/list.php | 37 ++++++++++++++------------ htdocs/user/index.php | 19 +++++++++++-- 7 files changed, 122 insertions(+), 45 deletions(-) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index 2321b76aac8..bbe67d68df5 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -217,7 +217,7 @@ foreach ($search_array_options as $key => $val) $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attribute_type[$tmpkey]; $mode=0; - if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) { $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); @@ -335,12 +335,15 @@ if ($resql) $align=$extrafields->getAlignFlag($key); $typeofextrafield=$extrafields->attribute_type[$key]; print '
    '; - if (in_array($typeofextrafield, array('varchar', 'int', 'select'))) - { - $crit=$val; - $tmpkey=preg_replace('/search_options_/','',$key); - print ''; - } + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'select'))) + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) { $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); - print ''; + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; } print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; - if (in_array($typeofextrafield, array('varchar', 'int', 'select'))) - { - $crit=$val; - $tmpkey=preg_replace('/search_options_/','',$key); - print ''; - } + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print '
    '.$langs->trans("Prefix").''; - print ($object->prefix_comm?$object->prefix_comm:' '); - print '
    '; + print ''; + print '
    '; + print $langs->trans('SendingMethod'); + print ''; + if (($action != 'editshipping') && $user->rights->societe->creer) print 'id.'">'.img_edit($langs->trans('SetMode'),1).'
    '; + print '
    '; + if ($action == 'editshipping') + { + $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->shipping_method_id,'shipping_method_id'); + } + else + { + $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->shipping_method_id,'none'); + } + print "
    ' . $langs->trans( "Categories" ) . ''; print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 1); 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 196995eea93..1ea75be58d0 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 @@ -177,6 +177,7 @@ CREATE TABLE llx_multicurrency_rate ALTER TABLE llx_societe ADD COLUMN fk_multicurrency integer; ALTER TABLE llx_societe ADD COLUMN multicurrency_code varchar(255); +ALTER TABLE llx_societe ADD COLUMN fk_shipping_method integer AFTER cond_reglement_supplier; ALTER TABLE llx_product_price ADD COLUMN fk_multicurrency integer; ALTER TABLE llx_product_price ADD COLUMN multicurrency_code varchar(255); diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql index 82e3b420e29..9822272e7c2 100644 --- a/htdocs/install/mysql/tables/llx_societe.sql +++ b/htdocs/install/mysql/tables/llx_societe.sql @@ -85,6 +85,7 @@ create table llx_societe cond_reglement tinyint, -- condition de reglement mode_reglement_supplier tinyint, -- mode de reglement fournisseur cond_reglement_supplier tinyint, -- condition de reglement fournisseur + fk_shipping_method integer, -- preferred shipping method id tva_assuj tinyint DEFAULT 1, -- assujeti ou non a la TVA localtax1_assuj tinyint DEFAULT 0, -- assujeti ou non a local tax 1 localtax1_value double(6,3), diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index e69d098ea7d..8e7fe40859b 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -225,6 +225,20 @@ if ($action=="setaddrefinlist") { } } +//Activate Ask For Preferred Shipping Method +if ($action=="setaskforshippingmet") { + $setaskforshippingmet = GETPOST('value','int'); + $res = dolibarr_set_const($db, "SOCIETE_ASK_FOR_SHIPPING_METHOD", $setaskforshippingmet,'yesno',0,'',$conf->entity); + if (! $res > 0) $error++; + if (! $error) + { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } + else + { + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} //Activate ProfId mandatory if ($action == 'setprofidmandatory') @@ -777,6 +791,26 @@ print '
    '.$langs->trans("AskForPreferredShippingMethod").' '; +if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD)) +{ + print ''; + print img_picto($langs->trans("Activated"),'switch_on'); + +} +else +{ + print ''; + print img_picto($langs->trans("Disabled"),'switch_off'); +} +print '
    '.$valuetoshow.''.$valuetoshow.''; - $size=''; + $size=''; $class=''; if ($fieldlist[$field]=='code') $size='size="8" '; if ($fieldlist[$field]=='position') $size='size="4" '; - if ($fieldlist[$field]=='libelle') $size='size="32" '; - if ($fieldlist[$field]=='tracking') $size='size="92" '; + if ($fieldlist[$field]=='libelle') $size='centpercent'; + if ($fieldlist[$field]=='tracking') $class='centpercent'; if ($fieldlist[$field]=='sortorder') $size='size="2" '; - print ''; + print ''; print '
    '.$langs->trans("SupplierReputation").''; + echo $form->selectarray('supplier_reputation', $reputations,$product->supplier_reputation); + print '
    '.$langs->trans("SupplierRef").''; if ($rowid) @@ -566,6 +574,7 @@ if ($id > 0 || $ref) $param="&id=".$object->id; print '
    '.$productfourn->getSocNomUrl(1,'supplier').''; + if(!empty($productfourn->supplier_reputation) && !empty($reputations[$productfourn->supplier_reputation])) { + print $reputations[$productfourn->supplier_reputation]; + } + print''.$productfourn->fourn_ref.''.$langs->trans('LengthOfMortgage').':years '.$langs->trans("years").'
    '.$langs->trans('AnnualInterestRate').':
     '; print '
    '; @@ -210,7 +210,7 @@ if ($form_complete && $monthly_payment) to be about $55 per month for every $100,000 financed (until you have paid off 20% of your loan). This could add '."\$" . number_format($pmi_per_month, "2", ".", ",").' to your monthly payment.'; print '
    '.$langs->trans('MonthlyPayment').':' . number_format(($monthly_payment + $pmi_per_month), "2", ".", ",") . $langs->trans("Currency".$conf->currency) . '
    '; @@ -218,10 +218,10 @@ if ($form_complete && $monthly_payment) print '
     '; - print '
    '; + print '
    ';*/ $assessed_price = ($sale_price * .85); $residential_yearly_tax = ($assessed_price / 1000) * 14; @@ -229,23 +229,23 @@ if ($form_complete && $monthly_payment) if ($pmi_per_month) { - $pmi_text = "PMI and "; + $pmi_text = "PMI"; } - - echo "Residential (or Property) Taxes are a little harder to figure out... In Massachusetts, the average resedential tax rate seems - to be around $14 per year for every $1,000 of your property's assessed value."; - - print '

    '; - print "Let's say that your property's assessed value is 85% of what you actually paid for it - "; - print number_format($assessed_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'This would mean that your yearly residential taxes will be around'; + /*echo "Residential (or Property) Taxes are a little harder to figure out... In Massachusetts, the average resedential tax rate seems + to be around $14 per year for every $1,000 of your property's assessed value.";*/ + //print '

    '; + //print "Let's say that your property's assessed value is 85% of what you actually paid for it - "; + /*print number_format($assessed_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'This would mean that your yearly residential taxes will be around'; print number_format($residential_yearly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency); print 'This could add ' . number_format($residential_monthly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'to your monthly payment'; print '
    TOTAL Monthly Payment:' . number_format(($monthly_payment + $pmi_per_month + $residential_monthly_tax), "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    '; - print '(including '.$pmi_text.' residential tax)
    '; // Label - print ''; + print ''; // Bank account if (! empty($conf->banque->enabled)) { print ''; } else @@ -238,7 +238,7 @@ if ($action == 'create') print ''; print ''; @@ -247,48 +247,34 @@ if ($action == 'create') print ''; print ''; print ''; print '
    '.$langs->trans("Label").'
    '.$langs->trans("Label").'
    '.$langs->trans("Account").''; - $form->select_comptes($GETPOST["accountid"],"accountid",0,"courant=1",1); // Show list of bank account with courant + $form->select_comptes(GETPOST("accountid"),"accountid",0,"courant=1",1); // Show list of bank account with courant print '
    '.$langs->trans('NotePrivate').''; - $doleditor = new DolEditor('note_private', GETPOST('note_private', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); + $doleditor = new DolEditor('note_private', GETPOST('note_private', 'alpha'), '', 160, 'dolibarr_notes', 'In', false, true, true, ROWS_6, 100); print $doleditor->Create(1); print '
    '.$langs->trans('NotePublic').''; - $doleditor = new DolEditor('note_public', GETPOST('note_public', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); + $doleditor = new DolEditor('note_public', GETPOST('note_public', 'alpha'), '', 160, 'dolibarr_notes', 'In', false, true, true, ROWS_6, 100); print $doleditor->Create(1); print '
    '; - print '
    '; - - // Accountancy - print ''; - + // Accountancy if ($conf->accounting->enabled) { - print ''; - print ''; - - print ''; - print ''; - - print ''; - print ''; + print '
    '; + + print '
    '.$langs->trans("LoanAccountancyCapitalCode").''; - print '
    '.$langs->trans("LoanAccountancyInsuranceCode").''; - print '
    '.$langs->trans("LoanAccountancyInterestCode").''; - print '
    '; + + print ''; + print ''; + + print ''; + print ''; + + print ''; + print ''; + + print '
    '.$langs->trans("LoanAccountancyCapitalCode").''; + print '
    '.$langs->trans("LoanAccountancyInsuranceCode").''; + print '
    '.$langs->trans("LoanAccountancyInterestCode").''; + print '
    '; } - else - { - print ''.$langs->trans("LoanAccountancyCapitalCode").''; - print ''; - print ''; - - print ''.$langs->trans("LoanAccountancyInsuranceCode").''; - print ''; - print ''; - - print ''.$langs->trans("LoanAccountancyInterestCode").''; - print ''; - print ''; - } - - print ''; - + dol_fiche_end(); print '
         '; @@ -306,8 +292,6 @@ if ($id > 0) { $head=loan_prepare_head($object); - dol_fiche_head($head, 'card', $langs->trans("Loan"),0,'bill'); - // Confirm for loan if ($action == 'paid') { @@ -329,10 +313,12 @@ if ($id > 0) print ''; } + dol_fiche_head($head, 'card', $langs->trans("Loan"), 0, 'bill'); + print ''; // Ref - print '"; @@ -394,18 +380,19 @@ if ($id > 0) print '
    '.$langs->trans("Ref").''; + print '
    '.$langs->trans("Ref").''; print $form->showrefnav($object,'id'); print "
    '; + dol_fiche_end(); + + if ($action == 'edit') { - print '
    '; + print '
    '; print ''; print '   '; print ''; print '
    '; - print ''; + print '

    '; } - - dol_fiche_end(); - + print ''; print ''."\n"; - print '\n"; @@ -463,18 +491,159 @@ if ($mode != 'marketplace') print nl2br($objMod->getDesc()); print "\n"; + // Help + print ''; + // Version print '\n"; // Activate/Disable and Setup (2 columns) diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index fc9f503ca83..e9139462a9b 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -469,6 +469,8 @@ class DolibarrModules // Can not be abstract, because we need to insta global $langs; $langs->load("admin"); + if (empty($this->descriptionlong)) return ''; + // If module description translation does not exist using its unique id, we can use its name to find translation if (is_array($this->langfiles)) { diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 9f3998c6a01..7decc602dbe 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1720,4 +1720,20 @@ ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Ve MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases. ModelModulesProduct=Templates for product documents ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate automatically codes, you must first define a manager to auto define barcode number. -SeeSubstitutionVars=See * note for list of possible substitution variables \ No newline at end of file +SeeSubstitutionVars=See * note for list of possible substitution variables +AllPublishers=All publishers +UnknownPublishers=Unknown publishers +AddRemoveTabs=Add or remove tabs +AddDictionaries=Add dictionaries +AddBoxes=Add boxes +AddSheduledJobs=Add scheduled jobs +AddHooks=Add hooks +AddTriggers=Add triggers +AddMenus=Add menus +AddPermissions=Add permissions +AddExportProfiles=Add export profiles +AddImportProfiles=Add import profiles +AddOtherPagesOrServices=Add other pages or services +AddModels=Add document or numbering templates +AddSubstitutions=Add keys substitutions +DetectionNotPossible=Detection not possible From 2c829e7cb6b5d847e4fd40505a01f181718a5979 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 11:50:45 +0200 Subject: [PATCH 095/380] NEW Add picto on module list to show warning and if module is an external module. --- htdocs/admin/modules.php | 45 +++++++++++------- htdocs/core/lib/functions.lib.php | 6 +-- htdocs/theme/eldy/img/credit_card.png | Bin 0 -> 181 bytes htdocs/theme/eldy/img/external.png | Bin 0 -> 378 bytes htdocs/theme/eldy/img/object_energie.png | Bin 376 -> 0 bytes .../img/object_energy.png} | Bin htdocs/theme/eldy/img/setup.png | Bin 702 -> 155 bytes htdocs/theme/eldy/img/upload.png | Bin 0 -> 296 bytes htdocs/theme/eldy/style.css.php | 1 + htdocs/theme/md/img/credit_card.png | Bin 0 -> 181 bytes htdocs/theme/md/img/external.png | Bin 0 -> 316 bytes htdocs/theme/md/img/object_energy.png | Bin 0 -> 158 bytes htdocs/theme/md/img/upload.png | Bin 0 -> 296 bytes htdocs/theme/md/style.css.php | 1 + 14 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 htdocs/theme/eldy/img/credit_card.png create mode 100644 htdocs/theme/eldy/img/external.png delete mode 100644 htdocs/theme/eldy/img/object_energie.png rename htdocs/theme/{md/img/object_energie.png => eldy/img/object_energy.png} (100%) create mode 100644 htdocs/theme/eldy/img/upload.png create mode 100644 htdocs/theme/md/img/credit_card.png create mode 100644 htdocs/theme/md/img/external.png create mode 100644 htdocs/theme/md/img/object_energy.png create mode 100644 htdocs/theme/md/img/upload.png diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 4d824b3805b..a31c8f1707a 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -222,6 +222,7 @@ foreach ($modulesdir as $dir) $orders[$i] = $familyinfo[$familykey]['position']."_".$familykey."_".$moduleposition."_".$j; // Sort by family, then by module position then number $dirmod[$i] = $dir; + //print $i.'-'.$dirmod[$i].'
    '; // Set categ[$i] $specialstring = isset($specialtostring[$special])?$specialtostring[$special]:'unknown'; if ($objMod->version == 'development' || $objMod->version == 'experimental') $specialstring='expdev'; @@ -322,9 +323,6 @@ if ($mode != 'marketplace') $moreforfilter.= $langs->trans('Keyword') . ': '; $moreforfilter.= ''; $moreforfilter.='
    '; - $moreforfilter.= $langs->trans('Status') . ': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1); - $moreforfilter.= '
    '; - $moreforfilter.='
    '; $moreforfilter.= $langs->trans('Origin') . ': '.$form->selectarray('search_nature', $arrayofnatures, $search_nature, 1); $moreforfilter.= '
    '; if (! empty($conf->global->MAIN_FEATURES_LEVEL)) @@ -337,6 +335,9 @@ if ($mode != 'marketplace') $moreforfilter.= $langs->trans('Version') . ': '.$form->selectarray('search_version', $array_version, $search_version, 1); $moreforfilter.= ''; } + $moreforfilter.='
    '; + $moreforfilter.= $langs->trans('Status') . ': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1); + $moreforfilter.= '
    '; $moreforfilter.=' '; $moreforfilter.='
    '; $moreforfilter.=''; @@ -370,7 +371,8 @@ if ($mode != 'marketplace') $modName = $filename[$key]; $objMod = $modules[$key]; - + $dirofmodule = $dirmod[$key]; + $special = $objMod->special; //print $objMod->name." - ".$key." - ".$objMod->special.' - '.$objMod->version."
    "; @@ -497,11 +499,13 @@ if ($mode != 'marketplace') if ($objMod->getDescLong()) $text.=$objMod->getDesc().'
    '.$objMod->getDescLong().'
    '; else $text.=$objMod->getDesc().'
    '; + $textexternal=''; if ($objMod->isCoreOrExternalModule() == 'external') { - $text.='
    '.$langs->trans("Origin").': '.$langs->trans("ExternalModule",$dirofmodule); - if (! empty($objMod->editor_name) && $objMod->editor_name != 'dolibarr') $text.='
    '.$langs->trans("Author").': '.$objMod->editor_name; - if (! empty($objMod->editor_url) && $objMod->editor_url != 'www.dolibarr.org') $text.='
    '.$langs->trans("Url").': '.$objMod->editor_url; + $textexternal.='
    '.$langs->trans("Origin").': '.$langs->trans("ExternalModule",$dirofmodule); + if ($objMod->editor_name != 'dolibarr') $textexternal.='
    '.$langs->trans("Publisher").': '.(empty($objMod->editor_name)?$langs->trans("Unknown"):$objMod->editor_name); + if (! empty($objMod->editor_url) && ! preg_match('/dolibarr\.org/i',$objMod->editor_url)) $textexternal.='
    '.$langs->trans("Url").': '.$objMod->editor_url; + $text.=$textexternal; $text.='
    '; } else @@ -636,13 +640,22 @@ if ($mode != 'marketplace') $text.='
    '.$langs->trans("AddOtherPagesOrServices").': '; $text.=$langs->trans("DetectionNotPossible"); - print $form->textwithpicto('', $text, 1, 'help'); + print $form->textwithpicto('', $text, 1, 'help', 'minheight20'); + + // Picto warning + $version=$objMod->getVersion(); + if (preg_match('/development/i', $version)) print img_warning($langs->trans("Development"), 'style="float: right"'); + if (preg_match('/experimental/i', $version)) print img_warning($langs->trans("Experimental"), 'style="float: right"'); + if (preg_match('/deprecated/i', $version)) print img_warning($langs->trans("Deprecated"), 'style="float: right"'); + + // Picto external + if ($textexternal) print img_picto($langs->trans("ExternalModule",$dirofmodule), 'external', 'style="float: right"'); + + print ''; // Version print '
    \n"; @@ -688,11 +701,11 @@ if ($mode != 'marketplace') { if (preg_match('/^([^@]+)@([^@]+)$/i',$urlpage,$regs)) { - print ''.img_picto($langs->trans("Setup"),"setup").''; + print ''.img_picto($langs->trans("Setup"),"setup",'style="padding-right: 6px"').''; } else { - print ''.img_picto($langs->trans("Setup"),"setup").''; + print ''.img_picto($langs->trans("Setup"),"setup",'style="padding-right: 6px"').''; } } } @@ -700,16 +713,16 @@ if ($mode != 'marketplace') } else if (preg_match('/^([^@]+)@([^@]+)$/i',$objMod->config_page_url,$regs)) { - print ''; + print ''; } else { - print ''; + print ''; } } else { - print ''; + print ''; } } @@ -732,7 +745,7 @@ if ($mode != 'marketplace') print "\n"; } print "\n"; - print ''; + print ''; } print "\n"; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 8671638ce0c..63d7f749be7 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2416,16 +2416,16 @@ function img_info($titlealt = 'default') * Show warning logo * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param int $float If we must add style "float: right" + * @param string $options Add more attribute on img tag (For example 'style="float: right"'). If 1 * @return string Return img tag */ -function img_warning($titlealt = 'default', $float = 0) +function img_warning($titlealt = 'default', $options = '') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Warning'); - return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($float ? ' style="float: right"' : '')); + return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($options ? ($options == '1' ? ' style="float: right"' : ' '.$options): '')); } /** diff --git a/htdocs/theme/eldy/img/credit_card.png b/htdocs/theme/eldy/img/credit_card.png new file mode 100644 index 0000000000000000000000000000000000000000..33b1cb32c9db1754e2fcd6ae165586cabdc40370 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0D8c!F;kP61P*BrSH83?pK{BL5| zE}m4iAzNeS&+!wD%_Vj5*7J?qKkA^>bP0l+XkKRRBjH literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/external.png b/htdocs/theme/eldy/img/external.png new file mode 100644 index 0000000000000000000000000000000000000000..507d8c24858bdb1892d7848f070b15a98c266363 GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|wj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pIsg`HE)Xq)`80tN;~c25__5R21iC$IHmF%)UtuQ)rw zZQ`03ArX5vAr`UY${YL}Y?{;~j%1yf_<>=!Q1=7X01qLR$fFWx_?D@pZksE=-8}Qs zvgdW%pKsI6;Pl*mz(Qw#&i^M{thXGO`N5NXPfcghtK|onG#X1aj2QEpo)|Lx|E86Y z^_w?A#8Lb};i3px(K#mHrXBDU4oOq+=X~JicV}_w?5`|O;{C!mGv-xiSUHw&doNsO zo^*wAX6sK!h8pJ8iVN6p8+*3Cz4gugiw|4m?kOcHyQhVGc^UZ5CH+A667AdXCxsmh zvlU_4z;ENdi{aa$7p2*nv)d13&;Mhw^Hj(AXot{Kw@m)bHTryNw))D3>}_UsjAl<< VHyD`}1Oh{e!PC{xWt~$(697_+lJEck literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/object_energie.png b/htdocs/theme/eldy/img/object_energie.png deleted file mode 100644 index bc3966d2fa2e83c5810278c33a37ea5fc6718d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmV-;0f+vHP)?cH9Ukkl^6lsM()jVZh*Ilf$rlN}E>2tLhw}Z492SelF{r5}E)? C7BJiZ literal 702 zcmV;v0zv(WP)L`hzKc=0lo$X z24&~ZpT7un9)=-dVPUD)uV4REQ&Y7WsMZ*!IXpZ(2WWUQT%oqMcG>CEr!PiFN23@L z92}f?_3G9CAnfdH4|0Jq(6C8B?|kz1_Rd7H4P?lnLx(N`Z775KkI~oHxA4M+3;%&( z05+tuvT`%XJ3DslIBITg9)jU#O-;?RJ$v?Cw6(P@v$nPl^6>B|J%0T7e~=;9u3q_n z<;tZmt5>f+VPRoWBQ7p3hBewihAf=Ze|=i3!{x&}=Kj~!)otYDCmzP)P<`upF^OJO+AKB9J zZGOMwMj$RBXn>NEQn0^&;G~NeuY%&d$Ja%(u&3JM%#|ba{?G2V-!iMqt_-IE5)u+2 z{{Eq}u3fwH9~f{`_Soj^JZh>d_)6Nu%2SQv=;fLH*CC4pE4i1p%v k)TUHs8=eVtRRqTh02?mmtpET3 diff --git a/htdocs/theme/eldy/img/upload.png b/htdocs/theme/eldy/img/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..862fb593232ab42fffc8c17029f166f81cd39268 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mn3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_6IENoU(E|N?lh2g?4(nIEHAPKYGc~&&g4w^`ZU|fr(5` z9cCgrO&fR;^rL=QSxs|j-ME-Nii1@&kyEAQnCyzyp4NTGedcYwH`yoc+~0hoVxvFN zS9@ew4&HNkYyRY%SI3ru=(c&nDjf4d^xsO)yuN7a$*x*+_g7{Yzex1d`xQHf7sNXi zz0s-IUUGJ$Lt50V1uIj-e(=|*O`qG~`Dky*oJr<&F4=K!yE2nZN=i(G^1biwni8FVdQ&MBb@08pE8VE_OC literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 5dd81e0d0e1..050c685aed8 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -576,6 +576,7 @@ div.myavailability { .maxwidth300 { max-width: 300px; } .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } +.minheight20 { min-height: 20px; } .titlefield { width: 25%; } .titlefieldcreate { width: 20%; } diff --git a/htdocs/theme/md/img/credit_card.png b/htdocs/theme/md/img/credit_card.png new file mode 100644 index 0000000000000000000000000000000000000000..33b1cb32c9db1754e2fcd6ae165586cabdc40370 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0D8c!F;kP61P*BrSH83?pK{BL5| zE}m4iAzNeS&+!wD%_Vj5*7J?qKkA^>bP0l+XkKRRBjH literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/external.png b/htdocs/theme/md/img/external.png new file mode 100644 index 0000000000000000000000000000000000000000..e767123a3519bf0a66e099e24aa7eeb06fb07c49 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mn3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_6IENoN|K9&$)jBh0c1qIEHAPUwhFukI7Jg^+A5PN9F`2 z*F`Q%xIHH;iJ#DYz#`KiT)?p8%T9(ErRg57(|I))m)yQ^!{m2z^MX^GQ!4M-oR{wB zw#@7K@cIGQwM7|oC$m;;GZdL}OswL&vc}bCc9IRf$KOSTB;0X{_RmeyH`7+B7J0jn z<>8TiFCJa!4${%zyYkhk^(T5(7hmMMGkZt&4C9N@*L;<{s;f+M*$TEU&kz2yvL<#@ z_oBJC-_;~tpKbT!gv}|tSoJU7YO6B;=jCP3IJ0+c(CnY#GK{)5Q7<(DOkV>%#^CAd K=d#Wzp$Py-zI-MC literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/object_energy.png b/htdocs/theme/md/img/object_energy.png new file mode 100644 index 0000000000000000000000000000000000000000..668d1bc68a13e0118d53a2331c13be10cd7a7933 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mQaxQ9Ln;`P6+~4GOcV|>yy@aI z_~YKh$0Evjlcz=0@% zE)juZ6I>lGy0WDm>Uz^?!sxo1V|j}ao8_Ud7KszA4Datb)HfdAHXUdogQu&X%Q~lo FCIGsCGZX*- literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/upload.png b/htdocs/theme/md/img/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..862fb593232ab42fffc8c17029f166f81cd39268 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mn3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_6IENoU(E|N?lh2g?4(nIEHAPKYGc~&&g4w^`ZU|fr(5` z9cCgrO&fR;^rL=QSxs|j-ME-Nii1@&kyEAQnCyzyp4NTGedcYwH`yoc+~0hoVxvFN zS9@ew4&HNkYyRY%SI3ru=(c&nDjf4d^xsO)yuN7a$*x*+_g7{Yzex1d`xQHf7sNXi zz0s-IUUGJ$Lt50V1uIj-e(=|*O`qG~`Dky*oJr<&F4=K!yE2nZN=i(G^1biwni8FVdQ&MBb@08pE8VE_OC literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 9f6f2f3cf91..c497e8f876c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -566,6 +566,7 @@ div.myavailability { .maxwidth300 { max-width: 300px; } .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } +.minheight20 { min-height: 20px; } .titlefield { width: 30%; } .titlefieldcreate { width: 20%; } From 059466030af21b1279a576d42019bb32da717520 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 12:42:18 +0200 Subject: [PATCH 096/380] FIX Missing a new line into log of sent emails --- htdocs/core/lib/functions.lib.php | 2 +- .../core/triggers/interface_50_modAgenda_ActionsAuto.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 63d7f749be7..6b69427eacd 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4525,7 +4525,7 @@ function dol_textishtml($msg,$option=0) } /** - * Concat 2 descriptions (second one after first one with a new line separator if required) + * Concat 2 descriptions with a new line between them (second operand after first one with appropriate new line separator) * text1 html + text2 html => text1 + '
    ' + text2 * text1 html + text2 txt => text1 + '
    ' + dol_nl2br(text2) * text1 txt + text2 html => dol_nl2br(text1) + '
    ' + text2 diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 40a06f11648..53908142e03 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -683,7 +683,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $attachs=$_SESSION['listofnames']; if ($attachs && strpos($action,'SENTBYMAIL')) { - $object->actionmsg.="\n".$langs->transnoentities("AttachedFiles").': '.$attachs; + $object->actionmsg=dol_concatdesc($object->actionmsg, "\n".$langs->transnoentities("AttachedFiles").': '.$attachs); } } From 7f129d14d7e1eb33c646ee9b708d21788608d743 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 13:06:22 +0200 Subject: [PATCH 097/380] Better responsive design --- htdocs/core/class/commonobject.class.php | 12 ++++++------ htdocs/core/class/doleditor.class.php | 2 +- htdocs/core/class/html.formactions.class.php | 5 +++-- htdocs/core/class/html.formfile.class.php | 16 ++++++---------- htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/facture/card.php | 2 +- htdocs/theme/eldy/style.css.php | 9 +++++++-- htdocs/theme/md/style.css.php | 14 +++++++++++++- 8 files changed, 38 insertions(+), 24 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 059ce7e5e25..71a0405dfaf 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3272,18 +3272,18 @@ abstract class CommonObject if ($inputalsopricewithtax) print '
    '; // Qty - print ''; + print ''; if($conf->global->PRODUCT_USE_UNITS) { - print ''; + print ''; } // Reduction short - print ''; + print ''; if ($this->situation_cycle_ref) { - print ''; + print ''; } if ($usemargins && ! empty($conf->margin->enabled) && empty($user->societe_id)) @@ -3300,10 +3300,10 @@ abstract class CommonObject } // Total HT - print ''; + print ''; // Multicurrency - if (!empty($conf->multicurrency->enabled)) print ''; + if (!empty($conf->multicurrency->enabled)) print ''; print ''; // No width to allow autodim diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 35c3b3909ef..8564a18822e 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -138,7 +138,7 @@ class DolEditor /** * Output edit area inside the HTML stream. - * Output depends on this->tool (fckeditor, ckeditor, texatrea, ...) + * Output depends on this->tool (fckeditor, ckeditor, textarea, ...) * * @param int $noprint 1=Return HTML string instead of printing it to output * @param string $morejs Add more js. For example: ".on( \'saveSnapshot\', function(e) { alert(\'ee\'); });" diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 0316fb461cf..fb7566ef7a5 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -153,9 +153,10 @@ class FormActions * @param string $typeelement 'invoice','propal','order','invoice_supplier','order_supplier','fichinter' * @param int $socid socid of user * @param int $forceshowtitle Show title even if there is no actions to show + * @param string $morecss More css on table * @return int <0 if KO, >=0 if OK */ - function showactions($object,$typeelement,$socid=0,$forceshowtitle=0) + function showactions($object,$typeelement,$socid=0,$forceshowtitle=0,$morecss='listactions') { global $langs,$conf,$user; global $bc; @@ -182,7 +183,7 @@ class FormActions print load_fiche_titre($title,'',''); $total = 0; $var=true; - print '
    '; diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php index 18b51c86fee..969d5ecb436 100644 --- a/htdocs/loan/note.php +++ b/htdocs/loan/note.php @@ -66,7 +66,7 @@ if ($id > 0) $head = loan_prepare_head($object); - dol_fiche_head($head, 'note', $langs->trans("Loan"),0,'loan'); + dol_fiche_head($head, 'note', $langs->trans("Loan"), 0, 'bill'); print '
    '; @@ -75,19 +75,20 @@ if ($id > 0) print ''; // Ref - print ''; + print ''; print ''; // Name - print ''; + print ''; print ''; print "
    '.$langs->trans('Ref').'
    '.$langs->trans('Ref').''; - print $form->showrefnav($object,'id','','','rowid','ref'); + print $form->showrefnav($object,'id','',1,'rowid','ref'); print '
    '.$langs->trans("Name").'
    '.$langs->trans("Name").''.$object->label.'
    "; print '
    '; - $colwidth='25'; + //$colwidth='25'; + $cssclass='titlefield'; $permission = $user->rights->loan->write; // Used by the include of notes.tpl.php include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; From 9484dc5b3ea9469007fcf60f04924ff36fd1a855 Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Wed, 6 Apr 2016 11:38:34 +0200 Subject: [PATCH 091/380] change comment --- htdocs/product/class/productbatch.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index 44d1025b3db..d0554309539 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -469,7 +469,7 @@ class Productbatch extends CommonObject * @param DoliDB $db database object * @param int $fk_product_stock id product_stock for objet * @param int $with_qty doesn't return line with 0 quantity - * @return int <0 if KO, >0 if OK + * @return array <0 if KO, array of batch */ public static function findAll($db,$fk_product_stock,$with_qty=0) { From 4e3985fbc5569252651d839a105dc149dbe3288e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Apr 2016 13:27:46 +0200 Subject: [PATCH 092/380] NEW If option to see non stable modules is on, add a filter into module list to filter on level (deprecated, experimental, development) --- htdocs/admin/modules.php | 43 ++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index e948bb67cd0..3d870271977 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -41,6 +41,7 @@ $page_y=GETPOST('page_y','int'); $search_keyword=GETPOST('search_keyword','alpha'); $search_status=GETPOST('search_status','alpha'); $search_nature=GETPOST('search_nature','alpha'); +$search_version=GETPOST('search_version','alpha'); if (! $user->admin) accessforbidden(); @@ -64,8 +65,9 @@ $familyinfo=array( $param=''; if ($search_keyword) $param.='&search_keyword='.urlencode($search_keyword); -if ($search_status) $param.='&search_status='.urlencode($search_status); -if ($search_nature) $param.='&search_nature='.urlencode($search_nature); +if ($search_status) $param.='&search_status='.urlencode($search_status); +if ($search_nature) $param.='&search_nature='.urlencode($search_nature); +if ($search_version) $param.='&search_version='.urlencode($search_version); @@ -94,6 +96,7 @@ if (GETPOST('buttonreset')) $search_keyword=''; $search_status=''; $search_nature=''; + $search_version=''; } @@ -163,13 +166,21 @@ foreach ($modulesdir as $dir) } $j = $objMod->numero; - $modulequalified=1; + $modulequalified=true; // We discard modules according to features level (PS: if module is activated we always show it) $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod))); - if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=0; - if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=0; - if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified=0; + if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=false; + if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=false; + if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified=false; + if ($search_version) + { + if (($objMod->version == 'development' || $objMod->version == 'experimental' || preg_match('/deprecated/', $objMod->version)) && $search_version == 'stable') $modulequalified=false; + if ($objMod->version != 'development' && ($search_version == 'development')) $modulequalified=false; + if ($objMod->version != 'experimental' && ($search_version == 'experimental')) $modulequalified=false; + if (! preg_match('/deprecated/', $objMod->version) && ($search_version == 'deprecated')) $modulequalified=false; + } + // We discard modules according to property disabled if (! empty($objMod->hidden)) $modulequalified=false; @@ -254,15 +265,15 @@ if ($mode==='expdev') print $langs->trans("ModuleFamilyExperimental")."
    $h = 0; $categidx='common'; // Main -if (! empty($categ[$categidx])) -{ +//if (! empty($categ[$categidx])) +//{ $head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$categidx; $head[$h][1] = $langs->trans("AvailableModules"); $head[$h][2] = 'common'; $h++; -} +//} -$categidx='expdev'; +/*$categidx='expdev'; if (! empty($categ[$categidx])) { $categidx='expdev'; @@ -270,7 +281,7 @@ if (! empty($categ[$categidx])) $head[$h][1] = $form->textwithpicto($langs->trans("ModuleFamilyExperimental"), $langs->trans('DoNotUseInProduction'), 1, 'warning', '', 0, 3); $head[$h][2] = 'expdev'; $h++; -} +}*/ $categidx='marketplace'; $head[$h][0] = DOL_URL_ROOT."/admin/modules.php?mode=".$categidx; @@ -304,6 +315,16 @@ if ($mode != 'marketplace') $moreforfilter.='
    '; $moreforfilter.= $langs->trans('Origin') . ': '.$form->selectarray('search_nature', array('standard'=>$langs->transnoentitiesnoconv("Core"), 'external'=>$langs->transnoentitiesnoconv("External")), $search_nature, 1); $moreforfilter.= '
    '; + if (! empty($conf->global->MAIN_FEATURES_LEVEL)) + { + $array_version = array('stable'=>$langs->transnoentitiesnoconv("Stable")); + if ($conf->global->MAIN_FEATURES_LEVEL < 0) $array_version['deprecated']=$langs->trans("Deprecated"); + if ($conf->global->MAIN_FEATURES_LEVEL > 0) $array_version['experimental']=$langs->trans("Experimental"); + if ($conf->global->MAIN_FEATURES_LEVEL > 1) $array_version['development']=$langs->trans("Development"); + $moreforfilter.='
    '; + $moreforfilter.= $langs->trans('Version') . ': '.$form->selectarray('search_version', $array_version, $search_version, 1); + $moreforfilter.= '
    '; + } $moreforfilter.=' '; $moreforfilter.='
    '; $moreforfilter.=''; From 1a1dc39a6b4f46b97d3602efc02bced56690b8a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Apr 2016 14:53:14 +0200 Subject: [PATCH 093/380] Mark a duplicate function as deprecated --- htdocs/compta/facture/list.php | 2 +- htdocs/core/class/html.formfile.class.php | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index d227d127f69..2aae115b42b 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1074,7 +1074,7 @@ if ($resql) $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param); $title=$langs->trans("MassFilesArea").' ('.$langs->trans("Hide").')'; - $formfile->show_documents('massfilesarea','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,''); + print $formfile->showdocuments('massfilesarea','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,''); } else { diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 565acd828b2..2c1b7a72b62 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -237,6 +237,7 @@ class FormFile * @param string $buttonlabel Label on submit button * @param string $codelang Default language code to use on lang combo box if multilang is enabled * @return int <0 if KO, number of shown files if OK + * @deprecated Use print xxx->showdocuments() instead. */ function show_documents($modulepart,$modulesubdir,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='') { @@ -274,7 +275,7 @@ class FormFile if (0 !== $iconPDF) { dol_syslog(__METHOD__ . ": passing iconPDF parameter is deprecated", LOG_WARNING); } - + global $langs, $conf, $user, $hookmanager; global $form, $bc; @@ -286,7 +287,7 @@ class FormFile if (! empty($iconPDF)) { return $this->getDocumentsLink($modulepart, $modulesubdir, $filedir); } - + $printer=0; if (in_array($modulepart,array('facture','supplier_proposal','propal','proposal','order','commande','expedition', 'commande_fournisseur'))) // The direct print feature is implemented only for such elements { @@ -579,8 +580,8 @@ class FormFile { $file_list=dol_dir_list($filedir,'files',0,'','(\.meta|_preview\.png)$','date',SORT_DESC); - // Affiche en-tete tableau si non deja affiche - if (! empty($file_list) && ! $headershown) + // Show title of array if not already shown + if ((! empty($file_list) || $modulepart == 'massfilesarea') && ! $headershown) { $headershown=1; $out.= '
    '.$titletoshow.'
    '; From ee53a8b1a89f1a3108d648bc4c9935fa8c36077f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Apr 2016 16:45:22 +0200 Subject: [PATCH 094/380] NEW Can filter modules on publisher --- htdocs/admin/modules.php | 219 ++++++++++++++++-- htdocs/core/modules/DolibarrModules.class.php | 2 + htdocs/langs/en_US/admin.lang | 18 +- 3 files changed, 213 insertions(+), 26 deletions(-) diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 3d870271977..4d824b3805b 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -112,6 +112,7 @@ $_SESSION["mode"]=$mode; $help_url='EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones'; llxHeader('',$langs->trans("Setup"),$help_url); +$arrayofnatures=array('core'=>$langs->transnoentitiesnoconv("Core"), 'external'=>$langs->transnoentitiesnoconv("External").' - '.$langs->trans("AllPublishers")); // Search modules dirs $modulesdir = dolGetModulesDirs(); @@ -166,26 +167,37 @@ foreach ($modulesdir as $dir) } $j = $objMod->numero; - $modulequalified=true; + $modulequalified=1; // We discard modules according to features level (PS: if module is activated we always show it) $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',get_class($objMod))); - if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=false; - if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=false; - if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified=false; - if ($search_version) + if ($objMod->version == 'development' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 2))) $modulequalified=0; + if ($objMod->version == 'experimental' && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL < 1))) $modulequalified=0; + if (preg_match('/deprecated/', $objMod->version) && (empty($conf->global->$const_name) && ($conf->global->MAIN_FEATURES_LEVEL >= 0))) $modulequalified=0; + + // We discard modules according to property disabled + if (! empty($objMod->hidden)) $modulequalified=0; + + if ($modulequalified > 0) { - if (($objMod->version == 'development' || $objMod->version == 'experimental' || preg_match('/deprecated/', $objMod->version)) && $search_version == 'stable') $modulequalified=false; - if ($objMod->version != 'development' && ($search_version == 'development')) $modulequalified=false; - if ($objMod->version != 'experimental' && ($search_version == 'experimental')) $modulequalified=false; - if (! preg_match('/deprecated/', $objMod->version) && ($search_version == 'deprecated')) $modulequalified=false; + $publisher=dol_escape_htmltag($objMod->getPublisher()); + $external=($objMod->isCoreOrExternalModule() == 'external'); + if ($external) + { + if ($publisher) + { + $arrayofnatures['external_'.$publisher]=$langs->trans("External").' - '.$publisher; + } + else + { + $arrayofnatures['external_']=$langs->trans("External").' - '.$langs->trans("UnknownPublishers"); + } + } + ksort($arrayofnatures); } - // We discard modules according to property disabled - if (! empty($objMod->hidden)) $modulequalified=false; - // Define array $categ with categ with at least one qualified module - if ($modulequalified) + if ($modulequalified > 0) { $modules[$i] = $objMod; $filename[$i]= $modName; @@ -313,7 +325,7 @@ if ($mode != 'marketplace') $moreforfilter.= $langs->trans('Status') . ': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1); $moreforfilter.= '
    '; $moreforfilter.='
    '; - $moreforfilter.= $langs->trans('Origin') . ': '.$form->selectarray('search_nature', array('standard'=>$langs->transnoentitiesnoconv("Core"), 'external'=>$langs->transnoentitiesnoconv("External")), $search_nature, 1); + $moreforfilter.= $langs->trans('Origin') . ': '.$form->selectarray('search_nature', $arrayofnatures, $search_nature, 1); $moreforfilter.= '
    '; if (! empty($conf->global->MAIN_FEATURES_LEVEL)) { @@ -379,6 +391,8 @@ if ($mode != 'marketplace') $moduledesc=$objMod->getDesc(); $moduledesclong=$objMod->getDescLong(); $moduleauthor=$objMod->getPublisher(); + + // We discard showing according to filters if ($search_keyword) { $qualified=0; @@ -396,8 +410,22 @@ if ($mode != 'marketplace') } if ($search_nature) { - if ($search_nature == 'external' && $objMod->isCoreOrExternalModule() != 'external') continue; - if ($search_nature == 'standard' && $objMod->isCoreOrExternalModule() == 'external') continue; + if (preg_match('/^external/',$search_nature) && $objMod->isCoreOrExternalModule() != 'external') continue; + if (preg_match('/^external_(.*)$/',$search_nature, $reg)) + { + //print $reg[1].'-'.dol_escape_htmltag($objMod->getPublisher()); + $publisher=dol_escape_htmltag($objMod->getPublisher()); + if ($reg[1] && $reg[1] != $publisher) continue; + if (! $reg[1] && ! empty($publisher)) continue; + } + if ($search_nature == 'core' && $objMod->isCoreOrExternalModule() == 'external') continue; + } + if ($search_version) + { + if (($objMod->version == 'development' || $objMod->version == 'experimental' || preg_match('/deprecated/', $objMod->version)) && $search_version == 'stable') continue; + if ($objMod->version != 'development' && ($search_version == 'development')) continue; + if ($objMod->version != 'experimental' && ($search_version == 'experimental')) continue; + if (! preg_match('/deprecated/', $objMod->version) && ($search_version == 'deprecated')) continue; } // Load all lang files of module @@ -415,7 +443,7 @@ if ($mode != 'marketplace') if ($familykey!=$oldfamily) { print '
    '; + print ''; $familytext=empty($familyinfo[$familykey]['label'])?$familykey:$familyinfo[$familykey]['label']; print $familytext; print "'; + $text=''; + if ($objMod->getDescLong()) $text.=$objMod->getDesc().'
    '.$objMod->getDescLong().'
    '; + else $text.=$objMod->getDesc().'
    '; + + if ($objMod->isCoreOrExternalModule() == 'external') + { + $text.='
    '.$langs->trans("Origin").': '.$langs->trans("ExternalModule",$dirofmodule); + if (! empty($objMod->editor_name) && $objMod->editor_name != 'dolibarr') $text.='
    '.$langs->trans("Author").': '.$objMod->editor_name; + if (! empty($objMod->editor_url) && $objMod->editor_url != 'www.dolibarr.org') $text.='
    '.$langs->trans("Url").': '.$objMod->editor_url; + $text.='
    '; + } + else + { + $text.='
    '.$langs->trans("Origin").': '.$langs->trans("Core").'
    '; + } + $text.='
    '.$langs->trans("AddRemoveTabs").': '; + if (isset($objMod->tabs) && is_array($objMod->tabs) && count($objMod->tabs)) + { + $i=0; + foreach($objMod->tabs as $val) + { + $tmp=explode(':',$val,3); + $text.=($i?', ':'').$tmp[0].':'.$tmp[1]; + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddDictionaries").': '; + if (isset($objMod->dictionaries) && isset($objMod->dictionaries['tablib']) && is_array($objMod->dictionaries['tablib']) && count($objMod->dictionaries['tablib'])) + { + $i=0; + foreach($objMod->dictionaries['tablib'] as $val) + { + $text.=($i?', ':'').$val; + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddBoxes").': '; + if (isset($objMod->boxes) && is_array($objMod->boxes) && count($objMod->boxes)) + { + $i=0; + foreach($objMod->boxes as $val) + { + $text.=($i?', ':'').($val['file']?$val['file']:$val[0]); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddModels").': '; + if (isset($objMod->module_parts) && isset($objMod->module_parts['models']) && $objMod->module_parts['models']) + { + $text.=$langs->trans("Yes"); + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddSubstitutions").': '; + if (isset($objMod->module_parts) && isset($objMod->module_parts['substitutions']) && $objMod->module_parts['substitutions']) + { + $text.=$langs->trans("Yes"); + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddSheduledJobs").': '; + if (isset($objMod->cronjobs) && is_array($objMod->cronjobs) && count($objMod->cronjobs)) + { + $i=0; + foreach($objMod->cronjobs as $val) + { + $text.=($i?', ':'').($val['label']); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddTriggers").': '; + if (isset($objMod->module_parts) && isset($objMod->module_parts['triggers']) && $objMod->module_parts['triggers']) + { + $text.=$langs->trans("Yes"); + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddHooks").': '; + if (isset($objMod->module_parts) && is_array($objMod->module_parts['hooks']) && count($objMod->module_parts['hooks'])) + { + $i=0; + foreach($objMod->module_parts['hooks'] as $val) + { + $text.=($i?', ':'').($val); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddPermissions").': '; + if (isset($objMod->rights) && is_array($objMod->rights) && count($objMod->rights)) + { + $i=0; + foreach($objMod->rights as $val) + { + $text.=($i?', ':'').($val[1]); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddMenus").': '; + if (isset($objMod->menu) && is_array($objMod->menu) && $objMod->menu) + { + $text.=$langs->trans("Yes"); + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddExportProfiles").': '; + if (isset($objMod->export_label) && is_array($objMod->export_label) && count($objMod->export_label)) + { + $i=0; + foreach($objMod->export_label as $val) + { + $text.=($i?', ':'').($val); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddImportProfiles").': '; + if (isset($objMod->import_label) && is_array($objMod->import_label) && count($objMod->import_label)) + { + $i=0; + foreach($objMod->import_label as $val) + { + $text.=($i?', ':'').($val); + $i++; + } + } + else $text.=$langs->trans("No"); + + $text.='
    '.$langs->trans("AddOtherPagesOrServices").': '; + $text.=$langs->trans("DetectionNotPossible"); + + print $form->textwithpicto('', $text, 1, 'help'); + print '
    '; $version=$objMod->getVersion(); $dirofmodule=$dirmod[$key]; - if ($objMod->isCoreOrExternalModule() == 'external') - { - $text=$langs->trans("ExternalModule",$dirofmodule); - if (! empty($objMod->editor_name) && $objMod->editor_name != 'dolibarr') $text.=' - '.$objMod->editor_name; - if (! empty($objMod->editor_web) && $objMod->editor_web != 'www.dolibarr.org') $text.=' - '.$objMod->editor_web; - print $form->textwithpicto($version, $text, 1, 'help'); - } - else print $version; + print $version; print "'; - $version=$objMod->getVersion(); - $dirofmodule=$dirmod[$key]; print $version; print "'.img_picto($langs->trans("Setup"),"setup").''.img_picto($langs->trans("Setup"),"setup",'style="padding-right: 6px"').''.img_picto($langs->trans("Setup"),"setup").''.img_picto($langs->trans("Setup"),"setup",'style="padding-right: 6px"').''.img_picto($langs->trans("NothingToSetup"),"setup",'class="opacitytransp"').''.img_picto($langs->trans("NothingToSetup"),"setup",'class="opacitytransp" style="padding-right: 6px"').''.img_picto($langs->trans("NothingToSetup"),"setup",'class="opacitytransp"').''.img_picto($langs->trans("NothingToSetup"),"setup",'class="opacitytransp" style="padding-right: 6px"').'
    '.$langs->trans('PriceUTTC').''.$langs->trans('Qty').''.$langs->trans('Qty').''.$langs->trans('Unit').''.$langs->trans('Unit').''.$langs->trans('ReductionShort').''.$langs->trans('ReductionShort').'' . $langs->trans('Progress') . '' . $langs->trans('Progress') . ''.$langs->trans('TotalHTShort').''.$langs->trans('TotalHTShort').''.$langs->trans('TotalHTShortCurrency').''.$langs->trans('TotalHTShortCurrency').'
    '; + print '
    '; print ''; print ''; print ''; diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 2c1b7a72b62..3a2b21b59cc 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -503,10 +503,12 @@ class FormFile $out.= ''; + $addcolumforpicto=($delallowed || $printer || $morepicto); + $out.= ''; + $out.= ajax_combobox('model'); } else { - $out.= ''; + $out.= '
    '.$langs->trans("Files").'
    '; } // Language code (if multilang) - $out.= '
    '; // Button - $addcolumforpicto=($delallowed || $printer || $morepicto); - $out.= '
    '.$langs->trans('Ref').''.$langs->trans('Action').'
    '; + // Model if (! empty($modellist)) { - $out.= ''; $out.= ''.$langs->trans('Model').' '; if (is_array($modellist) && count($modellist) == 1) // If there is only one element { @@ -514,17 +516,14 @@ class FormFile $modelselected=$arraykeys[0]; } $out.= $form->selectarray('model', $modellist, $modelselected, $showempty, 0, 0, '', 0, 0, 0, '', ''); - $out.= ''; - $out.= $langs->trans("Files"); - $out.= ''; if (($allowgenifempty || (is_array($modellist) && count($modellist) > 0)) && $conf->global->MAIN_MULTILANGS && ! $forcenomultilang && (! empty($modellist) || $showempty)) { include_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; @@ -538,12 +537,9 @@ class FormFile { $out.= ' '; } - $out.= ''; - $genbutton = 'id)) // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; $formactions=new FormActions($db); - $somethingshown=$formactions->showactions($object,'order_supplier',$socid); + $somethingshown=$formactions->showactions($object,'order_supplier',$socid,0,'listaction'.($genallowed?'largetitle':'')); // List of actions on element diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index aa57910794d..3c41d989e4c 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2390,7 +2390,7 @@ else // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; $formactions=new FormActions($db); - $somethingshown=$formactions->showactions($object,'invoice_supplier',$socid); + $somethingshown=$formactions->showactions($object,'invoice_supplier',$socid,0,'listaction'.($genallowed?'largetitle':'')); print ''; //print '
    '; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 050c685aed8..b772f741219 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -290,6 +290,9 @@ input.smallpadd { /* Used for timesheet input */ padding-left: 0px !important; padding-right: 0px !important; } +input.buttongen { + vertical-align: middle; +} span.timesheetalreadyrecorded input { /*font-size: smaller;*/ border: none; @@ -677,7 +680,7 @@ div.ficheaddleft { else print "margin-top: 10px;\n"; ?> } /* Force values for small screen */ -@media only screen and (max-width: 850px) +@media only screen and (max-width: 900px) { div.fiche { margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'6':'20'):'24')); ?>px; @@ -2194,7 +2197,6 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.2em; border-radius: 0.2em;*/ } - table.liste tr, table.noborder tr, div.noborder form { border-top-color: #FEFEFE; @@ -2591,6 +2593,9 @@ input.liste_titre { background: transparent; border: 0px; } +.listactionlargetitle .liste_titre { + line-height: 24px; +} .noborder tr.liste_total, .noborder tr.liste_total td, tr.liste_total, form.liste_total { /* background: #F0F0F0; */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index c497e8f876c..9644232d2c6 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -285,6 +285,15 @@ input.smallpadd { padding-left: 1px !important; padding-right: 1px !important; } +input.buttongen { + vertical-align: middle; +} +span.timesheetalreadyrecorded input { + /*font-size: smaller;*/ + border: none; + /*background: transparent;*/ +} + select.flat, form.flat select { @@ -306,6 +315,9 @@ input:disabled { input.liste_titre { box-shadow: none !important; } +.listactionlargetitle .liste_titre { + line-height: 24px; +} input.removedfile { padding: 0px !important; border: 0px !important; @@ -722,7 +734,7 @@ div.ficheaddleft { else print "margin-top: 10px;\n"; ?> } /* Force values for small screen */ -@media only screen and (max-width: 850px) +@media only screen and (max-width: 900px) { div.fiche { margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; From 1f723cb8d0b15e922e36532cedf164ed5b6a655d Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Thu, 7 Apr 2016 14:16:10 +0200 Subject: [PATCH 098/380] FIX : Template email must take care of positino column --- htdocs/core/class/html.formmail.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index a815875dc52..97a7434fd02 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -859,13 +859,13 @@ class FormMail extends Form { $ret=array(); - $sql = "SELECT rowid, label, topic, content, lang"; + $sql = "SELECT rowid, label, topic, content, lang, position"; $sql.= " FROM ".MAIN_DB_PREFIX.'c_email_templates'; $sql.= " WHERE type_template='".$this->db->escape($type_template)."'"; $sql.= " AND entity IN (".getEntity("c_email_templates").")"; $sql.= " AND (fk_user is NULL or fk_user = 0 or fk_user = ".$user->id.")"; if (is_object($outputlangs)) $sql.= " AND (lang = '".$outputlangs->defaultlang."' OR lang IS NULL OR lang = '')"; - $sql.= $this->db->order("lang,label","ASC"); + $sql.= $this->db->order("position,lang,label","ASC"); //print $sql; $resql = $this->db->query($sql); From 1e6152eb534cc3522c00011cfef39c5a1bf3ee87 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 14:17:20 +0200 Subject: [PATCH 099/380] FIX Missing a row when incoterm is on --- htdocs/fourn/facture/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 3c41d989e4c..dc7695cdf01 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1873,7 +1873,8 @@ else $nbrows=9; $nbcols=2; if (! empty($conf->projet->enabled)) $nbrows++; if (! empty($conf->banque->enabled)) { $nbrows++; $nbcols++; } - + if (! empty($conf->incoterm->enabled)) $nbrows++; + // Local taxes if ($societe->localtax1_assuj=="1") $nbrows++; if ($societe->localtax2_assuj=="1") $nbrows++; From 086345490d50d52304e65de91adabc3931630d86 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 14:29:07 +0200 Subject: [PATCH 100/380] Generalize the set of trackid for everyemail sent by dolibarr. --- htdocs/comm/propal.php | 5 +---- htdocs/commande/card.php | 5 +---- htdocs/compta/facture.php | 5 +---- htdocs/core/class/html.formmail.class.php | 2 +- htdocs/expedition/card.php | 5 +---- htdocs/fichinter/card.php | 5 +---- htdocs/fourn/commande/card.php | 5 +---- htdocs/fourn/facture/card.php | 5 +---- htdocs/societe/soc.php | 5 +---- htdocs/supplier_proposal/card.php | 5 +---- 10 files changed, 10 insertions(+), 37 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 0da36deedb3..c1754999e8b 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -2421,10 +2421,7 @@ if ($action == 'create') $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='pro'.$object->id; - } + $formmail->trackid='pro'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index f2d2e24d269..94b6e2ce2f2 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2672,10 +2672,7 @@ if ($action == 'create' && $user->rights->commande->creer) $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='ord'.$object->id; - } + $formmail->trackid='ord'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index dd15c3a0990..73bc2bf3a7e 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -4141,10 +4141,7 @@ else if ($id > 0 || ! empty($ref)) $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='inv'.$object->id; - } + $formmail->trackid='inv'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 9d540a37bb6..a23078a0e12 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -170,7 +170,7 @@ class FormMail extends Form /** * Remove a file from the list of attached files (stored in SECTION array) * - * @param string $keytodelete Key in file array + * @param string $keytodelete Key in file array (0, 1, 2, ...) * @return void */ function remove_attached_files($keytodelete) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index af973886071..8f461a2a0c0 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -1886,10 +1886,7 @@ else if ($id || $ref) $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='shi'.$object->id; - } + $formmail->trackid='shi'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 08d380b0ae4..74f50f26a5b 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1860,10 +1860,7 @@ else if ($id > 0 || ! empty($ref)) $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='int'.$object->id; - } + $formmail->trackid='int'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 2e7c9577bb1..bee01a45cf4 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2475,10 +2475,7 @@ elseif (! empty($object->id)) $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='sor'.$object->id; - } + $formmail->trackid='sor'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index dc7695cdf01..d14dd97e6b3 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2454,10 +2454,7 @@ else $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='sin'.$object->id; - } + $formmail->trackid='sin'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 7a25b6454c0..26fcb8ac478 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -2426,10 +2426,7 @@ else $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='thi'.$object->id; - } + $formmail->trackid='thi'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 5411cee24b6..36d04f559e1 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1904,10 +1904,7 @@ if ($action == 'create') $formmail->fromid = $user->id; $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; - if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 1)) // If bit 1 is set - { - $formmail->trackid='spr'.$object->id; - } + $formmail->trackid='spr'.$object->id; if (! empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set { include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; From d052eac6fc218ac4af9347a86faea14098549425 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Thu, 7 Apr 2016 14:57:41 +0200 Subject: [PATCH 101/380] NEW: add product type filter on turnover report --- htdocs/compta/stats/cabyprodserv.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index e995b06aa6b..7e5a194c0e7 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -55,6 +55,9 @@ $subcat = false; if (GETPOST('subcat', 'alpha') === 'yes') { $subcat = true; } +// product/service +$selected_type = GETPOST('search_type', 'int'); +if ($selected_type =='') $selected_type = -1; // Date range $year=GETPOST("year"); @@ -124,6 +127,7 @@ $headerparams['q'] = $q; $tableparams = array(); $tableparams['search_categ'] = $selected_cat; +$tableparams['search_type'] = $selected_type; $tableparams['subcat'] = ($subcat === true)?'yes':''; // Adding common parameters @@ -180,7 +184,7 @@ $catotal=0; if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label,"; + $sql = "SELECT DISTINCT p.rowid as rowid, p.ref as ref, p.label as label, p.fk_product_type as product_type,"; $sql.= " SUM(l.total_ht) as amount, SUM(l.total_ttc) as amount_ttc,"; $sql.= " SUM(CASE WHEN f.type = 2 THEN -l.qty ELSE l.qty END) as qty"; $sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as l, ".MAIN_DB_PREFIX."product as p"; @@ -203,6 +207,10 @@ if ($modecompta == 'CREANCES-DETTES') if ($date_start && $date_end) { $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; } + if ($selected_type >=0) + { + $sql.= " AND l.product_type = ".$selected_type; + } if ($selected_cat === -2) // Without any category { $sql.=" AND cp.fk_product is null"; @@ -228,6 +236,7 @@ if ($modecompta == 'CREANCES-DETTES') $amount[$obj->rowid] = $obj->amount_ttc; $qty[$obj->rowid] = $obj->qty; $name[$obj->rowid] = $obj->ref . ' - ' . $obj->label; + $type[$obj->rowid] = $obj->product_type; $catotal_ht+=$obj->amount; $catotal+=$obj->amount_ttc; $qtytotal+=$obj->qty; @@ -257,8 +266,14 @@ if ($modecompta == 'CREANCES-DETTES') if ($subcat) { print ' checked'; } - print '>'; - print ''; + print '>'; + // type filter (produit/service) + print ' '; + print $langs->trans("Type"). ': '; + $form->select_type_of_lines(isset($selected_type)?$selected_type:-1,'search_type',1,1,1); + print ''; + + print ''; print ''; print ''; @@ -337,7 +352,7 @@ if ($modecompta == 'CREANCES-DETTES') // Product $fullname=$name[$key]; if ($key >= 0) { - $linkname=''.img_object($langs->trans("ShowProduct"),'product').' '.$fullname.''; + $linkname=''.img_object($langs->trans("ShowProduct"),$type[$key]==0?'product':'service').' '.$fullname.''; } else { $linkname=$langs->trans("PaymentsNotLinkedToProduct"); } From 9d6efde9357d5025745206730651797fb4615862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Thu, 7 Apr 2016 17:12:06 +0200 Subject: [PATCH 102/380] Prevent sentry logging error with 3.9 update Since we don't ship the required libraries anymore, if the module had been enabled before upgrade, the code was failing making Dolibarr totally unusable. Mitigated the issue by disabling sentry logging if the required libraries are unavailable. --- htdocs/core/modules/syslog/mod_syslog_sentry.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/modules/syslog/mod_syslog_sentry.php b/htdocs/core/modules/syslog/mod_syslog_sentry.php index afea1a36375..a159a5edf2f 100644 --- a/htdocs/core/modules/syslog/mod_syslog_sentry.php +++ b/htdocs/core/modules/syslog/mod_syslog_sentry.php @@ -145,6 +145,10 @@ class mod_syslog_sentry extends LogHandler implements LogHandlerInterface */ public function export($content) { + if (! $this->isActive()) { + return; + } + global $conf; $dsn = $conf->global->SYSLOG_SENTRY_DSN; $client = new Raven_Client( From f7fb95cab8d88c975fdaf0439899743919823957 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 7 Apr 2016 19:24:29 +0200 Subject: [PATCH 103/380] FIX Box disabled because bugged --- htdocs/core/boxes/box_task.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php index d6a65884ffb..e7e8dafb22a 100644 --- a/htdocs/core/boxes/box_task.php +++ b/htdocs/core/boxes/box_task.php @@ -36,7 +36,8 @@ class box_task extends ModeleBoxes //var $depends = array("projet"); var $db; var $param; - + var $enabled = 0; // Disabled because bugged. + var $info_box_head = array(); var $info_box_contents = array(); From a5c5f9b10efb0f2efb9d1c45e223e7dc6bd7febd Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Thu, 7 Apr 2016 21:59:01 +0200 Subject: [PATCH 104/380] New: Project WebServices --- .../demo_wsclient_project.php-NORUN | 154 +++++++ htdocs/webservices/server_project.php | 433 ++++++++++++++++++ 2 files changed, 587 insertions(+) create mode 100644 htdocs/webservices/demo_wsclient_project.php-NORUN create mode 100644 htdocs/webservices/server_project.php diff --git a/htdocs/webservices/demo_wsclient_project.php-NORUN b/htdocs/webservices/demo_wsclient_project.php-NORUN new file mode 100644 index 00000000000..ef39673976d --- /dev/null +++ b/htdocs/webservices/demo_wsclient_project.php-NORUN @@ -0,0 +1,154 @@ + + * Copyright (C) 2016 Ion Agorria + * + * 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/webservices/demo_wsclient_project.php + * \brief Demo page to make a client call to Dolibarr WebServices "server_project" + */ + +// This is to make Dolibarr working with Plesk +set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs'); + +require_once '../master.inc.php'; +require_once NUSOAP_PATH.'/nusoap.php'; // Include SOAP + +$WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_project.php'; +//$WS_DOL_URL = 'http://localhost:8080/'; // To test with Soapui mock. If not a page, should end with / +$WS_METHOD1 = 'createProject'; +$WS_METHOD2 = 'getProject'; +$ns='http://www.dolibarr.org/ns/'; + + +// Set the WebService URL +dol_syslog("Create nusoap_client for URL=".$WS_DOL_URL); +$soapclient = new nusoap_client($WS_DOL_URL); +if ($soapclient) +{ + $soapclient->soap_defencoding='UTF-8'; + $soapclient->decodeUTF8(false); +} + + +// Call the WebService method and store its result in $result. +$authentication=array( + 'dolibarrkey'=>$conf->global->WEBSERVICES_KEY, + 'sourceapplication'=>'DEMO', + 'login'=>'admin', + 'password'=>'changeme', + 'entity'=>''); + + +// Test url 1 +if ($WS_METHOD1) +{ + $parameters = array( + 'authentication'=>$authentication, + 'project'=>array( + 'ref'=>'REF_TEST_WS', + 'label'=>'LABEL_WS', + 'thirdparty_id'=>'1234', + 'public'=>'1', + 'status'=>'0', + 'date_start'=>'2016-04-07T21:24:19Z', + 'date_end'=>'2016-04-08T08:13:42Z', + 'budget'=>'1234', + 'description'=>'DESCRIPTION_WS', + ) + ); + dol_syslog("Call method ".$WS_METHOD1); + $result1 = $soapclient->call($WS_METHOD1,$parameters,$ns,''); + if (! $result1) + { + print $soapclient->error_str; + print "
    \n\n"; + print $soapclient->request; + print "
    \n\n"; + print $soapclient->response; + exit; + } +} + +// Test url 2 +if ($WS_METHOD2) +{ + $parameters = array( + 'authentication'=>$authentication, + 'id'=>'', + 'ref'=>'REF_TEST_WS' + ); + dol_syslog("Call method ".$WS_METHOD2); + $result2 = $soapclient->call($WS_METHOD2,$parameters,$ns,''); + if (! $result2) + { + print $soapclient->error_str; + print "
    \n\n"; + print $soapclient->request; + print "
    \n\n"; + print $soapclient->response; + exit; + } +} + + +/* + * View + */ + +header("Content-type: text/html; charset=utf8"); +print ''."\n"; +echo ''."\n"; +echo ''; +echo 'WebService Test: '.$WS_METHOD1.''; +echo ''."\n"; + +echo ''."\n"; +echo 'NUSOAP_PATH='.NUSOAP_PATH.'
    '; + +echo "

    Request:

    "; +echo '

    Function

    '; +echo $WS_METHOD1; +echo '

    SOAP Message

    '; +echo '
    ' . htmlspecialchars($soapclient1->request, ENT_QUOTES) . '
    '; +//echo '
    '; +echo "

    Response:

    "; +echo '

    Result

    '; +echo '
    ';
    +print_r($result1);
    +echo '
    '; +echo '

    SOAP Message

    '; +echo '
    ' . htmlspecialchars($soapclient1->response, ENT_QUOTES) . '
    '; + +print '
    '; + +echo "

    Request:

    "; +echo '

    Function

    '; +echo $WS_METHOD2; +echo '

    SOAP Message

    '; +echo '
    ' . htmlspecialchars($soapclient2->request, ENT_QUOTES) . '
    '; +//echo '
    '; +echo "

    Response:

    "; +echo '

    Result

    '; +echo '
    ';
    +print_r($result2);
    +echo '
    '; +echo '

    SOAP Message

    '; +echo '
    ' . htmlspecialchars($soapclient2->response, ENT_QUOTES) . '
    '; + +echo ''."\n"; +echo ''."\n"; +?> diff --git a/htdocs/webservices/server_project.php b/htdocs/webservices/server_project.php new file mode 100644 index 00000000000..078295e2ac9 --- /dev/null +++ b/htdocs/webservices/server_project.php @@ -0,0 +1,433 @@ + + * Copyright (C) 2016 Ion Agorria + * + * 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/webservices/server_project.php + * \brief File that is entry point to call Dolibarr WebServices + */ + +// This is to make Dolibarr working with Plesk +set_include_path($_SERVER['DOCUMENT_ROOT'].'/htdocs'); + +require_once '../master.inc.php'; +require_once NUSOAP_PATH.'/nusoap.php'; // Include SOAP +require_once DOL_DOCUMENT_ROOT.'/core/lib/ws.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + + +dol_syslog("Call Dolibarr webservices interfaces"); + +$langs->load("main"); + +// Enable and test if module web services is enabled +if (empty($conf->global->MAIN_MODULE_WEBSERVICES)) +{ + $langs->load("admin"); + dol_syslog("Call Dolibarr webservices interfaces with module webservices disabled"); + print $langs->trans("WarningModuleNotActive",'WebServices').'.

    '; + print $langs->trans("ToActivateModule"); + exit; +} + +// Create associated types array, with each table +$listofreferent=array( + 'propal' => 'propal', + 'order' => 'commande', + 'invoice' => 'facture', + 'invoice_predefined' => 'facture_rec', + 'proposal_supplier' => 'commande_fournisseur', + 'order_supplier' => 'commande_fournisseur', + 'invoice_supplier' => 'facture_fourn', + 'contract' => 'contrat', + 'intervention' => 'fichinter', + 'trip' => 'deplacement', + 'expensereport' => 'expensereport_det', + 'donation' => 'don', + 'agenda' => 'actioncomm', + 'project_task' => 'projet_task', +); + +// Create the soap Object +$server = new nusoap_server(); +$server->soap_defencoding='UTF-8'; +$server->decode_utf8=false; +$ns='http://www.dolibarr.org/ns/'; +$server->configureWSDL('WebServicesDolibarrOther',$ns); +$server->wsdl->schemaTargetNamespace=$ns; + +// Define WSDL Authentication object +$server->wsdl->addComplexType( + 'authentication', + 'complexType', + 'struct', + 'all', + '', + array( + 'dolibarrkey' => array('name'=>'dolibarrkey','type'=>'xsd:string'), + 'sourceapplication' => array('name'=>'sourceapplication','type'=>'xsd:string'), + 'login' => array('name'=>'login','type'=>'xsd:string'), + 'password' => array('name'=>'password','type'=>'xsd:string'), + 'entity' => array('name'=>'entity','type'=>'xsd:string'), + ) +); + +// Define WSDL Return object +$server->wsdl->addComplexType( + 'result', + 'complexType', + 'struct', + 'all', + '', + array( + 'result_code' => array('name'=>'result_code','type'=>'xsd:string'), + 'result_label' => array('name'=>'result_label','type'=>'xsd:string'), + ) +); + +// Define other specific objects +$server->wsdl->addComplexType( + 'element', + 'complexType', + 'struct', + 'all', + '', + array( + 'id' => array('name'=>'id','type'=>'xsd:int'), + 'user' => array('name'=>'user','type'=>'xsd:int'), + ) +); + +$server->wsdl->addComplexType( + 'elementsArray', + 'complexType', + 'array', + 'sequence', + '', + array( + 'elements' => array( + 'name' => 'elementsArray', + 'type' => 'tns:element', + 'minOccurs' => '0', + 'maxOccurs' => 'unbounded' + ) + ) +); + +$project_elements = array(); +foreach($listofreferent as $key => $_) +{ + $project_elements[$key] = array('name'=>$key,'type'=>'tns:elementsArray'); +} +$server->wsdl->addComplexType( + 'elements', + 'complexType', + 'struct', + 'all', + '', + $project_elements +); + +// Define project +$project_fields = array( + 'id' => array('name'=>'id','type'=>'xsd:string'), + 'ref' => array('name'=>'ref','type'=>'xsd:string'), + 'label' => array('name'=>'label','type'=>'xsd:string'), + 'thirdparty_id' => array('name'=>'thirdparty_id','type'=>'xsd:int'), + 'public' => array('name'=>'public','type'=>'xsd:int'), + 'status' => array('name'=>'status','type'=>'xsd:int'), + 'date_start' => array('name'=>'date_start','type'=>'xsd:date'), + 'date_end' => array('name'=>'date_end','type'=>'xsd:date'), + 'budget' => array('name'=>'budget','type'=>'xsd:int'), + 'description' => array('name'=>'description','type'=>'xsd:string'), + 'elements' => array('name'=>'elements','type'=>'tns:elements') +); + +//Retreive all extrafield for thirdsparty +// fetch optionals attributes and labels +$extrafields=new ExtraFields($db); +$extralabels=$extrafields->fetch_name_optionals_label('project',true); +if (count($extrafields)>0) { + $extrafield_array = array(); +} +foreach($extrafields->attribute_label as $key=>$label) +{ + //$value=$object->array_options["options_".$key]; + $type =$extrafields->attribute_type[$key]; + if ($type=='date' || $type=='datetime') {$type='xsd:dateTime';} + else {$type='xsd:string';} + $extrafield_array['options_'.$key]=array('name'=>'options_'.$key,'type'=>$type); +} +$project_fields=array_merge($project_fields,$extrafield_array); + +$server->wsdl->addComplexType( + 'project', + 'complexType', + 'struct', + 'all', + '', + $project_fields +); + +// 5 styles: RPC/encoded, RPC/literal, Document/encoded (not WS-I compliant), Document/literal, Document/literal wrapped +// Style merely dictates how to translate a WSDL binding to a SOAP message. Nothing more. You can use either style with any programming model. +// http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ +$styledoc='rpc'; // rpc/document (document is an extend into SOAP 1.0 to support unstructured messages) +$styleuse='encoded'; // encoded/literal/literal wrapped +// Better choice is document/literal wrapped but literal wrapped not supported by nusoap. + +// Register WSDL +$server->register( + 'createProject', + // Entry values + array('authentication'=>'tns:authentication','project'=>'tns:project'), + // Exit values + array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string'), + $ns, + $ns.'#createProject', + $styledoc, + $styleuse, + 'WS to create project' +); + +// Register WSDL +$server->register( + 'getProject', + // Entry values + array('authentication'=>'tns:authentication','id'=>'xsd:string','ref'=>'xsd:string'), + // Exit values + array('result'=>'tns:result','project'=>'tns:project'), + $ns, + $ns.'#getProject', + $styledoc, + $styleuse, + 'WS to get project' +); + +// Full methods code +/** + * Create project + * + * @param array $authentication Array of authentication information + * @param array $project Project info + * @return int Id of new order + */ +function createProject($authentication, $project) +{ + global $db,$conf; + + dol_syslog("Function: createProject login=".$authentication['login']); + + if ($authentication['entity']) $conf->entity=$authentication['entity']; + + // Init and check authentication + $objectresp=array(); + $errorcode='';$errorlabel=''; + $error=0; + $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + // Check parameters + if (empty($project['ref'])) + { + $error++; $errorcode='KO'; $errorlabel="Name is mandatory."; + } + + + if (! $error) + { + $fuser->getrights(); + + if ($fuser->rights->projet->creer) + { + $newobject=new Project($db); + $newobject->ref=$project['ref']; + $newobject->title=$project['label']; + $newobject->socid=$project['thirdparty_id']; + $newobject->public=$project['public']; + $newobject->statut=$project['status']; + $newobject->date_start=dol_stringtotime($project['date_start'],'dayrfc'); + $newobject->date_end=dol_stringtotime($project['date_end'],'dayrfc'); + $newobject->budget_amount=$project['budget']; + $newobject->description=$project['description']; + + // Retrieve all extrafields for project + // fetch optionals attributes and labels + $extrafields=new ExtraFields($db); + $extralabels=$extrafields->fetch_name_optionals_label('project',true); + foreach($extrafields->attribute_label as $key=>$label) + { + $key='options_'.$key; + $newobject->array_options[$key]=$project[$key]; + } + + $db->begin(); + + $result = $newobject->create($fuser); + if (! $error && $result > 0) + { + // Add myself as project leader + $result = $newobject->add_contact($fuser->id, 'PROJECTLEADER', 'internal'); + if ($result < 0) + { + $error++; + } + } + else + { + $error++; + } + + if (! $error) + { + $db->commit(); + $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$newobject->id,'ref'=>$newobject->ref); + } + else + { + $db->rollback(); + $error++; + $errorcode='KO'; + $errorlabel=$newobject->error; + } + } + else + { + $error++; + $errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request'; + } + } + + if ($error) + { + $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); + } + + return $objectresp; +} + +/** + * Get a project + * + * @param array $authentication Array of authentication information + * @param string $id internal id + * @param string $ref internal reference + * @return array Array result + */ +function getProject($authentication,$id='',$ref='') +{ + global $db,$conf,$langs; + + dol_syslog("Function: getProject login=".$authentication['login']." id=".$id." ref=".$ref); + + if ($authentication['entity']) $conf->entity=$authentication['entity']; + + // Init and check authentication + $objectresp=array(); + $errorcode='';$errorlabel=''; + $error=0; + $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel); + // Check parameters + if (! $error && (($id && $ref))) + { + $error++; + $errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id and ref can't be both provided. You must choose one or other but not both."; + } + + if (! $error) + { + $fuser->getrights(); + + if ($fuser->rights->projet->lire) + { + $project=new Project($db); + $result=$project->fetch($id,$ref); + if ($result > 0) + { + $project_result_fields=array( + 'id' => $project->id, + 'ref' => $project->ref, + 'label' => $project->title, + 'thirdparty_id' => $project->socid, + 'public' => $project->public, + 'status' => $project->statut, + 'date_start' => $project->date_start ? dol_print_date($project->date_start, 'dayrfc') : '', + 'date_end' => $project->date_end ? dol_print_date($project->date_end, 'dayrfc') : '', + 'budget' => $project->budget_amount, + 'description' => $project->description, + ); + + //Retrieve all extrafields for project + $extrafields=new ExtraFields($db); + $extralabels=$extrafields->fetch_name_optionals_label('societe',true); + + //Get extrafield values + $project->fetch_optionals($project->id,$extralabels); + foreach($extrafields->attribute_label as $key=>$label) + { + $project_result_fields=array_merge($project_result_fields,array('options_'.$key => $project->array_options['options_'.$key])); + } + + //Get linked elements + global $listofreferent; + $elements = array(); + foreach ($listofreferent as $key => $tablename) + { + $elements[$key] = array(); + $element_array = $project->get_element_list($key, $tablename); + if (count($element_array) > 0 && is_array($element_array)) + { + foreach ($element_array as $element) + { + $tmp = explode('_', $element); + $idofelement = count($tmp) > 0? $tmp[0] : ""; + $idofelementuser = count($tmp) > 1? $tmp[1] : ""; + $elements[$key][] = array('id' => $idofelement, 'user' => $idofelementuser); + } + } + } + $project_result_fields['elements'] = $elements; + + //Result + $objectresp = array( + 'result'=>array('result_code'=>'OK', 'result_label'=>''), + 'project'=>$project_result_fields + ); + } + else + { + $error++; + $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref='.$ref; + } + } + else + { + $error++; + $errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request'; + } + } + + if ($error) + { + $objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)); + } + + return $objectresp; +} + +// Return the results. +$server->service(file_get_contents("php://input")); From 24c91933d0d62ee89b6ee88b0440cad341759a99 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 01:00:02 +0200 Subject: [PATCH 105/380] Work on select fields for orders, invoices and shipments --- dev/skeletons/skeleton_list.php | 25 +- htdocs/comm/propal/list.php | 76 +++--- htdocs/commande/list.php | 355 ++++++++++++++++++++++----- htdocs/compta/facture/list.php | 382 +++++++++++++++++++++++------ htdocs/expedition/list.php | 297 ++++++++++++++++++---- htdocs/langs/en_US/deliveries.lang | 1 + 6 files changed, 926 insertions(+), 210 deletions(-) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index bbe67d68df5..46111e14716 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -124,6 +124,9 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab * Put here all code to do according to value of "action" parameter ********************************************************************/ +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction')) { $massaction=''; } + $parameters=array(); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -142,6 +145,19 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") ||GETPO if (empty($reshook)) { + // Mass actions. Controls on number of lines checked + $maxformassaction=1000; + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); + } + if (! $error && count($toselect) > $maxformassaction) + { + setEventMessages($langs->trans('TooManyRecordForMassAction',$maxformassaction), null, 'errors'); + $error++; + } + // Action to delete if ($action == 'confirm_delete') { @@ -266,6 +282,7 @@ if ($resql) if ($optioncss != '') print ''; print ''; print ''; + print ''; print ''; print ''; @@ -297,8 +314,8 @@ if ($resql) // Fields title print ''; - if (! empty($arrayfields['t.field1']['checked'])) print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['t.field2']['checked'])) print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['t.field1']['checked'])) print_liste_field_titre($arrayfields['t.field1']['label'],$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['t.field2']['checked'])) print_liste_field_titre($arrayfields['t.field2']['label'],$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -315,8 +332,8 @@ if ($resql) $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - if (! empty($arrayfields['t.datec']['checked'])) print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"t.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); - if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"t.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['t.datec']['checked'])) print_liste_field_titre($arrayfields['t.datec']['label'],$_SERVER["PHP_SELF"],"t.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'],$_SERVER["PHP_SELF"],"t.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); //if (! empty($arrayfields['t.status']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"t.status","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print ''."\n"; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index ea0e1ce2de2..4aff2989462 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -59,7 +59,7 @@ $search_societe=GETPOST('search_societe','alpha'); $search_montant_ht=GETPOST('search_montant_ht','alpha'); $search_montant_vat=GETPOST('search_montant_vat','alpha'); $search_montant_ttc=GETPOST('search_montant_ttc','alpha'); -$search_author=GETPOST('search_author','alpha'); +$search_login=GETPOST('search_login','alpha'); $search_product_category=GETPOST('search_product_category','int'); $search_town=GETPOST('search_town','alpha'); $search_zip=GETPOST('search_zip','alpha'); @@ -90,9 +90,6 @@ if (! $sortorder) $sortorder='DESC'; // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $contextpage='proposallist'; -// Nombre de ligne pour choix de produit/service predefinis -$NBLINES=4; - // Security check $module='propal'; $dbtable=''; @@ -129,11 +126,11 @@ if (empty($user->socid)) $fieldstosearchall["p.note_private"]="NotePrivate"; $checkedtypetiers=0; $arrayfields=array( 'p.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), - 'p.ref_customer'=>array('label'=>$langs->trans("RefCustomer"), 'checked'=>1), + 'p.ref_client'=>array('label'=>$langs->trans("RefCustomer"), 'checked'=>1), 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), - 'state.nom'=>array('label'=>$langs->trans("State"), 'checked'=>0), + 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), 'p.date'=>array('label'=>$langs->trans("Date"), 'checked'=>1), @@ -160,6 +157,8 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab * Actions */ +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction')) { $massaction=''; } $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks @@ -179,7 +178,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $search_montant_ht=''; $search_montant_vat=''; $search_montant_ttc=''; - $search_author=''; + $search_login=''; $search_product_category=''; $search_town=''; $search_zip=""; @@ -196,6 +195,25 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP } if ($object_statut != '') $viewstatut=$object_statut; +if (empty($reshook)) +{ + // Mass actions. Controls on number of lines checked + $maxformassaction=1000; + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); + } + if (! $error && count($toselect) > $maxformassaction) + { + setEventMessages($langs->trans('TooManyRecordForMassAction',$maxformassaction), null, 'errors'); + $error++; + } + + + + +} @@ -259,7 +277,7 @@ if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdp if ($search_ref) $sql .= natural_search('p.ref', $search_ref); if ($search_refcustomer) $sql .= natural_search('p.ref_client', $search_refcustomer); if ($search_societe) $sql .= natural_search('s.nom', $search_societe); -if ($search_author) $sql.= " AND u.login LIKE '%".$db->escape(trim($search_author))."%'"; +if ($search_login) $sql.= " AND u.login LIKE '%".$db->escape(trim($search_login))."%'"; if ($search_montant_ht != '') $sql.= natural_search("p.total_ht", $search_montant_ht, 1); if ($search_montant_vat != '') $sql.= natural_search("p.tva", $search_montant_vat, 1); if ($search_montant_ttc != '') $sql.= natural_search("p.total", $search_montant_ttc, 1); @@ -344,7 +362,7 @@ if ($result) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_montant_ht) $param.='&search_montant_ht='.$search_montant_ht; - if ($search_author) $param.='&search_author='.$search_author; + if ($search_login) $param.='&search_login='.$search_login; if ($search_town) $param.='&search_town='.$search_town; if ($optioncss != '') $param.='&optioncss='.$optioncss; // Add $param from extra fields @@ -355,6 +373,8 @@ if ($result) if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); } + //$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); + // Lignes des champs de filtre print ''; if ($optioncss != '') print ''; @@ -417,20 +437,20 @@ if ($result) print ''."\n"; print ''; - if (! empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['p.ref_customer']['checked'])) print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'p.ref_client','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($langs->trans('Town'),$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($langs->trans('Zip'),$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($langs->trans("StateShort"),$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); - if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($langs->trans("Country"),$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($langs->trans("ThirdPartyType"),$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['p.date']['checked'])) print_liste_field_titre($langs->trans('Date'),$_SERVER["PHP_SELF"],'p.datep','',$param, 'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['p.fin_validite']['checked'])) print_liste_field_titre($langs->trans('DateEndPropalShort'),$_SERVER["PHP_SELF"],'dfv','',$param, 'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['p.total_ht']['checked'])) print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($langs->trans('AmountTTC'),$_SERVER["PHP_SELF"],'p.total_ttc','',$param, 'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['p.total_vat']['checked'])) print_liste_field_titre($langs->trans('AmountVAT'),$_SERVER["PHP_SELF"],'p.total_vat','',$param, 'align="right"',$sortfield,$sortorder); - if (! empty($arrayfields['u.login']['checked'])) print_liste_field_titre($langs->trans('Author'),$_SERVER["PHP_SELF"],'u.login','',$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'],$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['p.ref_client']['checked'])) print_liste_field_titre($arrayfields['p.ref_client']['label'],$_SERVER["PHP_SELF"],'p.ref_client','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'],$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'],$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.date']['checked'])) print_liste_field_titre($arrayfields['p.date']['label'],$_SERVER["PHP_SELF"],'p.datep','',$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.fin_validite']['checked'])) print_liste_field_titre($arrayfields['p.fin_validite']['label'],$_SERVER["PHP_SELF"],'dfv','',$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.total_ht']['checked'])) print_liste_field_titre($arrayfields['p.total_ht']['label'],$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.total_vat']['checked'])) print_liste_field_titre($arrayfields['p.total_vat']['label'],$_SERVER["PHP_SELF"],'p.tva','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.total_ttc']['label'],$_SERVER["PHP_SELF"],'p.total','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['u.login']['checked'])) print_liste_field_titre($arrayfields['u.login']['label'],$_SERVER["PHP_SELF"],'u.login','',$param,'align="center"',$sortfield,$sortorder); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -447,9 +467,9 @@ if ($result) $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - if (! empty($arrayfields['p.datec']['checked'])) print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"s.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); - if (! empty($arrayfields['p.tms']['checked'])) print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"s.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); - if (! empty($arrayfields['p.fk_statut']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.datec']['checked'])) print_liste_field_titre($arrayfields['p.datec']['label'],$_SERVER["PHP_SELF"],"p.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.tms']['checked'])) print_liste_field_titre($arrayfields['p.tms']['label'],$_SERVER["PHP_SELF"],"p.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.fk_statut']['checked'])) print_liste_field_titre($arrayfields['p.fk_statut']['label'],$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; @@ -460,7 +480,7 @@ if ($result) print ''; print ''; } - if (! empty($arrayfields['p.ref_customer']['checked'])) + if (! empty($arrayfields['p.ref_client']['checked'])) { print '
    '; print ''; @@ -638,7 +658,7 @@ if ($result) if (! $i) $totalarray['nbfield']++; } - if (! empty($arrayfields['p.ref_customer']['checked'])) + if (! empty($arrayfields['p.ref_client']['checked'])) { // Customer ref print ''; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 91a602c31a6..ffe17e44e2a 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -36,8 +36,9 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT .'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $langs->load('orders'); $langs->load('deliveries'); @@ -55,6 +56,11 @@ $search_product_category=GETPOST('search_product_category','int'); $search_ref=GETPOST('search_ref','alpha')!=''?GETPOST('search_ref','alpha'):GETPOST('sref','alpha'); $search_ref_customer=GETPOST('search_ref_customer','alpha'); $search_company=GETPOST('search_company','alpha'); +$search_town=GETPOST('search_town','alpha'); +$search_zip=GETPOST('search_zip','alpha'); +$search_state=trim(GETPOST("search_state")); +$search_country=GETPOST("search_country",'int'); +$search_type_thirdparty=GETPOST("search_type_thirdparty",'int'); $sall=GETPOST('sall'); $socid=GETPOST('socid','int'); $search_user=GETPOST('search_user','int'); @@ -79,10 +85,18 @@ $pagenext = $page + 1; if (! $sortfield) $sortfield='c.ref'; if (! $sortorder) $sortorder='DESC'; +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$contextpage='orderlist'; + $viewstatut=GETPOST('viewstatut'); // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('orderlist')); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('order'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" $fieldstosearchall = array( @@ -94,24 +108,47 @@ $fieldstosearchall = array( ); if (empty($user->socid)) $fieldstosearchall["c.note_private"]="NotePrivate"; +$checkedtypetiers=0; $arrayfields=array( + 'c.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'c.ref_client'=>array('label'=>$langs->trans("RefCustomerOrder"), 'checked'=>1), + 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), + 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), + 'c.date_commande'=>array('label'=>$langs->trans("DateOrder"), 'checked'=>1), + 'c.date_livraison'=>array('label'=>$langs->trans("DateDelivery"), 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)), + 'c.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'c.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 'c.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), + 'e.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000, 'enabled'=>(empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT))) ); // Extra fields -/* - if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) - { - foreach($extrafields->attribute_label as $key => $val) - { - $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); - } - } - */ +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) +{ + foreach($extrafields->attribute_label as $key => $val) + { + $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); + } +} + /* * Actions */ +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction')) { $massaction=''; } + +$parameters=array('socid'=>$socid); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + // Purge search criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -122,7 +159,15 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $search_ref=''; $search_ref_customer=''; $search_company=''; + $search_town=''; + $search_zip=""; + $search_state=""; + $search_type=''; + $search_country=''; + $search_type_thirdparty=''; $search_total_ht=''; + $search_total_vat=''; + $search_total_ttc=''; $orderyear=''; $ordermonth=''; $orderday=''; @@ -131,11 +176,27 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETP $deliveryyear=''; $viewstatut=''; $billed=''; + $search_array_options=array(); } -$parameters=array('socid'=>$socid); -$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hook -if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +if (empty($reshook)) +{ + // Mass actions. Controls on number of lines checked + $maxformassaction=1000; + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); + } + if (! $error && count($toselect) > $maxformassaction) + { + setEventMessages($langs->trans('TooManyRecordForMassAction',$maxformassaction), null, 'errors'); + $error++; + } + +} + + /* @@ -148,6 +209,7 @@ $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); $companystatic = new Societe($db); +$formcompany=new FormCompany($db); $help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes"; llxHeader('',$langs->trans("Orders"),$help_url); @@ -156,8 +218,18 @@ $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; $sql.= ' s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,'; $sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed'; +// Add fields from extrafields +foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s'; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; $sql.= ', '.MAIN_DB_PREFIX.'commande as c'; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande_extrafields as ef on (c.rowid = ef.fk_object)"; if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'commandedet as pd ON c.rowid=pd.fk_commande'; if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product'; // We'll need this table joined to the select in order to filter by sale @@ -231,6 +303,24 @@ if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.elemen if ($search_total_ht != '') $sql.= natural_search('c.total_ht', $search_total_ht, 1); $sql.= $db->order($sortfield,$sortorder); +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -271,6 +361,8 @@ if ($resql) if ($viewstatut == -3) $title.=' - '.$langs->trans('StatusOrderValidated').', '.(empty($conf->expedition->enabled)?'':$langs->trans("StatusOrderSent").', ').$langs->trans('StatusOrderToBill'); + $num = $db->num_rows($resql); + $param=''; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($socid > 0) $param.='&socid='.$socid; @@ -288,13 +380,21 @@ if ($resql) if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; if ($optioncss != '') $param.='&optioncss='.$optioncss; - - $num = $db->num_rows($resql); + // Add $param from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); + } + + //$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); // Lignes des champs de filtre print ''; if ($optioncss != '') print ''; print ''; + print ''; print ''; print ''; print ''; @@ -348,38 +448,105 @@ if ($resql) print ''; } - print ''; + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print '
    '."\n"; + print ''; - print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('RefCustomerOrder'),$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('OrderDate'),$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="center"',$sortfield,$sortorder); - if (empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)) print_liste_field_titre($langs->trans('DeliveryDate'),$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'c.total_ht','',$param, 'align="right"',$sortfield,$sortorder); - $parameters=array(); + if (! empty($arrayfields['c.ref']['checked'])) print_liste_field_titre($arrayfields['c.ref']['label'],$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); + if (! empty($arrayfields['c.ref_client']['checked'])) print_liste_field_titre($arrayfields['c.ref_client']['label'],$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'],$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'],$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['c.date_commande']['checked'])) print_liste_field_titre($arrayfields['c.date_commande']['label'],$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['c.date_livraison']['checked'])) print_liste_field_titre($arrayfields['c.date_livraison']['label'],$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'],$_SERVER["PHP_SELF"],'c.total_ht','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['c.tva']['checked'])) print_liste_field_titre($arrayfields['c.tva']['label'],$_SERVER["PHP_SELF"],'c.total_vat','',$param, 'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'],$_SERVER["PHP_SELF"],'c.total_ttc','',$param, 'align="right"',$sortfield,$sortorder); + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); + } + } + } + // Hook fields + $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'c.fk_statut','',$param,'align="right"',$sortfield,$sortorder); - if (empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) print_liste_field_titre($langs->trans('Billed'),$_SERVER["PHP_SELF"],'c.facture','',$param,'align="center"',$sortfield,$sortorder,''); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'',$param,'',$sortfield,$sortorder,'maxwidthsearch '); + if (! empty($arrayfields['c.datec']['checked'])) print_liste_field_titre($arrayfields['c.datec']['label'],$_SERVER["PHP_SELF"],"c.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['c.tms']['checked'])) print_liste_field_titre($arrayfields['c.tms']['label'],$_SERVER["PHP_SELF"],"c.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['c.fk_statut']['checked'])) print_liste_field_titre($arrayfields['c.fk_statut']['label'],$_SERVER["PHP_SELF"],"c.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['c.facture']['checked'])) print_liste_field_titre($arrayfields['c.facture']['label'],$_SERVER["PHP_SELF"],'c.facture','',$param,'align="center"',$sortfield,$sortorder,''); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print ''; print ''; - print ''; - print ''; - print ''; - print ''; - if (empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)) + // Ref + if (! empty($arrayfields['c.ref']['checked'])) + { + print ''; + } + // Ref customer + if (! empty($arrayfields['c.ref_client']['checked'])) + { + print ''; + } + // Thirpdarty + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) print ''; + // Zip + if (! empty($arrayfields['s.zip']['checked'])) print ''; + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print ''; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + } + // Company type + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + } + // Date order + if (! empty($arrayfields['c.date_commande']['checked'])) + { + print ''; + } + if (! empty($arrayfields['c.date_livraison']['checked'])) { print ''; } - print ''; - print ''; - if (empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) + if (! empty($arrayfields['c.total_ht']['checked'])) { - print ''; + } + if (! empty($arrayfields['c.total_vat']['checked'])) + { + // Amount + print ''; + } + if (! empty($arrayfields['c.total_ttc']['checked'])) + { + // Amount + print ''; + } + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['c.datec']['checked'])) + { + print ''; } - print ''; - print "\n"; + // Date modification + if (! empty($arrayfields['c.tms']['checked'])) + { + print ''; + } + // Status + if (! empty($arrayfields['c.fk_statut']['checked'])) + { + print ''; + } + // Status + if (! empty($arrayfields['c.facture']['checked'])) + { + print ''; + } + // Action column + print ''; + + print "\n"; $var=true; $total=0; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 2aae115b42b..f6c9e79660a 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -35,6 +35,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; @@ -70,9 +71,15 @@ $search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','al $search_refcustomer=GETPOST('search_refcustomer','alpha'); $search_societe=GETPOST('search_societe','alpha'); $search_montant_ht=GETPOST('search_montant_ht','alpha'); +$search_montant_vat=GETPOST('search_montant_vat','alpha'); $search_montant_ttc=GETPOST('search_montant_ttc','alpha'); $search_status=GETPOST('search_status','int'); $search_paymentmode=GETPOST('search_paymentmode','int'); +$search_town=GETPOST('search_town','alpha'); +$search_zip=GETPOST('search_zip','alpha'); +$search_state=trim(GETPOST("search_state")); +$search_country=GETPOST("search_country",'int'); +$search_type_thirdparty=GETPOST("search_type_thirdparty",'int'); $option = GETPOST('option'); if ($option == 'late') $filter = 'paye:0'; @@ -80,9 +87,7 @@ $limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); -if ($page == -1) { - $page = 0; -} +if ($page == -1) { $page = 0; } $offset = $limit * $page; if (! $sortorder && ! empty($conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER) && $search_status == 1) $sortorder=$conf->global->INVOICE_DEFAULT_UNPAYED_SORT_ORDER; if (! $sortorder) $sortorder='DESC'; @@ -90,6 +95,9 @@ if (! $sortfield) $sortfield='f.datef'; $pageprev = $page - 1; $pagenext = $page + 1; +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$contextpage='invoicelist'; + $search_user = GETPOST('search_user','int'); $search_sale = GETPOST('search_sale','int'); $day = GETPOST('day','int'); @@ -111,10 +119,15 @@ if (! $user->rights->societe->client->voir || $socid) $diroutputpdf.='/private/' $object=new Facture($db); +$now=dol_now(); + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('invoicelist')); +$extrafields = new ExtraFields($db); -$now=dol_now(); +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('invoice'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" $fieldstosearchall = array( @@ -126,6 +139,35 @@ $fieldstosearchall = array( ); if (empty($user->socid)) $fieldstosearchall["f.note_private"]="NotePrivate"; +$checkedtypetiers=0; +$arrayfields=array( + 'f.facnumber'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'f.ref_client'=>array('label'=>$langs->trans("RefCustomer"), 'checked'=>1), + 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), + 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), + 'f.date'=>array('label'=>$langs->trans("DateInvoice"), 'checked'=>1), + 'f.date_lim_reglement'=>array('label'=>$langs->trans("DateDue"), 'checked'=>1), + 'f.fk_mode_reglement'=>array('label'=>$langs->trans("PaymentMode"), 'checked'=>1), + 'f.total_ht'=>array('label'=>$langs->trans("AmountHT"), 'checked'=>1), + 'f.total_vat'=>array('label'=>$langs->trans("AmountVAT"), 'checked'=>0), + 'f.total_ttc'=>array('label'=>$langs->trans("AmountTTC"), '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), +); +// Extra fields +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) +{ + foreach($extrafields->attribute_label as $key => $val) + { + $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); + } +} + /* * Actions @@ -133,10 +175,44 @@ if (empty($user->socid)) $fieldstosearchall["f.note_private"]="NotePrivate"; if (GETPOST('cancel')) { $action='list'; $massaction=''; } if (! GETPOST('confirmmassaction')) { $massaction=''; } - + $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + +// Do we click on purge search criteria ? +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +{ + $search_user=''; + $search_sale=''; + $search_product_category=''; + $search_ref=''; + $search_refcustomer=''; + $search_societe=''; + $search_montant_ht=''; + $search_montant_vat=''; + $search_montant_ttc=''; + $search_status=''; + $search_paymentmode=''; + $search_town=''; + $search_zip=""; + $search_state=""; + $search_type=''; + $search_country=''; + $search_type_thirdparty=''; + $day=''; + $year=''; + $month=''; + $toselect=''; + $option=''; + $filter=''; + $day_lim=''; + $year_lim=''; + $month_lim=''; +} + if (empty($reshook)) { // Mass actions. Controls on number of lines checked @@ -542,30 +618,6 @@ if (empty($reshook)) } -// Do we click on purge search criteria ? -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -{ - $search_user=''; - $search_sale=''; - $search_product_category=''; - $search_ref=''; - $search_refcustomer=''; - $search_societe=''; - $search_montant_ht=''; - $search_montant_ttc=''; - $search_status=''; - $search_paymentmode=''; - $day=''; - $year=''; - $month=''; - $toselect=''; - $option=''; - $filter=''; - $day_lim=''; - $year_lim=''; - $month_lim=''; -} - /* @@ -579,6 +631,7 @@ $formother = new FormOther($db); $formfile = new FormFile($db); $bankaccountstatic=new Account($db); $facturestatic=new Facture($db); +$formcompany=new FormCompany($db); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; @@ -587,8 +640,18 @@ $sql.= ' f.datef as df, f.date_lim_reglement as datelimite,'; $sql.= ' f.paye as paye, f.fk_statut,'; $sql.= ' s.nom as name, s.rowid as socid, s.code_client, s.client '; if (! $sall) $sql.= ', SUM(pf.amount) as am'; // To be able to sort on status +// Add fields from extrafields +foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s'; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; $sql.= ', '.MAIN_DB_PREFIX.'facture as f'; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture_extrafields as ef on (f.rowid = ef.fk_object)"; if (! $sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid'; else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as fd ON fd.fk_facture = f.rowid'; if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as pd ON f.rowid=pd.fk_facture'; @@ -675,6 +738,24 @@ $listfield=explode(',',$sortfield); foreach ($listfield as $key => $value) $sql.= $listfield[$key].' '.$sortorder.','; $sql.= ' f.rowid DESC '; +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -717,7 +798,15 @@ if ($resql) if ($search_status != '') $param.='&search_status='.$search_status; if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode; if ($show_files) $param.='&show_files=' .$show_files; - $param.=(! empty($option)?"&option=".$option:""); + if ($option) $param.="&option=".$option; + if ($optioncss != '') $param.='&optioncss='.$optioncss; + // Add $param from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); + } $massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); @@ -875,57 +964,200 @@ if ($resql) print ''; } - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); - print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print $form->select_country($search_country,'search_country','',0,'maxwidth100'); + print ''; + print $form->selectarray("search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); + print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; + $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); + print ''; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; @@ -387,30 +554,94 @@ if ($resql) $formother->select_year($deliveryyear?$deliveryyear:-1,'deliveryyear',1, 20, 5); print ''; - print ''; - print ''; - $liststatus=array( - '0'=>$langs->trans("StatusOrderDraftShort"), - '1'=>$langs->trans("StatusOrderValidated"), - '2'=>$langs->trans("StatusOrderSentShort"), - '3'=>$langs->trans("StatusOrderDelivered"), - '-1'=>$langs->trans("StatusOrderCanceledShort") - ); - print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); - print ''; - print $form->selectyesno('billed', $billed, 1, 0, 1); + // Amount + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; print ''; - $searchpitco=$form->showFilterAndCheckAddButtons(0); - print $searchpitco; - print '
    '; + print ''; + $liststatus=array( + '0'=>$langs->trans("StatusOrderDraftShort"), + '1'=>$langs->trans("StatusOrderValidated"), + '2'=>$langs->trans("StatusOrderSentShort"), + '3'=>$langs->trans("StatusOrderDelivered"), + '-1'=>$langs->trans("StatusOrderCanceledShort") + ); + print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); + print ''; + print $form->selectyesno('billed', $billed, 1, 0, 1); + print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(0); + print $searchpitco; + print '
    '; + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print '
    '."\n"; print ''; - print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'f.facnumber','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Date'),$_SERVER['PHP_SELF'],'f.datef','',$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateDue"),$_SERVER['PHP_SELF'],"f.date_lim_reglement",'',$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('ThirdParty'),$_SERVER['PHP_SELF'],'s.nom','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("PaymentModeShort"),$_SERVER["PHP_SELF"],"f.fk_mode_reglement","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans('AmountHT'),$_SERVER['PHP_SELF'],'f.total','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Taxes'),$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('AmountTTC'),$_SERVER['PHP_SELF'],'f.total_ttc','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Received'),$_SERVER['PHP_SELF'],'am','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Status'),$_SERVER['PHP_SELF'],'fk_statut,paye,am','',$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + if (! empty($arrayfields['f.facnumber']['checked'])) print_liste_field_titre($arrayfields['f.facnumber']['label'],$_SERVER['PHP_SELF'],'f.facnumber','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['f.ref_client']['checked'])) print_liste_field_titre($arrayfields['f.ref_client']['label'],$_SERVER["PHP_SELF"],'f.ref_client','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['f.date']['checked'])) print_liste_field_titre($arrayfields['f.date']['label'],$_SERVER['PHP_SELF'],'f.datef','',$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['f.date_lim_reglement']['checked'])) print_liste_field_titre($arrayfields['f.date_lim_reglement']['label'],$_SERVER['PHP_SELF'],"f.date_lim_reglement",'',$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER['PHP_SELF'],'s.nom','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'],$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'],$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['f.fk_mode_reglement']['checked'])) print_liste_field_titre($arrayfields['f.fk_mode_reglement']['label'],$_SERVER["PHP_SELF"],"f.fk_mode_reglement","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['f.total_ht']['checked'])) print_liste_field_titre($arrayfields['f.total_ht']['label'],$_SERVER['PHP_SELF'],'f.total','',$param,'align="right"',$sortfield,$sortorder); + 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); + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); + } + } + } + // Hook fields + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (! empty($arrayfields['f.datec']['checked'])) print_liste_field_titre($arrayfields['f.datec']['label'],$_SERVER["PHP_SELF"],"f.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['f.tms']['checked'])) print_liste_field_titre($arrayfields['f.tms']['label'],$_SERVER["PHP_SELF"],"f.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['f.fk_statut']['checked'])) print_liste_field_titre($arrayfields['f.fk_statut']['label'],$_SERVER["PHP_SELF"],"fk_statut,paye,am","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; // Filters lines print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + } + // Ref customer + if (! empty($arrayfields['f.ref_client']['checked'])) + { + print ''; + } + // Date invoice + if (! empty($arrayfields['f.date']['checked'])) + { + print ''; + } + // Date due + if (! empty($arrayfields['f.date_lim_reglement']['checked'])) + { + print ''; + } + // Thirpdarty + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) print ''; + // Zip + if (! empty($arrayfields['s.zip']['checked'])) print ''; + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print ''; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + } + // Company type + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + } + // Payment mode + if (! empty($arrayfields['f.fk_mode_reglement']['checked'])) + { + print ''; + } + if (! empty($arrayfields['f.total_ht']['checked'])) + { + // Amount + print ''; + } + if (! empty($arrayfields['f.total_vat']['checked'])) + { + // Amount + print ''; + } + if (! empty($arrayfields['f.total_ttc']['checked'])) + { + // Amount + print ''; + } + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['f.datec']['checked'])) + { + print ''; + } + // Date modification + if (! empty($arrayfields['f.tms']['checked'])) + { + print ''; + } + // Status + if (! empty($arrayfields['f.fk_statut']['checked'])) + { + print ''; + } + // Status + if (! empty($arrayfields['c.facture']['checked'])) + { + print ''; + } + // Action column + print ''; print "\n"; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 288a1b92f37..25fe9855ee8 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -25,6 +25,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $langs->load("sendings"); $langs->load("deliveries"); @@ -39,6 +40,11 @@ $result = restrictedArea($user, 'expedition',$expeditionid,''); $search_ref_exp = GETPOST("search_ref_exp"); $search_ref_liv = GETPOST('search_ref_liv'); $search_company = GETPOST("search_company"); +$search_town=GETPOST('search_town','alpha'); +$search_zip=GETPOST('search_zip','alpha'); +$search_state=trim(GETPOST("search_state")); +$search_country=GETPOST("search_country",'int'); +$search_type_thirdparty=GETPOST("search_type_thirdparty",'int'); $sall = GETPOST('sall'); $optioncss = GETPOST('optioncss','alpha'); @@ -53,27 +59,46 @@ $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$contextpage='shipmentlist'; + $viewstatut=GETPOST('viewstatut'); -// Purge search criteria -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -{ - $search_ref_exp=''; - $search_ref_liv=''; - $search_company=''; - $viewstatut=''; -} +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('shipmentlist')); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('shipment'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" $fieldstosearchall = array( 'e.ref'=>"Ref", - 's.nom'=>"ThirdParty" + 's.nom'=>"ThirdParty", + 'e.note_public'=>'NotePublic', +); +if (empty($user->socid)) $fieldstosearchall["c.note_private"]="NotePrivate"; + +$checkedtypetiers=0; +$arrayfields=array( + 'e.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'e.ref_customer'=>array('label'=>$langs->trans("RefCustomer"), 'checked'=>1), + 's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1), + 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), + 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), + 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), + 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), + 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), + 'e.date_delivery'=>array('label'=>$langs->trans("DateDeliveryPlanned"), 'checked'=>1), + 'e.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'e.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 'e.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), + 'l.ref'=>array('label'=>$langs->trans("DeliveryRef"), 'checked'=>1, 'enabled'=>$conf->livraison_bon->enabled), + 'l.date_delivery'=>array('label'=>$langs->trans("DateReceived"), 'checked'=>1, 'enabled'=>$conf->livraison_bon->enabled) ); -$arrayfields=array( -); // Extra fields -/* if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { foreach($extrafields->attribute_label as $key => $val) @@ -81,9 +106,57 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $arrayfields["ef.".$key]=array('label'=>$extrafields->attribute_label[$key], 'checked'=>$extrafields->attribute_list[$key], 'position'=>$extrafields->attribute_pos[$key], 'enabled'=>$extrafields->attribute_perms[$key]); } } -*/ +/* + * Actions + */ + +if (GETPOST('cancel')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction')) { $massaction=''; } + +$parameters=array('socid'=>$socid); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + +// Purge search criteria +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers +{ + $search_ref_exp=''; + $search_ref_liv=''; + $search_company=''; + $search_town=''; + $search_zip=""; + $search_state=""; + $search_type=''; + $search_country=''; + $search_type_thirdparty=''; + $viewstatut=''; + $search_array_options=array(); +} + +if (empty($reshook)) +{ + // Mass actions. Controls on number of lines checked + $maxformassaction=1000; + if (! empty($massaction) && count($toselect) < 1) + { + $error++; + setEventMessages($langs->trans("NoLineChecked"), null, "warnings"); + } + if (! $error && count($toselect) > $maxformassaction) + { + setEventMessages($langs->trans('TooManyRecordForMassAction',$maxformassaction), null, 'errors'); + $error++; + } + +} + + + + /* * View */ @@ -91,19 +164,30 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab $form=new Form($db); $companystatic=new Societe($db); $shipment=new Expedition($db); +$formcompany=new FormCompany($db); $helpurl='EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones'; llxHeader('',$langs->trans('ListOfSendings'),$helpurl); $sql = "SELECT e.rowid, e.ref, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut"; $sql.= ", s.nom as socname, s.rowid as socid"; +// Add fields from extrafields +foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; $sql.= " FROM (".MAIN_DB_PREFIX."expedition as e"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expedition_extrafields as ef on (e.rowid = ef.fk_object)"; if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all { $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } $sql.= ")"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as ee ON e.rowid = ee.fk_source AND ee.sourcetype = 'shipping' AND ee.targettype = 'delivery'"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.rowid = ee.fk_target"; $sql.= " WHERE e.entity IN (".getEntity('expedition', 1).")"; @@ -124,6 +208,24 @@ if ($search_ref_liv) $sql .= natural_search('l.ref', $search_ref_liv); if ($search_company) $sql .= natural_search('s.nom', $search_company); if ($sall) $sql .= natural_search(array_keys($fieldstosearchall), $sall); +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int','double'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -148,12 +250,22 @@ if ($resql) if ($search_ref_liv) $param.= "&search_ref_liv=".$search_ref_liv; if ($search_company) $param.= "&search_company=".$search_company; if ($optioncss != '') $param.='&optioncss='.$optioncss; - + // Add $param from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); + } + + //$massactionbutton=$form->selectMassAction('', $massaction == 'presend' ? array() : array('presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"))); + $i = 0; print ''."\n"; if ($optioncss != '') print ''; print ''; print ''; + print ''; print ''; print ''; @@ -178,49 +290,152 @@ if ($resql) $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - - print '
    '; - print ''; - print ''; - print ''; - print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($year?$year:-1,'year',1, 20, 5); - print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; - $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5); - print '
    '.$langs->trans("Late"); - print '
    '; - $form->select_types_paiements($search_paymentmode, 'search_paymentmode', '', 0, 0, 1, 10); - print ''; - $liststatus=array('0'=>$langs->trans("BillShortStatusDraft"), '1'=>$langs->trans("BillShortStatusNotPaid"), '2'=>$langs->trans("BillShortStatusPaid"), '3'=>$langs->trans("BillShortStatusCanceled")); - print $form->selectarray('search_status', $liststatus, $search_status, 1); - print ''; - $searchpitco=$form->showFilterAndCheckAddButtons(1, 'checkforselect', 1); - print $searchpitco; + // Ref + if (! empty($arrayfields['f.facnumber']['checked'])) + { + print ''; + print ''; + print ''; + print ''; + print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; + $formother->select_year($year?$year:-1,'year',1, 20, 5); + print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; + $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5); + print '
    '.$langs->trans("Late"); + print '
    '; + print ''; + print ''; + print $form->select_country($search_country,'search_country','',0,'maxwidth100'); + print ''; + print $form->selectarray("search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); + print ''; + $form->select_types_paiements($search_paymentmode, 'search_paymentmode', '', 0, 0, 1, 10); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + print ''; + print ''; + $liststatus=array('0'=>$langs->trans("BillShortStatusDraft"), '1'=>$langs->trans("BillShortStatusNotPaid"), '2'=>$langs->trans("BillShortStatusPaid"), '3'=>$langs->trans("BillShortStatusCanceled")); + print $form->selectarray('search_status', $liststatus, $search_status, 1); + print ''; + print $form->selectyesno('billed', $billed, 1, 0, 1); + print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(1, 'checkforselect', 1); + print $searchpitco; print '
    '; + + print '
    '."\n"; print ''; - print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"],"e.ref","",$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("ThirdParty"), $_SERVER["PHP_SELF"],"s.nom", "", $param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateDeliveryPlanned"), $_SERVER["PHP_SELF"],"e.date_delivery","",$param, 'align="center"',$sortfield,$sortorder); - if($conf->livraison_bon->enabled) - { - print_liste_field_titre($langs->trans("DeliveryOrder"), $_SERVER["PHP_SELF"],"l.ref","",$param, '',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateReceived"), $_SERVER["PHP_SELF"],"l.date_delivery","",$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['e.ref']['checked'])) print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"],"e.ref","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"],"s.nom", "", $param,'align="left"',$sortfield,$sortorder); + if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'],$_SERVER["PHP_SELF"],'s.zip','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'],$_SERVER["PHP_SELF"],"state.nom","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['e.date_delivery']['checked'])) print_liste_field_titre($arrayfields['e.date_delivery']['label'], $_SERVER["PHP_SELF"],"e.date_delivery","",$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['l.ref']['checked'])) print_liste_field_titre($arrayfields['l.ref']['label'], $_SERVER["PHP_SELF"],"l.ref","",$param, '',$sortfield,$sortorder); + if (! empty($arrayfields['l.date_delivery']['checked'])) print_liste_field_titre($arrayfields['l.date_delivery']['label'], $_SERVER["PHP_SELF"],"l.date_delivery","",$param, 'align="center"',$sortfield,$sortorder); + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); + } + } } - print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"],"e.fk_statut","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + // Hook fields + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (! empty($arrayfields['e.datec']['checked'])) print_liste_field_titre($arrayfields['e.datec']['label'],$_SERVER["PHP_SELF"],"e.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['e.tms']['checked'])) print_liste_field_titre($arrayfields['e.tms']['label'],$_SERVER["PHP_SELF"],"e.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['e.fk_statut']['checked'])) print_liste_field_titre($arrayfields['e.fk_statut']['label'],$_SERVER["PHP_SELF"],"e.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['l.fk_statut']['checked'])) print_liste_field_titre($arrayfields['l.fk_statut']['label'], $_SERVER["PHP_SELF"],"l.fk_statut","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; // Lignes des champs de filtre print ''; - print ''; - print ''; - // Date delivery planned - print ''; - if ($conf->livraison_bon->enabled) + // Ref + if (! empty($arrayfields['e.ref']['checked'])) + { + print ''; + } + // Thirdparty + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) print ''; + // Zip + if (! empty($arrayfields['s.zip']['checked'])) print ''; + // State + if (! empty($arrayfields['state.nom']['checked'])) { + print ''; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + } + // Company type + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + } + // Date delivery planned + if (! empty($arrayfields['e.date_delivery']['checked'])) + { + print ''; + } + if (! empty($arrayfields['l.ref']['checked'])) + { // Delivery order print ''; } + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + $align=$extrafields->getAlignFlag($key); + $typeofextrafield=$extrafields->attribute_type[$key]; + print ''; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields); + $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['e.datec']['checked'])) + { + print ''; + } + // Date modification + if (! empty($arrayfields['e.tms']['checked'])) + { + print ''; + } // Status - print ''; - print ''; + } + // Action column + print ''; print "\n"; diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index eab3826a2c7..9bf50756ddb 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - deliveries Delivery=Delivery +DeliveryRef=Ref Delivery Deliveries=Deliveries DeliveryCard=Delivery card DeliveryOrder=Delivery order From 8222624ff01b158c5011d4c6e43f8279ec9e479b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 02:39:57 +0200 Subject: [PATCH 106/380] NEW Can select fields to show on list also for list of customer orders, shipments and invoices. --- dev/skeletons/skeleton_list.php | 28 +- htdocs/comm/propal/list.php | 8 +- htdocs/commande/list.php | 557 ++++++++++++++++++----------- htdocs/compta/facture/list.php | 412 ++++++++++++++------- htdocs/expedition/list.php | 212 ++++++++--- htdocs/langs/en_US/deliveries.lang | 1 + htdocs/langs/en_US/orders.lang | 1 + 7 files changed, 829 insertions(+), 390 deletions(-) diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php index 46111e14716..78f17dc1a63 100644 --- a/dev/skeletons/skeleton_list.php +++ b/dev/skeletons/skeleton_list.php @@ -43,7 +43,9 @@ if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@includ if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only if (! $res) die("Include of main fails"); // Change this following line to use the correct relative path from htdocs -include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); +require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; dol_include_once('/mymodule/class/skeleton_class.class.php'); // Load traductions files requiredby by page @@ -396,7 +398,9 @@ if ($resql) print ''."\n"; - $i = 0; + $i=0; + $var=true; + $totalarray=array(); while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); @@ -404,8 +408,16 @@ if ($resql) { // You can use here results print ''; - if (! empty($arrayfields['t.field1']['checked'])) print ''; - if (! empty($arrayfields['t.field2']['checked'])) print ''; + if (! empty($arrayfields['t.field1']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + if (! empty($arrayfields['t.field2']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -420,6 +432,7 @@ if ($resql) $tmpkey='options_'.$key; print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); print ''; + if (! $i) $totalarray['nbfield']++; } } } @@ -433,6 +446,7 @@ if ($resql) print ''; + if (! $i) $totalarray['nbfield']++; } // Date modification if (! empty($arrayfields['t.tms']['checked'])) @@ -440,6 +454,7 @@ if ($resql) print ''; + if (! $i) $totalarray['nbfield']++; } // Status /* @@ -448,9 +463,12 @@ if ($resql) $userstatic->statut=$obj->statut; print ''; }*/ + // Action column print ''; - print ''; + if (! $i) $totalarray['nbfield']++; + + print ''; } $i++; } diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 4aff2989462..3e59a76d7d0 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -607,20 +607,20 @@ if ($result) print ''; } // Action column - print ''; print "\n"; + $now = dol_now(); $i=0; $var=true; $totalarray=array(); while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); - $now = dol_now(); $var=!$var; print ''; @@ -669,11 +669,12 @@ if ($result) $url = DOL_URL_ROOT.'/comm/card.php?socid='.$obj->rowid; - // Company $companystatic->id=$obj->rowid; $companystatic->name=$obj->name; $companystatic->client=$obj->client; $companystatic->code_client=$obj->code_client; + + // Thirdparty if (! empty($arrayfields['s.nom']['checked'])) { print ''; } - // Extra fields + if (! empty($arrayfields['am']['checked'])) + { + print ''; + } + // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { foreach($extrafields->attribute_label as $key => $val) @@ -1147,15 +1160,8 @@ if ($resql) print $form->selectarray('search_status', $liststatus, $search_status, 1); print ''; } - // Status - if (! empty($arrayfields['c.facture']['checked'])) - { - print ''; - } // Action column - print ''; @@ -1163,132 +1169,274 @@ if ($resql) if ($num > 0) { + $i=0; $var=true; - $total_ht=0; - $total_tva=0; - $total_ttc=0; - $totalrecu=0; - + $totalarray=array(); while ($i < min($num,$limit)) { - $objp = $db->fetch_object($resql); + $obj = $db->fetch_object($resql); $var=!$var; - $datelimit=$db->jdate($objp->datelimite); + $datelimit=$db->jdate($obj->datelimite); print ''; - print '\n"; - + if (! empty($arrayfields['f.facnumber']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + } + // Customer ref - print ''; - + if (! empty($arrayfields['f.ref_client']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date - print ''; - + if (! empty($arrayfields['f.date']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date limit - print ''; - - print ''; - + if (! empty($arrayfields['f.date_lim_reglement']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Third party + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Zip + if (! empty($arrayfields['s.zip']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Type ent + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Payment mode - print ''; + if (! empty($arrayfields['f.fk_mode_reglement']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Amount HT + if (! empty($arrayfields['f.total_ht']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalhtfield']=$totalarray['nbfield']; + $totalarray['totalht'] += $obj->total_ht; + } + // Amount VAT + if (! empty($arrayfields['f.total_vat']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalvatfield']=$totalarray['nbfield']; + $totalarray['totalvat'] += $obj->total_vat; + } + // Amount TTC + if (! empty($arrayfields['f.total_ttc']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalttcfield']=$totalarray['nbfield']; + $totalarray['totalttc'] += $obj->total_ttc; + } + + if (! empty($arrayfields['am']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalamfield']=$totalarray['nbfield']; + $totalarray['totalam'] += $paiement; + } - print ''; - - print ''; - - print ''; - - print ''; - + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + print 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + if (! $i) $totalarray['nbfield']++; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['f.datec']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date modification + if (! empty($arrayfields['f.tms']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } // Status - print '"; - - // Checkbox + if (! empty($arrayfields['f.fk_statut']['checked'])) + { + print '"; + if (! $i) $totalarray['nbfield']++; + } + + // Action column print '' ; - + if (in_array($obj->facid, $arrayofselected)) $selected=1; + print ''; + print '' ; + if (! $i) $totalarray['nbfield']++; + print "\n"; - $total_ht+=$objp->total_ht; - $total_tva+=$objp->total_tva; - $total_ttc+=$objp->total_ttc; - $totalrecu+=$paiement; + $i++; } - if (($offset + $num) <= $limit) - { - // Print total - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - } + // Show total line + if (isset($totalarray['totalhtfield'])) + { + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if ($i == 1) + { + if ($num < $limit) print ''; + else print ''; + } + elseif ($totalarray['totalhtfield'] == $i) print ''; + elseif ($totalarray['totalvatfield'] == $i) print ''; + elseif ($totalarray['totalttcfield'] == $i) print ''; + elseif ($totalarray['totalamfield'] == $i) print ''; + else print ''; + } + print ''; + + } } - print "
    '; - print ''; - print ''; - print ''; - print ' '; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print $form->select_country($search_country,'search_country','',0,'maxwidth100'); + print ''; + print $form->selectarray("search_type_thirdparty", $formcompany->typent_array(0), $search_type_thirdparty, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); + print ' '; print ''; - // Date received + } + if (! empty($arrayfields['l.date_delivery']['checked'])) + { + // Date received print ' '; + if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select'))) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $searchclass=''; + if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring'; + if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum'; + print ''; + } + print ''; + print ''; + print ''; - print $form->selectarray('viewstatut', array('0'=>$langs->trans('StatusSendingDraftShort'),'1'=>$langs->trans('StatusSendingValidatedShort'),'2'=>$langs->trans('StatusSendingProcessedShort')),$viewstatut,1); - print ''; - $searchpitco=$form->showFilterAndCheckAddButtons(0); - print $searchpitco; + if (! empty($arrayfields['e.fk_statut']['checked'])) + { + print ''; + print $form->selectarray('viewstatut', array('0'=>$langs->trans('StatusSendingDraftShort'),'1'=>$langs->trans('StatusSendingValidatedShort'),'2'=>$langs->trans('StatusSendingProcessedShort')),$viewstatut,1); + print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(0); + print $searchpitco; print '
    '.$obj->field1.''.$obj->field2.''.$obj->field1.''.$obj->field2.''; print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); print ''; print dol_print_date($db->jdate($obj->date_update), 'dayhour'); print ''.$userstatic->getLibStatut(3).'
    '; + print ''; $searchpitco=$form->showFilterAndCheckAddButtons(0); print $searchpitco; print '
    '; @@ -774,6 +775,7 @@ if ($result) $userstatic->id=$obj->fk_user_author; $userstatic->login=$obj->login; + // Author if (! empty($arrayfields['u.login']['checked'])) { diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index ffe17e44e2a..1ed03c2f614 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -34,6 +34,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; @@ -41,6 +42,7 @@ require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $langs->load('orders'); +$langs->load('sendings'); $langs->load('deliveries'); $langs->load('companies'); $langs->load('compta'); @@ -95,7 +97,7 @@ $hookmanager->initHooks(array('orderlist')); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('order'); +$extralabels = $extrafields->fetch_name_optionals_label('commande'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -118,8 +120,8 @@ $arrayfields=array( 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), 'country.code_iso'=>array('label'=>$langs->trans("Country"), 'checked'=>0), 'typent.code'=>array('label'=>$langs->trans("ThirdPartyType"), 'checked'=>$checkedtypetiers), - 'c.date_commande'=>array('label'=>$langs->trans("DateOrder"), 'checked'=>1), - 'c.date_livraison'=>array('label'=>$langs->trans("DateDelivery"), 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)), + 'c.date_commande'=>array('label'=>$langs->trans("OrderDateShort"), 'checked'=>1), + 'c.date_delivery'=>array('label'=>$langs->trans("DateDeliveryPlanned"), 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE)), 'c.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), 'c.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'c.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), @@ -216,8 +218,12 @@ llxHeader('',$langs->trans("Orders"),$help_url); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; -$sql.= ' s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,'; -$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed'; +$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, '; +$sql.= " typent.code as typent_code,"; +$sql.= " state.code_departement as state_code, state.nom as state_name,"; +$sql.= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,'; +$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,'; +$sql.= ' c.date_creation as date_creation, c.tms as date_update'; // Add fields from extrafields foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); // Add fields from hooks @@ -296,12 +302,16 @@ else if ($deliveryyear > 0) { $sql.= " AND c.date_livraison BETWEEN '".$db->idate(dol_get_first_day($deliveryyear,1,false))."' AND '".$db->idate(dol_get_last_day($deliveryyear,12,false))."'"; } -if (!empty($search_company)) $sql .= natural_search('s.nom', $search_company); -if (!empty($search_ref_customer)) $sql.= natural_search('c.ref_client', $search_ref_customer); +if ($search_town) $sql.= natural_search('s.town', $search_town); +if ($search_zip) $sql.= natural_search("s.zip",$search_zip); +if ($search_state) $sql.= natural_search("state.nom",$search_state); +if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; +if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; +if ($search_company) $sql .= natural_search('s.nom', $search_company); +if ($search_ref_customer) $sql.= natural_search('c.ref_client', $search_ref_customer); if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; if ($search_total_ht != '') $sql.= natural_search('c.total_ht', $search_total_ht, 1); -$sql.= $db->order($sortfield,$sortorder); // Add where from extra fields foreach ($search_array_options as $key => $val) @@ -321,6 +331,8 @@ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; +$sql.= $db->order($sortfield,$sortorder); + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -454,7 +466,7 @@ if ($resql) print ''."\n"; print ''; - if (! empty($arrayfields['c.ref']['checked'])) print_liste_field_titre($arrayfields['c.ref']['label'],$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); + if (! empty($arrayfields['c.ref']['checked'])) print_liste_field_titre($arrayfields['c.ref']['label'],$_SERVER["PHP_SELF"],'c.ref','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['c.ref_client']['checked'])) print_liste_field_titre($arrayfields['c.ref_client']['label'],$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'],$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); if (! empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'],$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); @@ -463,7 +475,7 @@ if ($resql) if (! empty($arrayfields['country.code_iso']['checked'])) print_liste_field_titre($arrayfields['country.code_iso']['label'],$_SERVER["PHP_SELF"],"country.code_iso","",$param,'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'],$_SERVER["PHP_SELF"],"typent.code","",$param,'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['c.date_commande']['checked'])) print_liste_field_titre($arrayfields['c.date_commande']['label'],$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="center"',$sortfield,$sortorder); - if (! empty($arrayfields['c.date_livraison']['checked'])) print_liste_field_titre($arrayfields['c.date_livraison']['label'],$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['c.date_delivery']['checked'])) print_liste_field_titre($arrayfields['c.date_delivery']['label'],$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'],$_SERVER["PHP_SELF"],'c.total_ht','',$param, 'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['c.tva']['checked'])) print_liste_field_titre($arrayfields['c.tva']['label'],$_SERVER["PHP_SELF"],'c.total_vat','',$param, 'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'],$_SERVER["PHP_SELF"],'c.total_ttc','',$param, 'align="right"',$sortfield,$sortorder); @@ -483,7 +495,7 @@ if ($resql) $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - if (! empty($arrayfields['c.datec']['checked'])) print_liste_field_titre($arrayfields['c.datec']['label'],$_SERVER["PHP_SELF"],"c.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['c.datec']['checked'])) print_liste_field_titre($arrayfields['c.datec']['label'],$_SERVER["PHP_SELF"],"c.date_creation","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); if (! empty($arrayfields['c.tms']['checked'])) print_liste_field_titre($arrayfields['c.tms']['label'],$_SERVER["PHP_SELF"],"c.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); if (! empty($arrayfields['c.fk_statut']['checked'])) print_liste_field_titre($arrayfields['c.fk_statut']['label'],$_SERVER["PHP_SELF"],"c.fk_statut","",$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['c.facture']['checked'])) print_liste_field_titre($arrayfields['c.facture']['label'],$_SERVER["PHP_SELF"],'c.facture','',$param,'align="center"',$sortfield,$sortorder,''); @@ -546,7 +558,7 @@ if ($resql) $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); print ''; } - if (! empty($arrayfields['c.date_livraison']['checked'])) + if (! empty($arrayfields['c.date_delivery']['checked'])) { print ''; } // Action column - print ''; print "\n"; - $var=true; $total=0; $subtotal=0; $productstat_cache=array(); - $i=0; $generic_commande = new Commande($db); $generic_product = new Product($db); + + $i=0; + $var=true; + $totalarray=array(); while ($i < min($num,$limit)) { - $objp = $db->fetch_object($resql); + $obj = $db->fetch_object($resql); $var=!$var; print ''; - print ''; - + // Ref customer - print ''; - - // Company - $companystatic->id=$objp->socid; - $companystatic->code_client = $objp->code_client; - $companystatic->name=$objp->name; - $companystatic->client=$objp->client; - print ''; + if (! $i) $totalarray['nbfield']++; } - print ''; - // Order date - print ''; + $companystatic->id=$obj->socid; + $companystatic->code_client = $obj->code_client; + $companystatic->name=$obj->name; + $companystatic->client=$obj->client; - // Delivery date - print ''; - - // Amount HT - print ''; - - // Statut - print ''; - - // Billed - if (empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) print ''; + // Third party + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Zip + if (! empty($arrayfields['s.zip']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Type ent + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Order date + if (! empty($arrayfields['c.date_commande']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Plannned date of delivery + if (! empty($arrayfields['c.date_delivery']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Amount HT + if (! empty($arrayfields['c.total_ht']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalhtfield']=$totalarray['nbfield']; + $totalarray['totalht'] += $obj->total_ht; + } + // Amount VAT + if (! empty($arrayfields['c.total_vat']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalvatfield']=$totalarray['nbfield']; + $totalarray['totalvat'] += $obj->total_vat; + } + // Amount TTC + if (! empty($arrayfields['c.total_ttc']['checked'])) + { + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalttcfield']=$totalarray['nbfield']; + $totalarray['totalttc'] += $obj->total_ttc; + } + + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + print 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + if (! $i) $totalarray['nbfield']++; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['c.datec']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date modification + if (! empty($arrayfields['c.tms']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Status + if (! empty($arrayfields['c.fk_statut']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Billed + if (! empty($arrayfields['c.facture']['checked'])) + { + print ''; + } + + // Action column + print ''; + if (! $i) $totalarray['nbfield']++; - print ''; - print ''; - $total+=$objp->total_ht; - $subtotal+=$objp->total_ht; + $total+=$obj->total_ht; + $subtotal+=$obj->total_ht; $i++; } - if (! empty($conf->global->MAIN_SHOW_TOTAL_FOR_LIMITED_LIST)) + // Show total line + if (isset($totalarray['totalhtfield'])) { - $var=!$var; - print ''; - print ''; - // Total HT - print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if ($i == 1) + { + if ($num < $limit) print ''; + else print ''; + } + elseif ($totalarray['totalhtfield'] == $i) print ''; + elseif ($totalarray['totalvatfield'] == $i) print ''; + elseif ($totalarray['totalttcfield'] == $i) print ''; + else print ''; + } + print ''; + } + $db->free($resql); + + $parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
    '; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; @@ -636,248 +648,391 @@ if ($resql) print ''; + print ''; $searchpitco=$form->showFilterAndCheckAddButtons(0); print $searchpitco; print '
    '; - $generic_commande->id=$objp->rowid; - $generic_commande->ref=$objp->ref; - $generic_commande->statut = $objp->fk_statut; - $generic_commande->date_commande = $db->jdate($objp->date_commande); - $generic_commande->date_livraison = $db->jdate($objp->date_delivery); - $generic_commande->ref_client = $objp->ref_client; - $generic_commande->total_ht = $objp->total_ht; - $generic_commande->total_tva = $objp->total_tva; - $generic_commande->total_ttc = $objp->total_ttc; - $generic_commande->lines=array(); - $generic_commande->getLinesArray(); - print ''; - print ''; - - // Show shippable Icon (create subloop, so may be slow) - if ($conf->stock->enabled) + if (! empty($arrayfields['c.ref']['checked'])) { - $langs->load("stocks"); - if (($objp->fk_statut > 0) && ($objp->fk_statut < 3)) + print ''; + if (! $i) $totalarray['nbfield']++; } - - // Warning late icon - print ''; - - print ''; - print '
    '; - print $generic_commande->getNomUrl(1,($viewstatut != 2?0:$objp->fk_statut)); - print ''; + $generic_commande->id=$obj->rowid; + $generic_commande->ref=$obj->ref; + $generic_commande->statut = $obj->fk_statut; + $generic_commande->date_commande = $db->jdate($obj->date_commande); + $generic_commande->date_livraison = $db->jdate($obj->date_delivery); + $generic_commande->ref_client = $obj->ref_client; + $generic_commande->total_ht = $obj->total_ht; + $generic_commande->total_tva = $obj->total_tva; + $generic_commande->total_ttc = $obj->total_ttc; + $generic_commande->lines=array(); + $generic_commande->getLinesArray(); + + print ''; + print ''; + + // Show shippable Icon (create subloop, so may be slow) + if ($conf->stock->enabled) { - $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++) + $langs->load("stocks"); + if (($obj->fk_statut > 0) && ($obj->fk_statut < 3)) { - if ($generic_commande->lines[$lig]->product_type == 0 && $generic_commande->lines[$lig]->fk_product > 0) // If line is a product and not a service + $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++) { - $nbprod++; // order contains real products - $generic_product->id = $generic_commande->lines[$lig]->fk_product; - if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) { - $generic_product->load_stock(); - $generic_product->load_virtual_stock(); - $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel; - $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique; - } else { - $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel']; - $generic_product->stock_theorique = $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique; - } - - if (empty($conf->global->SHIPPABLE_ORDER_ICON_IN_LIST)) // Default code is when this option is not set, setting it create strange result + if ($generic_commande->lines[$lig]->product_type == 0 && $generic_commande->lines[$lig]->fk_product > 0) // If line is a product and not a service { - $text_info .= $generic_commande->lines[$lig]->qty.' X '.$generic_commande->lines[$lig]->ref.' '.dol_trunc($generic_commande->lines[$lig]->product_label, 25); - $text_info .= ' - '.$langs->trans("Stock").': '.$generic_product->stock_reel; - $text_info .= ' - '.$langs->trans("VirtualStock").': '.$generic_product->stock_theorique; - $text_info .= '
    '; + $nbprod++; // order contains real products + $generic_product->id = $generic_commande->lines[$lig]->fk_product; + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) { + $generic_product->load_stock(); + $generic_product->load_virtual_stock(); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel; + $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique; + } else { + $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel']; + $generic_product->stock_theorique = $productstat_cachevirtual[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_theorique; + } - if ($generic_commande->lines[$lig]->qty > $generic_product->stock_reel) + if (empty($conf->global->SHIPPABLE_ORDER_ICON_IN_LIST)) // Default code is when this option is not set, setting it create strange result { - $notshippable++; - } - } - else { // Detailed code, looks bugged - // stock order and stock order_supplier - $stock_order=0; - $stock_order_supplier=0; - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) // What about other options ? - { - if (! empty($conf->commande->enabled)) + $text_info .= $generic_commande->lines[$lig]->qty.' X '.$generic_commande->lines[$lig]->ref.' '.dol_trunc($generic_commande->lines[$lig]->product_label, 25); + $text_info .= ' - '.$langs->trans("Stock").': '.$generic_product->stock_reel; + $text_info .= ' - '.$langs->trans("VirtualStock").': '.$generic_product->stock_theorique; + $text_info .= '
    '; + + if ($generic_commande->lines[$lig]->qty > $generic_product->stock_reel) { - if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) { - $generic_product->load_stats_commande(0,'1,2'); - $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty']; - } else { - $generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer']; - } - $stock_order=$generic_product->stats_commande['qty']; - } - if (! empty($conf->fournisseur->enabled)) - { - if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) { - $generic_product->load_stats_commande_fournisseur(0,'3'); - $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty']; - } else { - $generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier']; - } - $stock_order_supplier=$generic_product->stats_commande_fournisseur['qty']; + $notshippable++; } } - $text_info .= $generic_commande->lines[$lig]->qty.' X '.$generic_commande->lines[$lig]->ref.' '.dol_trunc($generic_commande->lines[$lig]->product_label, 25); - $text_stock_reel = $generic_product->stock_reel.'/'.$stock_order; - if ($stock_order > $generic_product->stock_reel && ! ($generic_product->stock_reel < $generic_commande->lines[$lig]->qty)) { - $warning++; - $text_warning.=''.$langs->trans('Available').' : '.$text_stock_reel.''; - } - if ($generic_product->stock_reel < $generic_commande->lines[$lig]->qty) { - $notshippable++; - $text_info.=''.$langs->trans('Available').' : '.$text_stock_reel.''; - } else { - $text_info.=''.$langs->trans('Available').' : '.$text_stock_reel.''; - } - if (! empty($conf->fournisseur->enabled)) { - $text_info.= ' '.$langs->trans('SupplierOrder').' : '.$stock_order_supplier.'
    '; - } else { - $text_info.= '
    '; + else { // Detailed code, looks bugged + // stock order and stock order_supplier + $stock_order=0; + $stock_order_supplier=0; + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) // What about other options ? + { + if (! empty($conf->commande->enabled)) + { + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) { + $generic_product->load_stats_commande(0,'1,2'); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty']; + } else { + $generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer']; + } + $stock_order=$generic_product->stats_commande['qty']; + } + if (! empty($conf->fournisseur->enabled)) + { + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) { + $generic_product->load_stats_commande_fournisseur(0,'3'); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty']; + } else { + $generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier']; + } + $stock_order_supplier=$generic_product->stats_commande_fournisseur['qty']; + } + } + $text_info .= $generic_commande->lines[$lig]->qty.' X '.$generic_commande->lines[$lig]->ref.' '.dol_trunc($generic_commande->lines[$lig]->product_label, 25); + $text_stock_reel = $generic_product->stock_reel.'/'.$stock_order; + if ($stock_order > $generic_product->stock_reel && ! ($generic_product->stock_reel < $generic_commande->lines[$lig]->qty)) { + $warning++; + $text_warning.=''.$langs->trans('Available').' : '.$text_stock_reel.''; + } + if ($generic_product->stock_reel < $generic_commande->lines[$lig]->qty) { + $notshippable++; + $text_info.=''.$langs->trans('Available').' : '.$text_stock_reel.''; + } else { + $text_info.=''.$langs->trans('Available').' : '.$text_stock_reel.''; + } + if (! empty($conf->fournisseur->enabled)) { + $text_info.= ' '.$langs->trans('SupplierOrder').' : '.$stock_order_supplier.'
    '; + } else { + $text_info.= '
    '; + } } } } + if ($notshippable==0) { + $text_icon = img_picto('', 'object_sending'); + $text_info = $langs->trans('Shippable').'
    '.$text_info; + } else { + $text_icon = img_picto('', 'error'); + $text_info = $langs->trans('NonShippable').'
    '.$text_info; + } } - if ($notshippable==0) { - $text_icon = img_picto('', 'object_sending'); - $text_info = $langs->trans('Shippable').'
    '.$text_info; - } else { - $text_icon = img_picto('', 'error'); - $text_info = $langs->trans('NonShippable').'
    '.$text_info; + + print ''; } - - print ''; + + // Warning late icon + print ''; + + print ''; + print '
    '; + print $generic_commande->getNomUrl(1,($viewstatut != 2?0:$obj->fk_statut)); + print ''; + if ($nbprod) + { + print $form->textwithtooltip('',$text_info,2,1,$text_icon,'',2); } + if ($warning) { + print $form->textwithtooltip('', $langs->trans('NotEnoughForAllOrders').'
    '.$text_warning, 2, 1, img_picto('', 'error'),'',2); + } + print '
    '; - if ($nbprod) - { - print $form->textwithtooltip('',$text_info,2,1,$text_icon,'',2); - } - if ($warning) { - print $form->textwithtooltip('', $langs->trans('NotEnoughForAllOrders').'
    '.$text_warning, 2, 1, img_picto('', 'error'),'',2); - } - print '
    '; + if ($generic_commande->hasDelay()) { + print img_picto($langs->trans("Late").' : '.$generic_commande->showDelay(), "warning"); + } + if(!empty($obj->note_private)) + { + print ' '; + print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; + print ''; + } + print ''; + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; + print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir); + print '
    '; + + print '
    '; - if ($generic_commande->hasDelay()) { - print img_picto($langs->trans("Late").' : '.$generic_commande->showDelay(), "warning"); - } - if(!empty($objp->note_private)) - { - print ' '; - print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; - print ''; - } - print ''; - $filename=dol_sanitizeFileName($objp->ref); - $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($objp->ref); - $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->rowid; - print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir); - print '
    '; - - print '
    '.$objp->ref_client.''; - print $companystatic->getNomUrl(1,'customer'); - - // If module invoices enabled and user with invoice creation permissions - if (! empty($conf->facture->enabled) && ! empty($conf->global->ORDER_BILLING_ALL_CUSTOMER)) + if (! empty($arrayfields['c.ref_client']['checked'])) { - if ($user->rights->facture->creer) - { - if (($objp->fk_statut > 0 && $objp->fk_statut < 3) || ($objp->fk_statut == 3 && $objp->billed == 0)) - { - print ' '; - print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->name, 'object_bill', 'hideonsmartphone').''; - } - } + print ''.$obj->ref_client.''; - print dol_print_date($db->jdate($objp->date_commande), 'day'); - print ''; - print dol_print_date($db->jdate($objp->date_delivery), 'day'); - print ''.price($objp->total_ht).''.$generic_commande->LibStatut($objp->fk_statut, $objp->billed, 5, 1).''.yn($objp->billed).''; + print $companystatic->getNomUrl(1,'customer'); + + // If module invoices enabled and user with invoice creation permissions + if (! empty($conf->facture->enabled) && ! empty($conf->global->ORDER_BILLING_ALL_CUSTOMER)) + { + if ($user->rights->facture->creer) + { + if (($obj->fk_statut > 0 && $obj->fk_statut < 3) || ($obj->fk_statut == 3 && $obj->billed == 0)) + { + print ' '; + print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->name, 'object_bill', 'hideonsmartphone').''; + } + } + } + print ''; + print $obj->town; + print ''; + print $obj->zip; + print '".$obj->state_name."'; + $tmparray=getCountry($obj->fk_pays,'all'); + print $tmparray['label']; + print ''; + if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1); + print $typenArray[$obj->typent_code]; + print ''; + print dol_print_date($db->jdate($obj->date_commande), 'day'); + print ''; + print dol_print_date($db->jdate($obj->date_delivery), 'day'); + print ''.price($obj->total_ht)."'.price($obj->total_vat)."'.price($obj->total_ttc)."'; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print ''.$generic_commande->LibStatut($obj->fk_statut, $obj->billed, 5, 1).''.yn($obj->billed).'
    '.$langs->trans('TotalHT').''.price($total).'
    '.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.price($totalarray['totalht']).''.price($totalarray['totalvat']).''.price($totalarray['totalttc']).'
    '; print ''."\n"; print '
    '.img_help(1,'').' '.$langs->trans("ToBillSeveralOrderSelectCustomer", $langs->transnoentitiesnoconv("CreateInvoiceForThisCustomer")).'
    '; - - $db->free($resql); } else { diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index f6c9e79660a..fc6f5cf2186 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -43,6 +43,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; if (! empty($conf->projet->enabled)) { @@ -126,7 +127,7 @@ $hookmanager->initHooks(array('invoicelist')); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('invoice'); +$extralabels = $extrafields->fetch_name_optionals_label('facture'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -155,6 +156,7 @@ $arrayfields=array( 'f.total_ht'=>array('label'=>$langs->trans("AmountHT"), 'checked'=>1), '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), '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), @@ -211,6 +213,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $day_lim=''; $year_lim=''; $month_lim=''; + $search_array_options=array(); } if (empty($reshook)) @@ -635,10 +638,13 @@ $formcompany=new FormCompany($db); $sql = 'SELECT'; if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT'; -$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.total as total_ht, f.tva as total_tva, f.total_ttc,'; +$sql.= ' f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.total as total_ht, f.tva as total_vat, f.total_ttc,'; $sql.= ' f.datef as df, f.date_lim_reglement as datelimite,'; $sql.= ' f.paye as paye, f.fk_statut,'; -$sql.= ' s.nom as name, s.rowid as socid, s.code_client, s.client '; +$sql.= ' f.datec as date_creation, f.tms as date_update,'; +$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, '; +$sql.= " typent.code as typent_code,"; +$sql.= " state.code_departement as state_code, state.nom as state_name"; if (! $sall) $sql.= ', SUM(pf.amount) as am'; // To be able to sort on status // Add fields from extrafields foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); @@ -722,22 +728,6 @@ if ($search_user > 0) { $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='facture' AND tc.source='internal' AND ec.element_id = f.rowid AND ec.fk_socpeople = ".$search_user; } -if (! $sall) -{ - $sql.= ' GROUP BY f.rowid, f.facnumber, ref_client, f.type, f.note_private, f.note_public, f.increment, f.total, f.tva, f.total_ttc,'; - $sql.= ' f.datef, f.date_lim_reglement,'; - $sql.= ' f.paye, f.fk_statut,'; - $sql.= ' s.nom, s.rowid, s.code_client, s.client'; -} -else -{ - $sql .= natural_search(array_keys($fieldstosearchall), $sall); -} -$sql.= ' ORDER BY '; -$listfield=explode(',',$sortfield); -foreach ($listfield as $key => $value) $sql.= $listfield[$key].' '.$sortorder.','; -$sql.= ' f.rowid DESC '; - // Add where from extra fields foreach ($search_array_options as $key => $val) { @@ -756,6 +746,24 @@ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; +if (! $sall) +{ + $sql.= ' GROUP BY f.rowid, f.facnumber, ref_client, f.type, f.note_private, f.note_public, f.increment, f.total, f.tva, f.total_ttc,'; + $sql.= ' f.datef, f.date_lim_reglement,'; + $sql.= ' f.paye, f.fk_statut,'; + $sql.= ' f.datec, f.tms,'; + $sql.= ' s.rowid, s.nom, s.town, s.zip, s.fk_pays, s.code_client, s.client'; +} +else +{ + $sql .= natural_search(array_keys($fieldstosearchall), $sall); +} + +$sql.= ' ORDER BY '; +$listfield=explode(',',$sortfield); +foreach ($listfield as $key => $value) $sql.= $listfield[$key].' '.$sortorder.','; +$sql.= ' f.rowid DESC '; + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -1100,7 +1108,12 @@ if ($resql) print ''; print '
    '; + print ''; - print $form->selectyesno('billed', $billed, 1, 0, 1); - print ''; + print ''; $searchpitco=$form->showFilterAndCheckAddButtons(1, 'checkforselect', 1); print $searchpitco; print '
    '; - - $facturestatic->id=$objp->facid; - $facturestatic->ref=$objp->facnumber; - $facturestatic->type=$objp->type; - $facturestatic->statut=$objp->fk_statut; - $facturestatic->date_lim_reglement=$db->jdate($objp->datelimite); - $notetoshow=dol_string_nohtmltag(($user->societe_id>0?$objp->note_public:$objp->note_private),1); - $paiement = $facturestatic->getSommePaiement(); - - print ''; - - print ''; - - print ''; - print ''; - print '
    '; - print $facturestatic->getNomUrl(1,'',200,0,$notetoshow); - print $objp->increment; - print ''; - if (! empty($objp->note_private)) - { - print ' '; - print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; - print ''; - } - $filename=dol_sanitizeFileName($objp->facnumber); - $filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($objp->facnumber); - $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->facid; - print $formfile->getDocumentsLink($facturestatic->element, $filename, $filedir); - print '
    '; - - print "
    '; + + $facturestatic->id=$obj->facid; + $facturestatic->ref=$obj->facnumber; + $facturestatic->type=$obj->type; + $facturestatic->statut=$obj->fk_statut; + $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(); + + print ''; + + print ''; + + print ''; + print ''; + print '
    '; + print $facturestatic->getNomUrl(1,'',200,0,$notetoshow); + print $obj->increment; + print ''; + if (! empty($obj->note_private)) + { + print ' '; + print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; + print ''; + } + $filename=dol_sanitizeFileName($obj->facnumber); + $filedir=$conf->facture->dir_output . '/' . dol_sanitizeFileName($obj->facnumber); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->facid; + print $formfile->getDocumentsLink($facturestatic->element, $filename, $filedir); + print '
    '; + + print "
    '; - print $objp->ref_client; - print ''; + print $obj->ref_client; + print ''; - print dol_print_date($db->jdate($objp->df),'day'); - print ''; + print dol_print_date($db->jdate($obj->df),'day'); + print ''.dol_print_date($datelimit,'day'); - if ($facturestatic->hasDelay()) - { - print img_warning($langs->trans('Late')); - } - print ''; - $thirdparty=new Societe($db); - $thirdparty->id=$objp->socid; - $thirdparty->name=$objp->name; - $thirdparty->client=$objp->client; - $thirdparty->code_client=$objp->code_client; - print $thirdparty->getNomUrl(1,'customer'); - print ''.dol_print_date($datelimit,'day'); + if ($facturestatic->hasDelay()) + { + print img_warning($langs->trans('Late')); + } + print ''; + $thirdparty=new Societe($db); + $thirdparty->id=$obj->socid; + $thirdparty->name=$obj->name; + $thirdparty->client=$obj->client; + $thirdparty->code_client=$obj->code_client; + print $thirdparty->getNomUrl(1,'customer'); + print ''; + print $obj->town; + print ''; + print $obj->zip; + print '".$obj->state_name."'; + $tmparray=getCountry($obj->fk_pays,'all'); + print $tmparray['label']; + print ''; + if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1); + print $typenArray[$obj->typent_code]; + print ''; - $form->form_modes_reglement($_SERVER['PHP_SELF'], $objp->fk_mode_reglement, 'none', '', -1); - print ''; + $form->form_modes_reglement($_SERVER['PHP_SELF'], $obj->fk_mode_reglement, 'none', '', -1); + print ''.price($obj->total_ht)."'.price($obj->total_vat)."'.price($obj->total_ttc)."'.(! empty($paiement)?price($paiement,0,$langs):' ').''.price($objp->total_ht,0,$langs).''.price($objp->total_tva,0,$langs).''.price($objp->total_ttc,0,$langs).''.(! empty($paiement)?price($paiement,0,$langs):' ').''; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print ''; - print $facturestatic->LibStatut($objp->paye,$objp->fk_statut,5,$paiement,$objp->type); - print "'; + print $facturestatic->LibStatut($obj->paye,$obj->fk_statut,5,$paiement,$obj->type); + print "'; $selected=0; - if (in_array($objp->facid, $arrayofselected)) $selected=1; - print ''; - print '
    '.$langs->trans('Total').''.price($total_ht,0,$langs).''.price($total_tva,0,$langs).''.price($total_ttc,0,$langs).''.price($totalrecu,0,$langs).'
    '.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.price($totalarray['totalht']).''.price($totalarray['totalvat']).''.price($totalarray['totalttc']).''.price($totalarray['totalam']).'
    \n"; - print "\n"; $db->free($resql); + + $parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print "
    \n"; + + print "\n"; if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) { diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 25fe9855ee8..50eda73b95a 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -26,6 +26,8 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $langs->load("sendings"); $langs->load("deliveries"); @@ -69,7 +71,7 @@ $hookmanager->initHooks(array('shipmentlist')); $extrafields = new ExtraFields($db); // fetch optionals attributes and labels -$extralabels = $extrafields->fetch_name_optionals_label('shipment'); +$extralabels = $extrafields->fetch_name_optionals_label('expedition'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // List of fields to search into when doing a "search in all" @@ -169,27 +171,29 @@ $formcompany=new FormCompany($db); $helpurl='EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones'; llxHeader('',$langs->trans('ListOfSendings'),$helpurl); -$sql = "SELECT e.rowid, e.ref, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut"; -$sql.= ", s.nom as socname, s.rowid as socid"; +$sql = "SELECT e.rowid, e.ref, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut,"; +$sql.= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, '; +$sql.= " typent.code as typent_code,"; +$sql.= " state.code_departement as state_code, state.nom as state_name,"; +$sql.= ' e.date_creation as date_creation, e.tms as date_update'; // Add fields from extrafields foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; -$sql.= " FROM (".MAIN_DB_PREFIX."expedition as e"; +$sql.= " FROM ".MAIN_DB_PREFIX."expedition as e"; if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."expedition_extrafields as ef on (e.rowid = ef.fk_object)"; -if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all -{ - $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; -} -$sql.= ")"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = e.fk_soc"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."element_element as ee ON e.rowid = ee.fk_source AND ee.sourcetype = 'shipping' AND ee.targettype = 'delivery'"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."livraison as l ON l.rowid = ee.fk_target"; +if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all +{ + $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +} $sql.= " WHERE e.entity IN (".getEntity('expedition', 1).")"; if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all { @@ -203,6 +207,11 @@ if ($socid) if ($viewstatut <> '' && $viewstatut >= 0) { $sql.= " AND e.fk_statut = ".$viewstatut; } +if ($search_town) $sql.= natural_search('s.town', $search_town); +if ($search_zip) $sql.= natural_search("s.zip",$search_zip); +if ($search_state) $sql.= natural_search("state.nom",$search_state); +if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; +if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; if ($search_ref_exp) $sql .= natural_search('e.ref', $search_ref_exp); if ($search_ref_liv) $sql .= natural_search('l.ref', $search_ref_liv); if ($search_company) $sql .= natural_search('s.nom', $search_company); @@ -321,7 +330,7 @@ if ($resql) $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - if (! empty($arrayfields['e.datec']['checked'])) print_liste_field_titre($arrayfields['e.datec']['label'],$_SERVER["PHP_SELF"],"e.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['e.datec']['checked'])) print_liste_field_titre($arrayfields['e.datec']['label'],$_SERVER["PHP_SELF"],"e.date_creation","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); if (! empty($arrayfields['e.tms']['checked'])) print_liste_field_titre($arrayfields['e.tms']['label'],$_SERVER["PHP_SELF"],"e.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); if (! empty($arrayfields['e.fk_statut']['checked'])) print_liste_field_titre($arrayfields['e.fk_statut']['label'],$_SERVER["PHP_SELF"],"e.fk_statut","",$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['l.fk_statut']['checked'])) print_liste_field_titre($arrayfields['l.fk_statut']['label'], $_SERVER["PHP_SELF"],"l.fk_statut","",$param,'align="right"',$sortfield,$sortorder); @@ -376,7 +385,7 @@ if ($resql) } if (! empty($arrayfields['l.ref']['checked'])) { - // Delivery order + // Delivery ref print ''; print ''; @@ -433,66 +442,171 @@ if ($resql) print ''; } // Action column - print ''; + print ''; $searchpitco=$form->showFilterAndCheckAddButtons(0); print $searchpitco; print ''; print "\n"; - $var=True; - + $i=0; + $var=true; + $totalarray=array(); while ($i < min($num,$limit)) { - $objp = $db->fetch_object($resql); + $obj = $db->fetch_object($resql); $var=!$var; print ""; + $shipment->id=$obj->rowid; + $shipment->ref=$obj->ref; + // Ref - print ""; - $shipment->id=$objp->rowid; - $shipment->ref=$objp->ref; - print $shipment->getNomUrl(1); - print "\n"; - - // Third party - print ''; - $companystatic->id=$objp->socid; - $companystatic->ref=$objp->socname; - $companystatic->name=$objp->socname; - print $companystatic->getNomUrl(1); - print ''; - - // Date delivery planed - print ""; - print dol_print_date($db->jdate($objp->date_livraison),"day"); - /*$now = time(); - if ( ($now - $db->jdate($objp->date_expedition)) > $conf->warnings->lim && $objp->statutid == 1 ) + if (! empty($arrayfields['e.ref']['checked'])) { - }*/ - print "\n"; - - if ($conf->livraison_bon->enabled) + print ""; + print $shipment->getNomUrl(1); + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + + $companystatic->id=$obj->socid; + $companystatic->ref=$obj->name; + $companystatic->name=$obj->name; + + // Third party + if (! empty($arrayfields['s.nom']['checked'])) + { + print ''; + print $companystatic->getNomUrl(1); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Town + if (! empty($arrayfields['s.town']['checked'])) + { + print ''; + print $obj->town; + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Zip + if (! empty($arrayfields['s.zip']['checked'])) + { + print ''; + print $obj->zip; + print ''; + if (! $i) $totalarray['nbfield']++; + } + // State + if (! empty($arrayfields['state.nom']['checked'])) + { + print "".$obj->state_name."\n"; + if (! $i) $totalarray['nbfield']++; + } + // Country + if (! empty($arrayfields['country.code_iso']['checked'])) + { + print ''; + $tmparray=getCountry($obj->fk_pays,'all'); + print $tmparray['label']; + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Type ent + if (! empty($arrayfields['typent.code']['checked'])) + { + print ''; + if (count($typenArray)==0) $typenArray = $formcompany->typent_array(1); + print $typenArray[$obj->typent_code]; + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Date delivery planed + if (! empty($arrayfields['e.date_delivery']['checked'])) + { + print ''; + print dol_print_date($db->jdate($obj->date_livraison),"day"); + /*$now = time(); + if ( ($now - $db->jdate($obj->date_expedition)) > $conf->warnings->lim && $obj->statutid == 1 ) + { + }*/ + print "\n"; + } + + if (! empty($arrayfields['l.ref']['checked']) || ! empty($arrayfields['l.date_delivery']['checked'])) { $shipment->fetchObjectLinked($shipment->id,$shipment->element); $receiving=''; if (count($shipment->linkedObjects['delivery']) > 0) $receiving=reset($shipment->linkedObjects['delivery']); - // Ref - print ''; - print !empty($receiving) ? $receiving->getNomUrl($db) : ''; - print ''; - // Date received - print ''; - print dol_print_date($db->jdate($objp->date_reception),"day"); - print ''."\n"; + if (! empty($arrayfields['l.ref']['checked'])) + { + // Ref + print ''; + print !empty($receiving) ? $receiving->getNomUrl($db) : ''; + print ''; + } + + if (! empty($arrayfields['l.date_delivery']['checked'])) + { + // Date received + print ''; + print dol_print_date($db->jdate($obj->date_reception),"day"); + print ''."\n"; + } } - print ''.$expedition->LibStatut($objp->fk_statut,5).''; - + // Extra fields + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) + { + foreach($extrafields->attribute_label as $key => $val) + { + if (! empty($arrayfields["ef.".$key]['checked'])) + { + print 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + if (! $i) $totalarray['nbfield']++; + } + } + } + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['e.datec']['checked'])) + { + print ''; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date modification + if (! empty($arrayfields['e.tms']['checked'])) + { + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Status + if (! empty($arrayfields['e.fk_statut']['checked'])) + { + print ''.$shipment->LibStatut($obj->fk_statut,5).''; + if (! $i) $totalarray['nbfield']++; + } + // Action column print ''; - + if (! $i) $totalarray['nbfield']++; + print "\n"; $i++; diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index 9bf50756ddb..d4dfcbd81b8 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -31,3 +31,4 @@ Recipient=Recipient ErrorStockIsNotEnough=There's not enough stock Shippable=Shippable NonShippable=Not Shippable +ShowReceiving=Show delivery receipt \ No newline at end of file diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index d7105badd32..a402dd54944 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -8,6 +8,7 @@ Orders=Orders OrderLine=Order line OrderFollow=Follow up OrderDate=Order date +OrderDateShort=Order date OrderToProcess=Order to process NewOrder=New order ToOrder=Make order From 7a48ceb635a8b5680a81089035744030b83d07f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 02:53:10 +0200 Subject: [PATCH 107/380] Uniformize code for mass actions --- htdocs/comm/propal/list.php | 1 + htdocs/commande/list.php | 2 ++ htdocs/compta/facture/list.php | 16 ++++++---------- htdocs/expedition/list.php | 2 ++ htdocs/langs/en_US/exports.lang | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 3e59a76d7d0..ac22565ff15 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -103,6 +103,7 @@ if (! empty($socid)) } $result = restrictedArea($user, $module, $objectid, $dbtable); +$diroutputmassaction=$conf->propal->dir_output . '/temp/massgeneration/'.$user->id; // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('propallist')); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 1ed03c2f614..7aa1dc481e9 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -76,6 +76,8 @@ $id = (GETPOST('orderid')?GETPOST('orderid'):GETPOST('id','int')); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'commande', $id,''); +$diroutputmassaction=$conf->commande->dir_output . '/temp/massgeneration/'.$user->id; + $limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index fc6f5cf2186..debf3edce0c 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -45,10 +45,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -if (! empty($conf->projet->enabled)) -{ - require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; -} +if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load('bills'); $langs->load('companies'); @@ -115,8 +112,7 @@ $fieldid = (! empty($ref)?'facnumber':'rowid'); if (! empty($user->societe_id)) $socid=$user->societe_id; $result = restrictedArea($user, 'facture', $id,'','','fk_soc',$fieldid); -$diroutputpdf=$conf->facture->dir_output . '/unpaid/temp'; -if (! $user->rights->societe->client->voir || $socid) $diroutputpdf.='/private/'.$user->id; // If user has no permission to see all, output dir is specific to user +$diroutputmassaction=$conf->facture->dir_output . '/temp/massgeneration/'.$user->id; $object=new Facture($db); @@ -577,7 +573,7 @@ if (empty($reshook)) } // Create output dir if not exists - dol_mkdir($diroutputpdf); + dol_mkdir($diroutputmassaction); // Save merged file $filename=strtolower(dol_sanitizeFileName($langs->transnoentities("Invoices"))); @@ -591,7 +587,7 @@ if (empty($reshook)) if ($pagecount) { $now=dol_now(); - $file=$diroutputpdf.'/'.$filename.'_'.dol_print_date($now,'dayhourlog').'.pdf'; + $file=$diroutputmassaction.'/'.$filename.'_'.dol_print_date($now,'dayhourlog').'.pdf'; $pdf->Output($file,'F'); if (! empty($conf->global->MAIN_UMASK)) @chmod($file, octdec($conf->global->MAIN_UMASK)); @@ -611,7 +607,7 @@ if (empty($reshook)) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $langs->load("other"); - $upload_dir = $diroutputpdf; + $upload_dir = $diroutputmassaction; $file = $upload_dir . '/' . GETPOST('file'); $ret=dol_delete_file($file); if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); @@ -1446,7 +1442,7 @@ if ($resql) $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; $urlsource.=str_replace('&','&',$param); - $filedir=$diroutputpdf; + $filedir=$diroutputmassaction; $genallowed=$user->rights->facture->lire; $delallowed=$user->rights->facture->lire; diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 50eda73b95a..32481d0bfdd 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -39,6 +39,8 @@ $expeditionid = GETPOST('id','int'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'expedition',$expeditionid,''); +$diroutputmassaction=$conf->expedition->dir_output . '/temp/massgeneration/'.$user->id; + $search_ref_exp = GETPOST("search_ref_exp"); $search_ref_liv = GETPOST('search_ref_liv'); $search_company = GETPOST("search_company"); diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index d1a952eccf2..b51d70d5fbb 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -45,7 +45,7 @@ FormatedExportDesc2=First step is to choose a predefined dataset, then to choose FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. Sheet=Sheet NoImportableData=No importable data (no module with definitions to allow data imports) -FileSuccessfullyBuilt=Export file generated +FileSuccessfullyBuilt=File generated SQLUsedForExport=SQL Request used to build export file LineId=Id of line LineLabel=Label of line From 104e34fe22e71844126abc05997db80b10e94d8e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 03:40:23 +0200 Subject: [PATCH 108/380] Fix css and missing link "go to list" --- htdocs/compta/bank/card.php | 30 +++++++++++++------------- htdocs/compta/bank/document.php | 6 +++--- htdocs/compta/facture/list.php | 8 +++++++ htdocs/compta/paiement/cheque/list.php | 1 - 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index c155531c286..f4962bd2cf1 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -276,7 +276,7 @@ if ($action == 'create') print ''; // Ref - print ''; + print ''; print ''; // Label @@ -360,7 +360,7 @@ if ($action == 'create') print '
    '.$langs->trans("Ref").'
    '.$langs->trans("Ref").'ref).'" maxlength="12">
    '; // Sold - print ''; + print ''; print ''; print ''; @@ -382,7 +382,7 @@ if ($action == 'create') print '
    '.$langs->trans("InitialBankBalance").'
    '.$langs->trans("InitialBankBalance").'solde)).'">
    '.$langs->trans("Date").'
    '; // If bank account - print ''; + print ''; print ''; print ''; @@ -482,14 +482,14 @@ if ($action == 'create') { if (! empty($conf->accounting->enabled)) { - print ''; + print ''; print ''; } else { - print ''; + print ''; print ''; } } @@ -497,14 +497,14 @@ if ($action == 'create') { if (! empty($conf->accounting->enabled)) { - print ''; + print ''; print ''; } else { - print ''; + print ''; print ''; } } @@ -566,7 +566,7 @@ else $linkback = ''.$langs->trans("BackToList").''; // Ref - print ''; + print ''; print ''; @@ -646,7 +646,7 @@ else { print '
    '.$langs->trans("BankName").'
    '.$langs->trans("BankName").'
    '.$langs->trans("AccountancyCode").'
    '.$langs->trans("AccountancyCode").''; print $formaccountancy->select_account($account->account_number, 'account_number', 1, '', 1, 1); print '
    '.$langs->trans("AccountancyCode").'
    '.$langs->trans("AccountancyCode").'account_number).'">
    '.$langs->trans("AccountancyCode").'
    '.$langs->trans("AccountancyCode").''; print $formaccountancy->select_account($account->account_number, 'account_number', 1, '', 1, 1); print '
    '.$langs->trans("AccountancyCode").'
    '.$langs->trans("AccountancyCode").'account_number).'">
    '.$langs->trans("Ref").'
    '.$langs->trans("Ref").''; print $form->showrefnav($account, 'ref', $linkback, 1, 'ref'); print '
    '; - print ''; + print ''; print ''; // Show fields of bank account @@ -754,7 +754,7 @@ else print '
    '.$langs->trans("BankName").'
    '.$langs->trans("BankName").''.$account->bank.'
    '; // Accountancy code - print ''; + print ''; print ''; // Accountancy journal @@ -831,7 +831,7 @@ else print '
    '.$langs->trans("AccountancyCode").'
    '.$langs->trans("AccountancyCode").''.length_accountg($account->account_number).'
    '; // Ref - print ''; + print ''; print ''; // Label @@ -932,7 +932,7 @@ else print '
    '.$langs->trans("Ref").'
    '.$langs->trans("Ref").'ref).'">
    '; // If bank account - print ''; + print ''; print ''; print ''; @@ -1030,14 +1030,14 @@ else print '
    '.$langs->trans("BankName").'
    '.$langs->trans("BankName").'
    '; // Accountancy code - $tdextra = ''; + $tdextra = ' class="titlefieldcreate"'; if (!empty($conf->global->MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED)) { - $tdextra = ' class="fieldrequired"'; + $tdextra = ' class="fieldrequired titlefieldcreate"'; } print ''.$langs->trans("AccountancyCode").''; - print ' + + + + + +
    '; + print ''; if (!empty($conf->accounting->enabled)) { print $formaccountancy->select_account($account->account_number, 'account_number', 1, '', 1, 1); } else { diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index 3b6957df40f..4964f517e46 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -172,14 +172,14 @@ if ($id > 0 || !empty($ref)) { $totalsize+=$file['size']; } - + $linkback = ''.$langs->trans("BackToList").''; + print ''; - // Ref // Ref print ''; print ''; // Label diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index debf3edce0c..64813c56f1d 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -687,7 +687,14 @@ if ($filtre) if ($search_ref) $sql .= natural_search('f.facnumber', $search_ref); if ($search_refcustomer) $sql .= natural_search('f.ref_client', $search_refcustomer); if ($search_societe) $sql .= natural_search('s.nom', $search_societe); +if ($search_town) $sql.= natural_search('s.town', $search_town); +if ($search_zip) $sql.= natural_search("s.zip",$search_zip); +if ($search_state) $sql.= natural_search("state.nom",$search_state); +if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')'; +if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')'; +if ($search_company) $sql .= natural_search('s.nom', $search_company); if ($search_montant_ht != '') $sql.= natural_search('f.total', $search_montant_ht, 1); +if ($search_montant_vat != '') $sql.= natural_search('f.total', $search_montant_vat, 1); if ($search_montant_ttc != '') $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1); if ($search_status != '' && $search_status >= 0) $sql.= " AND f.fk_statut = ".$db->escape($search_status); if ($search_paymentmode > 0) $sql .= " AND f.fk_mode_reglement = ".$search_paymentmode.""; @@ -798,6 +805,7 @@ if ($resql) if ($search_user > 0) $param.='&search_user=' .$search_user; if ($search_product_category > 0) $param.='$search_product_category=' .$search_product_category; if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht; + if ($search_montant_vat != '') $param.='&search_montant_vat='.$search_montant_vat; if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc; if ($search_status != '') $param.='&search_status='.$search_status; if ($search_paymentmode > 0) $param.='search_paymentmode='.$search_paymentmode; diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index 372f9e2340a..1493ba1b99a 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -213,7 +213,6 @@ if ($resql) } else { - $var=!$var; print ""; print '"; print ''; From cefc373a5fea97f10426f4436f9f5bdfe28dd4cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 11:42:02 +0200 Subject: [PATCH 109/380] Missing translations --- htdocs/langs/en_US/agenda.lang | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 7cf5cb256f4..29152e95a4c 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -64,6 +64,9 @@ SupplierInvoiceSentByEMail=Supplier invoice %s sent by EMail ShippingSentByEMail=Shipment %s sent by EMail ShippingValidated= Shipment %s validated InterventionSentByEMail=Intervention %s sent by EMail +ProposalDeleted=Proposal deleted +OrderDeleted=Order deleted +InvoiceDeleted=Invoice deleted NewCompanyToDolibarr= Third party created DateActionPlannedStart= Planned start date DateActionPlannedEnd= Planned end date From 1b04eabf1facf33b7ccb4ec219cd942143685fb8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 14:28:49 +0200 Subject: [PATCH 110/380] Merge log with events tabs --- composer.json | 6 -- htdocs/admin/security_file.php | 5 +- htdocs/commande/card.php | 4 +- htdocs/commande/contact.php | 2 +- htdocs/core/lib/company.lib.php | 21 ++-- htdocs/core/lib/functions2.lib.php | 128 ++++++++++++++++++------ htdocs/core/modules/modAgenda.class.php | 2 +- htdocs/expedition/shipment.php | 2 +- htdocs/langs/en_US/admin.lang | 5 +- htdocs/societe/agenda.php | 29 ++++-- htdocs/societe/info.php | 106 -------------------- 11 files changed, 141 insertions(+), 169 deletions(-) delete mode 100644 htdocs/societe/info.php diff --git a/composer.json b/composer.json index f4ea5de0c73..ab7d225039b 100644 --- a/composer.json +++ b/composer.json @@ -23,12 +23,6 @@ "restler/framework": "^3.0", "tecnickcom/tcpdf": "6.2.12" }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "^0", - "jakub-onderka/php-console-highlighter": "^0", - "phpunit/phpunit": "^4", - "squizlabs/php_codesniffer": "^2" - }, "suggest": { "ext-mysqlnd": "To use with MySQL or MariaDB", "ext-mysqli": "To use with MySQL or MariaDB", diff --git a/htdocs/admin/security_file.php b/htdocs/admin/security_file.php index 1213a9b2238..d3c421e31ec 100644 --- a/htdocs/admin/security_file.php +++ b/htdocs/admin/security_file.php @@ -114,9 +114,8 @@ llxHeader('',$langs->trans("Files"),$wikihelp); print load_fiche_titre($langs->trans("SecuritySetup"),'','title_setup'); -//print $langs->trans("FilesDesc")."
    \n"; -//print "
    \n"; - +print $langs->trans("SecurityFilesDesc")."
    \n"; +print "
    \n"; print '
    '; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 94b6e2ce2f2..f5ba58bbfaa 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1953,7 +1953,7 @@ if ($action == 'create' && $user->rights->commande->creer) $linkback = '' . $langs->trans("BackToList") . ''; // Ref - print '
    '; + print ''; print ''; @@ -1993,7 +1993,7 @@ if ($action == 'create' && $user->rights->commande->creer) if ($action == 'editthirdparty') { $form->form_thirdparty($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, 'socid','client>0'); } else { - print '  ' . $soc->getNomUrl(1, 'compta'); + print $soc->getNomUrl(1, 'compta'); } print ''; diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index c72e040e61c..93d46c05997 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -155,7 +155,7 @@ if ($id > 0 || ! empty($ref)) $linkback = ''.$langs->trans("BackToList").''; // Ref - print '"; diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 7e3b5ea2810..e2d63d6d151 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -84,13 +84,6 @@ function societe_prepare_head(Societe $object) $h++; } - if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) - { - $head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; - $head[$h][1] = $langs->trans("Agenda"); - $head[$h][2] = 'agenda'; - $h++; - } if (! empty($conf->projet->enabled) && (!empty($user->rights->projet->lire) )) { $head[$h][0] = DOL_URL_ROOT.'/societe/project.php?socid='.$object->id; @@ -189,11 +182,21 @@ function societe_prepare_head(Societe $object) $h++; } + $head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; + if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + { + $head[$h][1] = $langs->trans("Events"); + $head[$h][1].= ' / '; + } + $head[$h][1].= $langs->trans("Info"); + $head[$h][2] = 'agenda'; + $h++; + // Log - $head[$h][0] = DOL_URL_ROOT.'/societe/info.php?socid='.$object->id; + /*$head[$h][0] = DOL_URL_ROOT.'/societe/info.php?socid='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; - $h++; + $h++;*/ complete_head_from_modules($conf,$langs,$object,$head,$h,'thirdparty','remove'); diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index bdc18205001..01ebaf7c42c 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -203,9 +203,10 @@ function dol_print_file($langs,$filename,$searchalt=0) * TODO Move this into html.formother * * @param object $object Objet to show + * @param int $usetable Output into a table * @return void */ -function dol_print_object_info($object) +function dol_print_object_info($object, $usetable=0) { global $langs,$db; $langs->load("other"); @@ -219,14 +220,27 @@ function dol_print_object_info($object) $deltadateforuser=round($deltadateforclient-$deltadateforserver); //print "x".$deltadateforserver." - ".$deltadateforclient." - ".$deltadateforuser; + if ($usetable) print '
    ' . $langs->trans("Ref") . ''; - print $form->showrefnav($object, 'ref', '', 1, 'ref'); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref'); print '
    '.$langs->trans("None")."
    ' . $langs->trans('Ref') . '
    ' . $langs->trans('Ref') . ''; print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); print '
    '.$langs->trans("Ref").''; + print '
    '.$langs->trans("Ref").''; print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); print "
    '; + // Import key if (! empty($object->import_key)) - print $langs->trans("ImportedWithSet").': '.$object->import_key.'
    '; + { + if ($usetable) print ''; + else print '
    '; + } // User creation if (! empty($object->user_creation)) { - print $langs->trans("CreatedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date creation if (! empty($object->date_creation)) { - print $langs->trans("DateCreation").': '.dol_print_date($object->date_creation, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // User change if (! empty($object->user_modification)) { - print $langs->trans("ModifiedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date change if (! empty($object->date_modification)) { - print $langs->trans("DateLastModification").': '.dol_print_date($object->date_modification, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // User validation if (! empty($object->user_validation)) { - print $langs->trans("ValidatedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date validation if (! empty($object->date_validation)) { - print $langs->trans("DateValidation").': '.dol_print_date($object->date_validation, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // User approve if (! empty($object->user_approve)) { - print $langs->trans("ApprovedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date approve if (! empty($object->date_approve)) { - print $langs->trans("DateApprove").': '.dol_print_date($object->date_approve, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // User close if (! empty($object->user_cloture)) { - print $langs->trans("ClosedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date close if (! empty($object->date_cloture)) { - print $langs->trans("DateClosing").': '.dol_print_date($object->date_cloture, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // User conciliate if (! empty($object->user_rappro)) { - print $langs->trans("ConciliatedBy").': '; + if ($usetable) print ''; + else print '
    '; } // Date conciliate if (! empty($object->date_rappro)) { - print $langs->trans("DateConciliating").': '.dol_print_date($object->date_rappro, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } // Date send if (! empty($object->date_envoi)) { - print $langs->trans("DateLastSend").': '.dol_print_date($object->date_envoi, 'dayhour'); + if ($usetable) print ''; + else print '
    '; } + + if ($usetable) print '
    '; + print $langs->trans("ImportedWithSet"); + if ($usetable) print ''; + else print ': '; + print $object->import_key; + if ($usetable) print '
    '; + print $langs->trans("CreatedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_creation)) { if ($object->user_creation->id) print $object->user_creation->getNomUrl(1); @@ -239,21 +253,30 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateCreation"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_creation, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_creation+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("ModifiedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_modification)) { if ($object->user_modification->id) print $object->user_modification->getNomUrl(1); @@ -266,21 +289,30 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateLastModification"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_modification, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_modification+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("ValidatedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_validation)) { if ($object->user_validation->id) print $object->user_validation->getNomUrl(1); @@ -293,21 +325,30 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateValidation"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_validation, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_validation+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("ApprovedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_approve)) { if ($object->user_approve->id) print $object->user_approve->getNomUrl(1); @@ -320,21 +361,30 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateApprove"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_approve, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_approve+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("ClosedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_cloture)) { if ($object->user_cloture->id) print $object->user_cloture->getNomUrl(1); @@ -347,21 +397,30 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateClosing"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_cloture, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_cloture+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("ConciliatedBy"); + if ($usetable) print ''; + else print ': '; if (is_object($object->user_rappro)) { if ($object->user_rappro->id) print $object->user_rappro->getNomUrl(1); @@ -374,24 +433,37 @@ function dol_print_object_info($object) if ($userstatic->id) print $userstatic->getNomUrl(1); else print $langs->trans("Unknown"); } - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateConciliating"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_rappro, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_rappro+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; + print $langs->trans("DateLastSend"); + if ($usetable) print ''; + else print ': '; + print dol_print_date($object->date_envoi, 'dayhour'); if ($deltadateforuser) print ' '.$langs->trans("CurrentHour").'   /   '.dol_print_date($object->date_envoi+($deltadateforuser*3600),"dayhour").'  '.$langs->trans("ClientHour"); - print '
    '; + if ($usetable) print '
    '; } diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 482846032dc..7baed59a0ad 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -53,7 +53,7 @@ class modAgenda extends DolibarrModules $this->module_position = 15; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); - $this->description = "Gestion de l'agenda et des actions"; + $this->description = "Follow events or rendez-vous. Record manual events into Agendas or let application record automatic events for log tracking."; $this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 66f9582cfc0..2677d06ec7b 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -198,7 +198,7 @@ if ($id > 0 || ! empty($ref)) print ''; // Ref - print ''; + print ''; print ''; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7decc602dbe..670546ca87a 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -45,6 +45,7 @@ IfModuleEnabled=Note: yes is effective only if module %s is enabled RemoveLock=Remove file %s if it exists to allow usage of the update tool. RestoreLock=Restore file %s, with read permission only, to disable any usage of update tool. SecuritySetup=Security setup +SecurityFilesDesc=Define here options related to security about uploading files. ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. @@ -524,8 +525,8 @@ Module2200Name=Dynamic Prices Module2200Desc=Enable the usage of math expressions for prices Module2300Name=Cron Module2300Desc=Scheduled job management -Module2400Name=Agenda -Module2400Desc=Events/tasks and agenda management +Module2400Name=Agenda/Events +Module2400Desc=Follow events or rendez-vous. Record manual events into Agendas or let application logs automatic events for tracking purposes. Module2500Name=Electronic Content Management Module2500Desc=Save and share documents Module2600Name=API/Web services (SOAP server) diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index 3d72ad9d328..7bbba527ed8 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -30,6 +30,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; $langs->load("companies"); @@ -117,6 +118,12 @@ if ($socid) print '
    '.$langs->trans('Ref').'
    '.$langs->trans('Ref').''; print $form->showrefnav($commande,'ref','',1,'ref','ref'); print '
    '; + + print '
    '; + + $object->info($socid); + print dol_print_object_info($object, 1); + print ''; dol_fiche_end(); @@ -158,16 +165,18 @@ if ($socid) print ''; - print '
    '; - - - print load_fiche_titre($langs->trans("ActionsOnCompany"),'',''); - - // List of todo actions - show_actions_todo($conf,$langs,$db,$object,null,0,1); - - // List of done actions - show_actions_done($conf,$langs,$db,$object); + if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) + { + print '
    '; + + print load_fiche_titre($langs->trans("ActionsOnCompany"),'',''); + + // List of todo actions + show_actions_todo($conf,$langs,$db,$object,null,0,1); + + // List of done actions + show_actions_done($conf,$langs,$db,$object); + } } diff --git a/htdocs/societe/info.php b/htdocs/societe/info.php deleted file mode 100644 index 3a2ecea9305..00000000000 --- a/htdocs/societe/info.php +++ /dev/null @@ -1,106 +0,0 @@ - - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2010 Juanjo Menent - * - * 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/societe/info.php - * \ingroup societe - * \brief Page des informations d'une societe - */ - -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; - -$langs->load("companies"); -$langs->load("other"); -if (! empty($conf->notification->enabled)) $langs->load("mails"); - -// Security check -$socid = GETPOST('socid','int'); -if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'societe', $socid, '&societe'); - -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array -$hookmanager->initHooks(array('infothirdparty')); - -$object = new Societe($db); - - -/* - * Actions - */ - -$parameters=array('id'=>$socid); -$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - - - -/* - * View - */ - -$form=new Form($b); - -$title=$langs->trans("ThirdParty"); -if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name.' - '.$langs->trans("Info"); -$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('',$title,$help_url); - -if ($socid > 0) -{ - $result = $object->fetch($socid); - if (! $result) - { - $langs->load("errors"); - print $langs->trans("ErrorRecordNotFound"); - - llxFooter(); - $db->close(); - - exit; - } - - $head = societe_prepare_head($object); - - dol_fiche_head($head, 'info', $langs->trans("ThirdParty"), 0, 'company'); - - dol_banner_tab($object, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); - - $object->info($socid); - - - print '
    '; - - print '
    '; - - print '
    '; - - dol_print_object_info($object); - - print '
    '; - - dol_fiche_end(); -} - - -llxFooter(); - -$db->close(); From e47c9946b26a868fbc174422cf395ebb80f035ef Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 15:09:31 +0200 Subject: [PATCH 111/380] More complete cleaning tools --- dev/dolibarr_changes.txt | 11 +++++------ dev/fixdosfiles.sh | 6 +++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index c5487f67273..d666aa02165 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -40,6 +40,11 @@ with: TCPDF: ------ +* To avoid to have QRcode changed because generated with a random mask, replace +define('QR_FIND_FROM_RANDOM', 2); +with +define('QR_FIND_FROM_RANDOM', false); + * Removed all fonts except dejavusans* (used by greek, arab, persan, romanian, turkish), freemono* (russian), @@ -62,12 +67,6 @@ In htdocs/includes/tcpdf/tcpdf.php * Renamed getmypid into dol_getmypid(). -To avoid to have QRcode changed because generated with a random mask, replace -define('QR_FIND_FROM_RANDOM', 2); -with -define('QR_FIND_FROM_RANDOM', false); - - TCPDI: ------ diff --git a/dev/fixdosfiles.sh b/dev/fixdosfiles.sh index f770e28537d..ae04977d624 100755 --- a/dev/fixdosfiles.sh +++ b/dev/fixdosfiles.sh @@ -17,16 +17,16 @@ fi # To detec if [ "x$1" = "xlist" ] then - find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF + find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF # find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'htdocs\/includes' | grep CRLF fi # To convert if [ "x$1" = "xfix" ] then - for fic in `find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' ` + for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' ` do echo "Fix file $fic" - dos2unix $fic + dos2unix "$fic" done; fi From 2f42a226d0db3ce0ca6b543668d525a3581fcc70 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 15:28:59 +0200 Subject: [PATCH 112/380] Update escpos-php --- htdocs/includes/mike42/escpos-php/.gitignore | 3 + htdocs/includes/mike42/escpos-php/.travis.yml | 20 + htdocs/includes/mike42/escpos-php/Escpos.php | 851 ------------------ htdocs/includes/mike42/escpos-php/README.md | 285 ++++-- .../includes/mike42/escpos-php/autoload.php | 26 + .../includes/mike42/escpos-php/composer.json | 5 + .../mike42/escpos-php/example/README.md | 26 - .../mike42/escpos-php/example/barcode.php | 181 ---- .../mike42/escpos-php/example/bit-image.php | 32 - .../character-encodings-with-images.php | 59 -- .../example/character-encodings.php | 58 -- .../escpos-php/example/character-tables.php | 71 -- .../mike42/escpos-php/example/demo.php | 167 ---- .../mike42/escpos-php/example/graphics.php | 32 - .../escpos-php/example/interface/README.md | 8 - .../escpos-php/example/interface/ethernet.php | 22 - .../example/interface/linux-usb.php | 33 - .../escpos-php/example/interface/smb.php | 51 -- .../example/interface/windows-lpt.php | 30 - .../example/interface/windows-usb.php | 32 - .../escpos-php/example/print-from-html.php | 53 -- .../escpos-php/example/print-from-pdf.php | 71 -- .../mike42/escpos-php/example/qr-code.php | 81 -- .../escpos-php/example/receipt-with-logo.php | 96 -- .../character-encoding-test-strings.inc | 35 - .../escpos-php/example/resources/document.odt | Bin 39751 -> 0 bytes .../escpos-php/example/resources/document.pdf | Bin 24389 -> 0 bytes .../escpos-php/example/resources/document.z | Bin 20320 -> 0 bytes .../example/resources/escpos-php-small.png | Bin 1941 -> 0 bytes .../example/resources/escpos-php.png | Bin 7871 -> 0 bytes .../escpos-php/example/resources/tux.png | Bin 5198 -> 0 bytes .../specific/29-latvian-star-tup592.php | 21 - .../32-german-tm-t20-ii-custom-command.php | 36 - .../specific/33-spanish-seypos-prp-300.php | 16 - .../example/specific/39-currency-symbols.php | 69 -- .../specific/44-pound-symbol-star-tsp650.php | 31 - .../example/specific/50-P-822D-greek.php | 16 - .../example/specific/54-gfx-sidebyside.php | 58 -- .../specific/6-arabic-epos-tep-220m.php | 47 - .../escpos-php/example/specific/README.md | 7 - .../mike42/escpos-php/example/text-size.php | 62 -- .../src/AbstractCapabilityProfile.php | 61 -- .../mike42/escpos-php/src/CodePage.php | 181 ---- .../src/DefaultCapabilityProfile.php | 103 --- .../escpos-php/src/DummyPrintConnector.php | 78 -- .../src/EposTepCapabilityProfile.php | 4 - .../mike42/escpos-php/src/EscposImage.php | 405 --------- .../escpos-php/src/EscposPrintBuffer.php | 304 ------- .../escpos-php/src/FilePrintConnector.php | 80 -- .../escpos-php/src/ImagePrintBuffer.php | 99 -- .../escpos-php/src/NetworkPrintConnector.php | 39 - .../escpos-php/src/P822DCapabilityProfile.php | 90 -- .../mike42/escpos-php/src/PrintBuffer.php | 75 -- .../mike42/escpos-php/src/PrintConnector.php | 56 -- .../src/SimpleCapabilityProfile.php | 17 - .../escpos-php/src/StarCapabilityProfile.php | 82 -- .../escpos-php/src/WindowsPrintConnector.php | 356 -------- ...Characters-DefaultCapabilityProfile.ser.gz | Bin 12928 -> 0 bytes .../Characters-SimpleCapabilityProfile.ser.gz | Bin 1116 -> 0 bytes .../Characters-StarCapabilityProfile.ser.gz | Bin 9416 -> 0 bytes .../mike42/escpos-php/test/bootstrap.php | 27 - .../test/integration/ExampleTest.php | 126 --- .../integration/resources/output/barcode.bin | Bin 2342 -> 0 bytes .../resources/output/bit-image.bin | Bin 9789 -> 0 bytes .../resources/output/character-encodings.bin | Bin 1780 -> 0 bytes .../resources/output/character-tables.bin | Bin 8174 -> 0 bytes .../integration/resources/output/demo.bin | Bin 73643 -> 0 bytes .../integration/resources/output/graphics.bin | Bin 9635 -> 0 bytes .../resources/output/interface.bin | 2 - .../resources/output/print-from-pdf.bin.z | Bin 17081 -> 0 bytes .../integration/resources/output/qr-code.bin | Bin 1551 -> 0 bytes .../resources/output/receipt-with-logo.bin | Bin 9579 -> 0 bytes .../resources/output/text-size.bin | Bin 368 -> 0 bytes .../mike42/escpos-php/test/phpunit.xml | 16 - .../unit/AbstractCapabilityProfileTest.php | 69 -- .../escpos-php/test/unit/EscposImageTest.php | 235 ----- .../test/unit/EscposPrintBufferTest.php | 150 --- .../escpos-php/test/unit/EscposTest.php | 765 ---------------- .../test/unit/WindowsPrintConnectorTest.php | 278 ------ .../test/unit/resources/black_transparent.gif | Bin 65 -> 0 bytes .../test/unit/resources/black_transparent.png | Bin 167 -> 0 bytes .../test/unit/resources/black_white.bmp | Bin 138 -> 0 bytes .../test/unit/resources/black_white.gif | Bin 65 -> 0 bytes .../test/unit/resources/black_white.jpg | Bin 175 -> 0 bytes .../test/unit/resources/black_white.png | Bin 156 -> 0 bytes .../test/unit/resources/canvas_black.bmp | Bin 142 -> 0 bytes .../test/unit/resources/canvas_black.gif | Bin 72 -> 0 bytes .../test/unit/resources/canvas_black.jpg | Bin 160 -> 0 bytes .../test/unit/resources/canvas_black.png | Bin 239 -> 0 bytes .../test/unit/resources/canvas_white.bmp | Bin 142 -> 0 bytes .../test/unit/resources/canvas_white.gif | Bin 72 -> 0 bytes .../test/unit/resources/canvas_white.jpg | Bin 160 -> 0 bytes .../test/unit/resources/canvas_white.png | Bin 239 -> 0 bytes .../escpos-php/test/unit/resources/demo.php | 19 - .../escpos-php/test/unit/resources/doc.pdf | Bin 6681 -> 0 bytes 95 files changed, 252 insertions(+), 6156 deletions(-) create mode 100644 htdocs/includes/mike42/escpos-php/.travis.yml delete mode 100644 htdocs/includes/mike42/escpos-php/Escpos.php create mode 100644 htdocs/includes/mike42/escpos-php/autoload.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/README.md delete mode 100644 htdocs/includes/mike42/escpos-php/example/barcode.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/bit-image.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/character-encodings-with-images.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/character-encodings.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/character-tables.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/demo.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/graphics.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/README.md delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/ethernet.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/linux-usb.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/smb.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/windows-lpt.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/interface/windows-usb.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/print-from-html.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/print-from-pdf.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/qr-code.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/receipt-with-logo.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/character-encoding-test-strings.inc delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/document.odt delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/document.pdf delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/document.z delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/escpos-php-small.png delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/escpos-php.png delete mode 100644 htdocs/includes/mike42/escpos-php/example/resources/tux.png delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/29-latvian-star-tup592.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/32-german-tm-t20-ii-custom-command.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/33-spanish-seypos-prp-300.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/39-currency-symbols.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/44-pound-symbol-star-tsp650.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/50-P-822D-greek.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/54-gfx-sidebyside.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/6-arabic-epos-tep-220m.php delete mode 100644 htdocs/includes/mike42/escpos-php/example/specific/README.md delete mode 100644 htdocs/includes/mike42/escpos-php/example/text-size.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/AbstractCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/CodePage.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/DefaultCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/DummyPrintConnector.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/EposTepCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/EscposImage.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/EscposPrintBuffer.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/FilePrintConnector.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/ImagePrintBuffer.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/NetworkPrintConnector.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/P822DCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/PrintBuffer.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/PrintConnector.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/SimpleCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/StarCapabilityProfile.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/WindowsPrintConnector.php delete mode 100644 htdocs/includes/mike42/escpos-php/src/cache/Characters-DefaultCapabilityProfile.ser.gz delete mode 100644 htdocs/includes/mike42/escpos-php/src/cache/Characters-SimpleCapabilityProfile.ser.gz delete mode 100644 htdocs/includes/mike42/escpos-php/src/cache/Characters-StarCapabilityProfile.ser.gz delete mode 100644 htdocs/includes/mike42/escpos-php/test/bootstrap.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/ExampleTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/barcode.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/bit-image.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-encodings.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-tables.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/demo.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/graphics.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/interface.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/print-from-pdf.bin.z delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/qr-code.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/receipt-with-logo.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/integration/resources/output/text-size.bin delete mode 100644 htdocs/includes/mike42/escpos-php/test/phpunit.xml delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/AbstractCapabilityProfileTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/EscposImageTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/EscposPrintBufferTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/EscposTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/WindowsPrintConnectorTest.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_transparent.gif delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_transparent.png delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.bmp delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.gif delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.jpg delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.png delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.bmp delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.gif delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.jpg delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.png delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.bmp delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.gif delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.jpg delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.png delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/demo.php delete mode 100644 htdocs/includes/mike42/escpos-php/test/unit/resources/doc.pdf diff --git a/htdocs/includes/mike42/escpos-php/.gitignore b/htdocs/includes/mike42/escpos-php/.gitignore index 0e8fc4a31ee..3fe7ed0ea16 100644 --- a/htdocs/includes/mike42/escpos-php/.gitignore +++ b/htdocs/includes/mike42/escpos-php/.gitignore @@ -10,3 +10,6 @@ doc/doxygen_sqlite3.db # composer files vendor/ + +# cache +src/Mike42/Escpos/PrintBuffers/cache/ \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/.travis.yml b/htdocs/includes/mike42/escpos-php/.travis.yml new file mode 100644 index 00000000000..969cd6aad15 --- /dev/null +++ b/htdocs/includes/mike42/escpos-php/.travis.yml @@ -0,0 +1,20 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - hhvm + - nightly + +matrix: + allow_failures: + - php: nightly + +script: phpunit --configuration test/phpunit.xml --coverage-text + +install: + - composer install + diff --git a/htdocs/includes/mike42/escpos-php/Escpos.php b/htdocs/includes/mike42/escpos-php/Escpos.php deleted file mode 100644 index 57e7eb2c8ac..00000000000 --- a/htdocs/includes/mike42/escpos-php/Escpos.php +++ /dev/null @@ -1,851 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * This class generates ESC/POS printer control commands for compatible printers. - * See README.md for a summary of compatible printers and supported commands, and - * basic usage. - * - * See example/demo.php for a detailed print-out demonstrating the range of commands - * implemented in this project. - * - * Note that some functions have not been implemented: - * - Set paper sensors - * - Select print colour - * - * Please direct feature requests, bug reports and contributions to escpos-php - * on Github: - * - https://github.com/mike42/escpos-php - */ -require_once(dirname(__FILE__) . "/src/EscposImage.php"); -require_once(dirname(__FILE__) . "/src/PrintBuffer.php"); -require_once(dirname(__FILE__) . "/src/EscposPrintBuffer.php"); -require_once(dirname(__FILE__) . "/src/PrintConnector.php"); -require_once(dirname(__FILE__) . "/src/WindowsPrintConnector.php"); -require_once(dirname(__FILE__) . "/src/FilePrintConnector.php"); -require_once(dirname(__FILE__) . "/src/NetworkPrintConnector.php"); -require_once(dirname(__FILE__) . "/src/AbstractCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/DefaultCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/SimpleCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/EposTepCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/StarCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/P822DCapabilityProfile.php"); -require_once(dirname(__FILE__) . "/src/CodePage.php"); -require_once(dirname(__FILE__) . "/src/ImagePrintBuffer.php"); - -class Escpos { - /* ASCII codes */ - const NUL = "\x00"; - const LF = "\x0a"; - const ESC = "\x1b"; - const FS = "\x1c"; - const FF = "\x0c"; - const GS = "\x1d"; - const DLE = "\x10"; - const EOT = "\x04"; - - /* Barcode types */ - const BARCODE_UPCA = 65; - const BARCODE_UPCE = 66; - const BARCODE_JAN13 = 67; - const BARCODE_JAN8 = 68; - const BARCODE_CODE39 = 69; - const BARCODE_ITF = 70; - const BARCODE_CODABAR = 71; - const BARCODE_CODE93 = 72; - const BARCODE_CODE128 = 73; - - /* Barcode HRI (human-readable interpretation) text position */ - const BARCODE_TEXT_NONE = 0; - const BARCODE_TEXT_ABOVE = 1; - const BARCODE_TEXT_BELOW = 2; - - /* Cut types */ - const CUT_FULL = 65; - const CUT_PARTIAL = 66; - - /* Fonts */ - const FONT_A = 0; - const FONT_B = 1; - const FONT_C = 2; - - /* Image sizing options */ - const IMG_DEFAULT = 0; - const IMG_DOUBLE_WIDTH = 1; - const IMG_DOUBLE_HEIGHT = 2; - - /* Justifications */ - const JUSTIFY_LEFT = 0; - const JUSTIFY_CENTER = 1; - const JUSTIFY_RIGHT = 2; - - /* Print mode constants */ - const MODE_FONT_A = 0; - const MODE_FONT_B = 1; - const MODE_EMPHASIZED = 8; - const MODE_DOUBLE_HEIGHT = 16; - const MODE_DOUBLE_WIDTH = 32; - const MODE_UNDERLINE = 128; - - /* QR code error correction levels */ - const QR_ECLEVEL_L = 0; - const QR_ECLEVEL_M = 1; - const QR_ECLEVEL_Q = 2; - const QR_ECLEVEL_H = 3; - - /* QR code models */ - const QR_MODEL_1 = 1; - const QR_MODEL_2 = 2; - const QR_MICRO = 3; - - /* Printer statuses */ - const STATUS_PRINTER = 1; - const STATUS_OFFLINE_CAUSE = 2; - const STATUS_ERROR_CAUSE = 3; - const STATUS_PAPER_ROLL = 4; - const STATUS_INK_A = 7; - const STATUS_INK_B = 6; - const STATUS_PEELER = 8; - - /* Underline */ - const UNDERLINE_NONE = 0; - const UNDERLINE_SINGLE = 1; - const UNDERLINE_DOUBLE = 2; - - /** - * @var PrintBuffer The printer's output buffer. - */ - private $buffer; - - /** - * @var PrintConnector - */ - private $connector; - - /** - * @var AbstractCapabilityProfile - */ - private $profile; - - /** - * @var int Current character code table - */ - private $characterTable; - - /** - * Construct a new print object - * - * @param PrintConnector $connector The PrintConnector to send data to. If not set, output is sent to standard output. - * @param AbstractCapabilityProfile $profile Supported features of this printer. If not set, the DefaultCapabilityProfile will be used, which is suitable for Epson printers. - * @throws InvalidArgumentException - */ - function __construct(PrintConnector $connector = null, AbstractCapabilityProfile $profile = null) { - if(is_null($connector)) { - if(php_sapi_name() == 'cli') { - $connector = new FilePrintConnector("php://stdout"); - } else { - throw new InvalidArgumentException("Argument passed to Escpos::__construct() must implement interface PrintConnector, null given."); - } - } - /* Set connector */ - $this -> connector = $connector; - - /* Set capability profile */ - if($profile === null) { - $profile = DefaultCapabilityProfile::getInstance(); - } - $this -> profile = $profile; - /* Set buffer */ - $buffer = new EscposPrintBuffer(); - $this -> buffer = null; - $this -> setPrintBuffer($buffer); - $this -> initialize(); - } - - /** - * Print a barcode. - * - * @param string $content The information to encode. - * @param int $type The barcode standard to output. If not specified, `Escpos::BARCODE_CODE39` will be used. Note that some barcode formats only support specific lengths or sets of characters. - * @throws InvalidArgumentException Where the length or characters used in $content is invalid for the requested barcode format. - */ - function barcode($content, $type = self::BARCODE_CODE39) { - /* Validate input */ - self::validateInteger($type, 65, 73, __FUNCTION__, "Barcode type"); - $len = strlen($content); - switch($type) { - case self::BARCODE_UPCA: - self::validateInteger($len, 11, 12, __FUNCTION__, "UPCA barcode content length"); - self::validateStringRegex($content, __FUNCTION__, "/^[0-9]{11,12}$/", "UPCA barcode content"); - break; - case self::BARCODE_UPCE: - self::validateIntegerMulti($len, array(array(6, 8), array(11, 12)), __FUNCTION__, "UPCE barcode content length"); - self::validateStringRegex($content, __FUNCTION__, "/^([0-9]{6,8}|[0-9]{11,12})$/", "UPCE barcode content"); - break; - case self::BARCODE_JAN13: - self::validateInteger($len, 12, 13, __FUNCTION__, "JAN13 barcode content length"); - self::validateStringRegex($content, __FUNCTION__, "/^[0-9]{12,13}$/", "JAN13 barcode content"); - break; - case self::BARCODE_JAN8: - self::validateInteger($len, 7, 8, __FUNCTION__, "JAN8 barcode content length"); - self::validateStringRegex($content, __FUNCTION__, "/^[0-9]{7,8}$/", "JAN8 barcode content"); - break; - case self::BARCODE_CODE39: - self::validateInteger($len, 1, 255, __FUNCTION__, "CODE39 barcode content length"); // 255 is a limitation of the "function b" command, not the barcode format. - self::validateStringRegex($content, __FUNCTION__, "/^([0-9A-Z \$\%\+\-\.\/]+|\*[0-9A-Z \$\%\+\-\.\/]+\*)$/", "CODE39 barcode content"); - break; - case self::BARCODE_ITF: - self::validateInteger($len, 2, 255, __FUNCTION__, "ITF barcode content length"); // 255 is a limitation of the "function b" command, not the barcode format. - self::validateStringRegex($content, __FUNCTION__, "/^([0-9]{2})+$/", "ITF barcode content"); - break; - case self::BARCODE_CODABAR: - self::validateInteger($len, 1, 255, __FUNCTION__, "Codabar barcode content length"); // 255 is a limitation of the "function b" command, not the barcode format. - self::validateStringRegex($content, __FUNCTION__, "/^[A-Da-d][0-9\$\+\-\.\/\:]+[A-Da-d]$/", "Codabar barcode content"); - break; - case self::BARCODE_CODE93: - self::validateInteger($len, 1, 255, __FUNCTION__, "Code93 barcode content length"); // 255 is a limitation of the "function b" command, not the barcode format. - self::validateStringRegex($content, __FUNCTION__, "/^[\\x00-\\x7F]+$/", "Code93 barcode content"); - break; - case self::BARCODE_CODE128: - self::validateInteger($len, 1, 255, __FUNCTION__, "Code128 barcode content length"); // 255 is a limitation of the "function b" command, not the barcode format. - // The CODE128 encoder is quite complex, so only a very basic header-check is applied here. - self::validateStringRegex($content, __FUNCTION__, "/^\{[A-C][\\x00-\\x7F]+$/", "Code128 barcode content"); - break; - } - if(!$this -> profile -> getSupportsBarcodeB()) { - // A simpler barcode command which supports fewer codes - self::validateInteger($type, 65, 71, __FUNCTION__); - $this -> connector -> write(self::GS . "k" . chr($type - 65) . $content . self::NUL); - return; - } - // More advanced function B, used in preference - $this -> connector -> write(self::GS . "k" . chr($type) . chr(strlen($content)) . $content); - } - - /** - * Print an image, using the older "bit image" command. This creates padding on the right of the image, - * if its width is not divisible by 8. - * - * Should only be used if your printer does not support the graphics() command. - * - * @param EscposImage $img The image to print - * @param EscposImage $size Size modifier for the image. - */ - function bitImage(EscposImage $img, $size = self::IMG_DEFAULT) { - self::validateInteger($size, 0, 3, __FUNCTION__); - $header = self::dataHeader(array($img -> getWidthBytes(), $img -> getHeight()), true); - $this -> connector -> write(self::GS . "v0" . chr($size) . $header); - $this -> connector -> write($img -> toRasterFormat()); - } - - /** - * Close the underlying buffer. With some connectors, the - * job will not actually be sent to the printer until this is called. - */ - function close() { - $this -> connector -> finalize(); - } - - /** - * Cut the paper. - * - * @param int $mode Cut mode, either Escpos::CUT_FULL or Escpos::CUT_PARTIAL. If not specified, `Escpos::CUT_FULL` will be used. - * @param int $lines Number of lines to feed - */ - function cut($mode = self::CUT_FULL, $lines = 3) { - // TODO validation on cut() inputs - $this -> connector -> write(self::GS . "V" . chr($mode) . chr($lines)); - } - - /** - * Print and feed line / Print and feed n lines. - * - * @param int $lines Number of lines to feed - */ - function feed($lines = 1) { - self::validateInteger($lines, 1, 255, __FUNCTION__); - if($lines <= 1) { - $this -> connector -> write(self::LF); - } else { - $this -> connector -> write(self::ESC . "d" . chr($lines)); - } - } - - /** - * Some printers require a form feed to release the paper. On most printers, this - * command is only useful in page mode, which is not implemented in this driver. - */ - function feedForm() { - $this -> connector -> write(self::FF); - } - - /** - * Print and reverse feed n lines. - * - * @param int $lines number of lines to feed. If not specified, 1 line will be fed. - */ - function feedReverse($lines = 1) { - self::validateInteger($lines, 1, 255, __FUNCTION__); - $this -> connector -> write(self::ESC . "e" . chr($lines)); - } - - /** - * @return number - */ - function getCharacterTable() { - return $this -> characterTable; - } - - /** - * @return PrintBuffer - */ - function getPrintBuffer() { - return $this -> buffer; - } - - /** - * @return PrintConnector - */ - function getPrintConnector() { - return $this -> connector; - } - - /** - * @return AbstractCapabilityProfile - */ - function getPrinterCapabilityProfile() { - return $this -> profile; - } - - /** - * @param int $type The type of status to request - * @return stdClass Class containing requested status, or null if either no status was received, or your print connector is unable to read from the printer. - */ - function getPrinterStatus($type = self::STATUS_PRINTER) { - self::validateIntegerMulti($type, array(array(1, 4), array(6, 8)), __FUNCTION__); - // Determine which flags we are looking for - $statusFlags = array( - self::STATUS_PRINTER => array( - 4 => "pulseHigh", // connector pin 3, see pulse(). - 8 => "offline", - 32 => "waitingForOnlineRecovery", - 64 => "feedButtonPressed" - ), - self::STATUS_OFFLINE_CAUSE => array( - 4 => "coverOpen", - 8 => "paperManualFeed", - 32 => "paperEnd", - 64 => "errorOccurred" - ), - self::STATUS_ERROR_CAUSE => array( - 4 => "recoverableError", - 8 => "autocutterError", - 32 => "unrecoverableError", - 64 => "autorecoverableError" - ), - self::STATUS_PAPER_ROLL => array( - 4 => "paperNearEnd", - 32 => "paperNotPresent" - ), - self::STATUS_INK_A => array( - 4 => "inkNearEnd", - 8 => "inkEnd", - 32 => "inkNotPresent", - 64 => "cleaning" - ), - self::STATUS_INK_B => array( - 4 => "inkNearEnd", - 8 => "inkEnd", - 32 => "inkNotPresent" - ), - self::STATUS_PEELER => array( - 4 => "labelWaitingForRemoval", - 32 => "labelPaperNotDetected" - ) - ); - $flags = $statusFlags[$type]; - // Clear any previous statuses which haven't been read yet - $f = $this -> connector -> read(1); - // Make request - $reqC = chr($type); - switch($type) { - // Special cases: These are two-character requests - case self::STATUS_INK_A: - $reqC = chr(7) . chr(1); - break; - case self::STATUS_INK_B: - $reqC = chr(7) . chr(2); - break; - case self::STATUS_PEELER: - $reqC = chr(8) . chr(3); - break; - } - $this -> connector -> write(self::DLE . self::EOT . $reqC); - // Wait for single-character response - $f = $this -> connector -> read(1); - $i = 0; - while($f === false && $i < 50000) { - usleep(100); - $f = $this -> connector -> read(1); - $i++; - } - if($f === false) { - // Timeout - return null; - } - $ret = new stdClass(); - foreach($flags as $num => $name) { - $ret -> $name = (ord($f) & $num) != 0; - } - return $ret; - } - - /** - * Print an image to the printer. - * - * Size modifiers are: - * - IMG_DEFAULT (leave image at original size) - * - IMG_DOUBLE_WIDTH - * - IMG_DOUBLE_HEIGHT - * - * See the example/ folder for detailed examples. - * - * The function bitImage() takes the same parameters, and can be used if - * your printer doesn't support the newer graphics commands. - * - * @param EscposImage $img The image to print. - * @param int $size Output size modifier for the image. - */ - function graphics(EscposImage $img, $size = self::IMG_DEFAULT) { - self::validateInteger($size, 0, 3, __FUNCTION__); - $imgHeader = self::dataHeader(array($img -> getWidth(), $img -> getHeight()), true); - $tone = '0'; - $colors = '1'; - $xm = (($size & self::IMG_DOUBLE_WIDTH) == self::IMG_DOUBLE_WIDTH) ? chr(2) : chr(1); - $ym = (($size & self::IMG_DOUBLE_HEIGHT) == self::IMG_DOUBLE_HEIGHT) ? chr(2) : chr(1); - $header = $tone . $xm . $ym . $colors . $imgHeader; - $this -> wrapperSendGraphicsData('0', 'p', $header . $img -> toRasterFormat()); - $this -> wrapperSendGraphicsData('0', '2'); - } - - /** - * Initialize printer. This resets formatting back to the defaults. - */ - function initialize() { - $this -> connector -> write(self::ESC . "@"); - $this -> characterTable = 0; - } - - /** - * Generate a pulse, for opening a cash drawer if one is connected. - * The default settings should open an Epson drawer. - * - * @param int $pin 0 or 1, for pin 2 or pin 5 kick-out connector respectively. - * @param int $on_ms pulse ON time, in milliseconds. - * @param int $off_ms pulse OFF time, in milliseconds. - */ - function pulse($pin = 0, $on_ms = 120, $off_ms = 240) { - self::validateInteger($pin, 0, 1, __FUNCTION__); - self::validateInteger($on_ms, 1, 511, __FUNCTION__); - self::validateInteger($off_ms, 1, 511, __FUNCTION__); - $this -> connector -> write(self::ESC . "p" . chr($pin + 48) . chr($on_ms / 2) . chr($off_ms / 2)); - } - - /** - * Print the given data as a QR code on the printer. - * - * @param string $content The content of the code. Numeric data will be more efficiently compacted. - * @param int $ec Error-correction level to use. One of Escpos::QR_ECLEVEL_L (default), Escpos::QR_ECLEVEL_M, Escpos::QR_ECLEVEL_Q or Escpos::QR_ECLEVEL_H. Higher error correction results in a less compact code. - * @param int $size Pixel size to use. Must be 1-16 (default 3) - * @param int $model QR code model to use. Must be one of Escpos::QR_MODEL_1, Escpos::QR_MODEL_2 (default) or Escpos::QR_MICRO (not supported by all printers). - */ - function qrCode($content, $ec = self::QR_ECLEVEL_L, $size = 3, $model = self::QR_MODEL_2) { - self::validateString($content, __FUNCTION__); - self::validateInteger($ec, 0, 3, __FUNCTION__); - self::validateInteger($size, 1, 16, __FUNCTION__); - self::validateInteger($model, 1, 3, __FUNCTION__); - if($content == "") { - return; - } - if(!$this -> profile -> getSupportsQrCode()) { - // TODO use software rendering via phpqrcode instead - throw new Exception("QR codes are not supported on your printer."); - } - $cn = '1'; // Code type for QR code - // Select model: 1, 2 or micro. - $this -> wrapperSend2dCodeData(chr(65), $cn, chr(48 + $model) . chr(0)); - // Set dot size. - $this -> wrapperSend2dCodeData(chr(67), $cn, chr($size)); - // Set error correction level: L, M, Q, or H - $this -> wrapperSend2dCodeData(chr(69), $cn, chr(48 + $ec)); - // Send content & print - $this -> wrapperSend2dCodeData(chr(80), $cn, $content, '0'); - $this -> wrapperSend2dCodeData(chr(81), $cn, '', '0'); - } - - /** - * Switch character table (code page) manually. Used in conjunction with textRaw() to - * print special characters which can't be encoded automatically. - * - * @param int $table The table to select. Available code tables are model-specific. - */ - function selectCharacterTable($table = 0) { - self::validateInteger($table, 0, 255, __FUNCTION__); - $supported = $this -> profile -> getSupportedCodePages(); - if(!isset($supported[$table])) { - throw new InvalidArgumentException("There is no code table $table allowed by this printer's capability profile."); - } - $this -> characterTable = $table; - if($this -> profile -> getSupportsStarCommands()) { - /* Not an ESC/POS command: STAR printers stash all the extra code pages under a different command. */ - $this -> connector -> write(self::ESC . self::GS . "t" . chr($table)); - return; - } - $this -> connector -> write(self::ESC . "t" . chr($table)); - } - - /** - * Select print mode(s). - * - * Several MODE_* constants can be OR'd together passed to this function's `$mode` argument. The valid modes are: - * - MODE_FONT_A - * - MODE_FONT_B - * - MODE_EMPHASIZED - * - MODE_DOUBLE_HEIGHT - * - MODE_DOUBLE_WIDTH - * - MODE_UNDERLINE - * - * @param int $mode The mode to use. Default is Escpos::MODE_FONT_A, with no special formatting. This has a similar effect to running initialize(). - */ - function selectPrintMode($mode = self::MODE_FONT_A) { - $allModes = self::MODE_FONT_B | self::MODE_EMPHASIZED | self::MODE_DOUBLE_HEIGHT | self::MODE_DOUBLE_WIDTH | self::MODE_UNDERLINE; - if(!is_integer($mode) || $mode < 0 || ($mode & $allModes) != $mode) { - throw new InvalidArgumentException("Invalid mode"); - } - - $this -> connector -> write(self::ESC . "!" . chr($mode)); - } - - /** - * Set barcode height. - * - * @param int $height Height in dots. If not specified, 8 will be used. - */ - function setBarcodeHeight($height = 8) { - self::validateInteger($height, 1, 255, __FUNCTION__); - $this -> connector -> write(self::GS . "h" . chr($height)); - } - - - /** - * Set the position for the Human Readable Interpretation (HRI) of barcode characters. - * - * @param position $position. Use Escpos::BARCODE_TEXT_NONE to hide the text (default), or any combination of Escpos::BARCODE_TEXT_TOP and Escpos::BARCODE_TEXT_BOTTOM flags to display the text. - */ - function setBarcodeTextPosition($position = self::BARCODE_TEXT_NONE) { - self::validateInteger($position, 0, 3, __FUNCTION__, "Barcode text position"); - $this -> connector -> write(self::GS . "H" . chr($position)); - } - - /** - * Turn double-strike mode on/off. - * - * @param boolean $on true for double strike, false for no double strike - */ - function setDoubleStrike($on = true) { - self::validateBoolean($on, __FUNCTION__); - $this -> connector -> write(self::ESC . "G". ($on ? chr(1) : chr(0))); - } - - /** - * Turn emphasized mode on/off. - * - * @param boolean $on true for emphasis, false for no emphasis - */ - function setEmphasis($on = true) { - self::validateBoolean($on, __FUNCTION__); - $this -> connector -> write(self::ESC . "E". ($on ? chr(1) : chr(0))); - } - - /** - * Select font. Most printers have two fonts (Fonts A and B), and some have a third (Font C). - * - * @param int $font The font to use. Must be either Escpos::FONT_A, Escpos::FONT_B, or Escpos::FONT_C. - */ - function setFont($font = self::FONT_A) { - self::validateInteger($font, 0, 2, __FUNCTION__); - $this -> connector -> write(self::ESC . "M" . chr($font)); - } - - /** - * Select justification. - * - * @param int $justification One of Escpos::JUSTIFY_LEFT, Escpos::JUSTIFY_CENTER, or Escpos::JUSTIFY_RIGHT. - */ - function setJustification($justification = self::JUSTIFY_LEFT) { - self::validateInteger($justification, 0, 2, __FUNCTION__); - $this -> connector -> write(self::ESC . "a" . chr($justification)); - } - - /** - * Attach a different print buffer to the printer. Buffers are responsible for handling text output to the printer. - * - * @param PrintBuffer $buffer The buffer to use. - * @throws InvalidArgumentException Where the buffer is already attached to a different printer. - */ - function setPrintBuffer(PrintBuffer $buffer) { - if($buffer === $this -> buffer) { - return; - } - if($buffer -> getPrinter() != null) { - throw new InvalidArgumentException("This buffer is already attached to a printer."); - } - if($this -> buffer !== null) { - $this -> buffer -> setPrinter(null); - } - $this -> buffer = $buffer; - $this -> buffer -> setPrinter($this); - } - - /** - * Set black/white reverse mode on or off. In this mode, text is printed white on a black background. - * - * @param boolean $on True to enable, false to disable. - */ - function setReverseColors($on = true) { - self::validateBoolean($on, __FUNCTION__); - $this -> connector -> write(self::GS . "B" . ($on ? chr(1) : chr(0))); - } - - /** - * Set the size of text, as a multiple of the normal size. - * - * @param int $widthMultiplier Multiple of the regular height to use (range 1 - 8) - * @param int $heightMultiplier Multiple of the regular height to use (range 1 - 8) - */ - function setTextSize($widthMultiplier, $heightMultiplier) { - self::validateInteger($widthMultiplier, 1, 8, __FUNCTION__); - self::validateInteger($heightMultiplier, 1, 8, __FUNCTION__); - $c = pow(2,4) * ($widthMultiplier - 1) + ($heightMultiplier - 1); - $this -> connector -> write(self::GS . "!" . chr($c)); - } - - /** - * Set underline for printed text. - * - * Argument can be true/false, or one of UNDERLINE_NONE, - * UNDERLINE_SINGLE or UNDERLINE_DOUBLE. - * - * @param int $underline Either true/false, or one of Escpos::UNDERLINE_NONE, Escpos::UNDERLINE_SINGLE or Escpos::UNDERLINE_DOUBLE. Defaults to Escpos::UNDERLINE_SINGLE. - */ - function setUnderline($underline = self::UNDERLINE_SINGLE) { - /* Map true/false to underline constants */ - if($underline === true) { - $underline = self::UNDERLINE_SINGLE; - } else if($underline === false) { - $underline = self::UNDERLINE_NONE; - } - /* Set the underline */ - self::validateInteger($underline, 0, 2, __FUNCTION__); - $this -> connector -> write(self::ESC . "-". chr($underline)); - } - - /** - * Add text to the buffer. - * - * Text should either be followed by a line-break, or feed() should be called - * after this to clear the print buffer. - * - * @param string $str Text to print - */ - function text($str = "") { - self::validateString($str, __FUNCTION__); - $this -> buffer -> writeText((string)$str); - } - - /** - * Add text to the buffer without attempting to interpret chararacter codes. - * - * Text should either be followed by a line-break, or feed() should be called - * after this to clear the print buffer. - * - * @param string $str Text to print - */ - function textRaw($str = "") { - self::validateString($str, __FUNCTION__); - $this -> buffer -> writeTextRaw((string)$str); - } - - /** - * Wrapper for GS ( k, to calculate and send correct data length. - * - * @param string $fn Function to use - * @param string $cn Output code type. Affects available data - * @param string $data Data to send. - * @param string $m Modifier/variant for function. Often '0' where used. - * @throws InvalidArgumentException Where the input lengths are bad. - */ - private function wrapperSend2dCodeData($fn, $cn, $data = '', $m = '') { - if(strlen($m) > 1 || strlen($cn) != 1 || strlen($fn) != 1) { - throw new InvalidArgumentException("wrapperSend2dCodeData: cn and fn must be one character each."); - } - $header = $this -> intLowHigh(strlen($data) + strlen($m) + 2, 2); - $this -> connector -> write(self::GS . "(k" . $header . $cn . $fn . $m . $data); - } - - /** - * Wrapper for GS ( L, to calculate and send correct data length. - * - * @param string $m Modifier/variant for function. Usually '0'. - * @param string $fn Function number to use, as character. - * @param string $data Data to send. - * @throws InvalidArgumentException Where the input lengths are bad. - */ - private function wrapperSendGraphicsData($m, $fn, $data = '') { - if(strlen($m) != 1 || strlen($fn) != 1) { - throw new InvalidArgumentException("wrapperSendGraphicsData: m and fn must be one character each."); - } - $header = $this -> intLowHigh(strlen($data) + 2, 2); - $this -> connector -> write(self::GS . "(L" . $header . $m . $fn . $data); - } - - /** - * Convert widths and heights to characters. Used before sending graphics to set the size. - * - * @param array $inputs - * @param boolean $long True to use 4 bytes, false to use 2 - * @return string - */ - private static function dataHeader(array $inputs, $long = true) { - $outp = array(); - foreach($inputs as $input) { - if($long) { - $outp[] = Escpos::intLowHigh($input, 2); - } else { - self::validateInteger($input, 0 , 255, __FUNCTION__); - $outp[] = chr($input); - } - } - return implode("", $outp); - } - - /** - * Generate two characters for a number: In lower and higher parts, or more parts as needed. - * @param int $int Input number - * @param int $length The number of bytes to output (1 - 4). - */ - private static function intLowHigh($input, $length) { - $maxInput = (256 << ($length * 8) - 1); - self::validateInteger($length, 1, 4, __FUNCTION__); - self::validateInteger($input, 0, $maxInput, __FUNCTION__); - $outp = ""; - for($i = 0; $i < $length; $i++) { - $outp .= chr($input % 256); - $input = (int)($input / 256); - } - return $outp; - } - - /** - * Throw an exception if the argument given is not a boolean - * - * @param boolean $test the input to test - * @param string $source the name of the function calling this - */ - protected static function validateBoolean($test, $source) { - if(!($test === true || $test === false)) { - throw new InvalidArgumentException("Argument to $source must be a boolean"); - } - } - - /** - * Throw an exception if the argument given is not an integer within the specified range - * - * @param int $test the input to test - * @param int $min the minimum allowable value (inclusive) - * @param int $max the maximum allowable value (inclusive) - * @param string $source the name of the function calling this - * @param string $argument the name of the invalid parameter - */ - protected static function validateInteger($test, $min, $max, $source, $argument = "Argument") { - self::validateIntegerMulti($test, array(array($min, $max)), $source, $argument); - } - - /** - * Throw an exception if the argument given is not an integer within one of the specified ranges - * - * @param int $test the input to test - * @param arrray $ranges array of two-item min/max ranges. - * @param string $source the name of the function calling this - * @param string $source the name of the function calling this - * @param string $argument the name of the invalid parameter - */ - protected static function validateIntegerMulti($test, array $ranges, $source, $argument = "Argument") { - if(!is_integer($test)) { - throw new InvalidArgumentException("$argument given to $source must be a number, but '$test' was given."); - } - $match = false; - foreach($ranges as $range) { - $match |= $test >= $range[0] && $test <= $range[1]; - } - if(!$match) { - // Put together a good error "range 1-2 or 4-6" - $rangeStr = "range "; - for($i = 0; $i < count($ranges); $i++) { - $rangeStr .= $ranges[$i][0] . "-" . $ranges[$i][1]; - if($i == count($ranges) - 1) { - continue; - } else if($i == count($ranges) - 2) { - $rangeStr .= " or "; - } else { - $rangeStr .= ", "; - } - } - throw new InvalidArgumentException("$argument given to $source must be in $rangeStr, but $test was given."); - } - } - - /** - * Throw an exception if the argument given can't be cast to a string - * - * @param string $test the input to test - * @param string $source the name of the function calling this - * @param string $argument the name of the invalid parameter - */ - protected static function validateString($test, $source, $argument = "Argument") { - if (is_object($test) && !method_exists($test, '__toString')) { - throw new InvalidArgumentException("$argument to $source must be a string"); - } - } - - protected static function validateStringRegex($test, $source, $regex, $argument = "Argument") { - if(preg_match($regex, $test) === 0) { - throw new InvalidArgumentException("$argument given to $source is invalid. It should match regex '$regex', but '$test' was given."); - } - } -} diff --git a/htdocs/includes/mike42/escpos-php/README.md b/htdocs/includes/mike42/escpos-php/README.md index 43798bb0852..065fdea3768 100644 --- a/htdocs/includes/mike42/escpos-php/README.md +++ b/htdocs/includes/mike42/escpos-php/README.md @@ -1,73 +1,10 @@ -ESC/POS Print Driver for PHP -============================ +# ESC/POS Print Driver for PHP + This project implements a subset of Epson's ESC/POS protocol for thermal receipt printers. It allows you to generate and print receipts with basic formatting, cutting, and barcodes on a compatible printer. The library was developed to add drop-in support for receipt printing to any PHP app, including web-based point-of-sale (POS) applications. -Basic usage ------------ -A "hello world" receipt can be generated easily (Call this `hello-world.php`): -```php - text("Hello World!\n"); -$printer -> cut(); -$printer -> close(); -``` -This would be printed as: -``` -# Networked printer -php hello-world.php | nc 10.x.x.x. 9100 -# Local printer -php hello-world.php > /dev/... -# Windows local printer -php hello-world.php > foo.txt -net use LPT1 \\server\printer -copy foo.txt LPT1 -del foo.txt -``` - -From your web app, you could pass the output directly to a socket if your printer is networked: -```php - text("Hello World!\n"); -$printer -> cut(); -$printer -> close(); -``` - -Or to a local printer: -```php - text("Hello World!\n"); -$printer -> cut(); -$printer -> close(); -``` - -### Basic workflow -The library should be initialised with a PrintConnector, which will pass on the data to your printer. -Use the table under "Compatibility", or the examples below to choose the appropriate connector for your -platform & interface. If no connector is specified, then standard output is used. - -When you have finished using the print object, call `close()` to finalize any data transfers. - -### Tips & examples -On Linux, your printer device file will be somewhere like `/dev/lp0` (parallel), `/dev/usb/lp1` (USB), `/dev/ttyUSB0` (USB-Serial), `/dev/ttyS0` (serial). - -On Windows, the device files will be along the lines of `LPT1` (parallel) or `COM1` (serial). Use the `WindowsPrintConnector` to tap into system printing on Windows (eg. [Windows USB](https://github.com/mike42/escpos-php/tree/master/example/interface/windows-usb.php), [SMB](https://github.com/mike42/escpos-php/tree/master/example/interface/smb.php) or [Windows LPT](https://github.com/mike42/escpos-php/tree/master/example/interface/windows-lpt.php)) - this submits print jobs via a queue rather than communicating directly with the printer. - -A complete real-world receipt can be found in the code of [Auth](https://github.com/mike42/Auth) in [ReceiptPrinter.php](https://github.com/mike42/Auth/blob/master/lib/misc/ReceiptPrinter.php). It includes justification, boldness, and a barcode. - -Other examples are located in the [example/](https://github.com/mike42/escpos-php/blob/master/example/) directory. - -Compatibility -------------- +## Compatibility ### Interfaces and operating systems This driver is known to work with the following OS/interface combinations: @@ -115,11 +52,19 @@ This driver is known to work with the following OS/interface combinations:
    No Yes
    CUPS hostedYesYesNo
    ### Printers Many thermal receipt printers support ESC/POS to some degree. This driver has been known to work with: +- Bixolon SRP-350III +- Citizen CBM1000-II - EPOS TEP 220M - Epson TM-T88III - Epson TM-T88IV @@ -129,9 +74,12 @@ Many thermal receipt printers support ESC/POS to some degree. This driver has be - Epson TM-T70II - Epson TM-U220 - Epson FX-890 (requires `feedForm()` to release paper). +- Excelvan HOP-E58 (connect through powered hub) - Okipos 80 Plus III - P-822D +- P85A-401 (make unknown) - SEYPOS PRP-300 (Also marketed as TYSSO PRP-300) +- Silicon SP-201 / RP80USE - Star TSP-650 - Star TUP-592 - Xprinter XP-Q800 @@ -139,16 +87,152 @@ Many thermal receipt printers support ESC/POS to some degree. This driver has be - Zijang ZJ-5870 - Zijang ZJ-5890T (Marketed as POS 5890T) -If you use any other printer with this code, please let me know so I can add it to the list. +If you use any other printer with this code, please [let us know](https://github.com/mike42/escpos-php/issues/new) so that it can be added to the list. -Available methods ------------------ +## Basic usage + +### Include the library + +#### Composer +If you are using composer, then add `mike42/escpos-php` as a dependency: + +```` +composer require mike42/escpos-php +```` + +In this case, you would include composer's auto-loader at the top of your source files: + +```` + text("Hello World!\n"); +$printer -> cut(); +$printer -> close(); +``` + +Some examples are below for common interfaces. + +Communicate with a printer with an Ethernet interface using `netcat`: +```` +php hello-world.php | nc 10.x.x.x. 9100 +```` + +A USB local printer connected with `usblp` on Linux has a device file (Includes USB-parallel interfaces): +```` +php hello-world.php > /dev/usb/lp0 +```` + +A computer installed into the local `cups` server is accessed through `lp` or `lpr`: +```` +php hello-world.php > foo.txt +lpr -o raw -H localhost -P printer foo.txt +```` + +A local or networked printer on a Windows computer is mapped in to a file, and generally requires you to share the printer first: + +```` +php hello-world.php > foo.txt +net use LPT1 \\server\printer +copy foo.txt LPT1 +del foo.txt +``` + +If you have troubles at this point, then you should consult your OS and printer system documentation to try to find a working print command. + +### Using a PrintConnector + +To print receipts from PHP, use the most applicable [PrintConnector](https://github.com/mike42/escpos-php/tree/master/src/Mike42/Escpos/PrintConnectors) for your setup. The connector simply provides the plumbing to get data to the printer. + +For example, a `NetworkPrintConnector` accepts an IP address and port: + +````php +use Mike42\Escpos\PrintConnectors\NetworkPrintConnector; +use Mike42\Escpos\Printer; +$connector = new NetworkPrintConnector("10.x.x.x", 9100); +$printer = new Printer($connector); +try { + // ... Print stuff +} finally { + $printer -> close(); +} +```` + +While a serial printer might use: +```php +use Mike42\Escpos\PrintConnectors\FilePrintConnector; +use Mike42\Escpos\Printer; +$connector = new FilePrintConnector("/dev/ttyS0"); +$printer = new Printer($connector); +``` + +For each OS/interface combination that's supported, there are examples in the compatibility section of how a `PrintConnector` would be constructed. If you can't get a `PrintConnector` to work, then be sure to include the working print command in bug. + +### Using a CapabilityProfile + +Support for commands and code pages varies between printer vendors and models. By default, the driver will accept UTF-8, and output commands that are suitable for Epson TM-series printers. + +When trying out a new brand of printer, it's a good idea to use the `SimpleCapabilityProfile`, which instructs the driver to avoid the use of advanced features (generally simpler image handling, ASCII-only text). + +```php +use Mike42\Escpos\PrintConnectors\FilePrintConnector; +use Mike42\Escpos\CapabilityProfiles\SimpleCapabilityProfile; +$connector = new WindowsPrintConnector("smb://computer/printer"); +$printer = new Printer($connector, $profile); +``` + +As another example, Star-branded printers use different commands: + +```php +use Mike42\Escpos\PrintConnectors\FilePrintConnector; +use Mike42\Escpos\CapabilityProfiles\StarCapabilityProfile; +$connector = new WindowsPrintConnector("smb://computer/printer"); +$printer = new Printer($connector, $profile); +``` + +Further developing this mechanism is a priority for future releases. + +### Tips & examples +On Linux, your printer device file will be somewhere like `/dev/lp0` (parallel), `/dev/usb/lp1` (USB), `/dev/ttyUSB0` (USB-Serial), `/dev/ttyS0` (serial). + +On Windows, the device files will be along the lines of `LPT1` (parallel) or `COM1` (serial). Use the `WindowsPrintConnector` to tap into system printing on Windows (eg. [Windows USB](https://github.com/mike42/escpos-php/tree/master/example/interface/windows-usb.php), [SMB](https://github.com/mike42/escpos-php/tree/master/example/interface/smb.php) or [Windows LPT](https://github.com/mike42/escpos-php/tree/master/example/interface/windows-lpt.php)) - this submits print jobs via a queue rather than communicating directly with the printer. + +A complete real-world receipt can be found in the code of [Auth](https://github.com/mike42/Auth) in [ReceiptPrinter.php](https://github.com/mike42/Auth/blob/master/lib/misc/ReceiptPrinter.php). It includes justification, boldness, and a barcode. + +Other examples are located in the [example/](https://github.com/mike42/escpos-php/blob/master/example/) directory. + +## Available methods ### __construct(PrintConnector $connector, AbstractCapabilityProfile $profile) Construct new print object. Parameters: -- `PrintConnector $connector`: The PrintConnector to send data to. If not set, output is sent to standard output. +- `PrintConnector $connector`: The PrintConnector to send data to. - `AbstractCapabilityProfile $profile` Supported features of this printer. If not set, the DefaultCapabilityProfile will be used, which is suitable for Epson printers. See [example/interface/]("https://github.com/mike42/escpos-php/tree/master/example/interface/) for ways to open connections for different platforms and interfaces. @@ -159,7 +243,7 @@ Print a barcode. Parameters: - `string $content`: The information to encode. -- `int $type`: The barcode standard to output. If not specified, `Escpos::BARCODE_CODE39` will be used. +- `int $type`: The barcode standard to output. If not specified, `Printer::BARCODE_CODE39` will be used. Currently supported barcode standards are (depending on your printer): @@ -181,7 +265,7 @@ Cut the paper. Parameters: -- `int $mode`: Cut mode, either `Escpos::CUT_FULL` or `Escpos::CUT_PARTIAL`. If not specified, `Escpos::CUT_FULL` will be used. +- `int $mode`: Cut mode, either `Printer::CUT_FULL` or `Printer::CUT_PARTIAL`. If not specified, `Printer::CUT_FULL` will be used. - `int $lines`: Number of lines to feed before cutting. If not specified, 3 will be used. ### feed($lines) @@ -225,7 +309,7 @@ $printer -> graphics($img); See the [example/](https://github.com/mike42/escpos-php/blob/master/example/) folder for detailed examples. -The function [bitImage()](#bitimageescposimage-image-size) takes the same parameters, and can be used if your printer doesn't support the newer graphics commands. +The function [bitImage()](#bitimageescposimage-image-size) takes the same parameters, and can be used if your printer doesn't support the newer graphics commands. As an additional fallback, the `bitImageColumnFormat()` function is also provided. ### initialize() Initialize printer. This resets formatting back to the defaults. @@ -243,16 +327,16 @@ Parameters: Print the given data as a QR code on the printer. - `string $content`: The content of the code. Numeric data will be more efficiently compacted. -- `int $ec` Error-correction level to use. One of `Escpos::QR_ECLEVEL_L` (default), `Escpos::QR_ECLEVEL_M`, `Escpos::QR_ECLEVEL_Q` or `Escpos::QR_ECLEVEL_H`. Higher error correction results in a less compact code. +- `int $ec` Error-correction level to use. One of `Printer::QR_ECLEVEL_L` (default), `Printer::QR_ECLEVEL_M`, `Printer::QR_ECLEVEL_Q` or `Printer::QR_ECLEVEL_H`. Higher error correction results in a less compact code. - `int $size`: Pixel size to use. Must be 1-16 (default 3) -- `int $model`: QR code model to use. Must be one of `Escpos::QR_MODEL_1`, `Escpos::QR_MODEL_2` (default) or `Escpos::QR_MICRO` (not supported by all printers). +- `int $model`: QR code model to use. Must be one of `Printer::QR_MODEL_1`, `Printer::QR_MODEL_2` (default) or `Printer::QR_MICRO` (not supported by all printers). ### selectPrintMode($mode) Select print mode(s). Parameters: -- `int $mode`: The mode to use. Default is `Escpos::MODE_FONT_A`, with no special formatting. This has a similar effect to running `initialize()`. +- `int $mode`: The mode to use. Default is `Printer::MODE_FONT_A`, with no special formatting. This has a similar effect to running `initialize()`. Several MODE_* constants can be OR'd together passed to this function's `$mode` argument. The valid modes are: @@ -270,6 +354,13 @@ Parameters: - `int $height`: Height in dots. If not specified, 8 will be used. +### setColor($color) +Select print color - on printers that support multiple colors. + +Parameters: + +- `int $color`: Color to use. Must be either `Printer::COLOR_1` (default), or `Printer::COLOR_2` + ### setDoubleStrike($on) Turn double-strike mode on/off. @@ -289,14 +380,14 @@ Select font. Most printers have two fonts (Fonts A and B), and some have a third Parameters: -- `int $font`: The font to use. Must be either `Escpos::FONT_A`, `Escpos::FONT_B`, or `Escpos::FONT_C`. +- `int $font`: The font to use. Must be either `Printer::FONT_A`, `Printer::FONT_B`, or `Printer::FONT_C`. ### setJustification($justification) Select justification. Parameters: -- `int $justification`: One of `Escpos::JUSTIFY_LEFT`, `Escpos::JUSTIFY_CENTER`, or `Escpos::JUSTIFY_RIGHT`. +- `int $justification`: One of `Printer::JUSTIFY_LEFT`, `Printer::JUSTIFY_CENTER`, or `Printer::JUSTIFY_RIGHT`. ### setReverseColors($on) Set black/white reverse mode on or off. In this mode, text is printed white on a black background. @@ -318,7 +409,7 @@ Set underline for printed text. Parameters: -- `int $underline`: Either `true`/`false`, or one of `Escpos::UNDERLINE_NONE`, `Escpos::UNDERLINE_SINGLE` or `Escpos::UNDERLINE_DOUBLE`. Defaults to `Escpos::UNDERLINE_SINGLE`. +- `int $underline`: Either `true`/`false`, or one of `Printer::UNDERLINE_NONE`, `Printer::UNDERLINE_SINGLE` or `Printer::UNDERLINE_DOUBLE`. Defaults to `Printer::UNDERLINE_SINGLE`. ### text($str) Add text to the buffer. Text should either be followed by a line-break, or `feed()` should be called after this. @@ -327,26 +418,46 @@ Parameters: - `string $str`: The string to print. -Further notes -------------- +# Further notes Posts I've written up for people who are learning how to use receipt printers: * [What is ESC/POS, and how do I use it?](http://mike.bitrevision.com/blog/what-is-escpos-and-how-do-i-use-it), which documents the output of test.php. * [Setting up an Epson receipt printer](http://mike.bitrevision.com/blog/2014-20-26-setting-up-an-epson-receipt-printer) * [Getting a USB receipt printer working on Linux](http://mike.bitrevision.com/blog/2015-03-getting-a-usb-receipt-printer-working-on-linux) -Other versions --------------- +# Development + +This code is MIT licensed, and you are encouraged to contribute any modifications back to the project. + +For development, it's suggested that you load `imagick` and `gd` `Xdebug` PHP modules, and install `composer` and `phpunit`. + +The tests are executed on [Travis CI](https://travis-ci.org/mike42/escpos-php) over versions of PHP from 5.3 up to 5.6, 7, and HHVM. Earlier versions of PHP are not supported. + +Fetch a copy of this code and load idependencies with composer: + + git clone https://github.com/mike42/escpos-php + cd escpos-php/ + composer install + +Execute unit tests via `phpunit`: + + phpunit --configuration test/phpunit.xml --coverage-text + +Pull requests and bug reports welcome. + + -Vendor documentation --------------------- + diff --git a/htdocs/includes/mike42/escpos-php/autoload.php b/htdocs/includes/mike42/escpos-php/autoload.php new file mode 100644 index 00000000000..7779486b824 --- /dev/null +++ b/htdocs/includes/mike42/escpos-php/autoload.php @@ -0,0 +1,26 @@ +setBarcodeHeight ( 40 ); - -/* Text position */ -$printer->selectPrintMode ( Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_DOUBLE_WIDTH ); -$printer->text ( "Text position\n" ); -$printer->selectPrintMode (); -$hri = array ( - Escpos::BARCODE_TEXT_NONE => "No text", - Escpos::BARCODE_TEXT_ABOVE => "Above", - Escpos::BARCODE_TEXT_BELOW => "Below", - Escpos::BARCODE_TEXT_ABOVE | Escpos::BARCODE_TEXT_BELOW => "Both" -); -foreach ( $hri as $position => $caption ) { - $printer->text ( $caption . "\n" ); - $printer->setBarcodeTextPosition ( $position ); - $printer->barcode ( "012345678901", Escpos::BARCODE_JAN13 ); - $printer->feed (); -} - -/* Barcode types */ -$standards = array ( - Escpos::BARCODE_UPCA => array ( - "title" => "UPC-A", - "caption" => "Fixed-length numeric product barcodes.", - "example" => array ( - array ( - "caption" => "12 char numeric including (wrong) check digit.", - "content" => "012345678901" - ), - array ( - "caption" => "Send 11 chars to add check digit automatically.", - "content" => "01234567890" - ) - ) - ), - Escpos::BARCODE_UPCE => array ( - "title" => "UPC-E", - "caption" => "Fixed-length numeric compact product barcodes.", - "example" => array ( - array ( - "caption" => "6 char numeric - auto check digit & NSC", - "content" => "123456" - ), - array ( - "caption" => "7 char numeric - auto check digit", - "content" => "0123456" - ), - array ( - "caption" => "8 char numeric", - "content" => "01234567" - ), - array ( - "caption" => "11 char numeric - auto check digit", - "content" => "01234567890" - ), - array ( - "caption" => "12 char numeric including (wrong) check digit", - "content" => "012345678901" - ) - ) - ), - Escpos::BARCODE_JAN13 => array ( - "title" => "JAN13/EAN13", - "caption" => "Fixed-length numeric barcodes.", - "example" => array ( - array ( - "caption" => "12 char numeric - auto check digit", - "content" => "012345678901" - ), - array ( - "caption" => "13 char numeric including (wrong) check digit", - "content" => "0123456789012" - ) - ) - ), - Escpos::BARCODE_JAN8 => array ( - "title" => "JAN8/EAN8", - "caption" => "Fixed-length numeric barcodes.", - "example" => array ( - array ( - "caption" => "7 char numeric - auto check digit", - "content" => "0123456" - ), - array ( - "caption" => "8 char numeric including (wrong) check digit", - "content" => "01234567" - ) - ) - ), - Escpos::BARCODE_CODE39 => array ( - "title" => "Code39", - "caption" => "Variable length alphanumeric w/ some special chars.", - "example" => array ( - array ( - "caption" => "Text, numbers, spaces", - "content" => "ABC 012" - ), - array ( - "caption" => "Special characters", - "content" => "$%+-./" - ), - array ( - "caption" => "Extra char (*) Used as start/stop", - "content" => "*TEXT*" - ) - ) - ), - Escpos::BARCODE_ITF => array ( - "title" => "ITF", - "caption" => "Variable length numeric w/even number of digits,\nas they are encoded in pairs.", - "example" => array ( - array ( - "caption" => "Numeric- even number of digits", - "content" => "0123456789" - ) - ) - ), - Escpos::BARCODE_CODABAR => array ( - "title" => "Codabar", - "caption" => "Varaible length numeric with some allowable\nextra characters. ABCD/abcd must be used as\nstart/stop characters (one at the start, one\nat the end) to distinguish between barcode\napplications.", - "example" => array ( - array ( - "caption" => "Numeric w/ A A start/stop. ", - "content" => "A012345A" - ), - array ( - "caption" => "Extra allowable characters", - "content" => "A012$+-./:A" - ) - ) - ), - Escpos::BARCODE_CODE93 => array ( - "title" => "Code93", - "caption" => "Variable length- any ASCII is available", - "example" => array ( - array ( - "caption" => "Text", - "content" => "012abcd" - ) - ) - ), - Escpos::BARCODE_CODE128 => array ( - "title" => "Code128", - "caption" => "Variable length- any ASCII is available", - "example" => array ( - array ( - "caption" => "Code set A uppercase & symbols", - "content" => "{A" . "012ABCD" - ), - array ( - "caption" => "Code set B general text", - "content" => "{B" . "012ABCDabcd" - ), - array ( - "caption" => "Code set C compact numbers\n Sending chr(21) chr(32) chr(43)", - "content" => "{C" . chr ( 21 ) . chr ( 32 ) . chr ( 43 ) - ) - ) - ) -); -$printer->setBarcodeTextPosition ( Escpos::BARCODE_TEXT_BELOW ); -foreach ( $standards as $type => $standard ) { - $printer->selectPrintMode ( Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_DOUBLE_WIDTH ); - $printer->text ( $standard ["title"] . "\n" ); - $printer->selectPrintMode (); - $printer->text ( $standard ["caption"] . "\n\n" ); - foreach ( $standard ["example"] as $id => $barcode ) { - $printer->setEmphasis ( true ); - $printer->text ( $barcode ["caption"] . "\n" ); - $printer->setEmphasis ( false ); - $printer->text ( "Content: " . $barcode ["content"] . "\n" ); - $printer->barcode ( $barcode ["content"], $type ); - $printer->feed (); - } -} -$printer->cut (); -$printer->close (); - diff --git a/htdocs/includes/mike42/escpos-php/example/bit-image.php b/htdocs/includes/mike42/escpos-php/example/bit-image.php deleted file mode 100644 index f3a4054d98f..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/bit-image.php +++ /dev/null @@ -1,32 +0,0 @@ - text("These example images are printed with the older\nbit image print command. You should only use\n\$p -> bitImage() if \$p -> graphics() does not\nwork on your printer.\n\n"); - - $printer -> bitImage($tux); - $printer -> text("Regular Tux (bit image).\n"); - $printer -> feed(); - - $printer -> bitImage($tux, Escpos::IMG_DOUBLE_WIDTH); - $printer -> text("Wide Tux (bit image).\n"); - $printer -> feed(); - - $printer -> bitImage($tux, Escpos::IMG_DOUBLE_HEIGHT); - $printer -> text("Tall Tux (bit image).\n"); - $printer -> feed(); - - $printer -> bitImage($tux, Escpos::IMG_DOUBLE_WIDTH | Escpos::IMG_DOUBLE_HEIGHT); - $printer -> text("Large Tux in correct proportion (bit image).\n"); -} catch(Exception $e) { - /* Images not supported on your PHP, or image file not found */ - $printer -> text($e -> getMessage() . "\n"); -} - -$printer -> cut(); -$printer -> close(); -?> diff --git a/htdocs/includes/mike42/escpos-php/example/character-encodings-with-images.php b/htdocs/includes/mike42/escpos-php/example/character-encodings-with-images.php deleted file mode 100644 index a98bdbc96ae..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/character-encodings-with-images.php +++ /dev/null @@ -1,59 +0,0 @@ - selectPrintMode(Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_EMPHASIZED | Escpos::MODE_DOUBLE_WIDTH); - $printer -> text("Implemented languages\n"); - $printer -> selectPrintMode(); - foreach($inputsOk as $label => $str) { - $printer -> setEmphasis(true); - $printer -> text($label . ":\n"); - $printer -> setEmphasis(false); - foreach($buffers as $buffer) { - $printer -> setPrintBuffer($buffer); - $printer -> text($str); - } - $printer -> setPrintBuffer($buffers[0]); - } - $printer -> feed(); - - $printer -> selectPrintMode(Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_EMPHASIZED | Escpos::MODE_DOUBLE_WIDTH); - $printer -> text("Works in progress\n"); - $printer -> selectPrintMode(); - foreach($inputsNotOk as $label => $str) { - $printer -> setEmphasis(true); - $printer -> text($label . ":\n"); - $printer -> setEmphasis(false); - foreach($buffers as $buffer) { - $printer -> setPrintBuffer($buffer); - $printer -> text($str); - } - $printer -> setPrintBuffer($buffers[0]); - } - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} - diff --git a/htdocs/includes/mike42/escpos-php/example/character-encodings.php b/htdocs/includes/mike42/escpos-php/example/character-encodings.php deleted file mode 100644 index 8a42ecd0847..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/character-encodings.php +++ /dev/null @@ -1,58 +0,0 @@ - selectPrintMode(Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_EMPHASIZED | Escpos::MODE_DOUBLE_WIDTH); - $printer -> text("Implemented languages\n"); - $printer -> selectPrintMode(); - foreach($inputsOk as $label => $str) { - $printer -> setEmphasis(true); - $printer -> text($label . ":\n"); - $printer -> setEmphasis(false); - $printer -> text($str); - } - $printer -> feed(); - - $printer -> selectPrintMode(Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_EMPHASIZED | Escpos::MODE_DOUBLE_WIDTH); - $printer -> text("Works in progress\n"); - $printer -> selectPrintMode(); - foreach($inputsNotOk as $label => $str) { - $printer -> setEmphasis(true); - $printer -> text($label . ":\n"); - $printer -> setEmphasis(false); - $printer -> text($str); - } - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} - diff --git a/htdocs/includes/mike42/escpos-php/example/character-tables.php b/htdocs/includes/mike42/escpos-php/example/character-tables.php deleted file mode 100644 index 1ce2c5c9f1e..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/character-tables.php +++ /dev/null @@ -1,71 +0,0 @@ - getSupportedCodePages(); -$first = true; // Print larger table for first code-page. -foreach($codePages as $table => $name) { - /* Change printer code page */ - $printer -> selectCharacterTable(255); - $printer -> selectCharacterTable($table); - /* Select & print a label for it */ - $label = $name; - if($name === false) { - $label= " (not matched to iconv table)"; - } - $printer -> setEmphasis(true); - $printer -> textRaw("Table $table: $label\n"); - $printer -> setEmphasis(false); - if($name === false && !$verbose) { - continue; // Skip non-recognised - } - /* Print a table of available characters (first table is larger than subsequent ones */ - if($first) { - $first = false; - compactCharTable($printer, 1, true); - } else { - compactCharTable($printer); - } -} -$printer -> cut(); -$printer -> close(); - -function compactCharTable($printer, $start = 4, $header = false) { - /* Output a compact character table for the current encoding */ - $chars = str_repeat(' ', 256); - for($i = 0; $i < 255; $i++) { - $chars[$i] = ($i > 32 && $i != 127) ? chr($i) : ' '; - } - if($header) { - $printer -> setEmphasis(true); - $printer -> textRaw(" 0123456789ABCDEF0123456789ABCDEF\n"); - $printer -> setEmphasis(false); - } - for($y = $start; $y < 8; $y++) { - $printer -> setEmphasis(true); - $printer -> textRaw(strtoupper(dechex($y * 2)) . " "); - $printer -> setEmphasis(false); - $printer -> textRaw(substr($chars, $y * 32, 32) . "\n"); - } -} diff --git a/htdocs/includes/mike42/escpos-php/example/demo.php b/htdocs/includes/mike42/escpos-php/example/demo.php deleted file mode 100644 index 1c99e5cc880..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/demo.php +++ /dev/null @@ -1,167 +0,0 @@ - - */ -require_once(dirname(__FILE__) . "/../Escpos.php"); -$printer = new Escpos(); - -/* Initialize */ -$printer -> initialize(); - -/* Text */ -$printer -> text("Hello world\n"); -$printer -> cut(); - -/* Line feeds */ -$printer -> text("ABC"); -$printer -> feed(7); -$printer -> text("DEF"); -$printer -> feedReverse(3); -$printer -> text("GHI"); -$printer -> feed(); -$printer -> cut(); - -/* Font modes */ -$modes = array( - Escpos::MODE_FONT_B, - Escpos::MODE_EMPHASIZED, - Escpos::MODE_DOUBLE_HEIGHT, - Escpos::MODE_DOUBLE_WIDTH, - Escpos::MODE_UNDERLINE); -for($i = 0; $i < pow(2, count($modes)); $i++) { - $bits = str_pad(decbin($i), count($modes), "0", STR_PAD_LEFT); - $mode = 0; - for($j = 0; $j < strlen($bits); $j++) { - if(substr($bits, $j, 1) == "1") { - $mode |= $modes[$j]; - } - } - $printer -> selectPrintMode($mode); - $printer -> text("ABCDEFGHIJabcdefghijk\n"); -} -$printer -> selectPrintMode(); // Reset -$printer -> cut(); - -/* Underline */ -for($i = 0; $i < 3; $i++) { - $printer -> setUnderline($i); - $printer -> text("The quick brown fox jumps over the lazy dog\n"); -} -$printer -> setUnderline(0); // Reset -$printer -> cut(); - -/* Cuts */ -$printer -> text("Partial cut\n(not available on all printers)\n"); -$printer -> cut(Escpos::CUT_PARTIAL); -$printer -> text("Full cut\n"); -$printer -> cut(Escpos::CUT_FULL); - -/* Emphasis */ -for($i = 0; $i < 2; $i++) { - $printer -> setEmphasis($i == 1); - $printer -> text("The quick brown fox jumps over the lazy dog\n"); -} -$printer -> setEmphasis(false); // Reset -$printer -> cut(); - -/* Double-strike (looks basically the same as emphasis) */ -for($i = 0; $i < 2; $i++) { - $printer -> setDoubleStrike($i == 1); - $printer -> text("The quick brown fox jumps over the lazy dog\n"); -} -$printer -> setDoubleStrike(false); -$printer -> cut(); - -/* Fonts (many printers do not have a 'Font C') */ -$fonts = array( - Escpos::FONT_A, - Escpos::FONT_B, - Escpos::FONT_C); -for($i = 0; $i < count($fonts); $i++) { - $printer -> setFont($fonts[$i]); - $printer -> text("The quick brown fox jumps over the lazy dog\n"); -} -$printer -> setFont(); // Reset -$printer -> cut(); - -/* Justification */ -$justification = array( - Escpos::JUSTIFY_LEFT, - Escpos::JUSTIFY_CENTER, - Escpos::JUSTIFY_RIGHT); -for($i = 0; $i < count($justification); $i++) { - $printer -> setJustification($justification[$i]); - $printer -> text("A man a plan a canal panama\n"); -} -$printer -> setJustification(); // Reset -$printer -> cut(); - -/* Barcodes - see barcode.php for more detail */ -$printer -> setBarcodeHeight(80); -$printer->setBarcodeTextPosition ( Escpos::BARCODE_TEXT_BELOW ); -$printer -> barcode("9876"); -$printer -> feed(); -$printer -> cut(); - -/* Graphics - this demo will not work on some non-Epson printers */ -try { - $logo = new EscposImage("resources/escpos-php.png"); - $imgModes = array( - Escpos::IMG_DEFAULT, - Escpos::IMG_DOUBLE_WIDTH, - Escpos::IMG_DOUBLE_HEIGHT, - Escpos::IMG_DOUBLE_WIDTH | Escpos::IMG_DOUBLE_HEIGHT - ); - foreach($imgModes as $mode) { - $printer -> graphics($logo, $mode); - } -} catch(Exception $e) { - /* Images not supported on your PHP, or image file not found */ - $printer -> text($e -> getMessage() . "\n"); -} -$printer -> cut(); - -/* Bit image */ -try { - $logo = new EscposImage("resources/escpos-php.png"); - $imgModes = array( - Escpos::IMG_DEFAULT, - Escpos::IMG_DOUBLE_WIDTH, - Escpos::IMG_DOUBLE_HEIGHT, - Escpos::IMG_DOUBLE_WIDTH | Escpos::IMG_DOUBLE_HEIGHT - ); - foreach($imgModes as $mode) { - $printer -> bitImage($logo, $mode); - } -} catch(Exception $e) { - /* Images not supported on your PHP, or image file not found */ - $printer -> text($e -> getMessage() . "\n"); -} -$printer -> cut(); - -/* QR Code - see also the more in-depth demo at qr-code.php */ -$testStr = "Testing 123"; -$models = array( - Escpos::QR_MODEL_1 => "QR Model 1", - Escpos::QR_MODEL_2 => "QR Model 2 (default)", - Escpos::QR_MICRO => "Micro QR code\n(not supported on all printers)"); -foreach($models as $model => $name) { - $printer -> qrCode($testStr, Escpos::QR_ECLEVEL_L, 3, $model); - $printer -> text("$name\n"); - $printer -> feed(); -} -$printer -> cut(); - -/* Pulse */ -$printer -> pulse(); - -/* Always close the printer! On some PrintConnectors, no actual - * data is sent until the printer is closed. */ -$printer -> close(); -?> diff --git a/htdocs/includes/mike42/escpos-php/example/graphics.php b/htdocs/includes/mike42/escpos-php/example/graphics.php deleted file mode 100644 index 7650b6b9a08..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/graphics.php +++ /dev/null @@ -1,32 +0,0 @@ - graphics($tux); - $printer -> text("Regular Tux.\n"); - $printer -> feed(); - - $printer -> graphics($tux, Escpos::IMG_DOUBLE_WIDTH); - $printer -> text("Wide Tux.\n"); - $printer -> feed(); - - $printer -> graphics($tux, Escpos::IMG_DOUBLE_HEIGHT); - $printer -> text("Tall Tux.\n"); - $printer -> feed(); - - $printer -> graphics($tux, Escpos::IMG_DOUBLE_WIDTH | Escpos::IMG_DOUBLE_HEIGHT); - $printer -> text("Large Tux in correct proportion.\n"); - - $printer -> cut(); -} catch(Exception $e) { - /* Images not supported on your PHP, or image file not found */ - $printer -> text($e -> getMessage() . "\n"); -} - -$printer -> close(); -?> diff --git a/htdocs/includes/mike42/escpos-php/example/interface/README.md b/htdocs/includes/mike42/escpos-php/example/interface/README.md deleted file mode 100644 index 96fe2eed2fb..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Interfaces ----------- -This directory contains boilerpalte code to show you how to open a print connector -to printers which are connected in different ways. - -To get a list of supported interfaces and operating systems, see the main README.md file for the project. - -If you have a printer interface with no example, and you want to help put one together, then please lodge a request on the bug tracker: https://github.com/mike42/escpos-php/issues diff --git a/htdocs/includes/mike42/escpos-php/example/interface/ethernet.php b/htdocs/includes/mike42/escpos-php/example/interface/ethernet.php deleted file mode 100644 index bfea443903c..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/ethernet.php +++ /dev/null @@ -1,22 +0,0 @@ - text("Hello World!\n"); - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} - diff --git a/htdocs/includes/mike42/escpos-php/example/interface/linux-usb.php b/htdocs/includes/mike42/escpos-php/example/interface/linux-usb.php deleted file mode 100644 index 9e1d96b91c0..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/linux-usb.php +++ /dev/null @@ -1,33 +0,0 @@ - text("Hello World!\n"); - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} - diff --git a/htdocs/includes/mike42/escpos-php/example/interface/smb.php b/htdocs/includes/mike42/escpos-php/example/interface/smb.php deleted file mode 100644 index 40988f553ee..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/smb.php +++ /dev/null @@ -1,51 +0,0 @@ - testfile - * ## If you need authentication, use "net use" to hook up the printer: - * # net use "\\computername\Receipt Printer" /user:Guest - * # net use "\\computername\Receipt Printer" /user:Bob secret - * # net use "\\computername\Receipt Printer" /user:workgroup\Bob secret - * copy testfile "\\computername\Receipt Printer" - * del testfile - * - * GNU/Linux: - * # No authentication - * echo "Hello World" | smbclient "//computername/Receipt Printer" -c "print -" -N - * # Guest login - * echo "Hello World" | smbclient "//computername/Receipt Printer" -U Guest -c "print -" -N - * # Basic username/password - * echo "Hello World" | smbclient "//computername/Receipt Printer" secret -U "Bob" -c "print -" - * # Including domain name - * echo "Hello World" | smbclient "//computername/Receipt Printer" secret -U "workgroup\\Bob" -c "print -" - */ -try { - // Enter the share name for your printer here, as a smb:// url format - $connector = null; - //$connector = new WindowsPrintConnector("smb://computername/Receipt Printer"); - //$connector = new WindowsPrintConnector("smb://Guest@computername/Receipt Printer"); - //$connector = new WindowsPrintConnector("smb://FooUser:secret@computername/workgroup/Receipt Printer"); - //$connector = new WindowsPrintConnector("smb://User:secret@computername/Receipt Printer"); - - /* Print a "Hello world" receipt" */ - $printer = new Escpos($connector); - $printer -> text("Hello World!\n"); - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} diff --git a/htdocs/includes/mike42/escpos-php/example/interface/windows-lpt.php b/htdocs/includes/mike42/escpos-php/example/interface/windows-lpt.php deleted file mode 100644 index 76294425cdc..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/windows-lpt.php +++ /dev/null @@ -1,30 +0,0 @@ - LPT1 - */ -try { - $connector = null; - //$connector = new WindowsPrintConnector("LPT1"); - - // A FilePrintConnector will also work, but on non-Windows systems, writes - // to an actual file called 'LPT1' rather than giving a useful error. - // $connector = new FilePrintConnector("LPT1"); - - /* Print a "Hello world" receipt" */ - $printer = new Escpos($connector); - $printer -> text("Hello World!\n"); - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} diff --git a/htdocs/includes/mike42/escpos-php/example/interface/windows-usb.php b/htdocs/includes/mike42/escpos-php/example/interface/windows-usb.php deleted file mode 100644 index d4b550e2f93..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/interface/windows-usb.php +++ /dev/null @@ -1,32 +0,0 @@ - testfile - * copy testfile "\\%COMPUTERNAME%\Receipt Printer" - * del testfile - */ -try { - // Enter the share name for your USB printer here - $connector = null; - //$connector = new WindowsPrintConnector("Receipt Printer"); - - /* Print a "Hello world" receipt" */ - $printer = new Escpos($connector); - $printer -> text("Hello World!\n"); - $printer -> cut(); - - /* Close printer */ - $printer -> close(); -} catch(Exception $e) { - echo "Couldn't print to this printer: " . $e -> getMessage() . "\n"; -} diff --git a/htdocs/includes/mike42/escpos-php/example/print-from-html.php b/htdocs/includes/mike42/escpos-php/example/print-from-html.php deleted file mode 100644 index f0751d7a4ae..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/print-from-html.php +++ /dev/null @@ -1,53 +0,0 @@ - 225 below) and printing w/ Escpos::IMG_DOUBLE_WIDTH | Escpos::IMG_DOUBLE_HEIGHT - */ -try { - /* Set up command */ - $source = "http://en.m.wikipedia.org/wiki/ESC/P"; - $width = 550; - $dest = tempnam(sys_get_temp_dir(), 'escpos') . ".png"; - $cmd = sprintf("wkhtmltoimage -n -q --width %s %s %s", - escapeshellarg($width), - escapeshellarg($source), - escapeshellarg($dest)); - - /* Run wkhtmltoimage */ - ob_start(); - system($cmd); // Can also use popen() for better control of process - $outp = ob_get_contents(); - ob_end_clean(); - if(!file_exists($dest)) { - throw new Exception("Command $cmd failed: $outp"); - } - - /* Load up the image */ - try { - $img = new EscposImage($dest); - } catch(Exception $e) { - unlink($dest); - throw $e; - } - unlink($dest); - - /* Print it */ - $printer = new Escpos(); // Add connector for your printer here. - $printer -> bitImage($img); // bitImage() seems to allow larger images than graphics() on the TM-T20. - $printer -> cut(); - $printer -> close(); -} catch(Exception $e) { - echo $e -> getMessage(); -} - diff --git a/htdocs/includes/mike42/escpos-php/example/print-from-pdf.php b/htdocs/includes/mike42/escpos-php/example/print-from-pdf.php deleted file mode 100644 index ba6a4c67a96..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/print-from-pdf.php +++ /dev/null @@ -1,71 +0,0 @@ - graphics($page); - } - $printer -> cut(); - $printer -> close(); -} catch(Exception $e) { - /* - * loadPdf() throws exceptions if files or not found, or you don't have the - * imagick extension to read PDF's - */ - echo $e -> getMessage() . "\n"; - exit(0); -} - - -/* - * 2: Speed up printing by roughly halving the resolution, and printing double-size. - * This gives a 75% speed increase at the expense of some quality. - * - * Reduce the page width further if necessary: if it extends past the printing area, your prints will be very slow. - */ -$printer = new Escpos(); -$pdf = 'resources/document.pdf'; -$pages = EscposImage::loadPdf($pdf, 260); -foreach($pages as $page) { - $printer -> graphics($page, Escpos::IMG_DOUBLE_HEIGHT | Escpos::IMG_DOUBLE_WIDTH); -} -$printer -> cut(); -$printer -> close(); - -/* - * 3: PDF printing still too slow? If you regularly print the same files, serialize & compress your - * EscposImage objects (after printing[1]), instead of throwing them away. - * - * (You can also do this to print logos on computers which don't have an - * image processing library, by preparing a serialized version of your logo on your PC) - * - * [1]After printing, the pixels are loaded and formatted for the print command you used, so even a raspberry pi can print complex PDF's quickly. - */ -$printer = new Escpos(); -$pdf = 'resources/document.pdf'; -$ser = 'resources/document.z'; -if(!file_exists($ser)) { - $pages = EscposImage::loadPdf($pdf); -} else { - $pages = unserialize(gzuncompress(file_get_contents($ser))); -} - -foreach($pages as $page) { - $printer -> graphics($page); -} -$printer -> cut(); -$printer -> close(); - -if(!file_exists($ser)) { - file_put_contents($ser, gzcompress(serialize($pages))); -} diff --git a/htdocs/includes/mike42/escpos-php/example/qr-code.php b/htdocs/includes/mike42/escpos-php/example/qr-code.php deleted file mode 100644 index dbf21aaedf4..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/qr-code.php +++ /dev/null @@ -1,81 +0,0 @@ - qrCode($testStr); -$printer -> text("Most simple example\n"); -$printer -> feed(); - -// Demo that alignment is the same as text -$printer -> setJustification(Escpos::JUSTIFY_CENTER); -$printer -> qrCode($testStr); -$printer -> text("Same example, centred\n"); -$printer -> setJustification(); -$printer -> feed(); - -// Demo of numeric data being packed more densly -title($printer, "Data encoding\n"); -$test = array( - "Numeric" => "0123456789012345678901234567890123456789", - "Alphanumeric" => "abcdefghijklmnopqrstuvwxyzabcdefghijklmn", - "Binary" => str_repeat("\0", 40)); -foreach($test as $type => $data) { - $printer -> qrCode($data); - $printer -> text("$type\n"); - $printer -> feed(); -} - -// Demo of error correction -title($printer, "Error correction\n"); -$ec = array( - Escpos::QR_ECLEVEL_L => "L", - Escpos::QR_ECLEVEL_M => "M", - Escpos::QR_ECLEVEL_Q => "Q", - Escpos::QR_ECLEVEL_H => "H"); -foreach($ec as $level => $name) { - $printer -> qrCode($testStr, $level); - $printer -> text("Error correction $name\n"); - $printer -> feed(); -} - -// Change size -title($printer, "Pixel size\n"); -$sizes = array( - 1 => "(minimum)", - 2 => "", - 3 => "(default)", - 4 => "", - 5 => "", - 10 => "", - 16 => "(maximum)"); -foreach($sizes as $size => $label) { - $printer -> qrCode($testStr, Escpos::QR_ECLEVEL_L, $size); - $printer -> text("Pixel size $size $label\n"); - $printer -> feed(); -} - -// Change model -title($printer, "QR model\n"); -$models = array( - Escpos::QR_MODEL_1 => "QR Model 1", - Escpos::QR_MODEL_2 => "QR Model 2 (default)", - Escpos::QR_MICRO => "Micro QR code\n(not supported on all printers)"); -foreach($models as $model => $name) { - $printer -> qrCode($testStr, Escpos::QR_ECLEVEL_L, 3, $model); - $printer -> text("$name\n"); - $printer -> feed(); -} - -// Cut & close -$printer -> cut(); -$printer -> close(); - -function title(Escpos $printer, $str) { - $printer -> selectPrintMode(Escpos::MODE_DOUBLE_HEIGHT | Escpos::MODE_DOUBLE_WIDTH); - $printer -> text($str); - $printer -> selectPrintMode(); -} diff --git a/htdocs/includes/mike42/escpos-php/example/receipt-with-logo.php b/htdocs/includes/mike42/escpos-php/example/receipt-with-logo.php deleted file mode 100644 index 8322c09c750..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/receipt-with-logo.php +++ /dev/null @@ -1,96 +0,0 @@ - setJustification(Escpos::JUSTIFY_CENTER); -$printer -> graphics($logo); - -/* Name of shop */ -$printer -> selectPrintMode(Escpos::MODE_DOUBLE_WIDTH); -$printer -> text("ExampleMart Ltd.\n"); -$printer -> selectPrintMode(); -$printer -> text("Shop No. 42.\n"); -$printer -> feed(); - -/* Title of receipt */ -$printer -> setEmphasis(true); -$printer -> text("SALES INVOICE\n"); -$printer -> setEmphasis(false); - -/* Items */ -$printer -> setJustification(Escpos::JUSTIFY_LEFT); -$printer -> setEmphasis(true); -$printer -> text(new item('', '$')); -$printer -> setEmphasis(false); -foreach($items as $item) { - $printer -> text($item); -} -$printer -> setEmphasis(true); -$printer -> text($subtotal); -$printer -> setEmphasis(false); -$printer -> feed(); - -/* Tax and total */ -$printer -> text($tax); -$printer -> selectPrintMode(Escpos::MODE_DOUBLE_WIDTH); -$printer -> text($total); -$printer -> selectPrintMode(); - -/* Footer */ -$printer -> feed(2); -$printer -> setJustification(Escpos::JUSTIFY_CENTER); -$printer -> text("Thank you for shopping at ExampleMart\n"); -$printer -> text("For trading hours, please visit example.com\n"); -$printer -> feed(2); -$printer -> text($date . "\n"); - -/* Cut the receipt and open the cash drawer */ -$printer -> cut(); -$printer -> pulse(); - -$printer -> close(); - -/* A wrapper to do organise item names & prices into columns */ -class item { - private $name; - private $price; - private $dollarSign; - - public function __construct($name = '', $price = '', $dollarSign = false) { - $this -> name = $name; - $this -> price = $price; - $this -> dollarSign = $dollarSign; - } - - public function __toString() { - $rightCols = 10; - $leftCols = 38; - if($this -> dollarSign) { - $leftCols = $leftCols / 2 - $rightCols / 2; - } - $left = str_pad($this -> name, $leftCols) ; - - $sign = ($this -> dollarSign ? '$ ' : ''); - $right = str_pad($sign . $this -> price, $rightCols, ' ', STR_PAD_LEFT); - return "$left$right\n"; - } -} -?> diff --git a/htdocs/includes/mike42/escpos-php/example/resources/character-encoding-test-strings.inc b/htdocs/includes/mike42/escpos-php/example/resources/character-encoding-test-strings.inc deleted file mode 100644 index caca76c4479..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/resources/character-encoding-test-strings.inc +++ /dev/null @@ -1,35 +0,0 @@ - "Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther spillede på xylofon.\n", - "German" => "Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.\n", - "Greek" => "Ξεσκεπάζω την ψυχοφθόρα βδελυγμία\n", - "English" => "The quick brown fox jumps over the lazy dog.\n", - "Spanish" => "El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.\n", - "French" => "Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en canoë au delà des îles, près du mälström où brûlent les novæ.\n", - "Irish Gaelic" => "D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh.\n", - "Hungarian" => "Árvíztűrő tükörfúrógép.\n", - "Icelandic" => "Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa.\n", - "Latvian" => "Glāžšķūņa rūķīši dzērumā čiepj Baha koncertflīģeļu vākus.\n", - "Polish" => "Pchnąć w tę łódź jeża lub ośm skrzyń fig.\n", - "Russian" => "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!\n", - "Turkish" => "Pijamalı hasta, yağız şoföre çabucak güvendi.\n", - "Japanese (Katakana half-width)" => implode("\n", array("イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム", "ウイノオクヤマ ケフコエテ アサキユメミシ エヒモセスン")) . "\n" - ); - -/* - * These strings are not expected to print correctly, if at all, even on an Epson printer. This is due to a mix of - * escpos driver, printer, and PHP language support issues. - * - * They are included here as a collection of things not yet implemented. - */ -$inputsNotOk = array( - "Thai (No character encoder available)" => "นายสังฆภัณฑ์ เฮงพิทักษ์ฝั่ง ผู้เฒ่าซึ่งมีอาชีพเป็นฅนขายฃวด ถูกตำรวจปฏิบัติการจับฟ้องศาล ฐานลักนาฬิกาคุณหญิงฉัตรชฎา ฌานสมาธิ\n", - "Japanese (Hiragana)" => implode("\n", array("いろはにほへとちりぬるを", " わかよたれそつねならむ", "うゐのおくやまけふこえて", "あさきゆめみしゑひもせす")) . "\n", - "Japanese (Katakana full-width)" => implode("\n", array("イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム", "ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン")) . "\n", - "Arabic (RTL not supported, encoding issues)" => "صِف خَلقَ خَودِ كَمِثلِ الشَمسِ إِذ بَزَغَت — يَحظى الضَجيعُ بِها نَجلاءَ مِعطارِ" . "\n", - "Hebrew (RTL not supported, line break issues)" => "דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה" . "\n" - ); - diff --git a/htdocs/includes/mike42/escpos-php/example/resources/document.odt b/htdocs/includes/mike42/escpos-php/example/resources/document.odt deleted file mode 100644 index 4bbd7f98b654dd1f8086589f22bfb9ed7ecb4c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39751 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%0DXC4u*ZB5o$LxKAV8c6QUjWTfwW z?LKEk&ks{KUHSrY^YP{6$Zol0uH%^GpI>B&s zgB!I-pTCXf56q5lT5sUsf3D>)IJ?EzDpfLeq-@2KoSp=Kkkg(LIU>bwBsiT;zT*A!nGPS%od zo4U|m34wv+RmlTYrpj^9r=laX|N4?Qrb1U-h$2HvSOP4u>i)rLO$o6`ULsC zBE`Ig$8ElBDVgOzkNeBP(PqG%`Rg!H^XVB`u8{c6GLJqhJ~Ku4l!c^@ayEUR)M3ux zNqE5;1+#)*wn%bL`U9@3PWqj8wQ3I{N_7T81k6(&&=fh2E}T)gar1TG2C4i9Q9+d^ z_?Vg2yLzrIk8H(weY=d$4v&!j-)UeW|FF$j7I0Jy-wQ@p{vx(y%N6>N;=TNMQAuF6 zj;M}~%RaFs>J_uc8y^znA#WW1GaPc*xiU*Avn0#7{7+%BnZitMI^Ii&^i=L4ValD# zDUYo7P?-D+=OLNmRN#t6pb3ZEPW8n!wP+eURg7NCD@%Pcg@iXrC+| z;NK$IlyaM{INdq7F0`oXx%JYYwIb#t=XAoz4?~>%9Of4-B4O^Dex#7p66@lq*oAjm zI0y&5G5Q*G#4-Sm?#&*93EEgF81)KKDq2N76H-cZJUTsC3#cdU~PGy}S$>?8bQ zQzGUCGY=d3zas)s??Gp{9TYGd?k4+H5eZN;vXUDf*}i!hn&0JqonHsG#8)}h2WoCG zFH5qmd25d@(VgHmQTZJ9=n|)zOp`Ntto-g}lM;%FdXt$>+)5g;QJXhJNsBNm=zNo{ zOV1OB>kT6$S6cHIQ?E6XG%t@uX{nY7pGbjMDq&6(9(^l1+ESZ0@F$xYx=#~IVVz&` zuB2?1=tN3;7JnV_9r~tbYf(&y<2BINlS})K1Pr&MDJ%^8V$f^K@(7rhwb8vbq+opv z7%j|q)|(tmIj?&LAQjCh3RogCnPIuH5hZ#1eU^qo*+;a`6kwklQaUKh{`zcj^qme@w@BbfrxLn@~33i{b-$ z+uP9$_`^Z+dlqgb0o>tk{qYY+Mt6&{4re5Olp}{E%)GlHcr{cl>U*^%tZf5BQ`(;P zd;XIV&cn8=KG`&8FnPC_U0^v5->UGsA2Y}Ye@?kP_UfeH2MzzHEb?MYBK0FM zSy_-CdPzZDMib?c{rE5qvBL<6{8?ABU0{s%a6tD*uBsx~dk;u5E@5~?tm4RhW}1cO zpgkJsP=YCuj3c*?Ah!nvYl;O{%fc>i{UNDB%$1xg84`0<(k7yng-^=YgnuDsvrngt zKPX+Jfux;@K?EJ+FCfcs@eZ^=#+U5+AWMBBeEp*2?Q59CL)m+X9q~FuWXwByScpsb zJ#n+!Sc{J!BNtA+porLnMAICU za$aOuZqbhcyh@>|&ry#7luF7lw`PQKVHrZ2hgLiTX%(jav1ImN)`zKpGVFSC9S&6t4)jQ^g5CMY+T2-@$82NIWZi;ctY6Erq9!NdQJ+%Bn*{GB z%-brin8JVo{r~s%kpI16%l8;kEYGV12)7}k8Eh~h2!QBXL_b){-747Fi&vNL%n%6m*C(qP_vn|rP09}wV#hY zH>E4*G+c1qSZe$8!ct^&ei^8RU2VL~JA z&Jyu08DwhG3Gb)a(HXubNLhs2O{|vdhgvIJ3G`A^;CMe9W1Mv>gE@U- zam|uYvmoM>h^hhj-al*F#8MdW<(@C)VaBTwx8ARLO1q0qy_KyjNt;qO89&CPv$0_} zCZeSS{tt7UjY|e%e`3~nKQ+;?RrK%@CEJMSD1Y9VwaF-#9%!=pM(wD?{YAdzrtbf2 zt<8l04Z{a>L0d@+_E2XGr@T3Q`mDg}RWIv19UlwL%mdw)74HGk^o@Php?Lai_NSz6 z9hvBYAu?UI!8c2ZFSZZV+jGGoX8tap;&p{gn97jgU-A50UyghgSjEMJ$rD2_DUDP{ z6KA*Ms7Gdgxn;BRTyt;6iAG1s9D2kovKuKTvVE5O+9|Ot=ZG^lQ&v`57PCoXcO7X& zWhHC(Sq`pKQ*$4^Pj))3Ejit_Q_B`;p*JhbD=lk%saHQj?-TW>B%)xnaBWsUK=0G3 zOIJ)zKXi?=pCb3K(Wf?`V5D>{v!5pKm3^c6Nx?Yenq)sp-mB}FlAoMT#;de^h;Bsw z_p{SyxuV!~4aG+e8xy~sLn&OlUP22wM00z^R-CZ}2VdFY{mqsGS5?2817UNE_=hFe z@KSkqf==oR-P3)6&p8k2u6By8T%$wtlY{MvIc03pFI1hX(el1g`t*9PgHB0yWrKsb zV`)va(!OPz3{wie?43Lnx=XG#EgV-iz+oIj)+c=}jT1Dq8nxvgsnM>}^vL-ls@bX! z{>^oMR;y#DBSKF>Sz$4yOK;J#gdnPWq-+PyrH4`U)jUGQO`Dd}WC>Pq4Fj5^ zEdcZ1R*hk~Moc3LEpv?;S;yr0{SOhVR>uw$XFMI51UBkg|3OE$jX)5&HHZl7TgAW~uyKH#a zHJ^W$=i!g(*6iO7K5)4vEQar{44cgF6E(8@$kqlr zrd${4zDIvhF4N|^gkS}>?W9ZwZ`NY>+74R$>(jT|q`!WV9#Mpt`Z|nu%@*K~;AL2D z#?03AvC7&jT3*h?R!yl^gu(XoQ}Zg!KB;MVyVi7FZo5~?LQVNLgu#erV4*7)SF_v^ zsH^+n&?pvH zdtefNWvIHW`*F#ZEaK8f8QgqU&KPG|V}&;^_t|#H`i@Q9o3CRU(>!WQ6CJ#@k4Ee! zw~4q5i$~CFt$3tN?7rmMylmMikP8+vTdhHpu~Cbi0zP!+ z;Qm&PHL9J{YRVLR^T4`ipfm3pKc&m*>dB+WXpWQ;GE$S$g-Re-J9~=04%Kz#s0@Bj z_aJLhjz=637PTsLQU@=QHOVU?jR;F~7iu{#umQ)$nU)ubkRPRHr;w}p8W=A?tX{)p z2hM2xWzU)SGsu+~q1q!v9q=dVWT;(YxQEqs^VDCC9@8vvAypn`6m4Zni6c{`Z&NnIX)&W=kv$ITULp$6>cLYA{b%yX4ZZD6hcLAEMnVMIQ(;S9_99|G^q$HG-uKpT8-EdSmgKPWBd%CtqUu%Sumj7^BNQ4agH=0KG)F9I zdK7#KF5qig`4np=8N(xWGbVl?OFExqypYF%0{sOL!J;U?|1gsx7{OA@AsN0{BDIj##g7O^!tI^ z>H`Mx!7ka-hWyY~Xx4>DjbM(13wzdN2Wv_+Yeo@by#@bLLvi1o2*w>G5B5$#aZzmPar`T z@u7l2Pd8k_$|(_=pdRlb>t}aGFv#apY)coy-6Wa!wi7smMz^Pm0=VsfW1W7_s=XH7 zm7Fc(^vu5Z&E?dyplP=COY%Z@r#*mO$gg*^h4H{0{O0%~5I;uVi<{7lCz@H{@YM}@ zUR`Tx=47Z#03APyCh8(rjAYBI7%z+l*MK+6;4yN9Y>#bdAxq_Kxa=uFDE(PqyX`+jqY7N)^uWqeRRts?Cs#2lPL`1gPZPMIo^b~ z+8q_4Y5Lww*0V9&x8X^F(|6Q+3nI)+(Y-kF3YzHR|M#bC9sQ;NrPU zYP*X&IXD1}YLK|Ag^9a`IjN_OyEUowX9Z=gAQW6+Bg%gpnFCFHX8+j&1Yppdj4bSo ztQ_jBTzs6|d~B@rtgL)2EGS#17yrWt9GuK;EWQ8h4+Mm)s{$YR-(Z&`09(1ad)r(5 zhemg<_cLLm13lo6k;$>MUkc;e7HZd;AeL6CAZaI#!o{PAT0k}!pA zdiS^^mo;urg#IL+Yk1!yne=2=LA<1pcc~bg;TFsl2Le@#yw~{nxxwYe(cfPVmkX~2 zTUQKb@CFqEYq%}yMd}r~#O1|ygFDUH4Vx_Qttx^EhZUs^`xguHuNqSl*ihMtsk$p8O^F!edFe?m zg7Z|De7N`tQ5Jrfjt_mosn@K@DqlvR<}_->?L3rC!JDE*NNM)MpCNP-#m1{4xqhNc zdo~pxvbK&Sv(ijU*q9@}>L3cFT0>`D=jL$R=#Fvk_QtIeZYQE(JA83_t=Dc>?!X2DQX*@`tp z8A=+J1W)h{XS-`I+05n+BJL%1=?LY$#NT9)xP&uhqm6sleEYA02JrbAm+@;ixQF zx)=_iLe8pKvwVa9uga|hs;O*?h7ynxr6WjFKu}7g2?R1!=}K=ZC4-b`5?VqNMT&qR zNC$zT7eVPDNEHN?UR4z7U}(~dAjnTb(*)bPqvdtxcqN32)3m$J1=4P}@~*c$6UUm(9ixa)O?oXLf#%2T zj>M&`Cln~yXzG;(bwhm&Sup}`l)cWhxffe=Odje9hPd@_NRCILA&RL)b)(VB1t*NE zY*cGHT}omZEcv^0FIQlgc-Koa`*b`=ZF|towE$?6vBrbRjF0opO#XH`PS@va zd0lbVv&Ks&!b1dF!A9M;lT&CBO*j75_6s#hU1$2Rq%3qTXU#xEAn=YSNtmI@Xsol@ zXu=Z6m=gR{XM0>aqV2+IqJV(i1@)o4yfWI=?vy@Nk_gV%>VHIgl8FW%6^k`7-;En; zhqa!*Uk3r1PRD%Rv~?|S=-PbWop6zQvSDcO>ZKb-(YjifhU49J#^bF_u&1Nb-d?1U zqpiM0M8sR%(%ek-@SgT*7F;+JVLVtU+L$F@I5)2atE zbmoNVu9rm6uyg*v*05M$-O=Te7-iSzIj?!eE@n@zLM}_hLNU4WgQTkgAstDHHSrzT z!DeErd*r#m@`=+uX4wOIoaC?D^s1vev^r&)&>t7F@W zV(JOS{baaWBm-N%Guf4m4mth%)xa`M)jKUO&?4!Io&G+5;R zWLa$)+Jp*VLDOfFdw|HV> zrgwm!qp>dt5SbH3Gd_c)9b! zhix_wHk<42XUoEa0m)KnkupyWs07|5qC@dNPuUFTTNlZ7SMy&G+%kz@tfS)TG#y;! znf6-OW8o9ehra|)&^+$mo_Y1@g0H&}^Ykw9F48c$dl2OsHBv>iWA#aCgiPjsOy4Gg z*kv(wPHZ(dT6lo2LjrkfUbay%m8;l1Z77tzFGM@VN%|%lCAa>9wj$mOT?`3#9`u-aI>v zJ&P=|c~q8?>2lw6cNNhUS7eoEx?6X&a+d^eTl9kTd0{9305frdZSiNVfJhh$Ze#6? z7IwO3(;nH5@;yi6w;+4hx}#qn3-O^{9MA{1PES^ryHsbjWp8D$el^<8_!n} z8xAc^_zYuv9bEjV-ay>y3~!5?UD>n%q)PZ%<^beF|5E|Zc=o01zM08qD_v1%r7dFa z3Q1BUI!n^{-QrhdwX09nzmalOqkdT$dW3=_L=nC=;mIo9F-Boytc#va33K1zf(8#l za#D&ZVNdmH0-kb(d&`GVXtnsEec386X*P+)tmsPDr+yxLWm(hfnyvf#tDXo+oPOC!4CEg7zf;K zItKiYkN8({&S)4K3`sGuFW6D!w>cQD73vj;`dQD2z%VW3&I&5wxDqK=^xGz zW@TlKu*L~w?*z8OI63{>6iV`UKPg^HV*Cd#eorv`6dYhEYsCK$j19;7!v%7(x5c@1 z|Buw1halldm@UrUs|ZIUVGhp!4ttmij5zSc3kC{8>X%f&|J`3W(|DOdE9wOoP4$L= zV19Ick-?ebG3C63q?>ATcSg#5NrRiXgLZ5CuX7kipEc4Ko-1x`D-;woBF~F}n(%>Q zuBnJc04Vh}5t_?I?wZ(ZWu7K>p~XblV4S1m*3>1Gx=&Ms1D~1qRbPQ>el2p76SU$f z;94v*cW-kQO<3fllGCRf89w6k$$Jo4t=VkXfc;6n*91$Ms%* zKLxocF7r2x{;5)kBiap^ky~?ouCA7#q+#||GfGZDsq?L4uS*ZWYbkfTVv-NPRh5BrL^`;w%7(K@>u3@YGXNL>giUAuQj{9MB=K*&dH-M_ z;Ye$=yMy)js7hBKvr-cP0RP5sxxK)-uK@;j804QQ7#!gYMiUP4j&1@AVL|Ngl*V_L z?S-W2!3ON_k^4K=@SW6q5syRe>#P1AxW9|x;E-CD2ix1eNA7pI9~8>b1^~dx^moq# z0Y#Aadk6g9i3Z!@F2?Wp;R)0P_4d~<{3C_Ehz{8QfZ==G{=|Jy0>yCLME2D>0+KM9 zy%7Kad}7}V?}$UP$i6gxaLw)EzUO&%2+#hs|8t&$t8nQMp1m^gt1NtxKhA2eEc_~q z*&!@@W#S(e!ZpP!L&){`9k~~ghp_ylZ2bCVn>mDZf6@5)6!B$aFHS}MD3rs2BJy)4 wd>Pq`tA{ZCP*e_Twm-Y!%gSCn#E~6ZWOOuvxOP_nfFAb(;*z3Z4F21H09cWxT>t<8 diff --git a/htdocs/includes/mike42/escpos-php/example/resources/document.pdf b/htdocs/includes/mike42/escpos-php/example/resources/document.pdf deleted file mode 100644 index 93a702337f1b09cfcb96ddce75a0c6421b69251e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24389 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 RuDa7m%-5OL40^FJe*+_L<7)r_ diff --git a/htdocs/includes/mike42/escpos-php/example/resources/escpos-php-small.png b/htdocs/includes/mike42/escpos-php/example/resources/escpos-php-small.png deleted file mode 100644 index 3c74d2d57a29e0398f706efd0e2f4531c036584a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1941 zcmV;G2Wt3004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0063uBQgL0010qNS#tmY3ljhU3ljkVnw%H_00wqRL_t(o!|j=SP?Xmh#(&>l zSaz3-7a$0t#I+JdEt*SdVzto;>J%@jY1LGl#3|#nbtcX8MGaPGe0QlGv(= zv6I%pF&Y)r*2Y2{gP101yfEOUTx>vVKtW`e{ht282Q2JjVw)++4A0D-J?Gu$yyw~X zob#Tu-@*XC05Gg~FH?!>Hx;$KgV`-6+t`~hD7s&iG;#GPxm*Q@WpPDCueVP{{UD}* z4bj-3TMP!N`1&O>33SH5)@|&MsPr7y_CI*}%rPKlK+NY@7_45h{Pl*Tx1p6kP(mEb8BZyH>(g5GH_9Bw zu%^NU+EK6J!^BLd7?TQuOkph<WCW9Kb?&t8UeAG6p+8i(*Pj$abX zbl#(xS$qTd7&wTJ*U2EA06}Zv3meCIkz)*E!p+6xa)T0LSjaFIvxjrcV=0MjpcoI& zk&ekks!8SvMzWd_lrn-R$zTyXC?uOD*ezcM6RBhj%NWK(qyawi7>dbQt`Nm<853zU zGcCHgSe-D{jbJZpi|*AEQbb12`oA?n>lBWF=4ffiC~L(#42l?;j&BrcyBSs}XZO1I z*!rlun8Wx8-fi5Er`ITbOw%VJid7NZM1q$!5t%kt_R-^(#oWpX(ihXXMSj0vKulkV zux6U5U@}*!AcJyTjOATiWKu;2XBkZ;6R~lWcJ8DKA17($F3vHE(_G`L#BdxRHKcK# z%iK*Z!%5=rB=axoxRXm%lSLEpr1c>xB+s1Cd|lJq%2A0@HAzKEQl^SDU4PSDl_*y= zs@Hg>sZ{fIM0Y7!NAyj-r70Ssay97z73pCeP_Dcx(sy-0(xWQW5=Ci;@)V_QTB%pU z@=Szj>bR?PByK+eO#JvU30Ss{dq|+G9l(!h$Fyo#ER%Npn6z6bQD-}7m1fw;pRi^O ztNe7CC4AF%_xv;-K35BPK+J%c&qR#6N`;g?84CG<(#=qhPs3TE%06hFBbUaNs2tI|g2>?I8{aZXAFcCxc1GO+2^ZCJs;7$er7N zTJ*j*yfXo4riL+Gra59ogoTO972|5@ZZ@q;j4%?%*QBsOCDExH&@# zmq_9wP29m{5*b7#L%2Z`!)d0GR9cDdNV}}#r)A8fv0GG+Yv=zLH$4ve4+CPpXku(! zU^guQnEaJ8%YKDj)LZrUIBXsLZS3c)Wv%8-S^*FxUHzKa-PP|T2dxJx0g5?eSue7O zmI(2f=4sxj8FDLMEi$!DiMm}yk}m5pxwJral1epBiF!?@+VreqG)-qDozqNt^^~ql zDpZO_>(7!J^+UO}NFPZ$u1OlKO$sWYjf&S-^ns*W&6ivG`bpPr>JsBx>n zo0J%&kb}4DbuE*XPg|3`~WAjZRg`f z8CiH(@A10>Y#@eA-j0`1!#tw-5iOkPDP|O#nF>G@kMkUf0HpIWOR)h4^V!Te0ODB7 zYAc&hW-B=WI9Sea7zRKp1>{*r&1_yF3ji-aV-2wYjAtuz0C2K`U(oA6l%&87Zp#T5?8FWQhbVF}#ZDnqB07G(R zVRU6=Aa`kWXdp*PO;A^X4i^9b03~!qSaf7zbY(hYa%Ew3WdJfTF*PkPGc7SRR5CI; zH8DChGb=GMIxsLILPgX7001R)MObuXVRU6WZEs|0W_bWIFflbPFf%PNG*mJ$Ix;mn bG%zbMF*-0X?$PJj00000NkvXXu0mjfgfCmX diff --git a/htdocs/includes/mike42/escpos-php/example/resources/escpos-php.png b/htdocs/includes/mike42/escpos-php/example/resources/escpos-php.png deleted file mode 100644 index feee2d71cc280655b1765f2689bbed8299ba394e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7871 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 diff --git a/htdocs/includes/mike42/escpos-php/example/specific/29-latvian-star-tup592.php b/htdocs/includes/mike42/escpos-php/example/specific/29-latvian-star-tup592.php deleted file mode 100644 index 72dc7c8f2ed..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/29-latvian-star-tup592.php +++ /dev/null @@ -1,21 +0,0 @@ - text("Glāžšķūņa rūķīši dzērumā čiepj Baha koncertflīģeļu vākus\n"); -$printer -> cut(); -$printer -> close(); - -/* Option 2: Image-based output (formatting not available using this output) */ -$buffer = new ImagePrintBuffer(); -$connector = new FilePrintConnector("php://stdout"); -$printer = new Escpos($connector, $profile); -$printer -> setPrintBuffer($buffer); -$printer -> text("Glāžšķūņa rūķīši dzērumā čiepj Baha koncertflīģeļu vākus\n"); -$printer -> cut(); -$printer -> close(); -?> \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/example/specific/32-german-tm-t20-ii-custom-command.php b/htdocs/includes/mike42/escpos-php/example/specific/32-german-tm-t20-ii-custom-command.php deleted file mode 100644 index 49eca235091..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/32-german-tm-t20-ii-custom-command.php +++ /dev/null @@ -1,36 +0,0 @@ - getPrintConnector() -> write($cmd); -$printer -> text("Beispieltext in Deutsch\n"); -$printer -> cut(); -$printer -> close(); - -/* - * Hex-dump of output confirms that ESC V 1 being sent: - * - * 0000000 033 @ 033 V 001 B e i s p i e l t e x - * 0000010 t i n D e u t s c h \n 035 V A - * 0000020 003 - */ \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/example/specific/33-spanish-seypos-prp-300.php b/htdocs/includes/mike42/escpos-php/example/specific/33-spanish-seypos-prp-300.php deleted file mode 100644 index 7314ad21bf0..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/33-spanish-seypos-prp-300.php +++ /dev/null @@ -1,16 +0,0 @@ - text("El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.\n"); -$printer -> cut(); -$printer -> close(); - diff --git a/htdocs/includes/mike42/escpos-php/example/specific/39-currency-symbols.php b/htdocs/includes/mike42/escpos-php/example/specific/39-currency-symbols.php deleted file mode 100644 index b3d4b29edd1..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/39-currency-symbols.php +++ /dev/null @@ -1,69 +0,0 @@ - text("€ 9,95\n"); -$printer -> text("£ 9.95\n"); -$printer -> text("$ 9.95\n"); -$printer -> text("¥ 9.95\n"); -$printer -> cut(); -$printer -> close(); - -/* Option 2: Image-based output (formatting not available using this output). */ -$buffer = new ImagePrintBuffer(); -$connector = new FilePrintConnector("php://stdout"); -$printer = new Escpos($connector, $profile); -$printer -> setPrintBuffer($buffer); -$printer -> text("€ 9,95\n"); -$printer -> text("£ 9.95\n"); -$printer -> text("$ 9.95\n"); -$printer -> text("¥ 9.95\n"); -$printer -> cut(); -$printer -> close(); - -/* - Option 3: If the printer is configured to print in a specific code - page, you can set up a CapabilityProfile which either references its - iconv encoding name, or includes all of the available characters. - - Here, we make use of CP858 for its inclusion of currency symbols which - are not available in CP437. CP858 has good printer support, but is not - included in all iconv builds. -*/ -class CustomCapabilityProfile extends SimpleCapabilityProfile { - function getCustomCodePages() { - /* - * Example to print in a specific, user-defined character set - * on a printer which has been configured to use i - */ - return array( - 'CP858' => "ÇüéâäàåçêëèïîìÄÅ" . - "ÉæÆôöòûùÿÖÜø£Ø×ƒ" . - "áíóúñѪº¿®¬½¼¡«»" . - "░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐" . - "└┴┬├─┼ãÃ╚╔╩╦╠═╬¤" . - "ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀" . - "ÓßÔÒõÕµþÞÚÛÙýݯ´" . - " ±‗¾¶§÷¸°¨·¹³²■ "); - } - - function getSupportedCodePages() { - return array( - 0 => 'custom:CP858'); - } -} - -$connector = new FilePrintConnector("php://stdout"); -$profile = CustomCapabilityProfile::getInstance(); -$printer = new Escpos($connector, $profile); -$printer -> text("€ 9,95\n"); -$printer -> text("£ 9.95\n"); -$printer -> text("$ 9.95\n"); -$printer -> text("¥ 9.95\n"); - -$printer -> cut(); -$printer -> close(); diff --git a/htdocs/includes/mike42/escpos-php/example/specific/44-pound-symbol-star-tsp650.php b/htdocs/includes/mike42/escpos-php/example/specific/44-pound-symbol-star-tsp650.php deleted file mode 100644 index 4ef1a9575c2..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/44-pound-symbol-star-tsp650.php +++ /dev/null @@ -1,31 +0,0 @@ - textRaw("\x9C"); // based on position in CP437 -$printer -> text(" 1.95\n"); - -// B) Manually encoded UTF8 pound symbol. Tests that the driver correctly -// encodes this as CP437. -$printer -> text(base64_decode("wqM=") . " 2.95\n"); - -// C) Pasted in file. Tests that your files are being saved as UTF-8, which -// escpos-php is able to convert automatically to a mix of code pages. -$printer -> text("£ 3.95\n"); - -$printer -> cut(); -$printer -> close(); diff --git a/htdocs/includes/mike42/escpos-php/example/specific/50-P-822D-greek.php b/htdocs/includes/mike42/escpos-php/example/specific/50-P-822D-greek.php deleted file mode 100644 index 2d88cf1a2a8..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/50-P-822D-greek.php +++ /dev/null @@ -1,16 +0,0 @@ - text($text . "\n"); -$printer -> cut(); - -// Close the connection -$printer -> close(); diff --git a/htdocs/includes/mike42/escpos-php/example/specific/54-gfx-sidebyside.php b/htdocs/includes/mike42/escpos-php/example/specific/54-gfx-sidebyside.php deleted file mode 100644 index 316099cf304..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/54-gfx-sidebyside.php +++ /dev/null @@ -1,58 +0,0 @@ - setJustification(Escpos::JUSTIFY_CENTER); - $printer -> graphics($img); - $printer -> cut(); - } finally { - // Always close the connection - $printer -> close(); - } -} catch (Exception $e) { - // Print out any errors: Eg. printer connection, image loading & external image manipulation. - echo $e -> getMessage() . "\n"; - echo $e -> getTraceAsString(); -} finally { - unlink ( $imgCombined_path ); - unlink ( $tmpf_path ); -} diff --git a/htdocs/includes/mike42/escpos-php/example/specific/6-arabic-epos-tep-220m.php b/htdocs/includes/mike42/escpos-php/example/specific/6-arabic-epos-tep-220m.php deleted file mode 100644 index c2b0fb5aa57..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/6-arabic-epos-tep-220m.php +++ /dev/null @@ -1,47 +0,0 @@ - utf8Glyphs($text); - -/* - * Set up and use the printer - */ -$buffer = new ImagePrintBuffer(); -$profile = EposTepCapabilityProfile::getInstance(); -$connector = new FilePrintConnector("php://output"); - // = WindowsPrintConnector("LPT2"); - // Windows LPT2 was used in the bug tracker - -$printer = new Escpos($connector, $profile); -$printer -> setPrintBuffer($buffer); -$printer -> text($text . "\n"); -$printer -> close(); diff --git a/htdocs/includes/mike42/escpos-php/example/specific/README.md b/htdocs/includes/mike42/escpos-php/example/specific/README.md deleted file mode 100644 index 7433e7aa247..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/specific/README.md +++ /dev/null @@ -1,7 +0,0 @@ -Specific examples ------------------ - -These examples are designed for specific combinations of language, -printer and interface. - -They are documented here because the general examples all set up the printer in a similar way. diff --git a/htdocs/includes/mike42/escpos-php/example/text-size.php b/htdocs/includes/mike42/escpos-php/example/text-size.php deleted file mode 100644 index 2f9272e434b..00000000000 --- a/htdocs/includes/mike42/escpos-php/example/text-size.php +++ /dev/null @@ -1,62 +0,0 @@ - - */ -require_once(dirname(__FILE__) . "/../Escpos.php"); -$printer = new Escpos(); - -/* Initialize */ -$printer -> initialize(); - -/* Text of various (in-proportion) sizes */ -title($printer, "Change height & width\n"); -for($i = 1; $i <= 8; $i++) { - $printer -> setTextSize($i, $i); - $printer -> text($i); -} -$printer -> text("\n"); - -/* Width changing only */ -title($printer, "Change width only (height=4):\n"); -for($i = 1; $i <= 8; $i++) { - $printer -> setTextSize($i, 4); - $printer -> text($i); -} -$printer -> text("\n"); - -/* Height changing only */ -title($printer, "Change height only (width=4):\n"); -for($i = 1; $i <= 8; $i++) { - $printer -> setTextSize(4, $i); - $printer -> text($i); -} -$printer -> text("\n"); - -/* Very narrow text */ -title($printer, "Very narrow text:\n"); -$printer -> setTextSize(1, 8); -$printer -> text("The quick brown fox jumps over the lazy dog.\n"); - -/* Very flat text */ -title($printer, "Very wide text:\n"); -$printer -> setTextSize(4, 1); -$printer -> text("Hello world!\n"); - -/* Very large text */ -title($printer, "Largest possible text:\n"); -$printer -> setTextSize(8,8); -$printer -> text("Hello\nworld!\n"); - -$printer -> cut(); -$printer -> close(); - -function title(Escpos $printer, $text) { - $printer -> selectPrintMode(Escpos::MODE_EMPHASIZED); - $printer -> text("\n" . $text); - $printer -> selectPrintMode(); // Reset -} - -?> diff --git a/htdocs/includes/mike42/escpos-php/src/AbstractCapabilityProfile.php b/htdocs/includes/mike42/escpos-php/src/AbstractCapabilityProfile.php deleted file mode 100644 index db2e8e01f58..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/AbstractCapabilityProfile.php +++ /dev/null @@ -1,61 +0,0 @@ - CodePage::CP437, - 1 => CodePage::CP932, - 2 => CodePage::CP850, - 3 => CodePage::CP860, - 4 => CodePage::CP863, - 5 => CodePage::CP865, - 6 => false, // Hiragana - 7 => false, // One-pass printing Kanji characters - 8 => false, // Page 8 [One-pass printing Kanji characters] - 11 => CodePage::CP851, - 12 => CodePage::CP853, - 13 => CodePage::CP857, - 14 => CodePage::CP737, - 15 => CodePage::ISO8859_7, - 16 => CodePage::CP1252, - 17 => CodePage::CP866, - 18 => CodePage::CP852, - 19 => CodePage::CP858, - 20 => false, // Thai Character Code 42 - 21 => CodePage::CP874, // Thai Character Code 11 - 22 => false, // Thai Character Code 13 - 23 => false, // Thai Character Code 14 - 24 => false, // Thai Character Code 16 - 25 => false, // Thai Character Code 17 - 26 => false, // Thai Character Code 18 - 30 => false, // TCVN-3: Vietnamese - 31 => false, // TCVN-3: Vietnamese - 32 => CodePage::CP720, - 33 => CodePage::CP775, - 34 => CodePage::CP855, - 35 => CodePage::CP861, - 36 => CodePage::CP862, - 37 => CodePage::CP864, - 38 => CodePage::CP869, - 39 => CodePage::ISO8859_2, - 40 => CodePage::ISO8859_15, - 41 => CodePage::CP1098, // PC1098: Farsi - 42 => CodePage::CP774, - 43 => CodePage::CP772, - 44 => CodePage::CP1125, - 45 => CodePage::CP1250, - 46 => CodePage::CP1251, - 47 => CodePage::CP1253, - 48 => CodePage::CP1254, - 49 => CodePage::CP1255, - 50 => CodePage::CP1256, - 51 => CodePage::CP1257, - 52 => CodePage::CP1258, - 53 => CodePage::RK1048, - 66 => false, // Devanagari - 67 => false, // Bengali - 68 => false, // Tamil - 69 => false, // Telugu - 70 => false, // Assamese - 71 => false, // Oriya - 72 => false, // Kannada - 73 => false, // Malayalam - 74 => false, // Gujarati - 75 => false, // Punjabi - 82 => false, // Marathi - 254 => false, - 255 => false); - } - - function getSupportsBarcodeB() { - return true; - } - - function getSupportsBitImage() { - return true; - } - - function getSupportsGraphics() { - return true; - } - - function getSupportsStarCommands() { - return false; - } - - function getSupportsQrCode() { - return true; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/DummyPrintConnector.php b/htdocs/includes/mike42/escpos-php/src/DummyPrintConnector.php deleted file mode 100644 index e1a197b7c7b..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/DummyPrintConnector.php +++ /dev/null @@ -1,78 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Print connector that writes to nowhere, but allows the user to retrieve the - * buffered data. Used for testing. - */ -final class DummyPrintConnector implements PrintConnector { - /** - * @var array Buffer of accumilated data. - */ - private $buffer; - - /** - * @var string data which the printer will provide on next read - */ - private $readData; - - /** - * Create new print connector - */ - public function __construct() { - $this -> buffer = array(); - } - - public function __destruct() { - if($this -> buffer !== null) { - trigger_error("Print connector was not finalized. Did you forget to close the printer?", E_USER_NOTICE); - } - } - - public function finalize() { - $this -> buffer = null; - } - - /** - * @return string Get the accumulated data that has been sent to this buffer. - */ - public function getData() { - return implode($this -> buffer); - } - - /* (non-PHPdoc) - * @see PrintConnector::read() - */ - public function read($len) { - return $len >= strlen($this -> readData) ? $this -> readData : substr($this -> readData, 0, $len); - } - - public function write($data) { - $this -> buffer[] = $data; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/EposTepCapabilityProfile.php b/htdocs/includes/mike42/escpos-php/src/EposTepCapabilityProfile.php deleted file mode 100644 index 2803fe3f69c..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/EposTepCapabilityProfile.php +++ /dev/null @@ -1,4 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * This class deals with images in raster formats, and converts them into formats - * which are suitable for use on thermal receipt printers. Currently, only PNG - * images (in) and ESC/POS raster format (out) are implemeted. - * - * Input formats: - * - Currently, only PNG is supported. - * - Other easily read raster formats (jpg, gif) will be added at a later date, as this is not complex. - * - The BMP format can be directly read by some commands, but this has not yet been implemented. - * - * Output formats: - * - Currently, only ESC/POS raster format is supported - * - ESC/POS 'column format' support is partially implemented, but is not yet used by Escpos.php library. - * - Output as multiple rows of column format image is not yet in the works. - * - * Libraries: - * - Currently, php-gd is used to read the input. Support for imagemagick where gd is not installed is - * also not complex to add, and is a likely future feature. - * - Support for native use of the BMP format is a goal, for maximum compatibility with target environments. - */ -class EscposImage { - /** - * @var string The image's bitmap data (if it is a Windows BMP). - */ - protected $imgBmpData; - - /** - * @var string image data in rows: 1 for black, 0 for white. - */ - protected $imgData; - - /** - * @var string cached raster format data to avoid re-computation - */ - protected $imgRasterData; - - /** - * @var int height of the image - */ - protected $imgHeight; - - /** - * @var int width of the image - */ - protected $imgWidth; - - /** - * Load up an image from a filename - * - * @param string $imgPath The path to the image to load, or null to skip - * loading the image (some other functions are available for - * populating the data). Supported graphics types depend on your PHP configuration. - */ - public function __construct($imgPath = null) { - /* Can't use bitmaps yet */ - $this -> imgBmpData = null; - $this -> imgRasterData = null; - if($imgPath === null) { - // Blank image - $this -> imgHeight = 0; - $this -> imgWidth = 0; - $this -> imgData = ""; - return; - } - - /* Load up using GD */ - if(!file_exists($imgPath)) { - throw new Exception("File '$imgPath' does not exist."); - } - $ext = pathinfo($imgPath, PATHINFO_EXTENSION); - if($ext == "bmp") { - // The plan is to implement BMP handling directly in - // PHP, as some printers understand this format themselves. - // TODO implement PHP bitmap handling - throw new Exception("Native bitmaps not yet supported. Please convert the file to a supported raster format."); - } - if($this -> isGdSupported()) { - // Prefer to use gd. It is installed by default, so - // most systems will have it, giving a consistent UX. - switch($ext) { - case "png": - $im = @imagecreatefrompng($imgPath); - $this -> readImageFromGdResource($im); - return; - case "jpg": - $im = @imagecreatefromjpeg($imgPath); - $this -> readImageFromGdResource($im); - return; - case "gif": - $im = @imagecreatefromgif($imgPath); - $this -> readImageFromGdResource($im); - return; - } - } - if($this -> isImagickSupported()) { - $im = new Imagick(); - try { - // Throws an ImagickException if the format is not supported or file is not found - $im -> readImage($imgPath); - } catch(ImagickException $e) { - // Wrap in normal exception, so that classes which call this do not themselves require imagick as a dependency. - throw new Exception($e); - } - /* Flatten by doing a composite over white, in case of transparency */ - $flat = new Imagick(); - $flat -> newImage($im -> getimagewidth(), $im -> getimageheight(), "white"); - $flat -> compositeimage($im, Imagick::COMPOSITE_OVER, 0, 0); - $this -> readImageFromImagick($flat); - return; - } - throw new Exception("Images are not supported on your PHP. Please install either the gd or imagick extension."); - } - - /** - * @return int height of the image in pixels - */ - public function getHeight() { - return $this -> imgHeight; - } - - /** - * @return int Number of bytes to represent a row of this image - */ - public function getHeightBytes() { - return (int)(($this -> imgHeight + 7) / 8); - } - - /** - * @return int Width of the image - */ - public function getWidth() { - return $this -> imgWidth; - } - - /** - * @return int Number of bytes to represent a row of this image - */ - public function getWidthBytes() { - return (int)(($this -> imgWidth + 7) / 8); - } - - /** - * @return string binary data of the original file, for function which accept bitmaps. - */ - public function getWindowsBMPData() { - return $this -> imgBmpData; - } - - /** - * @return boolean True if the image was a windows bitmap, false otherwise - */ - public function isWindowsBMP() { - return $this -> imgBmpData != null; - } - - /** - * Load actual image pixels from GD resource. - * - * @param resouce $im GD resource to use - * @throws Exception Where the image can't be read. - */ - public function readImageFromGdResource($im) { - if(!is_resource($im)) { - throw new Exception("Failed to load image."); - } else if(!$this -> isGdSupported()) { - throw new Exception(__FUNCTION__ . " requires 'gd' extension."); - } - /* Make a string of 1's and 0's */ - $this -> imgHeight = imagesy($im); - $this -> imgWidth = imagesx($im); - $this -> imgData = str_repeat("\0", $this -> imgHeight * $this -> imgWidth); - for($y = 0; $y < $this -> imgHeight; $y++) { - for($x = 0; $x < $this -> imgWidth; $x++) { - /* Faster to average channels, blend alpha and negate the image here than via filters (tested!) */ - $cols = imagecolorsforindex($im, imagecolorat($im, $x, $y)); - $greyness = (int)(($cols['red'] + $cols['green'] + $cols['blue']) / 3) >> 7; // 1 for white, 0 for black - $black = (1 - $greyness) >> ($cols['alpha'] >> 6); // 1 for black, 0 for white, taking into account transparency - $this -> imgData[$y * $this -> imgWidth + $x] = $black; - } - } - } - - /** - * Load actual image pixels from Imagick object - * - * @param Imagick $im Image to load from - */ - public function readImageFromImagick(Imagick $im) { - /* Threshold */ - $im -> setImageType(Imagick::IMGTYPE_TRUECOLOR); // Remove transparency (good for PDF's) - $max = $im->getQuantumRange(); - $max = $max["quantumRangeLong"]; - $im -> thresholdImage(0.5 * $max); - /* Make a string of 1's and 0's */ - $geometry = $im -> getimagegeometry(); - $this -> imgHeight = $im -> getimageheight(); - $this -> imgWidth = $im -> getimagewidth(); - $this -> imgData = str_repeat("\0", $this -> imgHeight * $this -> imgWidth); - - for($y = 0; $y < $this -> imgHeight; $y++) { - for($x = 0; $x < $this -> imgWidth; $x++) { - /* Faster to average channels, blend alpha and negate the image here than via filters (tested!) */ - $cols = $im -> getImagePixelColor($x, $y); - $cols = $cols -> getcolor(); - $greyness = (int)(($cols['r'] + $cols['g'] + $cols['b']) / 3) >> 7; // 1 for white, 0 for black - $this -> imgData[$y * $this -> imgWidth + $x] = (1 - $greyness); // 1 for black, 0 for white - } - } - - } - - /** - * Output the image in raster (row) format. This can result in padding on the right of the image, if its width is not divisible by 8. - * - * @throws Exception Where the generated data is unsuitable for the printer (indicates a bug or oversized image). - * @return string The image in raster format. - */ - public function toRasterFormat() { - if($this -> imgRasterData != null) { - /* Use previous calculation */ - return $this -> imgRasterData; - } - /* Loop through and convert format */ - $widthPixels = $this -> getWidth(); - $heightPixels = $this -> getHeight(); - $widthBytes = $this -> getWidthBytes(); - $heightBytes = $this -> getHeightBytes(); - $x = $y = $bit = $byte = $byteVal = 0; - $data = str_repeat("\0", $widthBytes * $heightPixels); - if(strlen($data) == 0) { - return $data; - } - do { - $byteVal |= (int)$this -> imgData[$y * $widthPixels + $x] << (7 - $bit); - $x++; - $bit++; - if($x >= $widthPixels) { - $x = 0; - $y++; - $bit = 8; - if($y >= $heightPixels) { - $data[$byte] = chr($byteVal); - break; - } - } - if($bit >= 8) { - $data[$byte] = chr($byteVal); - $byteVal = 0; - $bit = 0; - $byte++; - } - } while(true); - if(strlen($data) != ($this -> getWidthBytes() * $this -> getHeight())) { - throw new Exception("Bug in " . __FUNCTION__ . ", wrong number of bytes."); - } - $this -> imgRasterData = $data; - return $this -> imgRasterData; - } - - /** - * Output image in column format. This format results in padding at the base and right of the image, if its height and width are not divisible by 8. - */ - private function toColumnFormat() { - /* Note: This function is marked private, as it is not yet used/tested and may be buggy. */ - $widthPixels = $this -> getWidth(); - $heightPixels = $this -> getHeight(); - $widthBytes = $this -> getWidthBytes(); - $heightBytes = $this -> getHeightBytes(); - $x = $y = $bit = $byte = $byteVal = 0; - $data = str_repeat("\0", $widthBytes * $heightBytes * 8); - do { - $byteVal |= (int)$this -> imgData[$y * $widthPixels + $x] << (8 - $bit); - $y++; - $bit++; - if($y >= $heightPixels) { - $y = 0; - $x++; - $bit = 8; - if($x >= $widthPixels) { - $data[$byte] = chr($byteVal); - break; - } - } - if($bit >= 8) { - $data[$byte] = chr($byteVal); - $byteVal = 0; - $bit = 0; - $byte++; - } - } while(true); - if(strlen($data) != ($widthBytes * $heightBytes * 8)) { - throw new Exception("Bug in " . __FUNCTION__ . ", wrong number of bytes. Should be " . ($widthBytes * $heightBytes * 8) . " but was " . strlen($data)); - } - return $data; - } - - /** - * @return boolean True if GD is supported, false otherwise (a wrapper for the static version, for mocking in tests) - */ - protected function isGdSupported() { - return self::isGdLoaded(); - } - - /** - * @return boolean True if Imagick is supported, false otherwise (a wrapper for the static version, for mocking in tests) - */ - protected function isImagickSupported() { - return self::isImagickLoaded(); - } - - - /** - * @return boolean True if GD is loaded, false otherwise - */ - public static function isGdLoaded() { - return extension_loaded('gd'); - } - - /** - * @return boolean True if Imagick is loaded, false otherwise - */ - public static function isImagickLoaded() { - return extension_loaded('imagick'); - } - - /** - * Load a PDF for use on the printer - * - * @param string $pdfFile The file to load - * @param string $pageWidth The width, in pixels, of the printer's output. The first page of the PDF will be scaled to approximately fit in this area. - * @param array $range array indicating the first and last page (starting from 0) to load. If not set, the entire document is loaded. - * @throws Exception Where Imagick is not loaded, or where a missing file or invalid page number is requested. - * @return multitype:EscposImage Array of images, retrieved from the PDF file. - */ - public static function loadPdf($pdfFile, $pageWidth = 550, array $range = null) { - if(!extension_loaded('imagick')) { - throw new Exception(__FUNCTION__ . " requires imagick extension."); - } - /* - * Load first page at very low density (resolution), to figure out what - * density to use to achieve $pageWidth - */ - try { - $image = new Imagick(); - $testRes = 2; // Test resolution - $image -> setresolution($testRes, $testRes); - $image -> readimage($pdfFile."[0]"); - $geo = $image -> getimagegeometry(); - $image -> destroy(); - $width = $geo['width']; - $newRes = $pageWidth / $width * $testRes; - /* Load actual document (can be very slow!) */ - $rangeStr = ""; // Set to [0] [0-1] page range if $range is set - if($range != null) { - if(count($range) != 2 || !isset($range[0]) || !is_integer($range[0]) || !isset($range[1]) || !is_integer($range[1]) || $range[0] > $range[1]) { - throw new Exception("Invalid range. Must be two numbers in the array: The start and finish page indexes, starting from 0."); - } - $rangeStr = "[" . ($range[0] == $range[1] ? $range[0] : implode($range, "-")) . "]"; - } - $image -> setresolution($newRes, $newRes); - $image -> readImage($pdfFile."$rangeStr"); - $pages = $image -> getNumberImages(); - /* Convert images to Escpos objects */ - $ret = array(); - for($i = 0;$i < $pages; $i++) { - $image -> setIteratorIndex($i); - $ep = new EscposImage(); - $ep -> readImageFromImagick($image); - $ret[] = $ep; - } - return $ret; - } catch(ImagickException $e) { - // Wrap in normal exception, so that classes which call this do not themselves require imagick as a dependency. - throw new Exception($e); - } - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/EscposPrintBuffer.php b/htdocs/includes/mike42/escpos-php/src/EscposPrintBuffer.php deleted file mode 100644 index 703bc0a57c0..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/EscposPrintBuffer.php +++ /dev/null @@ -1,304 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * This class manages newlines and character encoding for the target printer, and - * can be interchanged for an image-bassed buffer (ImagePrintBuffer) if you can't - * get it operating properly on your machine. - */ -class EscposPrintBuffer implements PrintBuffer { - /** - * @var boolean True to cache output as .gz, false to leave un-compressed (useful for debugging) - */ - const COMPRESS_CACHE = true; - - /** - * @var string The input encoding of the buffer. - */ - const INPUT_ENCODING = "UTF-8"; - - /** - * @var string Un-recorgnised characters will be replaced with this. - */ - const REPLACEMENT_CHAR = "?"; - - /** - * This array Maps ESC/POS character tables to names iconv encodings - */ - private $available = null; - - /** - * @var array Maps of UTF-8 to code-pages - */ - private $encode = null; - - /** - * @var Escpos Printer for output - */ - private $printer; - - /** - * Empty print buffer. - */ - function __construct() { - $this -> printer = null; - } - - public function flush() { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - // TODO Not yet implemented for this buffer: This indicates that the printer needs the current line to be ended. - } - - public function getPrinter() { - return $this -> printer; - } - - public function setPrinter(Escpos $printer = null) { - $this -> printer = $printer; - if($printer != null) { - $this -> loadAvailableCharacters(); - } - } - - public function writeText($text) { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - if($text == null) { - return; - } - if(!mb_detect_encoding($text, self::INPUT_ENCODING, true)) { - // Assume that the user has already put non-UTF8 into the target encoding. - return $this -> writeTextRaw($text); - } - $i = 0; - $j = 0; - $len = mb_strlen($text, self::INPUT_ENCODING); - while($i < $len) { - $matching = true; - if(($encoding = $this -> identifyText(mb_substr($text, $i, 1, self::INPUT_ENCODING))) === false) { - // Un-encodeable text - $encoding = $this -> getPrinter() -> getCharacterTable(); - } - $i++; - $j = 1; - do { - $char = mb_substr($text, $i, 1, self::INPUT_ENCODING); - $matching = !isset($this -> available[$char]) || isset($this -> available[$char][$encoding]); - if($matching) { - $i++; - $j++; - } - } while($matching && $i < $len); - $this -> writeTextUsingEncoding(mb_substr($text, $i - $j, $j, self::INPUT_ENCODING), $encoding); - } - } - - public function writeTextRaw($text) { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - if(strlen($text) == 0) { - return; - } - // Pass only printable characters - for($i = 0; $i < strlen($text); $i++) { - $c = substr($text, $i, 1); - if(!self::asciiCheck($c, true)) { - $text[$i] = self::REPLACEMENT_CHAR; - } - } - $this -> write($text); - } - - /** - * Return an encoding which we can start to use for outputting this text. Later parts of the text need not be included in the returned code page. - * - * @param string $text Input text to check. - * @return boolean|integer Code page number, or FALSE if the text is not printable on any supported encoding. - */ - private function identifyText($text) { - // TODO Replace this with an algorithm to choose the encoding which will encode the farthest into the string, to minimise code page changes. - $char = mb_substr($text, 0, 1, self::INPUT_ENCODING); - if(!isset($this -> available[$char])) { - /* Character not available anywhere */ - return false; - } - foreach($this -> available[$char] as $encodingNo => $true) { - /* Return first code-page where it is available */ - return $encodingNo; - } - return false; - } - - /** - * Based on the printer's connector, compute (or load a cached copy of) maps of UTF character to unicode characters for later use. - */ - private function loadAvailableCharacters() { - $supportedCodePages = $this -> printer -> getPrinterCapabilityProfile() -> getSupportedCodePages(); - $capabilityClassName = get_class($this -> printer -> getPrinterCapabilityProfile()); - $cacheFile = dirname(__FILE__) . "/cache/Characters-" . $capabilityClassName . ".ser" . (self::COMPRESS_CACHE ? ".gz" : ""); - $cacheKey = md5(serialize($supportedCodePages)); - /* Check for pre-generated file */ - if(file_exists($cacheFile)) { - $cacheData = file_get_contents($cacheFile); - if(self::COMPRESS_CACHE) { - $cacheData = gzdecode($cacheData); - } - if($cacheData) { - $dataArray = unserialize($cacheData); - if(isset($dataArray["key"]) && isset($dataArray["available"]) && isset($dataArray["encode"]) && $dataArray["key"] == $cacheKey) { - $this -> available = $dataArray["available"]; - $this -> encode = $dataArray["encode"]; - return; - } - } - } - /* Generate conversion tables */ - $encode = array(); - $available = array(); - $custom = $this -> printer -> getPrinterCapabilityProfile() -> getCustomCodePages(); - - foreach($supportedCodePages as $num => $characterMap) { - $encode[$num] = array(); - if($characterMap === false) { - continue; - } else if(strpos($characterMap, ":") !== false) { - /* Load a pre-defined custom map (vendor-specific code pages) */ - $i = strpos($characterMap, ":"); - if(substr($characterMap, 0, $i) !== "custom") { - continue; - } - $i++; - $mapName = substr($characterMap, $i, strlen($characterMap) - $i); - if(!isset($custom[$mapName]) || mb_strlen($custom[$mapName], self::INPUT_ENCODING) != 128) { - throw new Exception("Capability profile referenced invalid custom map '$mapName'."); - } - $map = $custom[$mapName]; - for($char = 128; $char <= 255; $char++) { - $utf8 = mb_substr($map, $char - 128, 1, self::INPUT_ENCODING); - if($utf8 == " ") { // Skip placeholders - continue; - } - if(!isset($available[$utf8])) { - $available[$utf8] = array(); - } - $available[$utf8][$num] = true; - $encode[$num][$utf8] = chr($char); - } - } else { - /* Generate map using iconv */ - for($char = 128; $char <= 255; $char++) { - $utf8 = @iconv($characterMap, self::INPUT_ENCODING, chr($char)); - if($utf8 == '') { - continue; - } - if(iconv(self::INPUT_ENCODING, $characterMap, $utf8) != chr($char)) { - // Avoid non-canonical conversions - continue; - } - if(!isset($available[$utf8])) { - $available[$utf8] = array(); - } - $available[$utf8][$num] = true; - $encode[$num][$utf8] = chr($char); - } - } - } - /* Use generated data */ - $dataArray = array("available" => $available, "encode" => $encode, "key" => $cacheKey); - $this -> available = $dataArray["available"]; - $this -> encode = $dataArray["encode"]; - $cacheData = serialize($dataArray); - if(self::COMPRESS_CACHE) { - $cacheData = gzencode($cacheData); - } - /* Attempt to cache, but don't worry if we can't */ - @file_put_contents($cacheFile, $cacheData); - } - - /** - * Encode a block of text using the specified map, and write it to the printer. - * - * @param string $text Text to print, UTF-8 format. - * @param integer $encodingNo Encoding number to use- assumed to exist. - */ - private function writeTextUsingEncoding($text, $encodingNo) { - $encodeMap = $this -> encode[$encodingNo]; - $len = mb_strlen($text, self::INPUT_ENCODING); - $rawText = str_repeat(self::REPLACEMENT_CHAR, $len); - for($i = 0; $i < $len; $i++) { - $char = mb_substr($text, $i, 1, self::INPUT_ENCODING); - if(isset($encodeMap[$char])) { - $rawText[$i] = $encodeMap[$char]; - } else if(self::asciiCheck($char)) { - $rawText[$i] = $char; - } - } - if($this -> printer -> getCharacterTable() != $encodingNo) { - $this -> printer -> selectCharacterTable($encodingNo); - } - $this -> writeTextRaw($rawText); - } - - /** - * Write data to the underlying printer. - * - * @param string $data - */ - private function write($data) { - $this -> printer -> getPrintConnector() -> write($data); - } - - /** - * Return true if a character is an ASCII printable character. - * - * @param string $char Character to check - * @param boolean $extended True to allow 128-256 values also (excluded by default) - * @return boolean True if the character is printable, false if it is not. - */ - private static function asciiCheck($char, $extended = false) { - if(strlen($char) != 1) { - // Multi-byte string - return false; - } - $num = ord($char); - if($num > 31 && $num < 127) { // Printable - return true; - } - if($num == 10) { // New-line (printer will take these) - return true; - } - if($extended && $num > 127) { - return true; - } - return false; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/FilePrintConnector.php b/htdocs/includes/mike42/escpos-php/src/FilePrintConnector.php deleted file mode 100644 index 8d87f0a527a..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/FilePrintConnector.php +++ /dev/null @@ -1,80 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * PrintConnector for passing print data to a file. - */ -class FilePrintConnector implements PrintConnector { - /** - * @var resource The file pointer to send data to. - */ - protected $fp; - - /** - * Construct new connector, given a filename - * - * @param string $filename - */ - public function __construct($filename) { - $this -> fp = fopen($filename, "wb+"); - if($this -> fp === false) { - throw new Exception("Cannot initialise FilePrintConnector."); - } - } - - public function __destruct() { - if($this -> fp !== false) { - trigger_error("Print connector was not finalized. Did you forget to close the printer?", E_USER_NOTICE); - } - } - - /** - * Close file pointer - */ - public function finalize() { - fclose($this -> fp); - $this -> fp = false; - } - - /* (non-PHPdoc) - * @see PrintConnector::read() - */ - public function read($len) { - rewind($this -> fp); - return fgets($this -> fp, $len + 1); - } - - /** - * Write data to the file - * - * @param string $data - */ - public function write($data) { - fwrite($this -> fp, $data); - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/ImagePrintBuffer.php b/htdocs/includes/mike42/escpos-php/src/ImagePrintBuffer.php deleted file mode 100644 index 08ca64ac43e..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/ImagePrintBuffer.php +++ /dev/null @@ -1,99 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * This class renders text to small images on-the-fly. It attempts to mimic the - * behaviour of text output, whilst supporting any fonts & character encodings - * which your system can handle. This class currently requires Imagick. - */ -class ImagePrintBuffer implements PrintBuffer { - private $printer; - - function __construct() { - if(!EscposImage::isImagickLoaded()) { - throw new Exception("ImagePrintBuffer requires the imagick extension"); - } - } - - function flush() { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - } - - function getPrinter() { - return $this -> printer; - } - - function setPrinter(Escpos $printer = null) { - $this -> printer = $printer; - } - - function writeText($text) { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - if($text == null) { - return; - } - $text = trim($text, "\n"); - /* Create Imagick objects */ - $image = new Imagick(); - $draw = new ImagickDraw(); - $color = new ImagickPixel('#000000'); - $background = new ImagickPixel('white'); - - /* Create annotation */ - //$draw -> setFont('Arial');// (not necessary?) - $draw -> setFontSize(24); // Size 21 looks good for FONT B - $draw -> setFillColor($color); - $draw -> setStrokeAntialias(true); - $draw -> setTextAntialias(true); - $metrics = $image -> queryFontMetrics($draw, $text); - $draw -> annotation(0, $metrics['ascender'], $text); - - /* Create image & draw annotation on it */ - $image -> newImage($metrics['textWidth'], $metrics['textHeight'], $background); - $image -> setImageFormat('png'); - $image -> drawImage($draw); - //$image -> writeImage("test.png"); - - /* Save image */ - $escposImage = new EscposImage(); - $escposImage -> readImageFromImagick($image); - $size = Escpos::IMG_DEFAULT; - $this -> printer -> bitImage($escposImage, $size); - } - - function writeTextRaw($text) { - if($this -> printer == null) { - throw new LogicException("Not attached to a printer."); - } - $this -> printer -> getPrintConnector() -> write($data); - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/NetworkPrintConnector.php b/htdocs/includes/mike42/escpos-php/src/NetworkPrintConnector.php deleted file mode 100644 index 4dd2c39f115..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/NetworkPrintConnector.php +++ /dev/null @@ -1,39 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * PrintConnector for directly opening a network socket to a printer to send it commands. - */ -class NetworkPrintConnector extends FilePrintConnector { - public function __construct($ip, $port = "9100") { - $this -> fp = @fsockopen($ip, $port, $errno, $errstr); - if($this -> fp === false) { - throw new Exception("Cannot initialise NetworkPrintConnector: " . $errstr); - } - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/P822DCapabilityProfile.php b/htdocs/includes/mike42/escpos-php/src/P822DCapabilityProfile.php deleted file mode 100644 index 7c3b5abe6dd..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/P822DCapabilityProfile.php +++ /dev/null @@ -1,90 +0,0 @@ - CodePage::CP437, - 1 => false, // Katakana - 2 => CodePage::CP850, - 3 => CodePage::CP860, - 4 => CodePage::CP863, - 5 => CodePage::CP865, - 6 => false, // Western Europe - 7 => false, // Greek - 8 => false, // Hebrew - 9 => false, // Eastern europe - 10 => false, // Iran - 16 => CodePage::CP1252 , - 17 => CodePage::CP866 , - 18 => CodePage::CP852 , - 19 => CodePage::CP858, - 20 => false, // Iran II - 21 => false, // latvian - 22 => false, //Arabic - 23 => false, // PT151, 1251 - 24 => CodePage::CP747, - 25 => CodePage::CP1257, - 27 => false, // Vietnam, - 28 => CodePage::CP864, - 29 => CodePage::CP1001, - 30 => false, // Uigur - 31 => false, // Hebrew - 32 => CodePage::CP1255, - 33 => CodePage::CP720, - 34 => CodePage::CP1256, - 35 => CodePage::CP1257, - 255 => false, // Thai - - 50 => CodePage::CP437, - 51 => false, // Jatakana, - 52 => CodePage::CP437, - 53 => CodePage::CP858, - 54 => CodePage::CP852, - 55 => CodePage::CP860, - 56 => CodePage::CP861, - 57 => CodePage::CP863, - 58 => CodePage::CP865, - 59 => CodePage::CP866, - 60 => CodePage::CP855, - 61 => CodePage::CP857, - 62 => CodePage::CP862, - 63 => CodePage::CP864, - 64 => CodePage::CP737, - 65 => CodePage::CP851, - 66 => CodePage::CP869, - 67 => CodePage::CP928, - 68 => CodePage::CP772, - 69 => CodePage::CP774, - 70 => CodePage::CP874, - 71 => CodePage::CP1252, - 72 => CodePage::CP1250, - 73 => CodePage::CP1251, - 74 => CodePage::CP3840, - 75 => CodePage::CP3841, - 76 => CodePage::CP3843, - 77 => CodePage::CP3844, - 78 => CodePage::CP3845, - 79 => CodePage::CP3846, - 80 => CodePage::CP3847, - 81 => CodePage::CP3848, - 82 => CodePage::CP1001, - 83 => CodePage::CP2001, - 84 => CodePage::CP3001, - 85 => CodePage::CP3002, - 86 => CodePage::CP3011, - 87 => CodePage::CP3012, - 88 => CodePage::CP3021, - 89 => CodePage::CP3041 - ); - } - - public function getSupportsGraphics() { - /* Ask the driver to use bitImage wherever possible instead of graphics */ - return false; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/PrintBuffer.php b/htdocs/includes/mike42/escpos-php/src/PrintBuffer.php deleted file mode 100644 index 9e3b110085f..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/PrintBuffer.php +++ /dev/null @@ -1,75 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Print buffers manage newlines and character encoding for the target printer. - * They are used as a swappable component: text or image-based output. - * - * - Text output (EscposPrintBuffer) is the fast default, and is recommended for - * most people, as the text output can be more directly manipulated by ESC/POS - * commands. - * - Image output (ImagePrintBuffer) is designed to accept more encodings than the - * physical printer supports, by rendering the text to small images on-the-fly. - * This takes a lot more CPU than sending text, but is necessary for some users. - * - If your use case fits outside these, then a further speed/flexibility trade-off - * can be made by printing directly from generated HTML or PDF. - */ -interface PrintBuffer { - /** - * Cause the buffer to send any partial input and wait on a newline. - * If the printer is already on a new line, this does nothing. - */ - function flush(); - - /** - * Used by Escpos to check if a printer is set. - */ - function getPrinter(); - - /** - * Used by Escpos to hook up one-to-one link between buffers and printers. - * - * @param Escpos $printer New printer - */ - function setPrinter(Escpos $printer = null); - - /** - * Accept UTF-8 text for printing. - * - * @param string $text Text to print - */ - function writeText($text); - - /** - * Accept 8-bit text in the current encoding and add it to the buffer. - * - * @param string $text Text to print, already the target encoding. - */ - function writeTextRaw($text); -} -?> \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/src/PrintConnector.php b/htdocs/includes/mike42/escpos-php/src/PrintConnector.php deleted file mode 100644 index f1d37be9c55..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/PrintConnector.php +++ /dev/null @@ -1,56 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Interface passed to Escpos class for receiving print data. Print connectors - * are responsible for transporting this to the actual printer. - */ -interface PrintConnector { - /** - * Print connectors should cause a NOTICE if they are deconstructed - * when they have not been finalized. - */ - public function __destruct(); - - /** - * Finish using this print connector (close file, socket, send - * accumulated output, etc). - */ - public function finalize(); - - /** - * @param string $data - * @return Data read from the printer, or false where reading is not possible. - */ - public function read($len); - - /** - * @param string $data - */ - public function write($data); -} diff --git a/htdocs/includes/mike42/escpos-php/src/SimpleCapabilityProfile.php b/htdocs/includes/mike42/escpos-php/src/SimpleCapabilityProfile.php deleted file mode 100644 index 7076b5e16cb..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/SimpleCapabilityProfile.php +++ /dev/null @@ -1,17 +0,0 @@ - CodePage::CP437); - } - - public function getSupportsGraphics() { - /* Ask the driver to use bitImage wherever possible instead of graphics */ - return false; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/StarCapabilityProfile.php b/htdocs/includes/mike42/escpos-php/src/StarCapabilityProfile.php deleted file mode 100644 index f61774a5e30..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/StarCapabilityProfile.php +++ /dev/null @@ -1,82 +0,0 @@ - "ÇüéâäàåçêëèïîìÄÅ" . - "ÉæÆôöòûùÿÖÜ¢£¥₧ƒ" . - "áíóúñѪº¿⌐¬½¼¡«»" . - "░▒▓│┤Ā╢ņ╕╣║╗╝╜╛┐" . - "└┴┬├─┼ā╟╚╔╩╦╠═╬╧" . - "Š╤čČ╘╒ģĪī┘┌█▄ūŪ▀" . - "αßΓπΣσµτΦΘΩδ∞φε∩" . - "ĒēĢķĶļĻžŽ∙·√Ņš■ ", - 'CP3012' => "АБВГДЕЖЗИЙКЛМНОП" . - "РСТУФХЦЧШЩЪЫЬЭЮЯ" . - "абвгдежзийклмноп" . - "░▒▓│┤Ā╢ņ╕╣║╗╝Ō╛┐" . - "└┴┬├─┼ā╟╚╔╩╦╠═╬╧" . - "Š╤čČ╘╒ģĪī┘┌█▄ūŪ▀" . - "рстуфхцчшщъыьэюя" . - "ĒēĢķĶļĻžŽ∙·√Ņš■ " - ); - } - - function getSupportedCodePages() { - return array( - 0 => CodePage::CP437, // "Normal" - 1 => CodePage::CP437, - 2 => CodePage::CP932, - 3 => CodePage::CP437, - 4 => CodePage::CP858, - 5 => CodePage::CP852, - 6 => CodePage::CP860, - 7 => CodePage::CP861, - 8 => CodePage::CP863, - 9 => CodePage::CP865, - 10 => CodePage::CP866, - 11 => CodePage::CP855, - 12 => CodePage::CP857, - 13 => CodePage::CP862, - 14 => CodePage::CP864, - 15 => CodePage::CP737, - 16 => CodePage::CP851, - 17 => CodePage::CP869, - 18 => CodePage::CP928, - 19 => CodePage::CP772, - 20 => CodePage::CP774, - 21 => CodePage::CP874, - 32 => CodePage::CP1252, - 33 => CodePage::CP1250, - 34 => CodePage::CP1251, - 64 => CodePage::CP3840, - 65 => CodePage::CP3841, - 66 => CodePage::CP3843, - 67 => CodePage::CP3844, - 68 => CodePage::CP3845, - 69 => CodePage::CP3846, - 70 => CodePage::CP3847, - 71 => CodePage::CP3848, - 72 => CodePage::CP1001, - 73 => CodePage::CP2001, - 74 => CodePage::CP3001, - 75 => CodePage::CP3002, - 76 => 'custom:CP3011', - 77 => 'custom:CP3012', - 78 => CodePage::CP3021, - 79 => CodePage::CP3041, - 96 => false, // Thai Character Code 42 - 97 => false, // Thai Character Code 11 - 98 => false, // Thai Character Code 13 - 99 => false, // Thai Character Code 14 - 100 => false, // Thai Character Code 16 - 101 => false, // Thai Character Code 17 - 102 => false, // Thai Character Code 18 - 255 => false); - } - - function getSupportsStarCommands() { - /* Allows Escpos.php to substitute emulated ESC/POS commands with native ones for this printer. */ - return true; - } -} \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/src/WindowsPrintConnector.php b/htdocs/includes/mike42/escpos-php/src/WindowsPrintConnector.php deleted file mode 100644 index 717e9c1a572..00000000000 --- a/htdocs/includes/mike42/escpos-php/src/WindowsPrintConnector.php +++ /dev/null @@ -1,356 +0,0 @@ -, - * incorporating modifications by: - * - Roni Saha - * - Gergely Radics - * - Warren Doyle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Connector for sending print jobs to - * - local ports on windows (COM1, LPT1, etc) - * - shared (SMB) printers from any platform (\\server\foo) - * For USB printers or other ports, the trick is to share the printer with a generic text driver, then access it locally. - */ -class WindowsPrintConnector implements PrintConnector { - /** - * @var array Accumulated lines of output for later use. - */ - private $buffer; - - /** - * @var string The hostname of the target machine, or null if this is a local connection. - */ - private $hostname; - - /** - * @var boolean True if a port is being used directly (must be Windows), false if network shares will be used. - */ - private $isLocal; - - /** - * @var int Platform we're running on, for selecting different commands. See PLATFORM_* constants. - */ - private $platform; - - /** - * @var string The name of the target printer (eg "Foo Printer") or port ("COM1", "LPT1"). - */ - private $printerName; - - /** - * @var string Login name for network printer, or null if not using authentication. - */ - private $userName; - - /** - * @var string Password for network printer, or null if no password is required. - */ - private $userPassword; - - /** - * @var string Workgroup that the printer is located on - */ - private $workgroup; - - /** - * @var int represents Linux - */ - const PLATFORM_LINUX = 0; - - /** - * @var int represents Mac - */ - const PLATFORM_MAC = 1; - - /** - * @var int represents Windows - */ - const PLATFORM_WIN = 2; - - /** - * @var string Valid local ports. - */ - const REGEX_LOCAL = "/^(LPT\d|COM\d)$/"; - - /** - * @var string Valid printer name. - */ - const REGEX_PRINTERNAME = "/^[\w-]+(\s[\w-]+)*$/"; - - /** - * @var string Valid smb:// URI containing hostname & printer with optional user & optional password only. - */ - const REGEX_SMB = "/^smb:\/\/([\s\w-]+(:[\s\w-]+)?@)?[\w-]+\/([\w-]+\/)?[\w-]+(\s[\w-]+)*$/"; - - /** - * @param string $dest - * @throws BadMethodCallException - */ - public function __construct($dest) { - $this -> platform = $this -> getCurrentPlatform(); - $this -> isLocal = false; - $this -> buffer = null; - $this -> userName = null; - $this -> userPassword = null; - $this -> workgroup = null; - if(preg_match(self::REGEX_LOCAL, $dest) == 1) { - // Straight to LPT1, COM1 or other local port. Allowed only if we are actually on windows. - if($this -> platform !== self::PLATFORM_WIN) { - throw new BadMethodCallException("WindowsPrintConnector can only be used to print to a local printer ('".$dest."') on a Windows computer."); - } - $this -> isLocal = true; - $this -> hostname = null; - $this -> printerName = $dest; - } else if(preg_match(self::REGEX_SMB, $dest) == 1) { - // Connect to samba share, eg smb://host/printer - $part = parse_url($dest); - $this -> hostname = $part['host']; - /* Printer name and optional workgroup */ - $path = ltrim($part['path'], '/'); - if(strpos($path, "/") !== false) { - $pathPart = explode("/", $path); - $this -> workgroup = $pathPart[0]; - $this -> printerName = $pathPart[1]; - } else { - $this -> printerName = $path; - } - /* Username and password if set */ - if(isset($part['user'])) { - $this -> userName = $part['user']; - if(isset($part['pass'])) { - $this -> userPassword = $part['pass']; - } - } - } else if(preg_match(self::REGEX_PRINTERNAME, $dest) == 1) { - // Just got a printer name. Assume it's on the current computer. - $hostname = gethostname(); - if(!$hostname) { - $hostname = "localhost"; - } - $this -> hostname = $hostname; - $this -> printerName = $dest; - } else { - throw new BadMethodCallException("Printer '" . $dest . "' is not a valid printer name. Use local port (LPT1, COM1, etc) or smb://computer/printer notation."); - } - $this -> buffer = array(); - } - - public function __destruct() { - if($this -> buffer !== null) { - trigger_error("Print connector was not finalized. Did you forget to close the printer?", E_USER_NOTICE); - } - } - - public function finalize() { - $data = implode($this -> buffer); - $this -> buffer = null; - if($this -> platform == self::PLATFORM_WIN) { - $this -> finalizeWin($data); - } else if($this -> platform == self::PLATFORM_LINUX) { - $this -> finalizeLinux($data); - } else { - $this -> finalizeMac($data); - } - } - - /** - * Send job to printer -- platform-specific Linux code. - * - * @param string $data Print data - * @throws Exception - */ - protected function finalizeLinux($data) { - /* Non-Windows samba printing */ - $device = "//" . $this -> hostname . "/" . $this -> printerName; - if($this -> userName !== null) { - $user = ($this -> workgroup != null ? ($this -> workgroup . "\\") : "") . $this -> userName; - if($this -> userPassword == null) { - // No password - $command = sprintf("smbclient %s -U %s -c %s -N", - escapeshellarg($device), - escapeshellarg($user), - escapeshellarg("print -")); - $redactedCommand = $command; - } else { - // With password - $command = sprintf("smbclient %s %s -U %s -c %s", - escapeshellarg($device), - escapeshellarg($this -> userPassword), - escapeshellarg($user), - escapeshellarg("print -")); - $redactedCommand = sprintf("smbclient %s %s -U %s -c %s", - escapeshellarg($device), - escapeshellarg("*****"), - escapeshellarg($user), - escapeshellarg("print -")); - } - } else { - // No authentication information at all - $command = sprintf("smbclient %s -c %s -N", - escapeshellarg($device), - escapeshellarg("print -")); - $redactedCommand = $command; - } - $retval = $this -> runCommand($command, $outputStr, $errorStr, $data); - if($retval != 0) { - throw new Exception("Failed to print. Command \"$redactedCommand\" failed with exit code $retval: " . trim($outputStr)); - } - } - - protected function finalizeMac($data) { - throw new Exception("Mac printing not implemented."); - } - - /** - * Send data to printer -- platform-specific Windows code. - * - * @param string $data - */ - protected function finalizeWin($data) { - /* Windows-friendly printing of all sorts */ - if(!$this -> isLocal) { - /* Networked printing */ - $device = "\\\\" . $this -> hostname . "\\" . $this -> printerName; - if($this -> userName !== null) { - /* Log in */ - $user = "/user:" . ($this -> workgroup != null ? ($this -> workgroup . "\\") : "") . $this -> userName; - if($this -> userPassword == null) { - $command = sprintf("net use %s %s", - escapeshellarg($device), - escapeshellarg($user)); - $redactedCommand = $command; - } else { - $command = sprintf("net use %s %s %s", - escapeshellarg($device), - escapeshellarg($user), - escapeshellarg($this -> userPassword)); - $redactedCommand = sprintf("net use %s %s %s", - escapeshellarg($device), - escapeshellarg($user), - escapeshellarg("*****")); - } - $retval = $this -> runCommand($command, $outputStr, $errorStr); - if($retval != 0) { - throw new Exception("Failed to print. Command \"$redactedCommand\" failed with exit code $retval: " . trim($errorStr)); - } - } - /* Final print-out */ - $filename = tempnam(sys_get_temp_dir(), "escpos"); - file_put_contents($filename, $data); - if(!$this -> runCopy($filename, $device)){ - throw new Exception("Failed to copy file to printer"); - } - unlink($filename); - } else { - /* Drop data straight on the printer */ - if(!$this -> runWrite($data, $this -> printerName)) { - throw new Exception("Failed to write file to printer at " . $this -> printerName); - } - } - } - - /** - * @return string Current platform. Separated out for testing purposes. - */ - protected function getCurrentPlatform() { - if(PHP_OS == "WINNT") { - return self::PLATFORM_WIN; - } - if(PHP_OS == "Darwin") { - return self::PLATFORM_MAC; - } - return self::PLATFORM_LINUX; - } - - /* (non-PHPdoc) - * @see PrintConnector::read() - */ - public function read($len) { - /* Two-way communication is not supported */ - return false; - } - - /** - * Run a command, pass it data, and retrieve its return value, standard output, and standard error. - * - * @param string $command the command to run. - * @param string $outputStr variable to fill with standard output. - * @param string $errorStr variable to fill with standard error. - * @param string $inputStr text to pass to the command's standard input (optional). - * @return number - */ - protected function runCommand($command, &$outputStr, &$errorStr, $inputStr = null) { - $descriptors = array( - 0 => array("pipe", "r"), - 1 => array("pipe", "w"), - 2 => array("pipe", "w"), - ); - $process = proc_open($command, $descriptors, $fd); - if (is_resource($process)) { - /* Write to input */ - if($inputStr !== null) { - fwrite($fd[0], $inputStr); - } - fclose($fd[0]); - /* Read stdout */ - $outputStr = stream_get_contents($fd[1]); - fclose($fd[1]); - /* Read stderr */ - $errorStr = stream_get_contents($fd[2]); - fclose($fd[2]); - /* Finish up */ - $retval = proc_close($process); - return $retval; - } else { - /* Method calling this should notice a non-zero exit and print an error */ - return -1; - } - } - - /** - * Copy a file. Separated out so that nothing is actually printed during test runs. - * - * @param string $from Source file - * @param string $to Destination file - * @return boolean True if copy was successful, false otherwise - */ - protected function runCopy($from, $to) { - return copy($from, $to); - } - - /** - * Write data to a file. Separated out so that nothing is actually printed during test runs. - * - * @param string $data Data to print - * @param string $to Destination file - * @return boolean True if write was successful, false otherwise - */ - protected function runWrite($data, $to) { - return file_put_contents($data, $to) !== false; - } - - public function write($data) { - $this -> buffer[] = $data; - } -} diff --git a/htdocs/includes/mike42/escpos-php/src/cache/Characters-DefaultCapabilityProfile.ser.gz b/htdocs/includes/mike42/escpos-php/src/cache/Characters-DefaultCapabilityProfile.ser.gz deleted file mode 100644 index 43ad39d229582af5ad7121088bf2c6287e067e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12928 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

    AN>wkF3^lWB>v&YPaMdeJ# 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 diff --git a/htdocs/includes/mike42/escpos-php/src/cache/Characters-SimpleCapabilityProfile.ser.gz b/htdocs/includes/mike42/escpos-php/src/cache/Characters-SimpleCapabilityProfile.ser.gz deleted file mode 100644 index 288b7d3740782fbcc9d9a28d71a6ecc330683eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 zcmV-i1f%;OiwFP!0000019jGCa}-Aq2H^j4zu=@ppj-W#6S@x+l>LD!S5XvI%G|-( zDBPZM&N)j+LdafhIRGb;P0kqyYz!D2xgGlLa@lWxQt7$b*`As1-br{d@8Etf?nM$G zCHCw~lRM>N;gO`CvM?<}uDCNAj@HmhwhZCfOE_CYw{>ZDVf! zrP{9H4RVQ(<`;%MzXIgRu7}KTVtJ#+Q=|sNQ26~KPXc$d7?qYbz8mBu+;Ah|(?)@0 zjDpP=pY|1FdXkS}l(WWSN%@7tjoDL1*Q(+dr+{3_TvGGPaqvGb_)ag9{9yNo70G}7 zmiW)zet+SINM-m}ZuJhT0Am8xfPR4*z@R`apjV&{FeFe97!f!O7#BzZCIr%eQGp|X z8G)mKX@Lx2Qs84it-vRMI)P(=v_J!3SfCM5FVF;76lex43uFQF0zP0}AO~0#XaQ^r zv;uMhZGcXJc7Xur(g7F{=mg*xy28J>Cp+nuAzMuXJ$Ox@KrdiQpbxMh&<|J>7y!%( z3<4Sjh7cK!e;9x{MgZ85QN*5U5E;V|9QQb2Ltp}cI&S!5oPtrl5OLD?)qd_=RPf-_xKK_0BA_#($uaPX@th1r_p{3XUpJ!MjeWREm7Ag5&!_BEvnp6uUIi7lt%62&P6e58UImqUL8VRPqDrgCB^Bi1w<^fP?^KZB zmsL=ES9G5-^Hr6M$TiLIl*n}zG}jv{cYw-2>5zioy zpY$0_`y7%+U-%i(V~>8(AxM}PDoCndAsHm_OBGD~3VXdG@LH$AIsb-t&kDTJfRUPS zF$A;xu0v3Re?Y3x&;P_j_(=YxseyR^#t^_i5qG&M4BDGK;D#4|jh0lzkjbXRFnB3hb^MN8s^XWjvL>zN7b6aWBu>k}&g diff --git a/htdocs/includes/mike42/escpos-php/src/cache/Characters-StarCapabilityProfile.ser.gz b/htdocs/includes/mike42/escpos-php/src/cache/Characters-StarCapabilityProfile.ser.gz deleted file mode 100644 index e0bb0e5fec5c59a4131ae1f2f4151d392f435b91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9416 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 $c) { - $code = ord($c); - if($code < 32 || $code > 126) { - $chars[$i] = "\\x" . bin2hex($c); - } - } - return implode($chars); -} diff --git a/htdocs/includes/mike42/escpos-php/test/integration/ExampleTest.php b/htdocs/includes/mike42/escpos-php/test/integration/ExampleTest.php deleted file mode 100644 index 689891e2432..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/integration/ExampleTest.php +++ /dev/null @@ -1,126 +0,0 @@ - exampleDir = dirname(__FILE__) . "/../../example/"; - } - - public function testBitImage() { - $this -> requireGraphicsLibrary(); - $outp = $this -> runExample("bit-image.php"); - $this -> outpTest($outp, "bit-image.bin"); - } - - public function testCharacterEncodings() { - $outp = $this -> runExample("character-encodings.php"); - $this -> outpTest($outp, "character-encodings.bin"); - } - - public function testCharacterTables() { - $outp = $this -> runExample("character-tables.php"); - $this -> outpTest($outp, "character-tables.bin"); - } - - private function outpTest($outp, $fn) { - $file = dirname(__FILE__) . "/resources/output/".$fn; - if(!file_exists($file)) { - file_put_contents($file, $outp); - } - $this -> assertEquals($outp, file_get_contents($file)); - } - - public function testDemo() { - $this -> requireGraphicsLibrary(); - $outp = $this -> runExample("demo.php"); - $this -> outpTest($outp, "demo.bin"); - } - - public function testGraphics() { - $this -> requireGraphicsLibrary(); - $outp = $this -> runExample("graphics.php"); - $this -> outpTest($outp, "graphics.bin"); - } - - public function testReceiptWithLogo() { - $this -> requireGraphicsLibrary(); - $outp = $this -> runExample("receipt-with-logo.php"); - $this -> outpTest($outp, "receipt-with-logo.bin"); - } - - public function testQrCode() { - $outp = $this -> runExample("qr-code.php"); - $this -> outpTest($outp, "qr-code.bin"); - } - - public function testBarcode() { - $outp = $this -> runExample("barcode.php"); - $this -> outpTest($outp, "barcode.bin"); - } - - public function testTextSize() { - $outp = $this -> runExample("text-size.php"); - $this -> outpTest($outp, "text-size.bin"); - } - - /** - * @large - */ - public function testPrintFromPdf() { - if(!EscposImage::isImagickLoaded()) { - $this -> markTestSkipped("imagick plugin required for this test"); - } - $outp = $this -> runExample("print-from-pdf.php"); - $this -> outpTest(gzcompress($outp, 9), "print-from-pdf.bin.z"); // Compressing output because it's ~1MB - } - - public function testInterfaceEthernet() { - // Test attempts DNS lookup on some machine - $outp = $this -> runExample("interface/ethernet.php"); - $this -> outpTest($outp, "interface.bin"); - } - - public function testInterfaceLinuxUSB() { - $outp = $this -> runExample("interface/linux-usb.php"); - $this -> outpTest($outp, "interface.bin"); - } - - public function testInterfaceWindowsUSB() { - // Output varies between platforms, not checking. - $outp = $this -> runExample("interface/windows-usb.php"); - $this -> outpTest($outp, "interface.bin"); - } - - public function testInterfaceSMB() { - // Output varies between platforms, not checking. - $outp = $this -> runExample("interface/smb.php"); - $this -> outpTest($outp, "interface.bin"); - } - - public function testInterfaceWindowsLPT() { - // Output varies between platforms, not checking. - $outp = $this -> runExample("interface/windows-lpt.php"); - $this -> outpTest($outp, "interface.bin"); - } - - private function runExample($fn) { - // Change directory and check script - chdir($this -> exampleDir); - $this -> assertTrue(file_exists($fn), "Script $fn not found."); - // Run command and save output - ob_start(); - passthru("php " . escapeshellarg($fn), $retval); - $outp = ob_get_contents(); - ob_end_clean(); - // Check return value - $this -> assertEquals(0, $retval, "Example $fn exited with status $retval"); - return $outp; - } - - protected function requireGraphicsLibrary() { - if(!EscposImage::isGdLoaded() && !EscposImage::isImagickLoaded()) { - $this -> markTestSkipped("This test requires a graphics library."); - } - } -} diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/barcode.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/barcode.bin deleted file mode 100644 index 79a2daf803edde452d5e0e47aa7e2545bb108962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2342 zcmbVOOK;Oa5N<#~apB0Rsx*}VrKNc|DSdDO$4wy|BBZnx*Nwd-t2$oGyJ=eG&og6h z5^s}~7F9~u-kope`{uFU{3uKkWF_~=6 z1i%v|qvqI-U>&ea$oDE>xBk=Xy3Jafe%B`J;d*>LHHzR~kC9YO zOJ8`fzSoj#5cbU$lQ;>}L>W ziHYl6oUfw0V9IZJZ1{lulTSZ&;Gi2lk_bmSU4phK zfEDE7-@i`Dr$Y?$tRCnfMO8 zp5N(!P{3}Oh%z}5y+pNbc|lOp6NCIgeVMHdy4%P`!BgO=`9N`vx{Q;ArvXzOK7zU% z^<`vt!<6_?KGAjO_2LPGoTId0z+;|bduCrA#rt~NGUg`w&RhFU5ypqv9cr4|0lLlU myC4{*<%Ub&1!=k2$p0TU_biE~{#W=!QNEb^?`U=9J^u^w*`<2` diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/bit-image.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/bit-image.bin deleted file mode 100644 index 462eb1a0bf32bbe4bd68b8e9dc8304bc6559549b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9789 zcmeI2F>l*O6o4N~Km-iK^i~;FL=GL2p@BvZhRz)ebP9|X-K1KqB~%s#T524iFxjbN zmdwphF^m3y{)0q7hm2K`Au8;Meed0)cvM`p2s#yahROTx9q-<~dptee>7(P5VRR9N z(PjU9I*!88dH*cB2>VGCPLt7O77fD3quDT=4Wlp~529q}>(NZt(iOtf`24&-89WTX zis#|QFrJSGVLTZ>3FjBl&d1a6lWvHQd`9iwe-Mto33b_7(w`1Trx#c@h_S~>JllC3 zC*R_;;gfitNcYLZot=B%bzmQ!!M{wZs8w`|A~y^CqF9<76veH{X;G|AE-)F4%@svf z6)@)&yCgT*BVJVUZANu!3jGrYRDV^q_g-uan4hon52iuX(*kPjtsyn)cimf11|K=^ z@P1H}uZ~PUoUXnP41*soS63!CSF5$jt!=(}T9@BCb-sjJ`|T;Tl+j;s3|?V!22f)( zwOPN792oUmTYLcEn(~7T_Dnv?p;_Y|^pw$Fx9Q}u;c#lthhI(pdFA?s177u@<(a$> z9nWyU^)BQ!Zn&9eIOH1V%dOrBBpg7+IJ*E&<#58A3H8VoonkWppI!4E-V7k%cdvSb z6mz;!I2B%Cvy{>WUDZZmol&KNPRT2(Mw;hz3rY_y`C1efOZhKFVX>tDyC~?tq{qQ~ zBOF|poN-2Jc5lSu>WYiqw=#fKvs3bw?$=q%0M?>M$!|sPwH~)qaw`0%ELExEitdfD z+GagK@AZQ90ky@!bMDxClWV!KUojiReKDy_2zOSRW%$tRrX>|`~zUU!CCqU&>(9&$6hIJ*4?W<6r* zkBq{zoQqj5|&yb^2Rw+y?1WjC-? z`9_o*R`gYpQpwlCb^}Y>#cp7|AVb&w__dkCx&QG7)=7UnzB{~fZFr^E zMH^n(^Fez)XwL@~f5WQI3w8Wx&j)3dwC95uEKs;$&j;=Kpu7|Cc|SSR+gGCr{;VrW ZqSG1v3@e_-$!vr_%c`9j-uvQH_b;K8L%;w4 diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-encodings.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-encodings.bin deleted file mode 100644 index 0a762c8c160e39da6be9fc7c587b76a53e73c74e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmZuyTWl0n7zTZ-F;NqrHYQ&a6ELYh_(Xg`2<0M;K_p^)J3DiB=X7W0tmn*ZFHiIa zR0;;u2!aW1xoo-1r9iotise>dmtH}zh0+Txkg&LkVxs@9`xS6bN@--@RpuT>_RtePo=rc;uJs_ z5d@ViaS@WGDE6JGhKvz?%7H{GFM}y_(Y}nnkf_i`RJh>^;Yuv$uEDj>!*n6Et%W3X*MCK$>PQjM|zY@1Xp$iSd|BEyw1B@AX*QYo3uaXzJN z&m`@Y-0Npem*<2SOszxC% z4KpPstw9EBQL)ByFW|lNOs#=e5vf<9t*R+p8O;$fICaO@hHne6)}&BlC$Ijs$PCoU-ww=1cT}wtLqjp z%WIYIR3RaFv>0=l#SoEHbmfKYx*9(2BUVKRAd9s`J~!AB!*Z{$LJ7PiRyUd3$;jKt z0e%p2qXQjL>BRywtp24{b=X(=*hYntBIo5Rztyhj8ZpVQWN4t~PPvY?98>dg*&ZCAi zYq?Yr4dIgSWLR-M)rFRk9We8AIs+C{%*dJ6kS3XzJR@utwD}Z)cUzO^E+yhS&L$2W zn83i*`01{riN=c)rxK%aoa`SPI5?Wz-7^|*>+VeM>OMViVx)C@Yg6*v){etC(%;x} zqrIc~#Qv`1iI%R$WP5Ys_?fZJ_=V(o{E}=vpJ;4NUZL;X`VL**+ZErLXldWIFNr4V_g}cU#PTDC>AD_a?EDGbmigY!AtM6^IjRe0{2|>kZ;>Bi$1v}hdGIydrYCd zGBta0NrvnkYBR#X%%#hU=q!8GZlY1C=todMU4aCqW(J|P&-IkNA9ts3<7#T~PKxfs z*V6bSbuWE+FpZAEuGGC7X`D}A$Awffbt`oV8}KmI**`&ZJ*g`XZ~lo3>H8fRN?jT3 zXiMQ<`et88BAwx}kOvhn`ClHkpq~xRk{MrR@_tn%)^FJOJ$_n^irTeUx1wgv$_muf j)o=O%>wa8;x*Dvi*jSAfwcnw7LtX9a>b&>9n)CX9MQ`KH diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-tables.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/character-tables.bin deleted file mode 100644 index f3fb990cea3c56a9631360b2d12cb0e5b64254c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8174 zcmdT}Rdf?k5N#=TaJL*_3)C%}WF1NkjpY#0?C(h z45ESa7c5+~c*)Xb%U7&iwR+9kb?Y~5+_ZVi)@|E&?A*0`&)$7B&_Vhzhj=gwcace>RFz*0_>*o&=LuZ-FAn_8 zyq&8A!x+ev&DZTp0><9q6%(p+E(QF#JA7%tkPgq6r!s&cU6l`07BHlf@nOmVhIha9fTyV6?T6 zf^0nT0sapA!}aF*0)Nf^L~@ZqRsVh=e6D|S4On}V27_b0_`zt|hz;J&iumXmASyhK&6z-)(UBGZpkRgEKURs0#hI>I2 l1{m%IQ8-|@7erAEqjKxXWEf&yyxX3ve?UC!%Etz|`~{yY7?A(~ diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/demo.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/demo.bin deleted file mode 100644 index 6b426d91ff0563a2ec43c93217f26a492e8d9396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73643 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 M5AW>X{`!mPPivkA#sB~S diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/interface.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/interface.bin deleted file mode 100644 index 729d4f4481b..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/interface.bin +++ /dev/null @@ -1,2 +0,0 @@ -@Hello World! -VA \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/print-from-pdf.bin.z b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/print-from-pdf.bin.z deleted file mode 100644 index f89eb5d2115e388de90586ff30d80a47fc0ad083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17081 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 baI$Cav;BIBA!wfEw|@W6|LqUE=-dSWqat^g diff --git a/htdocs/includes/mike42/escpos-php/test/integration/resources/output/qr-code.bin b/htdocs/includes/mike42/escpos-php/test/integration/resources/output/qr-code.bin deleted file mode 100644 index a1e687f151c8f8db633da3fa63fcc0d67fbb6671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmbW1%}>HG6u_t8We4M(m^^M6J#6Dcy@^WVK@6zzUbhOBwVhq3gTLN4zC;SLLcwb^4Fs%YZ^axwI=)>$o;5TW;ISE+xyoDb3D~gXf{;_MB%LYbFNZdi7bT z?{sCXA!a-ZDbSQ;r)^ir9>$GXPlPWaXW&zz6%7z(p`3F|Gyy757!7vWo@TZVYBrj! z^NY*vx5ckKB%CVd+x9m1DVeteJ5hw$8y10bHnYCKyln$-3me8OwupM3J#v(WyfXo0TM?&e18G=`?b5 z4$KhE97Hy8CJALw;# k<|_&F8YT^J0>~w5QL=Ip$*1cQ(OqxX~7|PHI^$;+biUCaG-b< zbkNsYg1nc0z4RhHU7dT3|(d)C_d?ac6hZ+6UB)o-dT=fRgd zpFgbk>W0|726xg0-U0->UoL0HJX{(VYKP7ZxnIhPHVA``3=CP%Cj z)(PW)x!Rogn@(h!TjJOMkctJMfLO3m27V5VHXZk-fGi$t`eOX{#ni!!#C|Pk>xBS` z`hakY$!44yirQVwNsRVY#6gS$aOrxBBEZa0ZkBtZ@UUQr4q}q~iKG(5G@xC(jF2bJ zy=0SWmd0-8Cz(eSp*Tu|iz#Z8C8U6fV3@LNMP*DBZW;^<)0b>dK-K;*^{!=<-P9Ag zn+3#_BdT7ABKafXUCZ59QO*qI72ppfbtSwM6QTt5^=AsvL!l^kCEQfHG9)USrCiJ= zRE&2}fcb>-aX7y(2#N{i;pIF^&Q?=u_7LCPK|wrrLVzcf6Em}?zJQD+NmuWnJnIe$ZtAnUuvO3s6 zW`qyyf~HMMi4s&ve+DMMx*chEjGd7H?6XwD8}cEb5r-e6X4 z0!BL8Oh74l(p1V*rzfh`l%GN=0dx$f#ZoZRRFFZb6apikPAW=iDy9PttqfwLAO|B& z$s;?hoQ|7H#dO+NN>TKmGCHzTDjY0DM}1>ys=(ot+yY5Xf$xk88FtL$t0|50m^94e zOCwEX!S7Rgp9Q3=Ecjrgsno}X(v)CylCwaXN<3UBO$}VUQw}w03LIQ0MNzdt=c*Op zmxbC;tpK0R(-#2KlJ47L9k333yaV*Ln0rufR#*A?xaAL znZFHB`9av{CltG$bgC6i$F}kvwMG5bzHI7*r~Q-1oWkBBgWhycx)E>dJgB`6k1Evf uZg{-kddr_i9UdO=tzN%-$eZ=XIv)hMO>9TUc%2ib6th}+ZV#S^)@eM5#$Umje%7B$&R5Dh^tV~#$w#q`7 z2J74y?a_(7i}%morNHl9wfe**k7``&J#KbiTZ{Tf7<4>V`Jur=mv`Y)0pk1OKhu8^ fN@?`ksDeWFnwwHshg)rJwNxjy4|Ni2SUh!)7zJM* diff --git a/htdocs/includes/mike42/escpos-php/test/phpunit.xml b/htdocs/includes/mike42/escpos-php/test/phpunit.xml deleted file mode 100644 index f9a6579cf45..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/phpunit.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - unit - - - integration - - - \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/test/unit/AbstractCapabilityProfileTest.php b/htdocs/includes/mike42/escpos-php/test/unit/AbstractCapabilityProfileTest.php deleted file mode 100644 index b3e72452a9f..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/unit/AbstractCapabilityProfileTest.php +++ /dev/null @@ -1,69 +0,0 @@ - profiles = array('DefaultCapabilityProfile', 'EposTepCapabilityProfile', 'SimpleCapabilityProfile', 'StarCapabilityProfile', 'P822DCapabilityProfile'); - $this -> checklist = array(); - foreach($this -> profiles as $profile) { - $this-> checklist[] = $profile::getInstance(); - } - } - - function testSupportedCodePages() { - foreach($this -> checklist as $obj) { - $check = $obj -> getSupportedCodePages(); - $this -> assertTrue(is_array($check) && isset($check[0]) && $check[0] == 'CP437'); - $custom = $obj -> getCustomCodePages(); - foreach($check as $num => $page) { - $this -> assertTrue(is_numeric($num) && ($page === false || is_string($page))); - if($page === false || strpos($page, ":") === false) { - continue; - } - $part = explode(":", $page); - if(!array_shift($part) == "custom") { - continue; - } - $this -> assertTrue(isset($custom[implode(":", $part)])); - } - } - } - - function testCustomCodePages() { - foreach($this -> checklist as $obj) { - $check = $obj -> getCustomCodePages(); - $this -> assertTrue(is_array($check)); - foreach($check as $name => $customMap) { - $this -> assertTrue(is_string($name)); - $this -> assertTrue(is_string($customMap) && mb_strlen($customMap, 'UTF-8') == 128); - } - } - } - - function testSupportsBitImage() { - foreach($this -> checklist as $obj) { - $check = $obj -> getSupportsBitImage(); - $this -> assertTrue(is_bool($check)); - } - } - - function testSupportsGraphics() { - foreach($this -> checklist as $obj) { - $check = $obj -> getSupportsGraphics(); - $this -> assertTrue(is_bool($check)); - } - } - - function testSupportsQrCode() { - foreach($this -> checklist as $obj) { - $check = $obj -> getSupportsQrCode(); - $this -> assertTrue(is_bool($check)); - } - } -} -?> \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/test/unit/EscposImageTest.php b/htdocs/includes/mike42/escpos-php/test/unit/EscposImageTest.php deleted file mode 100644 index f152f400a2f..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/unit/EscposImageTest.php +++ /dev/null @@ -1,235 +0,0 @@ - loadAndCheckImg(null, false, false, 0, 0, ""); - } - - /** - * BMP handling not yet implemented, but these will use - * a native PHP bitmap reader. - * This just tests that they are not being passed on to another library. - */ - public function testBmpBadFilename() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg('not a real file.bmp', false, false, 1, 1, "\x80"); - } - - public function testBmpBlack() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg("canvas_black.bmp", false, false, 0, 0, "\x80"); - } - - public function testBmpBlackWhite() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg("black_white.bmp", false, false, 0, 0, "\xc0\x00"); - } - - public function testBmpWhite() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg("canvas_white.bmp", false, false, 0, 0, "\x00"); - } - - /** - * GD tests - Load tiny images and check how they are printed. - * These are skipped if you don't have gd. - */ - public function testGdBadFilename() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg('not a real file.png', true, false, 1, 1, "\x80"); - } - - public function testGdBlack() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('canvas_black.' . $format, true, false, 1, 1, "\x80"); - } - } - - public function testGdBlackTransparent() { - foreach(array('png', 'gif') as $format) { - $this -> loadAndCheckImg('black_transparent.' . $format, true, false, 2, 2, "\xc0\x00"); - } - } - - public function testGdBlackWhite() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('black_white.' . $format, true, false, 2, 2, "\xc0\x00"); - } - } - - public function testGdWhite() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('canvas_white.' . $format, true, false, 1, 1, "\x00"); - } - } - - /** - * Imagick tests - Load tiny images and check how they are printed - * These are skipped if you don't have imagick - */ - public function testImagickBadFilename() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckImg('not a real file.png', false, true, 1, 1, "\x80"); - } - - public function testImagickBlack() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('canvas_black.' . $format, false, true, 1, 1, "\x80"); - } - } - - public function testImagickBlackTransparent() { - foreach(array('png', 'gif') as $format) { - $this -> loadAndCheckImg('black_transparent.' . $format, false, true, 2, 2, "\xc0\x00"); - } - } - - public function testImagickBlackWhite() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('black_white.' . $format, false, true, 2, 2, "\xc0\x00"); - } - } - - public function testImagickWhite() { - foreach(array('png', 'jpg', 'gif') as $format) { - $this -> loadAndCheckImg('canvas_white.' . $format, false, true, 1, 1, "\x00"); - } - } - - /** - * Mixed test - Same as above, but confirms that each tiny image can be loaded - * under any supported library configuration with the same results. - * These are skipped if you don't have gd AND imagick - */ - public function testLibraryDifferences() { - if(!EscposImage::isGdLoaded() || !EscposImage::isImagickLoaded()) { - $this -> markTestSkipped("both gd and imagick plugin are required for this test"); - } - $inFile = array('black_white.png', 'canvas_black.png', 'canvas_white.png'); - foreach($inFile as $fn) { - // Default check - $im = new EscposImage(dirname(__FILE__) . "/resources/$fn"); - $width = $im -> getWidth(); - $height = $im -> getHeight(); - $data = $im -> toRasterFormat(); - // Gd check - $this -> loadAndCheckImg($fn, true, false, $width, $height, $data); - // Imagick check - $this -> loadAndCheckImg($fn, false, true, $width, $height, $data); - } - } - - /** - * PDF tests - load tiny PDF and check for well-formedness - * These are also skipped if you don't have imagick - * @medium - */ - public function testPdfAllPages() { - $this -> loadAndCheckPdf('doc.pdf', null, 1, 1, array("\x00", "\x80")); - } - - public function testPdfBadFilename() { - $this -> setExpectedException('Exception'); - $this -> loadAndCheckPdf('not a real file', null, 1, 1, array()); - } - - /** - * @medium - */ - public function testPdfBadRange() { - // Start page is after end page. - $this -> setExpectedException('Exception'); - $this -> loadAndCheckPdf('doc.pdf', array(1, 0), 1, 1, array("\x00", "\x80")); - } - - /** - * @medium - */ - public function testPdfFirstPage() { - $this -> loadAndCheckPdf('doc.pdf', array(0, 0), 1, 1, array("\x00")); - } - - /** - * @medium - */ - public function testPdfMorePages() { - $this -> loadAndCheckPdf('doc.pdf', array(1, 20), 1, 1, array("\x80")); - } - - /** - * @medium - */ - public function testPdfSecondPage() { - $this -> loadAndCheckPdf('doc.pdf', array(1, 1), 1, 1, array("\x80")); - } - - /** - * @medium - */ - public function testPdfStartPastEndOfDoc() { - // Doc only has pages 0 and 1, can't start reading from 2. - $this -> markTestIncomplete("Test needs revising- produces output due to apparent imagick bug."); - $this -> setExpectedException('ImagickException'); - $this -> loadAndCheckPdf('doc.pdf', array(2, 3), 1, 1, array()); - } - - /** - * Load an EscposImage with (optionally) certain libraries disabled and run a check. - */ - private function loadAndCheckImg($fn, $gd, $imagick, $width, $height, $rasterFormat = null) { - $img = $this -> getMockImage($fn === null ? null : dirname(__FILE__) . "/resources/$fn", $gd, $imagick); - $this -> checkImg($img, $width, $height, $rasterFormat); - } - - /** - * Same as above, loading document and checking pages against some expected values. - */ - private function loadAndCheckPdf($fn, array $range = null, $width, $height, array $rasterFormat = null) { - if(!EscposImage::isImagickLoaded()) { - $this -> markTestSkipped("imagick plugin required for this test"); - } - $pdfPages = EscposImage::loadPdf(dirname(__FILE__) . "/resources/$fn", $width, $range); - $this -> assertTrue(count($pdfPages) == count($rasterFormat), "Got back wrong number of pages"); - foreach($pdfPages as $id => $img) { - $this -> checkImg($img, $width, $height, $rasterFormat[$id]); - } - } - - /** - * Check image against known width, height, output. - */ - private function checkImg(EscposImage $img, $width, $height, $rasterFormat = null) { - if($rasterFormat === null) { - echo "\nImage was: " . $img -> getWidth() . "x" . $img -> getHeight() . ", data \"" . friendlyBinary($img -> toRasterFormat()) . "\""; - } - $this -> assertTrue($img -> getHeight() == $height); - $this -> assertTrue($img -> getWidth() == $width); - $this -> assertTrue($img -> toRasterFormat() == $rasterFormat); - } - - /** - * Load up an EsposImage with given libraries disabled or enabled. Marks the test - * as skipped if you ask for a library which is not loaded. - */ - private function getMockImage($path, $gd, $imagick) { - /* Sanity checks */ - if($gd && !EscposImage::isGdLoaded()) { - $this -> markTestSkipped("gd plugin required for this test"); - } - if($imagick && !EscposImage::isImagickLoaded()) { - $this -> markTestSkipped("imagick plugin required for this test"); - } - $stub = $this -> getMockBuilder('EscposImage') - -> setMethods(array('isGdSupported', 'isImagickSupported')) - -> disableOriginalConstructor() - -> getMock(); - $stub -> method('isGdSupported') - -> willReturn($gd); - $stub -> method('isImagickSupported') - -> willReturn($imagick); - $stub -> __construct($path); - return $stub; - } -} \ No newline at end of file diff --git a/htdocs/includes/mike42/escpos-php/test/unit/EscposPrintBufferTest.php b/htdocs/includes/mike42/escpos-php/test/unit/EscposPrintBufferTest.php deleted file mode 100644 index 2bbdb34c20c..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/unit/EscposPrintBufferTest.php +++ /dev/null @@ -1,150 +0,0 @@ - outputConnector = new DummyPrintConnector(); - $printer = new Escpos($this -> outputConnector); - $this -> buffer = $printer -> getPrintBuffer(); - } - - protected function checkOutput($expected = null) { - /* Check those output strings */ - $outp = $this -> outputConnector -> getData(); - if($expected === null) { - echo "\nOutput was:\n\"" . friendlyBinary($outp) . "\"\n"; - } - $this -> assertEquals($expected, $outp); - } - - protected function tearDown() { - $this -> outputConnector -> finalize(); - } - - public function testRawTextNonprintable() { - $this -> buffer -> writeTextRaw("Test" . Escpos::ESC . "v1\n"); - $this -> checkOutput("\x1b@Test?v1\x0a"); // ASCII ESC character is substituted for '?' - } - - public function testDanish() { - $this -> buffer -> writeText("Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther spillede på xylofon.\n"); - $this -> checkOutput("\x1b@Quizdeltagerne spiste jordb\x91r med fl\x1bt\x02\x9bde, mens cirkusklovnen Wolther spillede p\x86 xylofon.\x0a"); - } - - public function testGerman() { - $this -> buffer -> writeText("Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.\n"); - $this -> checkOutput("\x1b@Falsches \x9aben von Xylophonmusik qu\x84lt jeden gr\x94\xe1eren Zwerg.\x0a"); - } - - public function testGreek() { - $this -> buffer -> writeText("Ξεσκεπάζω την ψυχοφθόρα βδελυγμία"); - $this -> checkOutput("\x1b@\x1bt\x0b\xbd\xde\xec\xe4\xde\xea\x9b\xe0\xfa \xee\xe1\xe7 \xf6\xf2\xf4\xe9\xf3\xe2\xa2\xeb\xd6 \xd7\xdd\xde\xe5\xf2\xd8\xe6\x9f\xd6"); - } - - public function testGreekWithDiacritics() { - // This is a string which is known to be un-printable in ESC/POS (the grave-accented letters are not in any code page), - // so we are checking the substitution '?' for unknown characters. - $this -> buffer -> writeText("Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο.\n"); - $this -> checkOutput("\x1b@\xe2\xe0\x1bt\x0b\xe0\x9d\xde\xed \xe4\xd6? \xe6\xf2\xeb\xee\xe3?\xed \xdd?\xe7 \xe2? \xd7\xeb? \xea\xe3? \xec\xee? \xf4\xeb\xf2\xec\xd6\xf3? \xe8\x9d\xf3\xfa\xee\xe9.\x0a"); - } - - public function testEnglish() { - $this -> buffer -> writeText("The quick brown fox jumps over the lazy dog.\n"); - $this -> checkOutput("\x1b@The quick brown fox jumps over the lazy dog.\n"); - } - - public function testSpanish() { - // This one does not require changing code-pages at all, so characters are just converted from Unicode to CP437. - $this -> buffer -> writeText("El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.\n"); - $this -> checkOutput("\x1b@El ping\x81ino Wenceslao hizo kil\xa2metros bajo exhaustiva lluvia y fr\xa1o, a\xa4oraba a su querido cachorro.\x0a"); - } - - public function testFrench() { - $this -> buffer -> writeText("Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en canoë au delà des îles, près du mälström où brûlent les novæ.\n"); - $this -> checkOutput("\x1b@Le c\x1bt\x10\x9cur d\xe9\xe7u mais l'\xe2me plut\xf4t na\xefve, Lou\xffs r\xeava de crapa\xfcter en cano\xeb au del\xe0 des \xeeles, pr\xe8s du m\xe4lstr\xf6m o\xf9 br\xfblent les nov\xe6.\x0a"); - } - - public function testIrishGaelic() { - // Note that some letters with diacritics cannot be printed for Irish Gaelic text, so text may need to be simplified. - $this -> buffer -> writeText("D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh.\n"); - $this -> checkOutput("\x1b@D'fhuascail \x1bt\x02\xd6osa, \xe9rmhac na h\xe0ighe Beannaithe, p\xa2r \x90ava agus \xb5dhaimh.\x0a"); - } - - public function testHungarian() { - $this -> buffer -> writeText("Árvíztűrő tükörfúrógép.\n"); - $this -> checkOutput("\x1b@\x1bt\x02\xb5rv\xa1zt\x1bt\x12\xfbr\x8b t\x81k\x94rf\xa3r\xa2g\x82p.\x0a"); - } - - public function testIcelandic() { - $this -> buffer -> writeText("Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa."); - $this -> checkOutput("\x1b@K\x91mi n\x1bt\x02\xec \x94xi h\x82r ykist \xe7j\xa2fum n\xa3 b\x91\xd0i v\xa1l og \xa0drepa."); - } - - public function testJapaneseHiragana() { - $this -> markTestIncomplete("Non-ASCII character sets not yet supported."); - $this -> buffer -> writeText(implode("\n", array("いろはにほへとちりぬるを", " わかよたれそつねならむ", "うゐのおくやまけふこえて", "あさきゆめみしゑひもせす")) . "\n"); - $this -> checkOutput(); - } - - public function testJapaneseKatakana() { - $this -> markTestIncomplete("Non-ASCII character sets not yet supported."); - $this -> buffer -> writeText(implode("\n", array("イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム", "ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン")) . "\n"); - $this -> checkOutput("\x1b@\x1bt\x01\xb2\xdb\xca\xc6\xce\xcd\xc4 \xc1\xd8\xc7\xd9\xa6 \xdc\xb6\xd6\xc0\xda\xbf \xc2\xc8\xc5\xd7\xd1\x0a\xb3\xb2\xc9\xb5\xb8\xd4\xcf \xb9\xcc\xba\xb4\xc3 \xb1\xbb\xb7\xd5\xd2\xd0\xbc \xb4\xcb\xd3\xbe\xbd\xdd\x0a"); - } - - public function testJapaneseKataKanaHalfWidth() { - $this -> buffer -> writeText(implode("\n", array("イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム", "ウイノオクヤマ ケフコエテ アサキユメミシ エヒモセスン")) . "\n"); - $this -> checkOutput("\x1b@\x1bt\x01\xb2\xdb\xca\xc6\xce\xcd\xc4 \xc1\xd8\xc7\xd9\xa6 \xdc\xb6\xd6\xc0\xda\xbf \xc2\xc8\xc5\xd7\xd1\x0a\xb3\xb2\xc9\xb5\xb8\xd4\xcf \xb9\xcc\xba\xb4\xc3 \xb1\xbb\xb7\xd5\xd2\xd0\xbc \xb4\xcb\xd3\xbe\xbd\xdd\x0a"); - } - - public function testLatvian() { - $this -> buffer -> writeText("Glāžšķūņa rūķīši dzērumā čiepj Baha koncertflīģeļu vākus.\n"); - $this -> checkOutput("\x1b@Gl\x1bt!\x83\xd8\xd5\xe9\xd7\xeca r\xd7\xe9\x8c\xd5i dz\x89rum\x83 \xd1iepj Baha koncertfl\x8c\x85e\xebu v\x83kus.\x0a"); - } - - public function testPolish() { - $this -> buffer -> writeText("Pchnąć w tę łódź jeża lub ośm skrzyń fig.\n"); - $this -> checkOutput("\x1b@Pchn\x1bt\x12\xa5\x86 w t\xa9 \x88\xa2d\xab je\xbea lub o\x98m skrzy\xe4 fig.\x0a"); - } - - public function testRussian() { - $this -> buffer -> writeText("В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!\n"); - $this -> checkOutput("\x1b@\x1bt\x11\x82 \xe7\xa0\xe9\xa0\xe5 \xee\xa3\xa0 \xa6\xa8\xab \xa1\xeb \xe6\xa8\xe2\xe0\xe3\xe1? \x84\xa0, \xad\xae \xe4\xa0\xab\xec\xe8\xa8\xa2\xeb\xa9 \xed\xaa\xa7\xa5\xac\xaf\xab\xef\xe0!\x0a"); - } - - public function testThai() { - $this -> markTestIncomplete("Non-ASCII character sets not yet supported."); - $this -> buffer -> writeText("นายสังฆภัณฑ์ เฮงพิทักษ์ฝั่ง ผู้เฒ่าซึ่งมีอาชีพเป็นฅนขายฃวด ถูกตำรวจปฏิบัติการจับฟ้องศาล ฐานลักนาฬิกาคุณหญิงฉัตรชฎา ฌานสมาธิ\n"); // Quotation from Wikipedia - $this -> checkOutput(); - } - - public function testTurkish() { - $this -> buffer -> writeText("Pijamalı hasta, yağız şoföre çabucak güvendi.\n"); - $this -> checkOutput("\x1b@Pijamal\x1bt\x02\xd5 hasta, ya\x1bt\x0d\xa7\x8dz \x9fof\x94re \x87abucak g\x81vendi.\x0a"); - } - - public function testArabic() { - $this -> markTestIncomplete("Right-to-left text not yet supported."); - $this -> buffer -> writeText("صِف خَلقَ خَودِ كَمِثلِ الشَمسِ إِذ بَزَغَت — يَحظى الضَجيعُ بِها نَجلاءَ مِعطارِ" . "\n"); // Quotation from Wikipedia - $this -> checkOutput(); - } - - public function testHebrew() { - // RTL text is more complex than the above. - $this -> markTestIncomplete("Right-to-left text not yet supported."); - $this -> buffer -> writeText("דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה" . "\n"); - $this -> checkOutput(); - } -} - diff --git a/htdocs/includes/mike42/escpos-php/test/unit/EscposTest.php b/htdocs/includes/mike42/escpos-php/test/unit/EscposTest.php deleted file mode 100644 index 6fd0bd7d204..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/unit/EscposTest.php +++ /dev/null @@ -1,765 +0,0 @@ - outputConnector = new DummyPrintConnector(); - $this -> printer = new Escpos($this -> outputConnector); - } - - protected function checkOutput($expected = null) { - /* Check those output strings */ - $outp = $this -> outputConnector -> getData(); - if($expected === null) { - echo "\nOutput was:\n\"" . friendlyBinary($outp) . "\"\n"; - } - $this -> assertEquals($expected, $outp); - } - - protected function tearDown() { - $this -> outputConnector -> finalize(); - } - - protected function requireGraphicsLibrary() { - if(!EscposImage::isGdLoaded() && !EscposImage::isImagickLoaded()) { - // If the test is about to do something which requires a library, - // something must throw an exception. - $this -> setExpectedException('Exception'); - } - } - - public function testInitializeOutput() { - $this -> checkOutput("\x1b\x40"); - } - - public function testTextStringOutput() { - $this -> printer -> text("The quick brown fox jumps over the lazy dog\n"); - $this -> checkOutput("\x1b@The quick brown fox jumps over the lazy dog\n"); - } - - public function testTextDefault() { - $this -> printer -> text(); - $this -> checkOutput("\x1b@"); - } - - public function testTextString() { - $this -> printer -> text("String"); - $this -> printer -> text(123); - $this -> printer -> text(); - $this -> printer -> text(null); - $this -> printer -> text(1.2); - $this -> printer -> text(new FooBar("FooBar")); - $this -> checkOutput("\x1b@String1231.2FooBar"); - } - - public function testTextObject() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> text(new DateTime()); - } - - public function testFeedDefault() { - $this -> printer -> feed(); - $this -> checkOutput("\x1b@\x0a"); - } - - public function testFeed3Lines() { - $this -> printer -> feed(3); - $this -> checkOutput("\x1b@\x1bd\x03"); - } - - public function testFeedZero() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feed(0); - } - - public function testFeedNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feed("ab"); - } - - public function testFeedTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feed(256); - } - - /* Print mode */ - public function testSelectPrintModeDefault() { - $this -> printer -> selectPrintMode(); - $this -> checkOutput("\x1b@\x1b!\x00"); - } - - public function testSelectPrintModeAcceptedValues() { - /* This iterates over a bunch of numbers, figures out which - ones contain invalid flags, and checks that the driver - rejects those, but accepts the good inputs */ - - for($i = -1; $i <= 256; $i++) { - $invalid = ($i < 0) || ($i > 255) || (($i & 2) == 2) || (($i & 4) == 4) || (($i & 64) == 64); - $failed = false; - try { - $this -> printer -> selectPrintMode($i); - } catch(Exception $e) { - $failed = true; - } - $this -> assertEquals($failed, $invalid); - } - } - - /* Underline */ - public function testSetUnderlineDefault() { - $this -> printer -> setUnderline(); - $this -> checkOutput("\x1b@\x1b-\x01"); - } - - public function testSetUnderlineOff() { - $this -> printer -> setUnderline(Escpos::UNDERLINE_NONE); - $this -> checkOutput("\x1b@\x1b-\x00"); - } - - public function testSetUnderlineOn() { - $this -> printer -> setUnderline(Escpos::UNDERLINE_SINGLE); - $this -> checkOutput("\x1b@\x1b-\x01"); - } - - public function testSetUnderlineDbl() { - $this -> printer -> setUnderline(Escpos::UNDERLINE_DOUBLE); - $this -> checkOutput("\x1b@\x1b-\x02"); - } - - public function testSetUnderlineAcceptedValues() { - $this -> printer -> setUnderline(0); - $this -> printer -> setUnderline(1); - $this -> printer -> setUnderline(2); - /* These map to 0 & 1 for interchangeability with setEmphasis */ - $this -> printer -> setUnderline(true); - $this -> printer -> setUnderline(false); - $this -> checkOutput("\x1b@\x1b-\x00\x1b-\x01\x1b-\x02\x1b-\x01\x1b-\x00"); - } - - public function testSetUnderlineTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setUnderline(3); - } - - public function testSetUnderlineNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setUnderline(-1); - } - - public function testSetUnderlineNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setUnderline("Hello"); - } - - /* Emphasis */ - public function testSetEmphasisDefault() { - $this -> printer -> setEmphasis(); - $this -> checkOutput("\x1b@\x1bE\x01"); - } - - public function testSetEmphasisOn() { - $this -> printer -> setEmphasis(true); - $this -> checkOutput("\x1b@\x1bE\x01"); - } - - public function testSetEmphasisOff() { - $this -> printer -> setEmphasis(false); - $this -> checkOutput("\x1b@\x1bE\x00"); - } - - public function testSetEmphasisNonBoolean() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setEmphasis(7); - } - - /* Double strike */ - public function testSetDoubleStrikeDefault() { - $this -> printer -> setDoubleStrike(); - $this -> checkOutput("\x1b@\x1bG\x01"); - } - - public function testSetDoubleStrikeOn() { - $this -> printer -> setDoubleStrike(true); - $this -> checkOutput("\x1b@\x1bG\x01"); - } - - public function testSetDoubleStrikeOff() { - $this -> printer -> setDoubleStrike(false); - $this -> checkOutput("\x1b@\x1bG\x00"); - } - - public function testSetDoubleStrikeNonBoolean() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setDoubleStrike(4); - } - - /* Font */ - public function testSetFontDefault() { - $this -> printer -> setFont(); - $this -> checkOutput("\x1b@\x1bM\x00"); - } - - public function testSetFontAcceptedValues() { - $this -> printer -> setFont(Escpos::FONT_A); - $this -> printer -> setFont(Escpos::FONT_B); - $this -> printer -> setFont(Escpos::FONT_C); - $this -> checkOutput("\x1b@\x1bM\x00\x1bM\x01\x1bM\x02"); - } - - public function testSetFontNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setFont(-1); - } - - - public function testSetFontTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setFont(3); - } - - public function testSetFontNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setFont('hello'); - } - - /* Justification */ - public function testSetJustificationDefault() { - $this -> printer -> setJustification(); - $this -> checkOutput("\x1b@\x1ba\x00"); - } - - public function testSetJustificationLeft() { - $this -> printer -> setJustification(Escpos::JUSTIFY_LEFT); - $this -> checkOutput("\x1b@\x1ba\x00"); - } - - public function testSetJustificationRight() { - $this -> printer -> setJustification(Escpos::JUSTIFY_RIGHT); - $this -> checkOutput("\x1b@\x1ba\x02"); - } - - public function testSetJustificationCenter() { - $this -> printer -> setJustification(Escpos::JUSTIFY_CENTER); - $this -> checkOutput("\x1b@\x1ba\x01"); - } - - public function testSetJustificationNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setJustification(-1); - } - - - public function testSetJustificationTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setFont(3); - } - - public function testSetJustificationNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setJustification('hello'); - } - - /* Reverse feed */ - public function testFeedReverseDefault() { - $this -> printer -> feedReverse(); - $this -> checkOutput("\x1b@\x1be\x01"); - } - - public function testFeedReverse3() { - $this -> printer -> feedReverse(3); - $this -> checkOutput("\x1b@\x1be\x03"); - } - - public function testFeedReverseNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feedReverse(-1); - } - - public function testFeedReverseTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feedReverse(256); - } - - public function testFeedReverseNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> feedReverse('hello'); - } - - /* Cut */ - public function testCutDefault() { - // TODO check what the accepted range of values should be for $line - // cut($mode = self::CUT_FULL, $lines = 3) - $this -> printer -> cut(); - $this -> checkOutput("\x1b@\x1dVA\x03"); - } - - /* Set barcode height */ - public function testSetBarcodeHeightDefault() { - $this -> printer -> setBarcodeHeight(); - $this -> checkOutput("\x1b@\x1dh\x08"); - } - - public function testBarcodeHeight10() { - $this -> printer -> setBarcodeHeight(10); - $this -> checkOutput("\x1b@\x1dh\x0a"); - } - - public function testSetBarcodeHeightNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeHeight(-1); - } - - public function testSetBarcodeHeightTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeHeight(256); - } - - public function tesSetBarcodeHeightNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeHeight('hello'); - } - - /* Barcode text position */ - public function testSetBarcodeTextPositionDefault() { - $this -> printer -> setBarcodeTextPosition(); - $this -> checkOutput("\x1b@\x1dH\x00"); - } - - public function testSetBarcodeTextPositionBelow() { - $this -> printer -> setBarcodeTextPosition(Escpos::BARCODE_TEXT_BELOW); - $this -> checkOutput("\x1b@\x1dH\x02"); - } - - public function testSetBarcodeTextPositionBoth() { - $this -> printer -> setBarcodeTextPosition(Escpos::BARCODE_TEXT_BELOW | Escpos::BARCODE_TEXT_ABOVE); - $this -> checkOutput("\x1b@\x1dH\x03"); - } - - public function testSetBarcodeTextPositionNegative() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeTextPosition(-1); - } - - public function testSetBarcodeTextPositionTooLarge() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeTextPosition(4); - } - - public function tesSetBarcodeTextPositionNonInteger() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setBarcodeTextPosition('hello'); - } - - /* Barcode - UPC-A */ - public function testBarcodeUpcaNumeric11Char() { - $this -> printer -> barcode("01234567890", Escpos::BARCODE_UPCA); - $this -> checkOutput("\x1b@\x1dkA\x0b01234567890"); - } - - public function testBarcodeUpcaNumeric12Char() { - $this -> printer -> barcode("012345678901", Escpos::BARCODE_UPCA); - $this -> checkOutput("\x1b@\x1dkA\x0c012345678901"); - } - - public function testBarcodeUpcaNumeric13Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("0123456789012", Escpos::BARCODE_UPCA); - } - - public function testBarcodeUpcaNonNumeric12Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("A12345678901", Escpos::BARCODE_UPCA); - } - - /* Barcode - UPC-E */ - public function testBarcodeUpceNumeric6Char() { - $this -> printer -> barcode("123456", Escpos::BARCODE_UPCE); - $this -> checkOutput("\x1b@\x1dkB\x06123456"); - } - - public function testBarcodeUpceNumeric7Char() { - $this -> printer -> barcode("0123456", Escpos::BARCODE_UPCE); - $this -> checkOutput("\x1b@\x1dkB\x070123456"); - } - - public function testBarcodeUpceNumeric8Char() { - $this -> printer -> barcode("01234567", Escpos::BARCODE_UPCE); - $this -> checkOutput("\x1b@\x1dkB\x0801234567"); - } - - public function testBarcodeUpceNumeric11Char() { - $this -> printer -> barcode("01234567890", Escpos::BARCODE_UPCE); - $this -> checkOutput("\x1b@\x1dkB\x0b01234567890"); - } - - public function testBarcodeUpceNumeric12Char() { - $this -> printer -> barcode("012345678901", Escpos::BARCODE_UPCE); - $this -> checkOutput("\x1b@\x1dkB\x0c012345678901"); - } - - public function testBarcodeUpceNumeric9Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("012345678", Escpos::BARCODE_UPCE); - } - - public function testBarcodeUpceNonNumeric12Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("A12345678901", Escpos::BARCODE_UPCE); - } - - /* Barcode - JAN13 */ - public function testBarcodeJan13Numeric12Char() { - $this -> printer -> barcode("012345678901", Escpos::BARCODE_JAN13); - $this -> checkOutput("\x1b@\x1dkC\x0c012345678901"); - } - - public function testBarcodeJan13Numeric13Char() { - $this -> printer -> barcode("0123456789012", Escpos::BARCODE_JAN13); - $this -> checkOutput("\x1b@\x1dkC\x0d0123456789012"); - } - - public function testBarcodeJan13Numeric11Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("01234567890", Escpos::BARCODE_JAN13); - } - - public function testBarcodeJan13NonNumeric13Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("A123456789012", Escpos::BARCODE_JAN13); - } - - /* Barcode - JAN8 */ - public function testBarcodeJan8Numeric7Char() { - $this -> printer -> barcode("0123456", Escpos::BARCODE_JAN8); - $this -> checkOutput("\x1b@\x1dkD\x070123456"); - } - - public function testBarcodeJan8Numeric8Char() { - $this -> printer -> barcode("01234567", Escpos::BARCODE_JAN8); - $this -> checkOutput("\x1b@\x1dkD\x0801234567"); - } - - public function testBarcodeJan8Numeric9Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("012345678", Escpos::BARCODE_JAN8); - } - - public function testBarcodeJan8NonNumeric8Char() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("A1234567", Escpos::BARCODE_JAN8); - } - - /* Barcode - Code39 */ - public function testBarcodeCode39AsDefault() { - $this -> printer -> barcode("1234"); - $this -> checkOutput("\x1b@\x1dkE\x041234"); - } - - public function testBarcodeCode39Text() { - $this -> printer -> barcode("ABC 012", Escpos::BARCODE_CODE39); - $this -> checkOutput("\x1b@\x1dkE\x07ABC 012"); - } - - public function testBarcodeCode39SpecialChars() { - $this -> printer -> barcode("$%+-./", Escpos::BARCODE_CODE39); - $this -> checkOutput("\x1b@\x1dkE\x06$%+-./"); - } - - public function testBarcodeCode39Asterisks() { - $this -> printer -> barcode("*TEXT*", Escpos::BARCODE_CODE39); - $this -> checkOutput("\x1b@\x1dkE\x06*TEXT*"); - } - - public function testBarcodeCode39AsterisksUnmatched() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("*TEXT", Escpos::BARCODE_CODE39); - } - - public function testBarcodeCode39AsteriskInText() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("12*34", Escpos::BARCODE_CODE39); - } - - public function testBarcodeCode39Lowercase() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("abcd", Escpos::BARCODE_CODE39); - } - - public function testBarcodeCode39Empty() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("**", Escpos::BARCODE_CODE39); - } - - /* Barcode - ITF */ - public function testBarcodeItfNumericEven() { - $this -> printer -> barcode("1234", Escpos::BARCODE_ITF); - $this -> checkOutput("\x1b@\x1dkF\x041234"); - } - - public function testBarcodeItfNumericOdd() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("123", Escpos::BARCODE_ITF); - } - - public function testBarcodeItfNonNumericEven() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("A234", Escpos::BARCODE_ITF); - } - - /* Barcode - Codabar */ - public function testBarcodeCodabarNumeric() { - $this -> printer -> barcode("A012345A", Escpos::BARCODE_CODABAR); - $this -> checkOutput("\x1b@\x1dkG\x08A012345A"); - } - - public function testBarcodeCodabarSpecialChars() { - $this -> printer -> barcode("A012$+-./:A", Escpos::BARCODE_CODABAR); - $this -> checkOutput("\x1b@\x1dkG\x0bA012$+-./:A"); - } - - public function testBarcodeCodabarNotWrapped() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("012345", Escpos::BARCODE_CODABAR); - } - - public function testBarcodeCodabarStartStopWrongPlace() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("012A45", Escpos::BARCODE_CODABAR); - } - - /* Barcode - Code93 */ - public function testBarcodeCode93Valid() { - $this -> printer -> barcode("012abcd", Escpos::BARCODE_CODE93); - $this -> checkOutput("\x1b@\x1dkH\x07012abcd"); - } - - public function testBarcodeCode93Empty() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("", Escpos::BARCODE_CODE93); - } - - /* Barcode - Code128 */ - public function testBarcodeCode128ValidA() { - $this -> printer -> barcode("{A" . "012ABCD", Escpos::BARCODE_CODE128); - $this -> checkOutput("\x1b@\x1dkI\x09{A012ABCD"); - } - - public function testBarcodeCode128ValidB() { - $this -> printer -> barcode("{B" . "012ABCDabcd", Escpos::BARCODE_CODE128); - $this -> checkOutput("\x1b@\x1dkI\x0d{B012ABCDabcd"); - } - - public function testBarcodeCode128ValidC() { - $this -> printer -> barcode("{C" . chr ( 21 ) . chr ( 32 ) . chr ( 43 ), Escpos::BARCODE_CODE128); - $this -> checkOutput("\x1b@\x1dkI\x05{C\x15 +"); - } - - public function testBarcodeCode128NoCodeSet() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> barcode("ABCD", Escpos::BARCODE_CODE128); - } - - /* Pulse */ - function testPulseDefault() { - $this -> printer -> pulse(); - $this -> checkOutput("\x1b@\x1bp0 printer -> pulse(1); - $this -> checkOutput("\x1b@\x1bp1 printer -> pulse(0, 2, 2); - $this -> checkOutput("\x1b@\x1bp0\x01\x01"); - } - - function testPulseOddMs() { - $this -> printer -> pulse(0, 3, 3); // Should be rounded down and give same output - $this -> checkOutput("\x1b@\x1bp0\x01\x01"); - } - - function testPulseTooHigh() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> pulse(0, 512, 2); - } - - function testPulseTooLow() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> pulse(0, 0, 2); - } - - function testPulseNotANumber() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> pulse("fish"); - } - - /* Set reverse */ - public function testSetReverseColorsDefault() { - $this -> printer -> setReverseColors(); - $this -> checkOutput("\x1b@\x1dB\x01"); - } - - public function testSetReverseColorsOn() { - $this -> printer -> setReverseColors(true); - $this -> checkOutput("\x1b@\x1dB\x01"); - } - - public function testSetReverseColorsOff() { - $this -> printer -> setReverseColors(false); - $this -> checkOutput("\x1b@\x1dB\x00"); - } - - public function testSetReverseColorsNonBoolean() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setReverseColors(7); - } - - /* Bit image print */ - public function testBitImageBlack() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/canvas_black.png"); - $this -> printer -> bitImage($img); - $this -> checkOutput("\x1b@\x1dv0\x00\x01\x00\x01\x00\x80"); - } - - public function testBitImageWhite() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/canvas_white.png"); - $this -> printer -> bitImage($img); - $this -> checkOutput("\x1b@\x1dv0\x00\x01\x00\x01\x00\x00"); - } - - public function testBitImageBoth() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/black_white.png"); - $this -> printer -> bitImage($img); - $this -> checkOutput("\x1b@\x1dv0\x00\x01\x00\x02\x00\xc0\x00"); - } - - public function testBitImageTransparent() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/black_transparent.png"); - $this -> printer -> bitImage($img); - $this -> checkOutput("\x1b@\x1dv0\x00\x01\x00\x02\x00\xc0\x00"); - } - - /* Graphics print */ - public function testGraphicsWhite() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/canvas_white.png"); - $this -> printer -> graphics($img); - $this -> checkOutput("\x1b@\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x00\x1d(L\x02\x0002"); - } - - public function testGraphicsBlack() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/canvas_black.png"); - $this -> printer -> graphics($img); - $this -> checkOutput("\x1b@\x1d(L\x0b\x000p0\x01\x011\x01\x00\x01\x00\x80\x1d(L\x02\x0002"); - } - - public function testGraphicsBoth() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/black_white.png"); - $this -> printer -> graphics($img); - $this -> checkOutput("\x1b@\x1d(L\x0c\x000p0\x01\x011\x02\x00\x02\x00\xc0\x00\x1d(L\x02\x0002"); - } - - public function testGraphicsTransparent() { - $this -> requireGraphicsLibrary(); - $img = new EscposImage(dirname(__FILE__)."/resources/black_transparent.png"); - $this -> printer -> graphics($img); - $this -> checkOutput("\x1b@\x1d(L\x0c\x000p0\x01\x011\x02\x00\x02\x00\xc0\x00\x1d(L\x02\x0002"); - } - - /* QR code */ - public function testQRCodeDefaults() { - // Test will fail if default values change - $this -> printer -> qrCode("1234"); - $this -> checkOutput("\x1b@\x1d(k\x04\x001A2\x00\x1d(k\x03\x001C\x03\x1d(k\x03\x001E0\x1d(k\x07\x001P01234\x1d(k\x03\x001Q0"); - } - - public function testQRCodeDefaultsAreCorrect() { - // Below tests assume that defaults are as written here (output string should be same as above) - $this -> printer -> qrCode("1234", Escpos::QR_ECLEVEL_L, 3, Escpos::QR_MODEL_2); - $this -> checkOutput("\x1b@\x1d(k\x04\x001A2\x00\x1d(k\x03\x001C\x03\x1d(k\x03\x001E0\x1d(k\x07\x001P01234\x1d(k\x03\x001Q0"); - } - - public function testQRCodeEmpty() { - $this -> printer -> qrCode(''); - $this -> checkOutput("\x1b@"); // No commands actually sent - } - - public function testQRCodeChangeEC() { - $this -> printer -> qrCode("1234", Escpos::QR_ECLEVEL_H); - $this -> checkOutput("\x1b@\x1d(k\x04\x001A2\x00\x1d(k\x03\x001C\x03\x1d(k\x03\x001E3\x1d(k\x07\x001P01234\x1d(k\x03\x001Q0"); - } - - public function testQRCodeChangeSize() { - $this -> printer -> qrCode("1234", Escpos::QR_ECLEVEL_L, 7); - $this -> checkOutput("\x1b@\x1d(k\x04\x001A2\x00\x1d(k\x03\x001C\x07\x1d(k\x03\x001E0\x1d(k\x07\x001P01234\x1d(k\x03\x001Q0"); - } - - public function testQRCodeChangeModel() { - $this -> printer -> qrCode("1234", Escpos::QR_ECLEVEL_L, 3, Escpos::QR_MODEL_1); - $this -> checkOutput("\x1b@\x1d(k\x04\x001A1\x00\x1d(k\x03\x001C\x03\x1d(k\x03\x001E0\x1d(k\x07\x001P01234\x1d(k\x03\x001Q0"); - } - - /* Feed form - Required on page-mode only printers */ - public function testFeedForm() { - $this -> printer -> feedForm(); - $this -> checkOutput("\x1b@\x0c"); - } - - /* Get status */ - public function testGetStatus() { - $this -> markTestIncomplete("Status check test code not implemented."); - // TODO some unit testing here on statuses - // $a = $this -> printer -> getPrinterStatus(Escpos::STATUS_PRINTER); - } - - /* Set text size */ - public function testSetTextSizeNormal() { - $this -> printer -> setTextSize(1, 1); - $this -> checkOutput("\x1b@\x1d!\x00"); - } - - public function testSetTextSizeWide() { - $this -> printer -> setTextSize(4, 1); - $this -> checkOutput("\x1b@\x1d!0"); - } - - public function testSetTextSizeNarrow() { - $this -> printer -> setTextSize(1, 4); - $this -> checkOutput("\x1b@\x1d!\x03"); - } - - public function testSetTextSizeLarge() { - $this -> printer -> setTextSize(4, 4); - $this -> checkOutput("\x1b@\x1d!3"); - } - - public function testSetTextSizeInvalid() { - $this -> setExpectedException('InvalidArgumentException'); - $this -> printer -> setTextSize(0, 9); - } -} - -/* - * For testing that string-castable objects are handled - */ -class FooBar { - private $foo; - public function __construct($foo) { - $this -> foo = $foo; - } - - public function __toString() { - return $this -> foo; - } -} -?> diff --git a/htdocs/includes/mike42/escpos-php/test/unit/WindowsPrintConnectorTest.php b/htdocs/includes/mike42/escpos-php/test/unit/WindowsPrintConnectorTest.php deleted file mode 100644 index 392775d3277..00000000000 --- a/htdocs/includes/mike42/escpos-php/test/unit/WindowsPrintConnectorTest.php +++ /dev/null @@ -1,278 +0,0 @@ - getMockConnector("LPT1", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> once()) - -> method('runWrite') - -> with($this -> equalTo(''), $this -> equalTo("LPT1")); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testLptMac() { - // Cannot print to local printer on Mac with this connector - $this -> setExpectedException('BadMethodCallException'); - $connector = $this -> getMockConnector("LPT1", WindowsPrintConnector::PLATFORM_MAC); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testLptLinux() { - // Cannot print to local printer on Linux with this connector - $this -> setExpectedException('BadMethodCallException'); - $connector = $this -> getMockConnector("LPT1", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testComWindows() { - // Simple file write - $connector = $this -> getMockConnector("COM1", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> once()) - -> method('runWrite') - -> with($this -> equalTo(''), $this -> equalTo("COM1")); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testComMac() { - // Cannot print to local printer on Mac with this connector - $this -> setExpectedException('BadMethodCallException'); - $connector = $this -> getMockConnector("COM1", WindowsPrintConnector::PLATFORM_MAC); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testComLinux() { - // Cannot print to local printer on Linux with this connector - $this -> setExpectedException('BadMethodCallException'); - $connector = $this -> getMockConnector("COM1", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testLocalShareWindows() { - $connector = $this -> getMockConnector("Printer", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> once()) - -> method('runCopy') - -> with($this -> anything(), $this -> stringContains('\\Printer')); - $connector -> finalize(); - } - - public function testSharedPrinterWindows() { - $connector = $this -> getMockConnector("smb://example-pc/Printer", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> once()) - -> method('runCopy') - -> with($this -> anything(), $this -> equalTo('\\\\example-pc\\Printer')); - $connector -> finalize(); - } - - public function testSharedPrinterWindowsUsername() { - $connector = $this -> getMockConnector("smb://bob@example-pc/Printer", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('net use \'\\\\example-pc\\Printer\' \'/user:bob\'')); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> once()) - -> method('runCopy') - -> with($this -> anything(), $this -> equalTo('\\\\example-pc\\Printer')); - $connector -> finalize(); - } - - public function testSharedPrinterWindowsUsernameDomain() { - $connector = $this -> getMockConnector("smb://bob@example-pc/home/Printer", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('net use \'\\\\example-pc\\Printer\' \'/user:home\\bob\'')); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> once()) - -> method('runCopy') - -> with($this -> anything(), $this -> equalTo('\\\\example-pc\\Printer')); - $connector -> finalize(); - } - - public function testSharedPrinterWindowsUsernamePassword() { - $connector = $this -> getMockConnector("smb://bob:secret@example-pc/Printer", WindowsPrintConnector::PLATFORM_WIN); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('net use \'\\\\example-pc\\Printer\' \'/user:bob\' \'secret\'')); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> once()) - -> method('runCopy') - -> with($this -> anything(), $this -> equalTo('\\\\example-pc\\Printer')); - $connector -> finalize(); - } - - public function testSharedPrinterMac() { - // Not implemented - $this -> setExpectedException('Exception'); - $connector = $this -> getMockConnector("smb://Guest@example-pc/Printer", WindowsPrintConnector::PLATFORM_MAC); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> expects($this -> exactly(0)) - -> method('runCommand'); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> finalize(); - } - - public function testSharedPrinterLinux() { - $connector = $this -> getMockConnector("smb://example-pc/Printer", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('smbclient \'//example-pc/Printer\' -c \'print -\' -N')); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> finalize(); - } - - public function testSharedPrinterLinuxUsername() { - $connector = $this -> getMockConnector("smb://bob@example-pc/Printer", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('smbclient \'//example-pc/Printer\' -U \'bob\' -c \'print -\' -N')); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> finalize(); - } - - public function testSharedPrinterLinuxUsernameDomain() { - $connector = $this -> getMockConnector("smb://bob@example-pc/home/Printer", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('smbclient \'//example-pc/Printer\' -U \'home\\bob\' -c \'print -\' -N')); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> finalize(); - } - - public function testSharedPrinterLinuxUsernamePassword() { - $connector = $this -> getMockConnector("smb://bob:secret@example-pc/Printer", WindowsPrintConnector::PLATFORM_LINUX); - $connector -> expects($this -> once()) - -> method('runCommand') - -> with($this -> equalTo('smbclient \'//example-pc/Printer\' \'secret\' -U \'bob\' -c \'print -\'')); - $connector -> expects($this -> exactly(0)) - -> method('runCopy'); - $connector -> expects($this -> exactly(0)) - -> method('runWrite'); - $connector -> finalize(); - } - - private function getMockConnector($path, $platform) { - $stub = $this -> getMockBuilder('WindowsPrintConnector') - -> setMethods(array('runCopy', 'runCommand', 'getCurrentPlatform', 'runWrite')) - -> disableOriginalConstructor() - -> getMock(); - $stub -> method('runCommand') - -> willReturn(0); - $stub -> method('runCopy') - -> willReturn(true); - $stub -> method('runWrite') - -> willReturn(true); - $stub -> method('getCurrentPlatform') - -> willReturn($platform); - $stub -> __construct($path); - return $stub; - } - - /** - * Test for correct identification of bogus or non-supported Samba strings. - */ - public function testSambaRegex() { - $good = array("smb://foo/bar", - "smb://foo/bar baz", - "smb://bob@foo/bar", - "smb://bob:secret@foo/bar", - "smb://foo-computer/FooPrinter", - "smb://foo-computer/workgroup/FooPrinter", - "smb://foo-computer/Foo-Printer", - "smb://foo-computer/workgroup/Foo-Printer", - "smb://foo-computer/Foo Printer"); - $bad = array("", - "http://google.com", - "smb:/foo/bar", - "smb://", - "smb:///bar", - "smb://@foo/bar", - "smb://bob:@foo/bar", - "smb://:secret@foo/bar", - "smb://foo/bar/baz/quux", - "smb://foo-computer//FooPrinter"); - foreach($good as $item) { - $this -> assertTrue(preg_match(WindowsPrintConnector::REGEX_SMB, $item) == 1, "Windows samba regex should pass '$item'."); - } - foreach($bad as $item) { - $this -> assertTrue(preg_match(WindowsPrintConnector::REGEX_SMB, $item) != 1, "Windows samba regex should fail '$item'."); - } - } - - public function testPrinterNameRegex() { - $good = array("a", - "ab", - "a b", - "a-b", - "Abcd Efg-", - "-a" - ); - $bad = array("", - " ", - "a ", - " a", - " a ", - "a/B", - "A:b" - ); - foreach($good as $item) { - $this -> assertTrue(preg_match(WindowsPrintConnector::REGEX_PRINTERNAME, $item) == 1, "Windows printer name regex should pass '$item'."); - } - foreach($bad as $item) { - $this -> assertTrue(preg_match(WindowsPrintConnector::REGEX_PRINTERNAME, $item) != 1, "Windows printer name regex should fail '$item'."); - } - } -} diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/black_transparent.gif b/htdocs/includes/mike42/escpos-php/test/unit/resources/black_transparent.gif deleted file mode 100644 index 6c54bad9eea0d1cd39e55504d181b6607b6028d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbhEHbWMW`q_`m=Kia%Kx85kHD6#of27o{eaq^2m8XO?6rxO@5rFzA33fs`{a LF|!D<>&kwgnNLhfd<&=O9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8YJ4r;B3<$MxitgoGdG8+aJ_#26XR&Dh)tlw$C7^>bP0l+XkK D$`C0q diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.bmp b/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.bmp deleted file mode 100644 index 0acbf66506f8ae152df4bfabc835e03505112878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 ycmZ?r?P7p{Dj<~u#7t1k$RGih5CD?G+z<>F01{5_LB%jOu{6kBWbhvh5F!BXKMAt{ diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.gif b/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.gif deleted file mode 100644 index 0a044a671f59c3c4a5f859eb6a09a71d809be683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZ?wbhEHbWMW`q_`t{j1poj4SNzEWVlgQG6Lc<0O)N=GQ7F$W$xv|j^bKIp0m*=r NGcYl;2(dC)0{}064pjgE diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.jpg b/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.jpg deleted file mode 100644 index 6539cece59e6c5ce41bf50f1ced121096ead5aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmex=>ukC3pCfH06P@c#e52OWR?s5zX<@pgBjQW diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.png b/htdocs/includes/mike42/escpos-php/test/unit/resources/black_white.png deleted file mode 100644 index 33ba331fa1e8642247b0cd1e48e03e7bb24a624b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^Od!kwBL7~QRScv!3p^r$G`BDaGcwGYBLNg-FY)ws zWxvnN$08&+x9_71P)M@GHKN2hKQ}iuuY|$5C^fMpHASI3vm`^o-P1Q9ypc~Fs7TDy o#W95AdU65;{Q3Xio|&1MfuD`(|Am>%Vn7uPp00i_>zopr06?22>i_@% diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.bmp b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.bmp deleted file mode 100644 index 2ee723c59d87be01c0901a2662fc414e7898d904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?r?PGv|E+AC{#Eft(0hV9^ljy{M1_lTMN&I(m4=Qdr^i?Bahn%QF>uW{_V`Jfl cv@|t`v^2H_GiP$za9w9siRm{&HU*ox0Ab1$MF0Q* diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.gif b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.gif deleted file mode 100644 index 49b19dbc179f5995e4ff5338e7039d3a47b4a888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHbWMp7u_`t{j1poj4SNzEWVlgQG=l0A^Oi%SqOwUZt=1ot`%}um5&@(YL UF*Rk-0jU6KV_;%(VPvod0K2{rbpQYW diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.jpg b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_black.jpg deleted file mode 100644 index d059f431b267596da878937214280915c89f51ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZ9GK@P$|3!+y-7X048hz>mPHCTnRfR>gOhxmUMTR+ao=IO?3^7bqx(d49u-eEv*bK owG9oe3=Ayq=dVT4kei>9nO2EggGbYKL7)Z(Pgg&ebxsLQ05fwqK>z>% diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.bmp b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.bmp deleted file mode 100644 index e47e0ef617583acde08ae6d8ddf8045fb1a4e55e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZ?r?PGv|E+AC{#Eft(0hV9^ljy{M1_lTMN&I(m4=Qdr^i?Bahn%QF>uW{_V`Jfl hv@|t`v^2H_GiP$za9w9siRm{&HU-_>|Ns9p003&i7eW94 diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.gif b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.gif deleted file mode 100644 index 7881ce629acf8d6918eb5ac07169bc67b99a904b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHbWMp7u_`t{j1poj4SNzEWVlgQG=l0A^Oi%SqOwUZt=1ot`%}um5&@(YL UF*Rk-0jU6KV_;(PVPvod0K480eEnh z;e>7%gm;ZT^#P}}Pr|CgB3h=RdCVe19mdJ5nwEK)ZE4y3hRm@?RN;3VV)+M&*8W@g M3*4UIi0j**UsypDH2?qr diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.png b/htdocs/includes/mike42/escpos-php/test/unit/resources/canvas_white.png deleted file mode 100644 index 4231a4bb5400c5554d146b0f8b32b717c109c1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^j35jm7|ip2ssJgLbVpxD28NCO++aH!(Ecb readImage("doc.pdf[5]"); - $im -> destroy(); -} catch(ImagickException $e) { - echo "Error: " . $e -> getMessage() . "\n"; -} - -$im = new Imagick(); -try { - ob_start(); - @$im -> readImage("doc.pdf[5]"); - ob_end_clean(); - $im -> destroy(); -} catch(ImagickException $e) { - echo "Error: " . $e -> getMessage() . "\n"; -} - diff --git a/htdocs/includes/mike42/escpos-php/test/unit/resources/doc.pdf b/htdocs/includes/mike42/escpos-php/test/unit/resources/doc.pdf deleted file mode 100644 index 22247b918dbbcbfb0981d9442c966c99a47361b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6681 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 bQ5=#CZ9g8L&gBcKi39DzR8)+usIdP4$C)m7 From 9d836571d5473a07d851153971df93e5429bf921 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 15:32:13 +0200 Subject: [PATCH 113/380] Update PHPExcel --- .../Classes/PHPExcel/locale/cs/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/da/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/de/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/es/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/fi/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/fr/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/hu/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/it/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/nl/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/no/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/pl/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/ru/functions | 876 +++++++++--------- .../Classes/PHPExcel/locale/tr/functions | 876 +++++++++--------- 13 files changed, 5694 insertions(+), 5694 deletions(-) diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/cs/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/cs/functions index c0a3cbbf9da..f9d69784ae2 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/cs/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/cs/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funkce doplňků a automatizace -## -GETPIVOTDATA = ZÍSKATKONTDATA ## Vrátí data uložená v kontingenční tabulce. Pomocí funkce ZÍSKATKONTDATA můžete načíst souhrnná data z kontingenční tabulky, pokud jsou tato data v kontingenční sestavě zobrazena. - - -## -## Cube functions Funkce pro práci s krychlemi -## -CUBEKPIMEMBER = CUBEKPIMEMBER ## Vrátí název, vlastnost a velikost klíčového ukazatele výkonu (KUV) a zobrazí v buňce název a vlastnost. Klíčový ukazatel výkonu je kvantifikovatelná veličina, například hrubý měsíční zisk nebo čtvrtletní obrat na zaměstnance, která se používá pro sledování výkonnosti organizace. -CUBEMEMBER = CUBEMEMBER ## Vrátí člen nebo n-tici v hierarchii krychle. Slouží k ověření, zda v krychli existuje člen nebo n-tice. -CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY ## Vrátí hodnotu vlastnosti člena v krychli. Slouží k ověření, zda v krychli existuje člen s daným názvem, a k vrácení konkrétní vlastnosti tohoto člena. -CUBERANKEDMEMBER = CUBERANKEDMEMBER ## Vrátí n-tý nebo pořadový člen sady. Použijte ji pro vrácení jednoho nebo více prvků sady, například obchodníka s nejvyšším obratem nebo deseti nejlepších studentů. -CUBESET = CUBESET ## Definuje vypočtenou sadu členů nebo n-tic odesláním výrazu sady do krychle na serveru, který vytvoří sadu a potom ji vrátí do aplikace Microsoft Office Excel. -CUBESETCOUNT = CUBESETCOUNT ## Vrátí počet položek v množině -CUBEVALUE = CUBEVALUE ## Vrátí úhrnnou hodnotu z krychle. - - -## -## Database functions Funkce databáze -## -DAVERAGE = DPRŮMĚR ## Vrátí průměr vybraných položek databáze. -DCOUNT = DPOČET ## Spočítá buňky databáze obsahující čísla. -DCOUNTA = DPOČET2 ## Spočítá buňky databáze, které nejsou prázdné. -DGET = DZÍSKAT ## Extrahuje z databáze jeden záznam splňující zadaná kritéria. -DMAX = DMAX ## Vrátí maximální hodnotu z vybraných položek databáze. -DMIN = DMIN ## Vrátí minimální hodnotu z vybraných položek databáze. -DPRODUCT = DSOUČIN ## Vynásobí hodnoty určitého pole záznamů v databázi, které splňují daná kritéria. -DSTDEV = DSMODCH.VÝBĚR ## Odhadne směrodatnou odchylku výběru vybraných položek databáze. -DSTDEVP = DSMODCH ## Vypočte směrodatnou odchylku základního souboru vybraných položek databáze. -DSUM = DSUMA ## Sečte čísla ve sloupcovém poli záznamů databáze, která splňují daná kritéria. -DVAR = DVAR.VÝBĚR ## Odhadne rozptyl výběru vybraných položek databáze. -DVARP = DVAR ## Vypočte rozptyl základního souboru vybraných položek databáze. - - -## -## Date and time functions Funkce data a času -## -DATE = DATUM ## Vrátí pořadové číslo určitého data. -DATEVALUE = DATUMHODN ## Převede datum ve formě textu na pořadové číslo. -DAY = DEN ## Převede pořadové číslo na den v měsíci. -DAYS360 = ROK360 ## Vrátí počet dní mezi dvěma daty na základě roku s 360 dny. -EDATE = EDATE ## Vrátí pořadové číslo data, které označuje určený počet měsíců před nebo po počátečním datu. -EOMONTH = EOMONTH ## Vrátí pořadové číslo posledního dne měsíce před nebo po zadaném počtu měsíců. -HOUR = HODINA ## Převede pořadové číslo na hodinu. -MINUTE = MINUTA ## Převede pořadové číslo na minutu. -MONTH = MĚSÍC ## Převede pořadové číslo na měsíc. -NETWORKDAYS = NETWORKDAYS ## Vrátí počet celých pracovních dní mezi dvěma daty. -NOW = NYNÍ ## Vrátí pořadové číslo aktuálního data a času. -SECOND = SEKUNDA ## Převede pořadové číslo na sekundu. -TIME = ČAS ## Vrátí pořadové číslo určitého času. -TIMEVALUE = ČASHODN ## Převede čas ve formě textu na pořadové číslo. -TODAY = DNES ## Vrátí pořadové číslo dnešního data. -WEEKDAY = DENTÝDNE ## Převede pořadové číslo na den v týdnu. -WEEKNUM = WEEKNUM ## Převede pořadové číslo na číslo představující číselnou pozici týdne v roce. -WORKDAY = WORKDAY ## Vrátí pořadové číslo data před nebo po zadaném počtu pracovních dní. -YEAR = ROK ## Převede pořadové číslo na rok. -YEARFRAC = YEARFRAC ## Vrátí část roku vyjádřenou zlomkem a představující počet celých dní mezi počátečním a koncovým datem. - - -## -## Engineering functions Inženýrské funkce (Technické funkce) -## -BESSELI = BESSELI ## Vrátí modifikovanou Besselovu funkci In(x). -BESSELJ = BESSELJ ## Vrátí modifikovanou Besselovu funkci Jn(x). -BESSELK = BESSELK ## Vrátí modifikovanou Besselovu funkci Kn(x). -BESSELY = BESSELY ## Vrátí Besselovu funkci Yn(x). -BIN2DEC = BIN2DEC ## Převede binární číslo na desítkové. -BIN2HEX = BIN2HEX ## Převede binární číslo na šestnáctkové. -BIN2OCT = BIN2OCT ## Převede binární číslo na osmičkové. -COMPLEX = COMPLEX ## Převede reálnou a imaginární část na komplexní číslo. -CONVERT = CONVERT ## Převede číslo do jiného jednotkového měrného systému. -DEC2BIN = DEC2BIN ## Převede desítkového čísla na dvojkové -DEC2HEX = DEC2HEX ## Převede desítkové číslo na šestnáctkové. -DEC2OCT = DEC2OCT ## Převede desítkové číslo na osmičkové. -DELTA = DELTA ## Testuje rovnost dvou hodnot. -ERF = ERF ## Vrátí chybovou funkci. -ERFC = ERFC ## Vrátí doplňkovou chybovou funkci. -GESTEP = GESTEP ## Testuje, zda je číslo větší než mezní hodnota. -HEX2BIN = HEX2BIN ## Převede šestnáctkové číslo na binární. -HEX2DEC = HEX2DEC ## Převede šestnáctkové číslo na desítkové. -HEX2OCT = HEX2OCT ## Převede šestnáctkové číslo na osmičkové. -IMABS = IMABS ## Vrátí absolutní hodnotu (modul) komplexního čísla. -IMAGINARY = IMAGINARY ## Vrátí imaginární část komplexního čísla. -IMARGUMENT = IMARGUMENT ## Vrátí argument théta, úhel vyjádřený v radiánech. -IMCONJUGATE = IMCONJUGATE ## Vrátí komplexně sdružené číslo ke komplexnímu číslu. -IMCOS = IMCOS ## Vrátí kosinus komplexního čísla. -IMDIV = IMDIV ## Vrátí podíl dvou komplexních čísel. -IMEXP = IMEXP ## Vrátí exponenciální tvar komplexního čísla. -IMLN = IMLN ## Vrátí přirozený logaritmus komplexního čísla. -IMLOG10 = IMLOG10 ## Vrátí dekadický logaritmus komplexního čísla. -IMLOG2 = IMLOG2 ## Vrátí logaritmus komplexního čísla při základu 2. -IMPOWER = IMPOWER ## Vrátí komplexní číslo umocněné na celé číslo. -IMPRODUCT = IMPRODUCT ## Vrátí součin komplexních čísel. -IMREAL = IMREAL ## Vrátí reálnou část komplexního čísla. -IMSIN = IMSIN ## Vrátí sinus komplexního čísla. -IMSQRT = IMSQRT ## Vrátí druhou odmocninu komplexního čísla. -IMSUB = IMSUB ## Vrátí rozdíl mezi dvěma komplexními čísly. -IMSUM = IMSUM ## Vrátí součet dvou komplexních čísel. -OCT2BIN = OCT2BIN ## Převede osmičkové číslo na binární. -OCT2DEC = OCT2DEC ## Převede osmičkové číslo na desítkové. -OCT2HEX = OCT2HEX ## Převede osmičkové číslo na šestnáctkové. - - -## -## Financial functions Finanční funkce -## -ACCRINT = ACCRINT ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen v pravidelných termínech. -ACCRINTM = ACCRINTM ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen k datu splatnosti. -AMORDEGRC = AMORDEGRC ## Vrátí lineární amortizaci v každém účetním období pomocí koeficientu amortizace. -AMORLINC = AMORLINC ## Vrátí lineární amortizaci v každém účetním období. -COUPDAYBS = COUPDAYBS ## Vrátí počet dnů od začátku období placení kupónů do data splatnosti. -COUPDAYS = COUPDAYS ## Vrátí počet dnů v období placení kupónů, které obsahuje den zúčtování. -COUPDAYSNC = COUPDAYSNC ## Vrátí počet dnů od data zúčtování do následujícího data placení kupónu. -COUPNCD = COUPNCD ## Vrátí následující datum placení kupónu po datu zúčtování. -COUPNUM = COUPNUM ## Vrátí počet kupónů splatných mezi datem zúčtování a datem splatnosti. -COUPPCD = COUPPCD ## Vrátí předchozí datum placení kupónu před datem zúčtování. -CUMIPMT = CUMIPMT ## Vrátí kumulativní úrok splacený mezi dvěma obdobími. -CUMPRINC = CUMPRINC ## Vrátí kumulativní jistinu splacenou mezi dvěma obdobími půjčky. -DB = ODPIS.ZRYCH ## Vrátí odpis aktiva za určité období pomocí degresivní metody odpisu s pevným zůstatkem. -DDB = ODPIS.ZRYCH2 ## Vrátí odpis aktiva za určité období pomocí dvojité degresivní metody odpisu nebo jiné metody, kterou zadáte. -DISC = DISC ## Vrátí diskontní sazbu cenného papíru. -DOLLARDE = DOLLARDE ## Převede částku v korunách vyjádřenou zlomkem na částku v korunách vyjádřenou desetinným číslem. -DOLLARFR = DOLLARFR ## Převede částku v korunách vyjádřenou desetinným číslem na částku v korunách vyjádřenou zlomkem. -DURATION = DURATION ## Vrátí roční dobu cenného papíru s pravidelnými úrokovými sazbami. -EFFECT = EFFECT ## Vrátí efektivní roční úrokovou sazbu. -FV = BUDHODNOTA ## Vrátí budoucí hodnotu investice. -FVSCHEDULE = FVSCHEDULE ## Vrátí budoucí hodnotu počáteční jistiny po použití série sazeb složitého úroku. -INTRATE = INTRATE ## Vrátí úrokovou sazbu plně investovaného cenného papíru. -IPMT = PLATBA.ÚROK ## Vrátí výšku úroku investice za dané období. -IRR = MÍRA.VÝNOSNOSTI ## Vrátí vnitřní výnosové procento série peněžních toků. -ISPMT = ISPMT ## Vypočte výši úroku z investice zaplaceného během určitého období. -MDURATION = MDURATION ## Vrátí Macauleyho modifikovanou dobu cenného papíru o nominální hodnotě 100 Kč. -MIRR = MOD.MÍRA.VÝNOSNOSTI ## Vrátí vnitřní sazbu výnosu, přičemž kladné a záporné hodnoty peněžních prostředků jsou financovány podle různých sazeb. -NOMINAL = NOMINAL ## Vrátí nominální roční úrokovou sazbu. -NPER = POČET.OBDOBÍ ## Vrátí počet období pro investici. -NPV = ČISTÁ.SOUČHODNOTA ## Vrátí čistou současnou hodnotu investice vypočítanou na základě série pravidelných peněžních toků a diskontní sazby. -ODDFPRICE = ODDFPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným prvním obdobím. -ODDFYIELD = ODDFYIELD ## Vrátí výnos cenného papíru s odlišným prvním obdobím. -ODDLPRICE = ODDLPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným posledním obdobím. -ODDLYIELD = ODDLYIELD ## Vrátí výnos cenného papíru s odlišným posledním obdobím. -PMT = PLATBA ## Vrátí hodnotu pravidelné splátky anuity. -PPMT = PLATBA.ZÁKLAD ## Vrátí hodnotu splátky jistiny pro zadanou investici za dané období. -PRICE = PRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen v pravidelných termínech. -PRICEDISC = PRICEDISC ## Vrátí cenu diskontního cenného papíru o nominální hodnotě 100 Kč. -PRICEMAT = PRICEMAT ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen k datu splatnosti. -PV = SOUČHODNOTA ## Vrátí současnou hodnotu investice. -RATE = ÚROKOVÁ.MÍRA ## Vrátí úrokovou sazbu vztaženou na období anuity. -RECEIVED = RECEIVED ## Vrátí částku obdrženou k datu splatnosti plně investovaného cenného papíru. -SLN = ODPIS.LIN ## Vrátí přímé odpisy aktiva pro jedno období. -SYD = ODPIS.NELIN ## Vrátí směrné číslo ročních odpisů aktiva pro zadané období. -TBILLEQ = TBILLEQ ## Vrátí výnos směnky státní pokladny ekvivalentní výnosu obligace. -TBILLPRICE = TBILLPRICE ## Vrátí cenu směnky státní pokladny o nominální hodnotě 100 Kč. -TBILLYIELD = TBILLYIELD ## Vrátí výnos směnky státní pokladny. -VDB = ODPIS.ZA.INT ## Vrátí odpis aktiva pro určité období nebo část období pomocí degresivní metody odpisu. -XIRR = XIRR ## Vrátí vnitřní výnosnost pro harmonogram peněžních toků, který nemusí být nutně periodický. -XNPV = XNPV ## Vrátí čistou současnou hodnotu pro harmonogram peněžních toků, který nemusí být nutně periodický. -YIELD = YIELD ## Vrátí výnos cenného papíru, ze kterého je úrok placen v pravidelných termínech. -YIELDDISC = YIELDDISC ## Vrátí roční výnos diskontního cenného papíru, například směnky státní pokladny. -YIELDMAT = YIELDMAT ## Vrátí roční výnos cenného papíru, ze kterého je úrok placen k datu splatnosti. - - -## -## Information functions Informační funkce -## -CELL = POLÍČKO ## Vrátí informace o formátování, umístění nebo obsahu buňky. -ERROR.TYPE = CHYBA.TYP ## Vrátí číslo odpovídající typu chyby. -INFO = O.PROSTŘEDÍ ## Vrátí informace o aktuálním pracovním prostředí. -ISBLANK = JE.PRÁZDNÉ ## Vrátí hodnotu PRAVDA, pokud se argument hodnota odkazuje na prázdnou buňku. -ISERR = JE.CHYBA ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota (kromě #N/A). -ISERROR = JE.CHYBHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota. -ISEVEN = ISEVEN ## Vrátí hodnotu PRAVDA, pokud je číslo sudé. -ISLOGICAL = JE.LOGHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota logická hodnota. -ISNA = JE.NEDEF ## Vrátí hodnotu PRAVDA, pokud je argument hodnota chybová hodnota #N/A. -ISNONTEXT = JE.NETEXT ## Vrátí hodnotu PRAVDA, pokud argument hodnota není text. -ISNUMBER = JE.ČÍSLO ## Vrátí hodnotu PRAVDA, pokud je argument hodnota číslo. -ISODD = ISODD ## Vrátí hodnotu PRAVDA, pokud je číslo liché. -ISREF = JE.ODKAZ ## Vrátí hodnotu PRAVDA, pokud je argument hodnota odkaz. -ISTEXT = JE.TEXT ## Vrátí hodnotu PRAVDA, pokud je argument hodnota text. -N = N ## Vrátí hodnotu převedenou na číslo. -NA = NEDEF ## Vrátí chybovou hodnotu #N/A. -TYPE = TYP ## Vrátí číslo označující datový typ hodnoty. - - -## -## Logical functions Logické funkce -## -AND = A ## Vrátí hodnotu PRAVDA, mají-li všechny argumenty hodnotu PRAVDA. -FALSE = NEPRAVDA ## Vrátí logickou hodnotu NEPRAVDA. -IF = KDYŽ ## Určí, který logický test má proběhnout. -IFERROR = IFERROR ## Pokud je vzorec vyhodnocen jako chyba, vrátí zadanou hodnotu. V opačném případě vrátí výsledek vzorce. -NOT = NE ## Provede logickou negaci argumentu funkce. -OR = NEBO ## Vrátí hodnotu PRAVDA, je-li alespoň jeden argument roven hodnotě PRAVDA. -TRUE = PRAVDA ## Vrátí logickou hodnotu PRAVDA. - - -## -## Lookup and reference functions Vyhledávací funkce -## -ADDRESS = ODKAZ ## Vrátí textový odkaz na jednu buňku listu. -AREAS = POČET.BLOKŮ ## Vrátí počet oblastí v odkazu. -CHOOSE = ZVOLIT ## Zvolí hodnotu ze seznamu hodnot. -COLUMN = SLOUPEC ## Vrátí číslo sloupce odkazu. -COLUMNS = SLOUPCE ## Vrátí počet sloupců v odkazu. -HLOOKUP = VVYHLEDAT ## Prohledá horní řádek matice a vrátí hodnotu určené buňky. -HYPERLINK = HYPERTEXTOVÝ.ODKAZ ## Vytvoří zástupce nebo odkaz, který otevře dokument uložený na síťovém serveru, v síti intranet nebo Internet. -INDEX = INDEX ## Pomocí rejstříku zvolí hodnotu z odkazu nebo matice. -INDIRECT = NEPŘÍMÝ.ODKAZ ## Vrátí odkaz určený textovou hodnotou. -LOOKUP = VYHLEDAT ## Vyhledá hodnoty ve vektoru nebo matici. -MATCH = POZVYHLEDAT ## Vyhledá hodnoty v odkazu nebo matici. -OFFSET = POSUN ## Vrátí posun odkazu od zadaného odkazu. -ROW = ŘÁDEK ## Vrátí číslo řádku odkazu. -ROWS = ŘÁDKY ## Vrátí počet řádků v odkazu. -RTD = RTD ## Načte data reálného času z programu, který podporuje automatizaci modelu COM (Automatizace: Způsob práce s objekty určité aplikace z jiné aplikace nebo nástroje pro vývoj. Automatizace (dříve nazývaná automatizace OLE) je počítačovým standardem a je funkcí modelu COM (Component Object Model).). -TRANSPOSE = TRANSPOZICE ## Vrátí transponovanou matici. -VLOOKUP = SVYHLEDAT ## Prohledá první sloupec matice, přesune kurzor v řádku a vrátí hodnotu buňky. - - -## -## Math and trigonometry functions Matematické a trigonometrické funkce -## -ABS = ABS ## Vrátí absolutní hodnotu čísla. -ACOS = ARCCOS ## Vrátí arkuskosinus čísla. -ACOSH = ARCCOSH ## Vrátí hyperbolický arkuskosinus čísla. -ASIN = ARCSIN ## Vrátí arkussinus čísla. -ASINH = ARCSINH ## Vrátí hyperbolický arkussinus čísla. -ATAN = ARCTG ## Vrátí arkustangens čísla. -ATAN2 = ARCTG2 ## Vrátí arkustangens x-ové a y-ové souřadnice. -ATANH = ARCTGH ## Vrátí hyperbolický arkustangens čísla. -CEILING = ZAOKR.NAHORU ## Zaokrouhlí číslo na nejbližší celé číslo nebo na nejbližší násobek zadané hodnoty. -COMBIN = KOMBINACE ## Vrátí počet kombinací pro daný počet položek. -COS = COS ## Vrátí kosinus čísla. -COSH = COSH ## Vrátí hyperbolický kosinus čísla. -DEGREES = DEGREES ## Převede radiány na stupně. -EVEN = ZAOKROUHLIT.NA.SUDÉ ## Zaokrouhlí číslo nahoru na nejbližší celé sudé číslo. -EXP = EXP ## Vrátí základ přirozeného logaritmu e umocněný na zadané číslo. -FACT = FAKTORIÁL ## Vrátí faktoriál čísla. -FACTDOUBLE = FACTDOUBLE ## Vrátí dvojitý faktoriál čísla. -FLOOR = ZAOKR.DOLŮ ## Zaokrouhlí číslo dolů, směrem k nule. -GCD = GCD ## Vrátí největší společný dělitel. -INT = CELÁ.ČÁST ## Zaokrouhlí číslo dolů na nejbližší celé číslo. -LCM = LCM ## Vrátí nejmenší společný násobek. -LN = LN ## Vrátí přirozený logaritmus čísla. -LOG = LOGZ ## Vrátí logaritmus čísla při zadaném základu. -LOG10 = LOG ## Vrátí dekadický logaritmus čísla. -MDETERM = DETERMINANT ## Vrátí determinant matice. -MINVERSE = INVERZE ## Vrátí inverzní matici. -MMULT = SOUČIN.MATIC ## Vrátí součin dvou matic. -MOD = MOD ## Vrátí zbytek po dělení. -MROUND = MROUND ## Vrátí číslo zaokrouhlené na požadovaný násobek. -MULTINOMIAL = MULTINOMIAL ## Vrátí mnohočlen z množiny čísel. -ODD = ZAOKROUHLIT.NA.LICHÉ ## Zaokrouhlí číslo nahoru na nejbližší celé liché číslo. -PI = PI ## Vrátí hodnotu čísla pí. -POWER = POWER ## Umocní číslo na zadanou mocninu. -PRODUCT = SOUČIN ## Vynásobí argumenty funkce. -QUOTIENT = QUOTIENT ## Vrátí celou část dělení. -RADIANS = RADIANS ## Převede stupně na radiány. -RAND = NÁHČÍSLO ## Vrátí náhodné číslo mezi 0 a 1. -RANDBETWEEN = RANDBETWEEN ## Vrátí náhodné číslo mezi zadanými čísly. -ROMAN = ROMAN ## Převede arabskou číslici na římskou ve formátu textu. -ROUND = ZAOKROUHLIT ## Zaokrouhlí číslo na zadaný počet číslic. -ROUNDDOWN = ROUNDDOWN ## Zaokrouhlí číslo dolů, směrem k nule. -ROUNDUP = ROUNDUP ## Zaokrouhlí číslo nahoru, směrem od nuly. -SERIESSUM = SERIESSUM ## Vrátí součet mocninné řady určené podle vzorce. -SIGN = SIGN ## Vrátí znaménko čísla. -SIN = SIN ## Vrátí sinus daného úhlu. -SINH = SINH ## Vrátí hyperbolický sinus čísla. -SQRT = ODMOCNINA ## Vrátí kladnou druhou odmocninu. -SQRTPI = SQRTPI ## Vrátí druhou odmocninu výrazu (číslo * pí). -SUBTOTAL = SUBTOTAL ## Vrátí souhrn v seznamu nebo databázi. -SUM = SUMA ## Sečte argumenty funkce. -SUMIF = SUMIF ## Sečte buňky vybrané podle zadaných kritérií. -SUMIFS = SUMIFS ## Sečte buňky určené více zadanými podmínkami. -SUMPRODUCT = SOUČIN.SKALÁRNÍ ## Vrátí součet součinů odpovídajících prvků matic. -SUMSQ = SUMA.ČTVERCŮ ## Vrátí součet čtverců argumentů. -SUMX2MY2 = SUMX2MY2 ## Vrátí součet rozdílu čtverců odpovídajících hodnot ve dvou maticích. -SUMX2PY2 = SUMX2PY2 ## Vrátí součet součtu čtverců odpovídajících hodnot ve dvou maticích. -SUMXMY2 = SUMXMY2 ## Vrátí součet čtverců rozdílů odpovídajících hodnot ve dvou maticích. -TAN = TGTG ## Vrátí tangens čísla. -TANH = TGH ## Vrátí hyperbolický tangens čísla. -TRUNC = USEKNOUT ## Zkrátí číslo na celé číslo. - - -## -## Statistical functions Statistické funkce -## -AVEDEV = PRŮMODCHYLKA ## Vrátí průměrnou hodnotu absolutních odchylek datových bodů od jejich střední hodnoty. -AVERAGE = PRŮMĚR ## Vrátí průměrnou hodnotu argumentů. -AVERAGEA = AVERAGEA ## Vrátí průměrnou hodnotu argumentů včetně čísel, textu a logických hodnot. -AVERAGEIF = AVERAGEIF ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk v oblasti, které vyhovují příslušné podmínce. -AVERAGEIFS = AVERAGEIFS ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk vyhovujících několika podmínkám. -BETADIST = BETADIST ## Vrátí hodnotu součtového rozdělení beta. -BETAINV = BETAINV ## Vrátí inverzní hodnotu součtového rozdělení pro zadané rozdělení beta. -BINOMDIST = BINOMDIST ## Vrátí hodnotu binomického rozdělení pravděpodobnosti jednotlivých veličin. -CHIDIST = CHIDIST ## Vrátí jednostrannou pravděpodobnost rozdělení chí-kvadrát. -CHIINV = CHIINV ## Vrátí hodnotu funkce inverzní k distribuční funkci jednostranné pravděpodobnosti rozdělení chí-kvadrát. -CHITEST = CHITEST ## Vrátí test nezávislosti. -CONFIDENCE = CONFIDENCE ## Vrátí interval spolehlivosti pro střední hodnotu základního souboru. -CORREL = CORREL ## Vrátí korelační koeficient mezi dvěma množinami dat. -COUNT = POČET ## Vrátí počet čísel v seznamu argumentů. -COUNTA = POČET2 ## Vrátí počet hodnot v seznamu argumentů. -COUNTBLANK = COUNTBLANK ## Spočítá počet prázdných buněk v oblasti. -COUNTIF = COUNTIF ## Spočítá buňky v oblasti, které odpovídají zadaným kritériím. -COUNTIFS = COUNTIFS ## Spočítá buňky v oblasti, které odpovídají více kritériím. -COVAR = COVAR ## Vrátí hodnotu kovariance, průměrnou hodnotu součinů párových odchylek -CRITBINOM = CRITBINOM ## Vrátí nejmenší hodnotu, pro kterou má součtové binomické rozdělení hodnotu větší nebo rovnu hodnotě kritéria. -DEVSQ = DEVSQ ## Vrátí součet čtverců odchylek. -EXPONDIST = EXPONDIST ## Vrátí hodnotu exponenciálního rozdělení. -FDIST = FDIST ## Vrátí hodnotu rozdělení pravděpodobnosti F. -FINV = FINV ## Vrátí hodnotu inverzní funkce k distribuční funkci rozdělení F. -FISHER = FISHER ## Vrátí hodnotu Fisherovy transformace. -FISHERINV = FISHERINV ## Vrátí hodnotu inverzní funkce k Fisherově transformaci. -FORECAST = FORECAST ## Vrátí hodnotu lineárního trendu. -FREQUENCY = ČETNOSTI ## Vrátí četnost rozdělení jako svislou matici. -FTEST = FTEST ## Vrátí výsledek F-testu. -GAMMADIST = GAMMADIST ## Vrátí hodnotu rozdělení gama. -GAMMAINV = GAMMAINV ## Vrátí hodnotu inverzní funkce k distribuční funkci součtového rozdělení gama. -GAMMALN = GAMMALN ## Vrátí přirozený logaritmus funkce gama, Γ(x). -GEOMEAN = GEOMEAN ## Vrátí geometrický průměr. -GROWTH = LOGLINTREND ## Vrátí hodnoty exponenciálního trendu. -HARMEAN = HARMEAN ## Vrátí harmonický průměr. -HYPGEOMDIST = HYPGEOMDIST ## Vrátí hodnotu hypergeometrického rozdělení. -INTERCEPT = INTERCEPT ## Vrátí úsek lineární regresní čáry. -KURT = KURT ## Vrátí hodnotu excesu množiny dat. -LARGE = LARGE ## Vrátí k-tou největší hodnotu množiny dat. -LINEST = LINREGRESE ## Vrátí parametry lineárního trendu. -LOGEST = LOGLINREGRESE ## Vrátí parametry exponenciálního trendu. -LOGINV = LOGINV ## Vrátí inverzní funkci k distribuční funkci logaritmicko-normálního rozdělení. -LOGNORMDIST = LOGNORMDIST ## Vrátí hodnotu součtového logaritmicko-normálního rozdělení. -MAX = MAX ## Vrátí maximální hodnotu seznamu argumentů. -MAXA = MAXA ## Vrátí maximální hodnotu seznamu argumentů včetně čísel, textu a logických hodnot. -MEDIAN = MEDIAN ## Vrátí střední hodnotu zadaných čísel. -MIN = MIN ## Vrátí minimální hodnotu seznamu argumentů. -MINA = MINA ## Vrátí nejmenší hodnotu v seznamu argumentů včetně čísel, textu a logických hodnot. -MODE = MODE ## Vrátí hodnotu, která se v množině dat vyskytuje nejčastěji. -NEGBINOMDIST = NEGBINOMDIST ## Vrátí hodnotu negativního binomického rozdělení. -NORMDIST = NORMDIST ## Vrátí hodnotu normálního součtového rozdělení. -NORMINV = NORMINV ## Vrátí inverzní funkci k funkci normálního součtového rozdělení. -NORMSDIST = NORMSDIST ## Vrátí hodnotu standardního normálního součtového rozdělení. -NORMSINV = NORMSINV ## Vrátí inverzní funkci k funkci standardního normálního součtového rozdělení. -PEARSON = PEARSON ## Vrátí Pearsonův výsledný momentový korelační koeficient. -PERCENTILE = PERCENTIL ## Vrátí hodnotu k-tého percentilu hodnot v oblasti. -PERCENTRANK = PERCENTRANK ## Vrátí pořadí hodnoty v množině dat vyjádřené procentuální částí množiny dat. -PERMUT = PERMUTACE ## Vrátí počet permutací pro zadaný počet objektů. -POISSON = POISSON ## Vrátí hodnotu distribuční funkce Poissonova rozdělení. -PROB = PROB ## Vrátí pravděpodobnost výskytu hodnot v oblasti mezi dvěma mezními hodnotami. -QUARTILE = QUARTIL ## Vrátí hodnotu kvartilu množiny dat. -RANK = RANK ## Vrátí pořadí čísla v seznamu čísel. -RSQ = RKQ ## Vrátí druhou mocninu Pearsonova výsledného momentového korelačního koeficientu. -SKEW = SKEW ## Vrátí zešikmení rozdělení. -SLOPE = SLOPE ## Vrátí směrnici lineární regresní čáry. -SMALL = SMALL ## Vrátí k-tou nejmenší hodnotu množiny dat. -STANDARDIZE = STANDARDIZE ## Vrátí normalizovanou hodnotu. -STDEV = SMODCH.VÝBĚR ## Vypočte směrodatnou odchylku výběru. -STDEVA = STDEVA ## Vypočte směrodatnou odchylku výběru včetně čísel, textu a logických hodnot. -STDEVP = SMODCH ## Vypočte směrodatnou odchylku základního souboru. -STDEVPA = STDEVPA ## Vypočte směrodatnou odchylku základního souboru včetně čísel, textu a logických hodnot. -STEYX = STEYX ## Vrátí standardní chybu předpovězené hodnoty y pro každou hodnotu x v regresi. -TDIST = TDIST ## Vrátí hodnotu Studentova t-rozdělení. -TINV = TINV ## Vrátí inverzní funkci k distribuční funkci Studentova t-rozdělení. -TREND = LINTREND ## Vrátí hodnoty lineárního trendu. -TRIMMEAN = TRIMMEAN ## Vrátí střední hodnotu vnitřní části množiny dat. -TTEST = TTEST ## Vrátí pravděpodobnost spojenou se Studentovým t-testem. -VAR = VAR.VÝBĚR ## Vypočte rozptyl výběru. -VARA = VARA ## Vypočte rozptyl výběru včetně čísel, textu a logických hodnot. -VARP = VAR ## Vypočte rozptyl základního souboru. -VARPA = VARPA ## Vypočte rozptyl základního souboru včetně čísel, textu a logických hodnot. -WEIBULL = WEIBULL ## Vrátí hodnotu Weibullova rozdělení. -ZTEST = ZTEST ## Vrátí jednostrannou P-hodnotu z-testu. - - -## -## Text functions Textové funkce -## -ASC = ASC ## Změní znaky s plnou šířkou (dvoubajtové)v řetězci znaků na znaky s poloviční šířkou (jednobajtové). -BAHTTEXT = BAHTTEXT ## Převede číslo na text ve formátu, měny ß (baht). -CHAR = ZNAK ## Vrátí znak určený číslem kódu. -CLEAN = VYČISTIT ## Odebere z textu všechny netisknutelné znaky. -CODE = KÓD ## Vrátí číselný kód prvního znaku zadaného textového řetězce. -CONCATENATE = CONCATENATE ## Spojí několik textových položek do jedné. -DOLLAR = KČ ## Převede číslo na text ve formátu měny Kč (česká koruna). -EXACT = STEJNÉ ## Zkontroluje, zda jsou dvě textové hodnoty shodné. -FIND = NAJÍT ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). -FINDB = FINDB ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). -FIXED = ZAOKROUHLIT.NA.TEXT ## Zformátuje číslo jako text s pevným počtem desetinných míst. -JIS = JIS ## Změní znaky s poloviční šířkou (jednobajtové) v řetězci znaků na znaky s plnou šířkou (dvoubajtové). -LEFT = ZLEVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. -LEFTB = LEFTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. -LEN = DÉLKA ## Vrátí počet znaků textového řetězce. -LENB = LENB ## Vrátí počet znaků textového řetězce. -LOWER = MALÁ ## Převede text na malá písmena. -MID = ČÁST ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. -MIDB = MIDB ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. -PHONETIC = ZVUKOVÉ ## Extrahuje fonetické znaky (furigana) z textového řetězce. -PROPER = VELKÁ2 ## Převede první písmeno každého slova textové hodnoty na velké. -REPLACE = NAHRADIT ## Nahradí znaky uvnitř textu. -REPLACEB = NAHRADITB ## Nahradí znaky uvnitř textu. -REPT = OPAKOVAT ## Zopakuje text podle zadaného počtu opakování. -RIGHT = ZPRAVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. -RIGHTB = RIGHTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. -SEARCH = HLEDAT ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). -SEARCHB = SEARCHB ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). -SUBSTITUTE = DOSADIT ## V textovém řetězci nahradí starý text novým. -T = T ## Převede argumenty na text. -TEXT = HODNOTA.NA.TEXT ## Zformátuje číslo a převede ho na text. -TRIM = PROČISTIT ## Odstraní z textu mezery. -UPPER = VELKÁ ## Převede text na velká písmena. -VALUE = HODNOTA ## Převede textový argument na číslo. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funkce doplňků a automatizace +## +GETPIVOTDATA = ZÍSKATKONTDATA ## Vrátí data uložená v kontingenční tabulce. Pomocí funkce ZÍSKATKONTDATA můžete načíst souhrnná data z kontingenční tabulky, pokud jsou tato data v kontingenční sestavě zobrazena. + + +## +## Cube functions Funkce pro práci s krychlemi +## +CUBEKPIMEMBER = CUBEKPIMEMBER ## Vrátí název, vlastnost a velikost klíčového ukazatele výkonu (KUV) a zobrazí v buňce název a vlastnost. Klíčový ukazatel výkonu je kvantifikovatelná veličina, například hrubý měsíční zisk nebo čtvrtletní obrat na zaměstnance, která se používá pro sledování výkonnosti organizace. +CUBEMEMBER = CUBEMEMBER ## Vrátí člen nebo n-tici v hierarchii krychle. Slouží k ověření, zda v krychli existuje člen nebo n-tice. +CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY ## Vrátí hodnotu vlastnosti člena v krychli. Slouží k ověření, zda v krychli existuje člen s daným názvem, a k vrácení konkrétní vlastnosti tohoto člena. +CUBERANKEDMEMBER = CUBERANKEDMEMBER ## Vrátí n-tý nebo pořadový člen sady. Použijte ji pro vrácení jednoho nebo více prvků sady, například obchodníka s nejvyšším obratem nebo deseti nejlepších studentů. +CUBESET = CUBESET ## Definuje vypočtenou sadu členů nebo n-tic odesláním výrazu sady do krychle na serveru, který vytvoří sadu a potom ji vrátí do aplikace Microsoft Office Excel. +CUBESETCOUNT = CUBESETCOUNT ## Vrátí počet položek v množině +CUBEVALUE = CUBEVALUE ## Vrátí úhrnnou hodnotu z krychle. + + +## +## Database functions Funkce databáze +## +DAVERAGE = DPRŮMĚR ## Vrátí průměr vybraných položek databáze. +DCOUNT = DPOČET ## Spočítá buňky databáze obsahující čísla. +DCOUNTA = DPOČET2 ## Spočítá buňky databáze, které nejsou prázdné. +DGET = DZÍSKAT ## Extrahuje z databáze jeden záznam splňující zadaná kritéria. +DMAX = DMAX ## Vrátí maximální hodnotu z vybraných položek databáze. +DMIN = DMIN ## Vrátí minimální hodnotu z vybraných položek databáze. +DPRODUCT = DSOUČIN ## Vynásobí hodnoty určitého pole záznamů v databázi, které splňují daná kritéria. +DSTDEV = DSMODCH.VÝBĚR ## Odhadne směrodatnou odchylku výběru vybraných položek databáze. +DSTDEVP = DSMODCH ## Vypočte směrodatnou odchylku základního souboru vybraných položek databáze. +DSUM = DSUMA ## Sečte čísla ve sloupcovém poli záznamů databáze, která splňují daná kritéria. +DVAR = DVAR.VÝBĚR ## Odhadne rozptyl výběru vybraných položek databáze. +DVARP = DVAR ## Vypočte rozptyl základního souboru vybraných položek databáze. + + +## +## Date and time functions Funkce data a času +## +DATE = DATUM ## Vrátí pořadové číslo určitého data. +DATEVALUE = DATUMHODN ## Převede datum ve formě textu na pořadové číslo. +DAY = DEN ## Převede pořadové číslo na den v měsíci. +DAYS360 = ROK360 ## Vrátí počet dní mezi dvěma daty na základě roku s 360 dny. +EDATE = EDATE ## Vrátí pořadové číslo data, které označuje určený počet měsíců před nebo po počátečním datu. +EOMONTH = EOMONTH ## Vrátí pořadové číslo posledního dne měsíce před nebo po zadaném počtu měsíců. +HOUR = HODINA ## Převede pořadové číslo na hodinu. +MINUTE = MINUTA ## Převede pořadové číslo na minutu. +MONTH = MĚSÍC ## Převede pořadové číslo na měsíc. +NETWORKDAYS = NETWORKDAYS ## Vrátí počet celých pracovních dní mezi dvěma daty. +NOW = NYNÍ ## Vrátí pořadové číslo aktuálního data a času. +SECOND = SEKUNDA ## Převede pořadové číslo na sekundu. +TIME = ČAS ## Vrátí pořadové číslo určitého času. +TIMEVALUE = ČASHODN ## Převede čas ve formě textu na pořadové číslo. +TODAY = DNES ## Vrátí pořadové číslo dnešního data. +WEEKDAY = DENTÝDNE ## Převede pořadové číslo na den v týdnu. +WEEKNUM = WEEKNUM ## Převede pořadové číslo na číslo představující číselnou pozici týdne v roce. +WORKDAY = WORKDAY ## Vrátí pořadové číslo data před nebo po zadaném počtu pracovních dní. +YEAR = ROK ## Převede pořadové číslo na rok. +YEARFRAC = YEARFRAC ## Vrátí část roku vyjádřenou zlomkem a představující počet celých dní mezi počátečním a koncovým datem. + + +## +## Engineering functions Inženýrské funkce (Technické funkce) +## +BESSELI = BESSELI ## Vrátí modifikovanou Besselovu funkci In(x). +BESSELJ = BESSELJ ## Vrátí modifikovanou Besselovu funkci Jn(x). +BESSELK = BESSELK ## Vrátí modifikovanou Besselovu funkci Kn(x). +BESSELY = BESSELY ## Vrátí Besselovu funkci Yn(x). +BIN2DEC = BIN2DEC ## Převede binární číslo na desítkové. +BIN2HEX = BIN2HEX ## Převede binární číslo na šestnáctkové. +BIN2OCT = BIN2OCT ## Převede binární číslo na osmičkové. +COMPLEX = COMPLEX ## Převede reálnou a imaginární část na komplexní číslo. +CONVERT = CONVERT ## Převede číslo do jiného jednotkového měrného systému. +DEC2BIN = DEC2BIN ## Převede desítkového čísla na dvojkové +DEC2HEX = DEC2HEX ## Převede desítkové číslo na šestnáctkové. +DEC2OCT = DEC2OCT ## Převede desítkové číslo na osmičkové. +DELTA = DELTA ## Testuje rovnost dvou hodnot. +ERF = ERF ## Vrátí chybovou funkci. +ERFC = ERFC ## Vrátí doplňkovou chybovou funkci. +GESTEP = GESTEP ## Testuje, zda je číslo větší než mezní hodnota. +HEX2BIN = HEX2BIN ## Převede šestnáctkové číslo na binární. +HEX2DEC = HEX2DEC ## Převede šestnáctkové číslo na desítkové. +HEX2OCT = HEX2OCT ## Převede šestnáctkové číslo na osmičkové. +IMABS = IMABS ## Vrátí absolutní hodnotu (modul) komplexního čísla. +IMAGINARY = IMAGINARY ## Vrátí imaginární část komplexního čísla. +IMARGUMENT = IMARGUMENT ## Vrátí argument théta, úhel vyjádřený v radiánech. +IMCONJUGATE = IMCONJUGATE ## Vrátí komplexně sdružené číslo ke komplexnímu číslu. +IMCOS = IMCOS ## Vrátí kosinus komplexního čísla. +IMDIV = IMDIV ## Vrátí podíl dvou komplexních čísel. +IMEXP = IMEXP ## Vrátí exponenciální tvar komplexního čísla. +IMLN = IMLN ## Vrátí přirozený logaritmus komplexního čísla. +IMLOG10 = IMLOG10 ## Vrátí dekadický logaritmus komplexního čísla. +IMLOG2 = IMLOG2 ## Vrátí logaritmus komplexního čísla při základu 2. +IMPOWER = IMPOWER ## Vrátí komplexní číslo umocněné na celé číslo. +IMPRODUCT = IMPRODUCT ## Vrátí součin komplexních čísel. +IMREAL = IMREAL ## Vrátí reálnou část komplexního čísla. +IMSIN = IMSIN ## Vrátí sinus komplexního čísla. +IMSQRT = IMSQRT ## Vrátí druhou odmocninu komplexního čísla. +IMSUB = IMSUB ## Vrátí rozdíl mezi dvěma komplexními čísly. +IMSUM = IMSUM ## Vrátí součet dvou komplexních čísel. +OCT2BIN = OCT2BIN ## Převede osmičkové číslo na binární. +OCT2DEC = OCT2DEC ## Převede osmičkové číslo na desítkové. +OCT2HEX = OCT2HEX ## Převede osmičkové číslo na šestnáctkové. + + +## +## Financial functions Finanční funkce +## +ACCRINT = ACCRINT ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen v pravidelných termínech. +ACCRINTM = ACCRINTM ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen k datu splatnosti. +AMORDEGRC = AMORDEGRC ## Vrátí lineární amortizaci v každém účetním období pomocí koeficientu amortizace. +AMORLINC = AMORLINC ## Vrátí lineární amortizaci v každém účetním období. +COUPDAYBS = COUPDAYBS ## Vrátí počet dnů od začátku období placení kupónů do data splatnosti. +COUPDAYS = COUPDAYS ## Vrátí počet dnů v období placení kupónů, které obsahuje den zúčtování. +COUPDAYSNC = COUPDAYSNC ## Vrátí počet dnů od data zúčtování do následujícího data placení kupónu. +COUPNCD = COUPNCD ## Vrátí následující datum placení kupónu po datu zúčtování. +COUPNUM = COUPNUM ## Vrátí počet kupónů splatných mezi datem zúčtování a datem splatnosti. +COUPPCD = COUPPCD ## Vrátí předchozí datum placení kupónu před datem zúčtování. +CUMIPMT = CUMIPMT ## Vrátí kumulativní úrok splacený mezi dvěma obdobími. +CUMPRINC = CUMPRINC ## Vrátí kumulativní jistinu splacenou mezi dvěma obdobími půjčky. +DB = ODPIS.ZRYCH ## Vrátí odpis aktiva za určité období pomocí degresivní metody odpisu s pevným zůstatkem. +DDB = ODPIS.ZRYCH2 ## Vrátí odpis aktiva za určité období pomocí dvojité degresivní metody odpisu nebo jiné metody, kterou zadáte. +DISC = DISC ## Vrátí diskontní sazbu cenného papíru. +DOLLARDE = DOLLARDE ## Převede částku v korunách vyjádřenou zlomkem na částku v korunách vyjádřenou desetinným číslem. +DOLLARFR = DOLLARFR ## Převede částku v korunách vyjádřenou desetinným číslem na částku v korunách vyjádřenou zlomkem. +DURATION = DURATION ## Vrátí roční dobu cenného papíru s pravidelnými úrokovými sazbami. +EFFECT = EFFECT ## Vrátí efektivní roční úrokovou sazbu. +FV = BUDHODNOTA ## Vrátí budoucí hodnotu investice. +FVSCHEDULE = FVSCHEDULE ## Vrátí budoucí hodnotu počáteční jistiny po použití série sazeb složitého úroku. +INTRATE = INTRATE ## Vrátí úrokovou sazbu plně investovaného cenného papíru. +IPMT = PLATBA.ÚROK ## Vrátí výšku úroku investice za dané období. +IRR = MÍRA.VÝNOSNOSTI ## Vrátí vnitřní výnosové procento série peněžních toků. +ISPMT = ISPMT ## Vypočte výši úroku z investice zaplaceného během určitého období. +MDURATION = MDURATION ## Vrátí Macauleyho modifikovanou dobu cenného papíru o nominální hodnotě 100 Kč. +MIRR = MOD.MÍRA.VÝNOSNOSTI ## Vrátí vnitřní sazbu výnosu, přičemž kladné a záporné hodnoty peněžních prostředků jsou financovány podle různých sazeb. +NOMINAL = NOMINAL ## Vrátí nominální roční úrokovou sazbu. +NPER = POČET.OBDOBÍ ## Vrátí počet období pro investici. +NPV = ČISTÁ.SOUČHODNOTA ## Vrátí čistou současnou hodnotu investice vypočítanou na základě série pravidelných peněžních toků a diskontní sazby. +ODDFPRICE = ODDFPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným prvním obdobím. +ODDFYIELD = ODDFYIELD ## Vrátí výnos cenného papíru s odlišným prvním obdobím. +ODDLPRICE = ODDLPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným posledním obdobím. +ODDLYIELD = ODDLYIELD ## Vrátí výnos cenného papíru s odlišným posledním obdobím. +PMT = PLATBA ## Vrátí hodnotu pravidelné splátky anuity. +PPMT = PLATBA.ZÁKLAD ## Vrátí hodnotu splátky jistiny pro zadanou investici za dané období. +PRICE = PRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen v pravidelných termínech. +PRICEDISC = PRICEDISC ## Vrátí cenu diskontního cenného papíru o nominální hodnotě 100 Kč. +PRICEMAT = PRICEMAT ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen k datu splatnosti. +PV = SOUČHODNOTA ## Vrátí současnou hodnotu investice. +RATE = ÚROKOVÁ.MÍRA ## Vrátí úrokovou sazbu vztaženou na období anuity. +RECEIVED = RECEIVED ## Vrátí částku obdrženou k datu splatnosti plně investovaného cenného papíru. +SLN = ODPIS.LIN ## Vrátí přímé odpisy aktiva pro jedno období. +SYD = ODPIS.NELIN ## Vrátí směrné číslo ročních odpisů aktiva pro zadané období. +TBILLEQ = TBILLEQ ## Vrátí výnos směnky státní pokladny ekvivalentní výnosu obligace. +TBILLPRICE = TBILLPRICE ## Vrátí cenu směnky státní pokladny o nominální hodnotě 100 Kč. +TBILLYIELD = TBILLYIELD ## Vrátí výnos směnky státní pokladny. +VDB = ODPIS.ZA.INT ## Vrátí odpis aktiva pro určité období nebo část období pomocí degresivní metody odpisu. +XIRR = XIRR ## Vrátí vnitřní výnosnost pro harmonogram peněžních toků, který nemusí být nutně periodický. +XNPV = XNPV ## Vrátí čistou současnou hodnotu pro harmonogram peněžních toků, který nemusí být nutně periodický. +YIELD = YIELD ## Vrátí výnos cenného papíru, ze kterého je úrok placen v pravidelných termínech. +YIELDDISC = YIELDDISC ## Vrátí roční výnos diskontního cenného papíru, například směnky státní pokladny. +YIELDMAT = YIELDMAT ## Vrátí roční výnos cenného papíru, ze kterého je úrok placen k datu splatnosti. + + +## +## Information functions Informační funkce +## +CELL = POLÍČKO ## Vrátí informace o formátování, umístění nebo obsahu buňky. +ERROR.TYPE = CHYBA.TYP ## Vrátí číslo odpovídající typu chyby. +INFO = O.PROSTŘEDÍ ## Vrátí informace o aktuálním pracovním prostředí. +ISBLANK = JE.PRÁZDNÉ ## Vrátí hodnotu PRAVDA, pokud se argument hodnota odkazuje na prázdnou buňku. +ISERR = JE.CHYBA ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota (kromě #N/A). +ISERROR = JE.CHYBHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota. +ISEVEN = ISEVEN ## Vrátí hodnotu PRAVDA, pokud je číslo sudé. +ISLOGICAL = JE.LOGHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota logická hodnota. +ISNA = JE.NEDEF ## Vrátí hodnotu PRAVDA, pokud je argument hodnota chybová hodnota #N/A. +ISNONTEXT = JE.NETEXT ## Vrátí hodnotu PRAVDA, pokud argument hodnota není text. +ISNUMBER = JE.ČÍSLO ## Vrátí hodnotu PRAVDA, pokud je argument hodnota číslo. +ISODD = ISODD ## Vrátí hodnotu PRAVDA, pokud je číslo liché. +ISREF = JE.ODKAZ ## Vrátí hodnotu PRAVDA, pokud je argument hodnota odkaz. +ISTEXT = JE.TEXT ## Vrátí hodnotu PRAVDA, pokud je argument hodnota text. +N = N ## Vrátí hodnotu převedenou na číslo. +NA = NEDEF ## Vrátí chybovou hodnotu #N/A. +TYPE = TYP ## Vrátí číslo označující datový typ hodnoty. + + +## +## Logical functions Logické funkce +## +AND = A ## Vrátí hodnotu PRAVDA, mají-li všechny argumenty hodnotu PRAVDA. +FALSE = NEPRAVDA ## Vrátí logickou hodnotu NEPRAVDA. +IF = KDYŽ ## Určí, který logický test má proběhnout. +IFERROR = IFERROR ## Pokud je vzorec vyhodnocen jako chyba, vrátí zadanou hodnotu. V opačném případě vrátí výsledek vzorce. +NOT = NE ## Provede logickou negaci argumentu funkce. +OR = NEBO ## Vrátí hodnotu PRAVDA, je-li alespoň jeden argument roven hodnotě PRAVDA. +TRUE = PRAVDA ## Vrátí logickou hodnotu PRAVDA. + + +## +## Lookup and reference functions Vyhledávací funkce +## +ADDRESS = ODKAZ ## Vrátí textový odkaz na jednu buňku listu. +AREAS = POČET.BLOKŮ ## Vrátí počet oblastí v odkazu. +CHOOSE = ZVOLIT ## Zvolí hodnotu ze seznamu hodnot. +COLUMN = SLOUPEC ## Vrátí číslo sloupce odkazu. +COLUMNS = SLOUPCE ## Vrátí počet sloupců v odkazu. +HLOOKUP = VVYHLEDAT ## Prohledá horní řádek matice a vrátí hodnotu určené buňky. +HYPERLINK = HYPERTEXTOVÝ.ODKAZ ## Vytvoří zástupce nebo odkaz, který otevře dokument uložený na síťovém serveru, v síti intranet nebo Internet. +INDEX = INDEX ## Pomocí rejstříku zvolí hodnotu z odkazu nebo matice. +INDIRECT = NEPŘÍMÝ.ODKAZ ## Vrátí odkaz určený textovou hodnotou. +LOOKUP = VYHLEDAT ## Vyhledá hodnoty ve vektoru nebo matici. +MATCH = POZVYHLEDAT ## Vyhledá hodnoty v odkazu nebo matici. +OFFSET = POSUN ## Vrátí posun odkazu od zadaného odkazu. +ROW = ŘÁDEK ## Vrátí číslo řádku odkazu. +ROWS = ŘÁDKY ## Vrátí počet řádků v odkazu. +RTD = RTD ## Načte data reálného času z programu, který podporuje automatizaci modelu COM (Automatizace: Způsob práce s objekty určité aplikace z jiné aplikace nebo nástroje pro vývoj. Automatizace (dříve nazývaná automatizace OLE) je počítačovým standardem a je funkcí modelu COM (Component Object Model).). +TRANSPOSE = TRANSPOZICE ## Vrátí transponovanou matici. +VLOOKUP = SVYHLEDAT ## Prohledá první sloupec matice, přesune kurzor v řádku a vrátí hodnotu buňky. + + +## +## Math and trigonometry functions Matematické a trigonometrické funkce +## +ABS = ABS ## Vrátí absolutní hodnotu čísla. +ACOS = ARCCOS ## Vrátí arkuskosinus čísla. +ACOSH = ARCCOSH ## Vrátí hyperbolický arkuskosinus čísla. +ASIN = ARCSIN ## Vrátí arkussinus čísla. +ASINH = ARCSINH ## Vrátí hyperbolický arkussinus čísla. +ATAN = ARCTG ## Vrátí arkustangens čísla. +ATAN2 = ARCTG2 ## Vrátí arkustangens x-ové a y-ové souřadnice. +ATANH = ARCTGH ## Vrátí hyperbolický arkustangens čísla. +CEILING = ZAOKR.NAHORU ## Zaokrouhlí číslo na nejbližší celé číslo nebo na nejbližší násobek zadané hodnoty. +COMBIN = KOMBINACE ## Vrátí počet kombinací pro daný počet položek. +COS = COS ## Vrátí kosinus čísla. +COSH = COSH ## Vrátí hyperbolický kosinus čísla. +DEGREES = DEGREES ## Převede radiány na stupně. +EVEN = ZAOKROUHLIT.NA.SUDÉ ## Zaokrouhlí číslo nahoru na nejbližší celé sudé číslo. +EXP = EXP ## Vrátí základ přirozeného logaritmu e umocněný na zadané číslo. +FACT = FAKTORIÁL ## Vrátí faktoriál čísla. +FACTDOUBLE = FACTDOUBLE ## Vrátí dvojitý faktoriál čísla. +FLOOR = ZAOKR.DOLŮ ## Zaokrouhlí číslo dolů, směrem k nule. +GCD = GCD ## Vrátí největší společný dělitel. +INT = CELÁ.ČÁST ## Zaokrouhlí číslo dolů na nejbližší celé číslo. +LCM = LCM ## Vrátí nejmenší společný násobek. +LN = LN ## Vrátí přirozený logaritmus čísla. +LOG = LOGZ ## Vrátí logaritmus čísla při zadaném základu. +LOG10 = LOG ## Vrátí dekadický logaritmus čísla. +MDETERM = DETERMINANT ## Vrátí determinant matice. +MINVERSE = INVERZE ## Vrátí inverzní matici. +MMULT = SOUČIN.MATIC ## Vrátí součin dvou matic. +MOD = MOD ## Vrátí zbytek po dělení. +MROUND = MROUND ## Vrátí číslo zaokrouhlené na požadovaný násobek. +MULTINOMIAL = MULTINOMIAL ## Vrátí mnohočlen z množiny čísel. +ODD = ZAOKROUHLIT.NA.LICHÉ ## Zaokrouhlí číslo nahoru na nejbližší celé liché číslo. +PI = PI ## Vrátí hodnotu čísla pí. +POWER = POWER ## Umocní číslo na zadanou mocninu. +PRODUCT = SOUČIN ## Vynásobí argumenty funkce. +QUOTIENT = QUOTIENT ## Vrátí celou část dělení. +RADIANS = RADIANS ## Převede stupně na radiány. +RAND = NÁHČÍSLO ## Vrátí náhodné číslo mezi 0 a 1. +RANDBETWEEN = RANDBETWEEN ## Vrátí náhodné číslo mezi zadanými čísly. +ROMAN = ROMAN ## Převede arabskou číslici na římskou ve formátu textu. +ROUND = ZAOKROUHLIT ## Zaokrouhlí číslo na zadaný počet číslic. +ROUNDDOWN = ROUNDDOWN ## Zaokrouhlí číslo dolů, směrem k nule. +ROUNDUP = ROUNDUP ## Zaokrouhlí číslo nahoru, směrem od nuly. +SERIESSUM = SERIESSUM ## Vrátí součet mocninné řady určené podle vzorce. +SIGN = SIGN ## Vrátí znaménko čísla. +SIN = SIN ## Vrátí sinus daného úhlu. +SINH = SINH ## Vrátí hyperbolický sinus čísla. +SQRT = ODMOCNINA ## Vrátí kladnou druhou odmocninu. +SQRTPI = SQRTPI ## Vrátí druhou odmocninu výrazu (číslo * pí). +SUBTOTAL = SUBTOTAL ## Vrátí souhrn v seznamu nebo databázi. +SUM = SUMA ## Sečte argumenty funkce. +SUMIF = SUMIF ## Sečte buňky vybrané podle zadaných kritérií. +SUMIFS = SUMIFS ## Sečte buňky určené více zadanými podmínkami. +SUMPRODUCT = SOUČIN.SKALÁRNÍ ## Vrátí součet součinů odpovídajících prvků matic. +SUMSQ = SUMA.ČTVERCŮ ## Vrátí součet čtverců argumentů. +SUMX2MY2 = SUMX2MY2 ## Vrátí součet rozdílu čtverců odpovídajících hodnot ve dvou maticích. +SUMX2PY2 = SUMX2PY2 ## Vrátí součet součtu čtverců odpovídajících hodnot ve dvou maticích. +SUMXMY2 = SUMXMY2 ## Vrátí součet čtverců rozdílů odpovídajících hodnot ve dvou maticích. +TAN = TGTG ## Vrátí tangens čísla. +TANH = TGH ## Vrátí hyperbolický tangens čísla. +TRUNC = USEKNOUT ## Zkrátí číslo na celé číslo. + + +## +## Statistical functions Statistické funkce +## +AVEDEV = PRŮMODCHYLKA ## Vrátí průměrnou hodnotu absolutních odchylek datových bodů od jejich střední hodnoty. +AVERAGE = PRŮMĚR ## Vrátí průměrnou hodnotu argumentů. +AVERAGEA = AVERAGEA ## Vrátí průměrnou hodnotu argumentů včetně čísel, textu a logických hodnot. +AVERAGEIF = AVERAGEIF ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk v oblasti, které vyhovují příslušné podmínce. +AVERAGEIFS = AVERAGEIFS ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk vyhovujících několika podmínkám. +BETADIST = BETADIST ## Vrátí hodnotu součtového rozdělení beta. +BETAINV = BETAINV ## Vrátí inverzní hodnotu součtového rozdělení pro zadané rozdělení beta. +BINOMDIST = BINOMDIST ## Vrátí hodnotu binomického rozdělení pravděpodobnosti jednotlivých veličin. +CHIDIST = CHIDIST ## Vrátí jednostrannou pravděpodobnost rozdělení chí-kvadrát. +CHIINV = CHIINV ## Vrátí hodnotu funkce inverzní k distribuční funkci jednostranné pravděpodobnosti rozdělení chí-kvadrát. +CHITEST = CHITEST ## Vrátí test nezávislosti. +CONFIDENCE = CONFIDENCE ## Vrátí interval spolehlivosti pro střední hodnotu základního souboru. +CORREL = CORREL ## Vrátí korelační koeficient mezi dvěma množinami dat. +COUNT = POČET ## Vrátí počet čísel v seznamu argumentů. +COUNTA = POČET2 ## Vrátí počet hodnot v seznamu argumentů. +COUNTBLANK = COUNTBLANK ## Spočítá počet prázdných buněk v oblasti. +COUNTIF = COUNTIF ## Spočítá buňky v oblasti, které odpovídají zadaným kritériím. +COUNTIFS = COUNTIFS ## Spočítá buňky v oblasti, které odpovídají více kritériím. +COVAR = COVAR ## Vrátí hodnotu kovariance, průměrnou hodnotu součinů párových odchylek +CRITBINOM = CRITBINOM ## Vrátí nejmenší hodnotu, pro kterou má součtové binomické rozdělení hodnotu větší nebo rovnu hodnotě kritéria. +DEVSQ = DEVSQ ## Vrátí součet čtverců odchylek. +EXPONDIST = EXPONDIST ## Vrátí hodnotu exponenciálního rozdělení. +FDIST = FDIST ## Vrátí hodnotu rozdělení pravděpodobnosti F. +FINV = FINV ## Vrátí hodnotu inverzní funkce k distribuční funkci rozdělení F. +FISHER = FISHER ## Vrátí hodnotu Fisherovy transformace. +FISHERINV = FISHERINV ## Vrátí hodnotu inverzní funkce k Fisherově transformaci. +FORECAST = FORECAST ## Vrátí hodnotu lineárního trendu. +FREQUENCY = ČETNOSTI ## Vrátí četnost rozdělení jako svislou matici. +FTEST = FTEST ## Vrátí výsledek F-testu. +GAMMADIST = GAMMADIST ## Vrátí hodnotu rozdělení gama. +GAMMAINV = GAMMAINV ## Vrátí hodnotu inverzní funkce k distribuční funkci součtového rozdělení gama. +GAMMALN = GAMMALN ## Vrátí přirozený logaritmus funkce gama, Γ(x). +GEOMEAN = GEOMEAN ## Vrátí geometrický průměr. +GROWTH = LOGLINTREND ## Vrátí hodnoty exponenciálního trendu. +HARMEAN = HARMEAN ## Vrátí harmonický průměr. +HYPGEOMDIST = HYPGEOMDIST ## Vrátí hodnotu hypergeometrického rozdělení. +INTERCEPT = INTERCEPT ## Vrátí úsek lineární regresní čáry. +KURT = KURT ## Vrátí hodnotu excesu množiny dat. +LARGE = LARGE ## Vrátí k-tou největší hodnotu množiny dat. +LINEST = LINREGRESE ## Vrátí parametry lineárního trendu. +LOGEST = LOGLINREGRESE ## Vrátí parametry exponenciálního trendu. +LOGINV = LOGINV ## Vrátí inverzní funkci k distribuční funkci logaritmicko-normálního rozdělení. +LOGNORMDIST = LOGNORMDIST ## Vrátí hodnotu součtového logaritmicko-normálního rozdělení. +MAX = MAX ## Vrátí maximální hodnotu seznamu argumentů. +MAXA = MAXA ## Vrátí maximální hodnotu seznamu argumentů včetně čísel, textu a logických hodnot. +MEDIAN = MEDIAN ## Vrátí střední hodnotu zadaných čísel. +MIN = MIN ## Vrátí minimální hodnotu seznamu argumentů. +MINA = MINA ## Vrátí nejmenší hodnotu v seznamu argumentů včetně čísel, textu a logických hodnot. +MODE = MODE ## Vrátí hodnotu, která se v množině dat vyskytuje nejčastěji. +NEGBINOMDIST = NEGBINOMDIST ## Vrátí hodnotu negativního binomického rozdělení. +NORMDIST = NORMDIST ## Vrátí hodnotu normálního součtového rozdělení. +NORMINV = NORMINV ## Vrátí inverzní funkci k funkci normálního součtového rozdělení. +NORMSDIST = NORMSDIST ## Vrátí hodnotu standardního normálního součtového rozdělení. +NORMSINV = NORMSINV ## Vrátí inverzní funkci k funkci standardního normálního součtového rozdělení. +PEARSON = PEARSON ## Vrátí Pearsonův výsledný momentový korelační koeficient. +PERCENTILE = PERCENTIL ## Vrátí hodnotu k-tého percentilu hodnot v oblasti. +PERCENTRANK = PERCENTRANK ## Vrátí pořadí hodnoty v množině dat vyjádřené procentuální částí množiny dat. +PERMUT = PERMUTACE ## Vrátí počet permutací pro zadaný počet objektů. +POISSON = POISSON ## Vrátí hodnotu distribuční funkce Poissonova rozdělení. +PROB = PROB ## Vrátí pravděpodobnost výskytu hodnot v oblasti mezi dvěma mezními hodnotami. +QUARTILE = QUARTIL ## Vrátí hodnotu kvartilu množiny dat. +RANK = RANK ## Vrátí pořadí čísla v seznamu čísel. +RSQ = RKQ ## Vrátí druhou mocninu Pearsonova výsledného momentového korelačního koeficientu. +SKEW = SKEW ## Vrátí zešikmení rozdělení. +SLOPE = SLOPE ## Vrátí směrnici lineární regresní čáry. +SMALL = SMALL ## Vrátí k-tou nejmenší hodnotu množiny dat. +STANDARDIZE = STANDARDIZE ## Vrátí normalizovanou hodnotu. +STDEV = SMODCH.VÝBĚR ## Vypočte směrodatnou odchylku výběru. +STDEVA = STDEVA ## Vypočte směrodatnou odchylku výběru včetně čísel, textu a logických hodnot. +STDEVP = SMODCH ## Vypočte směrodatnou odchylku základního souboru. +STDEVPA = STDEVPA ## Vypočte směrodatnou odchylku základního souboru včetně čísel, textu a logických hodnot. +STEYX = STEYX ## Vrátí standardní chybu předpovězené hodnoty y pro každou hodnotu x v regresi. +TDIST = TDIST ## Vrátí hodnotu Studentova t-rozdělení. +TINV = TINV ## Vrátí inverzní funkci k distribuční funkci Studentova t-rozdělení. +TREND = LINTREND ## Vrátí hodnoty lineárního trendu. +TRIMMEAN = TRIMMEAN ## Vrátí střední hodnotu vnitřní části množiny dat. +TTEST = TTEST ## Vrátí pravděpodobnost spojenou se Studentovým t-testem. +VAR = VAR.VÝBĚR ## Vypočte rozptyl výběru. +VARA = VARA ## Vypočte rozptyl výběru včetně čísel, textu a logických hodnot. +VARP = VAR ## Vypočte rozptyl základního souboru. +VARPA = VARPA ## Vypočte rozptyl základního souboru včetně čísel, textu a logických hodnot. +WEIBULL = WEIBULL ## Vrátí hodnotu Weibullova rozdělení. +ZTEST = ZTEST ## Vrátí jednostrannou P-hodnotu z-testu. + + +## +## Text functions Textové funkce +## +ASC = ASC ## Změní znaky s plnou šířkou (dvoubajtové)v řetězci znaků na znaky s poloviční šířkou (jednobajtové). +BAHTTEXT = BAHTTEXT ## Převede číslo na text ve formátu, měny ß (baht). +CHAR = ZNAK ## Vrátí znak určený číslem kódu. +CLEAN = VYČISTIT ## Odebere z textu všechny netisknutelné znaky. +CODE = KÓD ## Vrátí číselný kód prvního znaku zadaného textového řetězce. +CONCATENATE = CONCATENATE ## Spojí několik textových položek do jedné. +DOLLAR = KČ ## Převede číslo na text ve formátu měny Kč (česká koruna). +EXACT = STEJNÉ ## Zkontroluje, zda jsou dvě textové hodnoty shodné. +FIND = NAJÍT ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). +FINDB = FINDB ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). +FIXED = ZAOKROUHLIT.NA.TEXT ## Zformátuje číslo jako text s pevným počtem desetinných míst. +JIS = JIS ## Změní znaky s poloviční šířkou (jednobajtové) v řetězci znaků na znaky s plnou šířkou (dvoubajtové). +LEFT = ZLEVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. +LEFTB = LEFTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. +LEN = DÉLKA ## Vrátí počet znaků textového řetězce. +LENB = LENB ## Vrátí počet znaků textového řetězce. +LOWER = MALÁ ## Převede text na malá písmena. +MID = ČÁST ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. +MIDB = MIDB ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. +PHONETIC = ZVUKOVÉ ## Extrahuje fonetické znaky (furigana) z textového řetězce. +PROPER = VELKÁ2 ## Převede první písmeno každého slova textové hodnoty na velké. +REPLACE = NAHRADIT ## Nahradí znaky uvnitř textu. +REPLACEB = NAHRADITB ## Nahradí znaky uvnitř textu. +REPT = OPAKOVAT ## Zopakuje text podle zadaného počtu opakování. +RIGHT = ZPRAVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. +RIGHTB = RIGHTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. +SEARCH = HLEDAT ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). +SEARCHB = SEARCHB ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). +SUBSTITUTE = DOSADIT ## V textovém řetězci nahradí starý text novým. +T = T ## Převede argumenty na text. +TEXT = HODNOTA.NA.TEXT ## Zformátuje číslo a převede ho na text. +TRIM = PROČISTIT ## Odstraní z textu mezery. +UPPER = VELKÁ ## Převede text na velká písmena. +VALUE = HODNOTA ## Převede textový argument na číslo. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/da/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/da/functions index 26e0310c1a1..1db4d30bb1c 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/da/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/da/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Tilføjelsesprogram- og automatiseringsfunktioner -## -GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data, der er lagret i en pivottabelrapport - - -## -## Cube functions Kubefunktioner -## -CUBEKPIMEMBER = KUBE.KPI.MEDLEM ## Returnerer navn, egenskab og mål for en KPI-indikator og viser navnet og egenskaben i cellen. En KPI-indikator er en målbar størrelse, f.eks. bruttooverskud pr. måned eller personaleudskiftning pr. kvartal, der bruges til at overvåge en organisations præstationer. -CUBEMEMBER = KUBE.MEDLEM ## Returnerer et medlem eller en tupel fra kubehierarkiet. Bruges til at validere, om et medlem eller en tupel findes i kuben. -CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB ## Returnerer værdien af en egenskab for et medlem i kuben. Bruges til at validere, om et medlemsnavn findes i kuben, og returnere den angivne egenskab for medlemmet. -CUBERANKEDMEMBER = KUBEMEDLEM.RANG ## Returnerer det n'te eller rangordnede medlem i et sæt. Bruges til at returnere et eller flere elementer i et sæt, f.eks. topsælgere eller de 10 bedste elever. -CUBESET = KUBESÆT ## Definerer et beregnet sæt medlemmer eller tupler ved at sende et sætudtryk til kuben på serveren, som opretter sættet og returnerer det til Microsoft Office Excel. -CUBESETCOUNT = KUBESÆT.TÆL ## Returnerer antallet af elementer i et sæt. -CUBEVALUE = KUBEVÆRDI ## Returnerer en sammenlagt (aggregeret) værdi fra en kube. - - -## -## Database functions Databasefunktioner -## -DAVERAGE = DMIDDEL ## Returnerer gennemsnittet af markerede databaseposter -DCOUNT = DTÆL ## Tæller de celler, der indeholder tal, i en database -DCOUNTA = DTÆLV ## Tæller udfyldte celler i en database -DGET = DHENT ## Uddrager en enkelt post, der opfylder de angivne kriterier, fra en database -DMAX = DMAKS ## Returnerer den største værdi blandt markerede databaseposter -DMIN = DMIN ## Returnerer den mindste værdi blandt markerede databaseposter -DPRODUCT = DPRODUKT ## Ganger værdierne i et bestemt felt med poster, der opfylder kriterierne i en database -DSTDEV = DSTDAFV ## Beregner et skøn over standardafvigelsen baseret på en stikprøve af markerede databaseposter -DSTDEVP = DSTDAFVP ## Beregner standardafvigelsen baseret på hele populationen af markerede databaseposter -DSUM = DSUM ## Sammenlægger de tal i feltkolonnen i databasen, der opfylder kriterierne -DVAR = DVARIANS ## Beregner varians baseret på en stikprøve af markerede databaseposter -DVARP = DVARIANSP ## Beregner varians baseret på hele populationen af markerede databaseposter - - -## -## Date and time functions Dato- og klokkeslætsfunktioner -## -DATE = DATO ## Returnerer serienummeret for en bestemt dato -DATEVALUE = DATOVÆRDI ## Konverterer en dato i form af tekst til et serienummer -DAY = DAG ## Konverterer et serienummer til en dag i måneden -DAYS360 = DAGE360 ## Beregner antallet af dage mellem to datoer på grundlag af et år med 360 dage -EDATE = EDATO ## Returnerer serienummeret for den dato, der ligger det angivne antal måneder før eller efter startdatoen -EOMONTH = SLUT.PÅ.MÅNED ## Returnerer serienummeret på den sidste dag i måneden før eller efter et angivet antal måneder -HOUR = TIME ## Konverterer et serienummer til en time -MINUTE = MINUT ## Konverterer et serienummer til et minut -MONTH = MÅNED ## Konverterer et serienummer til en måned -NETWORKDAYS = ANTAL.ARBEJDSDAGE ## Returnerer antallet af hele arbejdsdage mellem to datoer -NOW = NU ## Returnerer serienummeret for den aktuelle dato eller det aktuelle klokkeslæt -SECOND = SEKUND ## Konverterer et serienummer til et sekund -TIME = KLOKKESLÆT ## Returnerer serienummeret for et bestemt klokkeslæt -TIMEVALUE = TIDSVÆRDI ## Konverterer et klokkeslæt i form af tekst til et serienummer -TODAY = IDAG ## Returnerer serienummeret for dags dato -WEEKDAY = UGEDAG ## Konverterer et serienummer til en ugedag -WEEKNUM = UGE.NR ## Konverterer et serienummer til et tal, der angiver ugenummeret i året -WORKDAY = ARBEJDSDAG ## Returnerer serienummeret for dagen før eller efter det angivne antal arbejdsdage -YEAR = ÅR ## Konverterer et serienummer til et år -YEARFRAC = ÅR.BRØK ## Returnerer årsbrøken, der repræsenterer antallet af hele dage mellem startdato og slutdato - - -## -## Engineering functions Tekniske funktioner -## -BESSELI = BESSELI ## Returnerer den modificerede Bessel-funktion In(x) -BESSELJ = BESSELJ ## Returnerer Bessel-funktionen Jn(x) -BESSELK = BESSELK ## Returnerer den modificerede Bessel-funktion Kn(x) -BESSELY = BESSELY ## Returnerer Bessel-funktionen Yn(x) -BIN2DEC = BIN.TIL.DEC ## Konverterer et binært tal til et decimaltal -BIN2HEX = BIN.TIL.HEX ## Konverterer et binært tal til et heksadecimalt tal -BIN2OCT = BIN.TIL.OKT ## Konverterer et binært tal til et oktaltal. -COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koefficienter til et komplekst tal -CONVERT = KONVERTER ## Konverterer et tal fra én måleenhed til en anden -DEC2BIN = DEC.TIL.BIN ## Konverterer et decimaltal til et binært tal -DEC2HEX = DEC.TIL.HEX ## Konverterer et decimaltal til et heksadecimalt tal -DEC2OCT = DEC.TIL.OKT ## Konverterer et decimaltal til et oktaltal -DELTA = DELTA ## Tester, om to værdier er ens -ERF = FEJLFUNK ## Returner fejlfunktionen -ERFC = FEJLFUNK.KOMP ## Returnerer den komplementære fejlfunktion -GESTEP = GETRIN ## Tester, om et tal er større end en grænseværdi -HEX2BIN = HEX.TIL.BIN ## Konverterer et heksadecimalt tal til et binært tal -HEX2DEC = HEX.TIL.DEC ## Konverterer et decimaltal til et heksadecimalt tal -HEX2OCT = HEX.TIL.OKT ## Konverterer et heksadecimalt tal til et oktaltal -IMABS = IMAGABS ## Returnerer den absolutte værdi (modulus) for et komplekst tal -IMAGINARY = IMAGINÆR ## Returnerer den imaginære koefficient for et komplekst tal -IMARGUMENT = IMAGARGUMENT ## Returnerer argumentet theta, en vinkel udtrykt i radianer -IMCONJUGATE = IMAGKONJUGERE ## Returnerer den komplekse konjugation af et komplekst tal -IMCOS = IMAGCOS ## Returnerer et komplekst tals cosinus -IMDIV = IMAGDIV ## Returnerer kvotienten for to komplekse tal -IMEXP = IMAGEKSP ## Returnerer et komplekst tals eksponentialfunktion -IMLN = IMAGLN ## Returnerer et komplekst tals naturlige logaritme -IMLOG10 = IMAGLOG10 ## Returnerer et komplekst tals sædvanlige logaritme (titalslogaritme) -IMLOG2 = IMAGLOG2 ## Returnerer et komplekst tals sædvanlige logaritme (totalslogaritme) -IMPOWER = IMAGPOTENS ## Returnerer et komplekst tal opløftet i en heltalspotens -IMPRODUCT = IMAGPRODUKT ## Returnerer produktet af komplekse tal -IMREAL = IMAGREELT ## Returnerer den reelle koefficient for et komplekst tal -IMSIN = IMAGSIN ## Returnerer et komplekst tals sinus -IMSQRT = IMAGKVROD ## Returnerer et komplekst tals kvadratrod -IMSUB = IMAGSUB ## Returnerer forskellen mellem to komplekse tal -IMSUM = IMAGSUM ## Returnerer summen af komplekse tal -OCT2BIN = OKT.TIL.BIN ## Konverterer et oktaltal til et binært tal -OCT2DEC = OKT.TIL.DEC ## Konverterer et oktaltal til et decimaltal -OCT2HEX = OKT.TIL.HEX ## Konverterer et oktaltal til et heksadecimalt tal - - -## -## Financial functions Finansielle funktioner -## -ACCRINT = PÅLØBRENTE ## Returnerer den påløbne rente for et værdipapir med periodiske renteudbetalinger -ACCRINTM = PÅLØBRENTE.UDLØB ## Returnerer den påløbne rente for et værdipapir, hvor renteudbetalingen finder sted ved papirets udløb -AMORDEGRC = AMORDEGRC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode ved hjælp af en afskrivningskoefficient -AMORLINC = AMORLINC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode -COUPDAYBS = KUPONDAGE.SA ## Returnerer antallet af dage fra starten af kuponperioden til afregningsdatoen -COUPDAYS = KUPONDAGE.A ## Returnerer antallet af dage fra begyndelsen af kuponperioden til afregningsdatoen -COUPDAYSNC = KUPONDAGE.ANK ## Returnerer antallet af dage i den kuponperiode, der indeholder afregningsdatoen -COUPNCD = KUPONDAG.NÆSTE ## Returnerer den næste kupondato efter afregningsdatoen -COUPNUM = KUPONBETALINGER ## Returnerer antallet af kuponudbetalinger mellem afregnings- og udløbsdatoen -COUPPCD = KUPONDAG.FORRIGE ## Returnerer den forrige kupondato før afregningsdatoen -CUMIPMT = AKKUM.RENTE ## Returnerer den akkumulerede rente, der betales på et lån mellem to perioder -CUMPRINC = AKKUM.HOVEDSTOL ## Returnerer den akkumulerede nedbringelse af hovedstol mellem to perioder -DB = DB ## Returnerer afskrivningen på et aktiv i en angivet periode ved anvendelse af saldometoden -DDB = DSA ## Returnerer afskrivningsbeløbet for et aktiv over en bestemt periode ved anvendelse af dobbeltsaldometoden eller en anden afskrivningsmetode, som du angiver -DISC = DISKONTO ## Returnerer et værdipapirs diskonto -DOLLARDE = KR.DECIMAL ## Konverterer en kronepris udtrykt som brøk til en kronepris udtrykt som decimaltal -DOLLARFR = KR.BRØK ## Konverterer en kronepris udtrykt som decimaltal til en kronepris udtrykt som brøk -DURATION = VARIGHED ## Returnerer den årlige løbetid for et værdipapir med periodiske renteudbetalinger -EFFECT = EFFEKTIV.RENTE ## Returnerer den årlige effektive rente -FV = FV ## Returnerer fremtidsværdien af en investering -FVSCHEDULE = FVTABEL ## Returnerer den fremtidige værdi af en hovedstol, når der er tilskrevet rente og rentes rente efter forskellige rentesatser -INTRATE = RENTEFOD ## Returnerer renten på et fuldt ud investeret værdipapir -IPMT = R.YDELSE ## Returnerer renten fra en investering for en given periode -IRR = IA ## Returnerer den interne rente for en række pengestrømme -ISPMT = ISPMT ## Beregner den betalte rente i løbet af en bestemt investeringsperiode -MDURATION = MVARIGHED ## Returnerer Macauleys modificerede løbetid for et værdipapir med en formodet pari på kr. 100 -MIRR = MIA ## Returnerer den interne forrentning, hvor positive og negative pengestrømme finansieres til forskellig rente -NOMINAL = NOMINEL ## Returnerer den årlige nominelle rente -NPER = NPER ## Returnerer antallet af perioder for en investering -NPV = NUTIDSVÆRDI ## Returnerer nettonutidsværdien for en investering baseret på en række periodiske pengestrømme og en diskonteringssats -ODDFPRICE = ULIGE.KURS.PÅLYDENDE ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med en ulige (kort eller lang) første periode -ODDFYIELD = ULIGE.FØRSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige første periode -ODDLPRICE = ULIGE.SIDSTE.KURS ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med ulige sidste periode -ODDLYIELD = ULIGE.SIDSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige sidste periode -PMT = YDELSE ## Returnerer renten fra en investering for en given periode -PPMT = H.YDELSE ## Returnerer ydelsen på hovedstolen for en investering i en given periode -PRICE = KURS ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir med periodiske renteudbetalinger -PRICEDISC = KURS.DISKONTO ## Returnerer kursen pr. kr 100 nominel værdi for et diskonteret værdipapir -PRICEMAT = KURS.UDLØB ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir, hvor renten udbetales ved papirets udløb -PV = NV ## Returnerer den nuværende værdi af en investering -RATE = RENTE ## Returnerer renten i hver periode for en annuitet -RECEIVED = MODTAGET.VED.UDLØB ## Returnerer det beløb, der modtages ved udløbet af et fuldt ud investeret værdipapir -SLN = LA ## Returnerer den lineære afskrivning for et aktiv i en enkelt periode -SYD = ÅRSAFSKRIVNING ## Returnerer den årlige afskrivning på et aktiv i en bestemt periode -TBILLEQ = STATSOBLIGATION ## Returnerer det obligationsækvivalente afkast for en statsobligation -TBILLPRICE = STATSOBLIGATION.KURS ## Returnerer kursen pr. kr 100 nominel værdi for en statsobligation -TBILLYIELD = STATSOBLIGATION.AFKAST ## Returnerer en afkastet på en statsobligation -VDB = VSA ## Returnerer afskrivningen på et aktiv i en angivet periode, herunder delperioder, ved brug af dobbeltsaldometoden -XIRR = INTERN.RENTE ## Returnerer den interne rente for en plan over pengestrømme, der ikke behøver at være periodiske -XNPV = NETTO.NUTIDSVÆRDI ## Returnerer nutidsværdien for en plan over pengestrømme, der ikke behøver at være periodiske -YIELD = AFKAST ## Returnerer afkastet for et værdipapir med periodiske renteudbetalinger -YIELDDISC = AFKAST.DISKONTO ## Returnerer det årlige afkast for et diskonteret værdipapir, f.eks. en statsobligation -YIELDMAT = AFKAST.UDLØBSDATO ## Returnerer det årlige afkast for et værdipapir, hvor renten udbetales ved papirets udløb - - -## -## Information functions Informationsfunktioner -## -CELL = CELLE ## Returnerer oplysninger om formatering, placering eller indhold af en celle -ERROR.TYPE = FEJLTYPE ## Returnerer et tal, der svarer til en fejltype -INFO = INFO ## Returnerer oplysninger om det aktuelle operativmiljø -ISBLANK = ER.TOM ## Returnerer SAND, hvis værdien er tom -ISERR = ER.FJL ## Returnerer SAND, hvis værdien er en fejlværdi undtagen #I/T -ISERROR = ER.FEJL ## Returnerer SAND, hvis værdien er en fejlværdi -ISEVEN = ER.LIGE ## Returnerer SAND, hvis tallet er lige -ISLOGICAL = ER.LOGISK ## Returnerer SAND, hvis værdien er en logisk værdi -ISNA = ER.IKKE.TILGÆNGELIG ## Returnerer SAND, hvis værdien er fejlværdien #I/T -ISNONTEXT = ER.IKKE.TEKST ## Returnerer SAND, hvis værdien ikke er tekst -ISNUMBER = ER.TAL ## Returnerer SAND, hvis værdien er et tal -ISODD = ER.ULIGE ## Returnerer SAND, hvis tallet er ulige -ISREF = ER.REFERENCE ## Returnerer SAND, hvis værdien er en reference -ISTEXT = ER.TEKST ## Returnerer SAND, hvis værdien er tekst -N = TAL ## Returnerer en værdi konverteret til et tal -NA = IKKE.TILGÆNGELIG ## Returnerer fejlværdien #I/T -TYPE = VÆRDITYPE ## Returnerer et tal, der angiver datatypen for en værdi - - -## -## Logical functions Logiske funktioner -## -AND = OG ## Returnerer SAND, hvis alle argumenterne er sande -FALSE = FALSK ## Returnerer den logiske værdi FALSK -IF = HVIS ## Angiver en logisk test, der skal udføres -IFERROR = HVIS.FEJL ## Returnerer en værdi, du angiver, hvis en formel evauleres som en fejl. Returnerer i modsat fald resultatet af formlen -NOT = IKKE ## Vender argumentets logik om -OR = ELLER ## Returneret værdien SAND, hvis mindst ét argument er sandt -TRUE = SAND ## Returnerer den logiske værdi SAND - - -## -## Lookup and reference functions Opslags- og referencefunktioner -## -ADDRESS = ADRESSE ## Returnerer en reference som tekst til en enkelt celle i et regneark -AREAS = OMRÅDER ## Returnerer antallet af områder i en reference -CHOOSE = VÆLG ## Vælger en værdi på en liste med værdier -COLUMN = KOLONNE ## Returnerer kolonnenummeret i en reference -COLUMNS = KOLONNER ## Returnerer antallet af kolonner i en reference -HLOOKUP = VOPSLAG ## Søger i den øverste række af en matrix og returnerer værdien af den angivne celle -HYPERLINK = HYPERLINK ## Opretter en genvej kaldet et hyperlink, der åbner et dokument, som er lagret på en netværksserver, på et intranet eller på internettet -INDEX = INDEKS ## Anvender et indeks til at vælge en værdi fra en reference eller en matrix -INDIRECT = INDIREKTE ## Returnerer en reference, der er angivet af en tekstværdi -LOOKUP = SLÅ.OP ## Søger værdier i en vektor eller en matrix -MATCH = SAMMENLIGN ## Søger værdier i en reference eller en matrix -OFFSET = FORSKYDNING ## Returnerer en reference forskudt i forhold til en given reference -ROW = RÆKKE ## Returnerer rækkenummeret for en reference -ROWS = RÆKKER ## Returnerer antallet af rækker i en reference -RTD = RTD ## Henter realtidsdata fra et program, der understøtter COM-automatisering (Automation: En metode til at arbejde med objekter fra et andet program eller udviklingsværktøj. Automation, som tidligere blev kaldt OLE Automation, er en industristandard og en funktion i COM (Component Object Model).) -TRANSPOSE = TRANSPONER ## Returnerer en transponeret matrix -VLOOKUP = LOPSLAG ## Søger i øverste række af en matrix og flytter på tværs af rækken for at returnere en celleværdi - - -## -## Math and trigonometry functions Matematiske og trigonometriske funktioner -## -ABS = ABS ## Returnerer den absolutte værdi af et tal -ACOS = ARCCOS ## Returnerer et tals arcus cosinus -ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus af tal -ASIN = ARCSIN ## Returnerer et tals arcus sinus -ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus for tal -ATAN = ARCTAN ## Returnerer et tals arcus tangens -ATAN2 = ARCTAN2 ## Returnerer de angivne x- og y-koordinaters arcus tangens -ATANH = ARCTANH ## Returnerer et tals inverse hyperbolske tangens -CEILING = AFRUND.LOFT ## Afrunder et tal til nærmeste heltal eller til nærmeste multiplum af betydning -COMBIN = KOMBIN ## Returnerer antallet af kombinationer for et givet antal objekter -COS = COS ## Returnerer et tals cosinus -COSH = COSH ## Returnerer den inverse hyperbolske cosinus af et tal -DEGREES = GRADER ## Konverterer radianer til grader -EVEN = LIGE ## Runder et tal op til nærmeste lige heltal -EXP = EKSP ## Returnerer e opløftet til en potens af et angivet tal -FACT = FAKULTET ## Returnerer et tals fakultet -FACTDOUBLE = DOBBELT.FAKULTET ## Returnerer et tals dobbelte fakultet -FLOOR = AFRUND.GULV ## Runder et tal ned mod nul -GCD = STØRSTE.FÆLLES.DIVISOR ## Returnerer den største fælles divisor -INT = HELTAL ## Nedrunder et tal til det nærmeste heltal -LCM = MINDSTE.FÆLLES.MULTIPLUM ## Returnerer det mindste fælles multiplum -LN = LN ## Returnerer et tals naturlige logaritme -LOG = LOG ## Returnerer logaritmen for et tal på grundlag af et angivet grundtal -LOG10 = LOG10 ## Returnerer titalslogaritmen af et tal -MDETERM = MDETERM ## Returnerer determinanten for en matrix -MINVERSE = MINVERT ## Returnerer den inverse matrix for en matrix -MMULT = MPRODUKT ## Returnerer matrixproduktet af to matrixer -MOD = REST ## Returnerer restværdien fra division -MROUND = MAFRUND ## Returnerer et tal afrundet til det ønskede multiplum -MULTINOMIAL = MULTINOMIAL ## Returnerer et multinomialt talsæt -ODD = ULIGE ## Runder et tal op til nærmeste ulige heltal -PI = PI ## Returnerer værdien af pi -POWER = POTENS ## Returnerer resultatet af et tal opløftet til en potens -PRODUCT = PRODUKT ## Multiplicerer argumenterne -QUOTIENT = KVOTIENT ## Returnerer heltalsdelen ved division -RADIANS = RADIANER ## Konverterer grader til radianer -RAND = SLUMP ## Returnerer et tilfældigt tal mellem 0 og 1 -RANDBETWEEN = SLUMP.MELLEM ## Returnerer et tilfældigt tal mellem de tal, der angives -ROMAN = ROMERTAL ## Konverterer et arabertal til romertal som tekst -ROUND = AFRUND ## Afrunder et tal til et angivet antal decimaler -ROUNDDOWN = RUND.NED ## Runder et tal ned mod nul -ROUNDUP = RUND.OP ## Runder et tal op, væk fra 0 (nul) -SERIESSUM = SERIESUM ## Returnerer summen af en potensserie baseret på en formel -SIGN = FORTEGN ## Returnerer et tals fortegn -SIN = SIN ## Returnerer en given vinkels sinusværdi -SINH = SINH ## Returnerer den hyperbolske sinus af et tal -SQRT = KVROD ## Returnerer en positiv kvadratrod -SQRTPI = KVRODPI ## Returnerer kvadratroden af (tal * pi;) -SUBTOTAL = SUBTOTAL ## Returnerer en subtotal på en liste eller i en database -SUM = SUM ## Lægger argumenterne sammen -SUMIF = SUM.HVIS ## Lægger de celler sammen, der er specificeret af et givet kriterium. -SUMIFS = SUM.HVISER ## Lægger de celler i et område sammen, der opfylder flere kriterier. -SUMPRODUCT = SUMPRODUKT ## Returnerer summen af produkter af ens matrixkomponenter -SUMSQ = SUMKV ## Returnerer summen af argumenternes kvadrater -SUMX2MY2 = SUMX2MY2 ## Returnerer summen af differensen mellem kvadrater af ens værdier i to matrixer -SUMX2PY2 = SUMX2PY2 ## Returnerer summen af summen af kvadrater af tilsvarende værdier i to matrixer -SUMXMY2 = SUMXMY2 ## Returnerer summen af kvadrater af differenser mellem ens værdier i to matrixer -TAN = TAN ## Returnerer et tals tangens -TANH = TANH ## Returnerer et tals hyperbolske tangens -TRUNC = AFKORT ## Afkorter et tal til et heltal - - -## -## Statistical functions Statistiske funktioner -## -AVEDEV = MAD ## Returnerer den gennemsnitlige numeriske afvigelse fra stikprøvens middelværdi -AVERAGE = MIDDEL ## Returnerer middelværdien af argumenterne -AVERAGEA = MIDDELV ## Returnerer middelværdien af argumenterne og medtager tal, tekst og logiske værdier -AVERAGEIF = MIDDEL.HVIS ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder et givet kriterium, i et område -AVERAGEIFS = MIDDEL.HVISER ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder flere kriterier. -BETADIST = BETAFORDELING ## Returnerer den kumulative betafordelingsfunktion -BETAINV = BETAINV ## Returnerer den inverse kumulative fordelingsfunktion for en angivet betafordeling -BINOMDIST = BINOMIALFORDELING ## Returnerer punktsandsynligheden for binomialfordelingen -CHIDIST = CHIFORDELING ## Returnerer fraktilsandsynligheden for en chi2-fordeling -CHIINV = CHIINV ## Returnerer den inverse fraktilsandsynlighed for en chi2-fordeling -CHITEST = CHITEST ## Foretager en test for uafhængighed -CONFIDENCE = KONFIDENSINTERVAL ## Returnerer et konfidensinterval for en population -CORREL = KORRELATION ## Returnerer korrelationskoefficienten mellem to datasæt -COUNT = TÆL ## Tæller antallet af tal på en liste med argumenter -COUNTA = TÆLV ## Tæller antallet af værdier på en liste med argumenter -COUNTBLANK = ANTAL.BLANKE ## Tæller antallet af tomme celler i et område -COUNTIF = TÆLHVIS ## Tæller antallet af celler, som opfylder de givne kriterier, i et område -COUNTIFS = TÆL.HVISER ## Tæller antallet af de celler, som opfylder flere kriterier, i et område -COVAR = KOVARIANS ## Beregner kovariansen mellem to stokastiske variabler -CRITBINOM = KRITBINOM ## Returnerer den mindste værdi for x, for hvilken det gælder, at fordelingsfunktionen er mindre end eller lig med kriterieværdien. -DEVSQ = SAK ## Returnerer summen af de kvadrerede afvigelser fra middelværdien -EXPONDIST = EKSPFORDELING ## Returnerer eksponentialfordelingen -FDIST = FFORDELING ## Returnerer fraktilsandsynligheden for F-fordelingen -FINV = FINV ## Returnerer den inverse fraktilsandsynlighed for F-fordelingen -FISHER = FISHER ## Returnerer Fisher-transformationen -FISHERINV = FISHERINV ## Returnerer den inverse Fisher-transformation -FORECAST = PROGNOSE ## Returnerer en prognoseværdi baseret på lineær tendens -FREQUENCY = FREKVENS ## Returnerer en frekvensfordeling i en søjlevektor -FTEST = FTEST ## Returnerer resultatet af en F-test til sammenligning af varians -GAMMADIST = GAMMAFORDELING ## Returnerer fordelingsfunktionen for gammafordelingen -GAMMAINV = GAMMAINV ## Returnerer den inverse fordelingsfunktion for gammafordelingen -GAMMALN = GAMMALN ## Returnerer den naturlige logaritme til gammafordelingen, G(x) -GEOMEAN = GEOMIDDELVÆRDI ## Returnerer det geometriske gennemsnit -GROWTH = FORØGELSE ## Returnerer værdier langs en eksponentiel tendens -HARMEAN = HARMIDDELVÆRDI ## Returnerer det harmoniske gennemsnit -HYPGEOMDIST = HYPGEOFORDELING ## Returnerer punktsandsynligheden i en hypergeometrisk fordeling -INTERCEPT = SKÆRING ## Returnerer afskæringsværdien på y-aksen i en lineær regression -KURT = TOPSTEJL ## Returnerer kurtosisværdien for en stokastisk variabel -LARGE = STOR ## Returnerer den k'te største værdi i et datasæt -LINEST = LINREGR ## Returnerer parameterestimaterne for en lineær tendens -LOGEST = LOGREGR ## Returnerer parameterestimaterne for en eksponentiel tendens -LOGINV = LOGINV ## Returnerer den inverse fordelingsfunktion for lognormalfordelingen -LOGNORMDIST = LOGNORMFORDELING ## Returnerer fordelingsfunktionen for lognormalfordelingen -MAX = MAKS ## Returnerer den maksimale værdi på en liste med argumenter. -MAXA = MAKSV ## Returnerer den maksimale værdi på en liste med argumenter og medtager tal, tekst og logiske værdier -MEDIAN = MEDIAN ## Returnerer medianen for de angivne tal -MIN = MIN ## Returnerer den mindste værdi på en liste med argumenter. -MINA = MINV ## Returnerer den mindste værdi på en liste med argumenter og medtager tal, tekst og logiske værdier -MODE = HYPPIGST ## Returnerer den hyppigste værdi i et datasæt -NEGBINOMDIST = NEGBINOMFORDELING ## Returnerer den negative binomialfordeling -NORMDIST = NORMFORDELING ## Returnerer fordelingsfunktionen for normalfordelingen -NORMINV = NORMINV ## Returnerer den inverse fordelingsfunktion for normalfordelingen -NORMSDIST = STANDARDNORMFORDELING ## Returnerer fordelingsfunktionen for standardnormalfordelingen -NORMSINV = STANDARDNORMINV ## Returnerer den inverse fordelingsfunktion for standardnormalfordelingen -PEARSON = PEARSON ## Returnerer Pearsons korrelationskoefficient -PERCENTILE = FRAKTIL ## Returnerer den k'te fraktil for datasættet -PERCENTRANK = PROCENTPLADS ## Returnerer den procentuelle rang for en given værdi i et datasæt -PERMUT = PERMUT ## Returnerer antallet af permutationer for et givet sæt objekter -POISSON = POISSON ## Returnerer fordelingsfunktionen for en Poisson-fordeling -PROB = SANDSYNLIGHED ## Returnerer intervalsandsynligheden -QUARTILE = KVARTIL ## Returnerer kvartilen i et givet datasæt -RANK = PLADS ## Returnerer rangen for et tal på en liste med tal -RSQ = FORKLARINGSGRAD ## Returnerer R2-værdien fra en simpel lineær regression -SKEW = SKÆVHED ## Returnerer skævheden for en stokastisk variabel -SLOPE = HÆLDNING ## Returnerer estimatet på hældningen fra en simpel lineær regression -SMALL = MINDSTE ## Returnerer den k'te mindste værdi i datasættet -STANDARDIZE = STANDARDISER ## Returnerer en standardiseret værdi -STDEV = STDAFV ## Estimerer standardafvigelsen på basis af en stikprøve -STDEVA = STDAFVV ## Beregner standardafvigelsen på basis af en prøve og medtager tal, tekst og logiske værdier -STDEVP = STDAFVP ## Beregner standardafvigelsen på basis af en hel population -STDEVPA = STDAFVPV ## Beregner standardafvigelsen på basis af en hel population og medtager tal, tekst og logiske værdier -STEYX = STFYX ## Returnerer standardafvigelsen for de estimerede y-værdier i den simple lineære regression -TDIST = TFORDELING ## Returnerer fordelingsfunktionen for Student's t-fordeling -TINV = TINV ## Returnerer den inverse fordelingsfunktion for Student's t-fordeling -TREND = TENDENS ## Returnerer værdi under antagelse af en lineær tendens -TRIMMEAN = TRIMMIDDELVÆRDI ## Returnerer den trimmede middelværdi for datasættet -TTEST = TTEST ## Returnerer den sandsynlighed, der er forbundet med Student's t-test -VAR = VARIANS ## Beregner variansen på basis af en prøve -VARA = VARIANSV ## Beregner variansen på basis af en prøve og medtager tal, tekst og logiske værdier -VARP = VARIANSP ## Beregner variansen på basis af hele populationen -VARPA = VARIANSPV ## Beregner variansen på basis af hele populationen og medtager tal, tekst og logiske værdier -WEIBULL = WEIBULL ## Returnerer fordelingsfunktionen for Weibull-fordelingen -ZTEST = ZTEST ## Returnerer sandsynlighedsværdien ved en en-sidet z-test - - -## -## Text functions Tekstfunktioner -## -ASC = ASC ## Ændrer engelske tegn i fuld bredde (dobbelt-byte) eller katakana i en tegnstreng til tegn i halv bredde (enkelt-byte) -BAHTTEXT = BAHTTEKST ## Konverterer et tal til tekst ved hjælp af valutaformatet ß (baht) -CHAR = TEGN ## Returnerer det tegn, der svarer til kodenummeret -CLEAN = RENS ## Fjerner alle tegn, der ikke kan udskrives, fra tekst -CODE = KODE ## Returnerer en numerisk kode for det første tegn i en tekststreng -CONCATENATE = SAMMENKÆDNING ## Sammenkæder adskillige tekstelementer til ét tekstelement -DOLLAR = KR ## Konverterer et tal til tekst ved hjælp af valutaformatet kr. (kroner) -EXACT = EKSAKT ## Kontrollerer, om to tekstværdier er identiske -FIND = FIND ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) -FINDB = FINDB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) -FIXED = FAST ## Formaterer et tal som tekst med et fast antal decimaler -JIS = JIS ## Ændrer engelske tegn i halv bredde (enkelt-byte) eller katakana i en tegnstreng til tegn i fuld bredde (dobbelt-byte) -LEFT = VENSTRE ## Returnerer tegnet længst til venstre i en tekstværdi -LEFTB = VENSTREB ## Returnerer tegnet længst til venstre i en tekstværdi -LEN = LÆNGDE ## Returnerer antallet af tegn i en tekststreng -LENB = LÆNGDEB ## Returnerer antallet af tegn i en tekststreng -LOWER = SMÅ.BOGSTAVER ## Konverterer tekst til små bogstaver -MID = MIDT ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition -MIDB = MIDTB ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition -PHONETIC = FONETISK ## Uddrager de fonetiske (furigana) tegn fra en tekststreng -PROPER = STORT.FORBOGSTAV ## Konverterer første bogstav i hvert ord i teksten til stort bogstav -REPLACE = ERSTAT ## Erstatter tegn i tekst -REPLACEB = ERSTATB ## Erstatter tegn i tekst -REPT = GENTAG ## Gentager tekst et givet antal gange -RIGHT = HØJRE ## Returnerer tegnet længste til højre i en tekstværdi -RIGHTB = HØJREB ## Returnerer tegnet længste til højre i en tekstværdi -SEARCH = SØG ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) -SEARCHB = SØGB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) -SUBSTITUTE = UDSKIFT ## Udskifter gammel tekst med ny tekst i en tekststreng -T = T ## Konverterer argumenterne til tekst -TEXT = TEKST ## Formaterer et tal og konverterer det til tekst -TRIM = FJERN.OVERFLØDIGE.BLANKE ## Fjerner mellemrum fra tekst -UPPER = STORE.BOGSTAVER ## Konverterer tekst til store bogstaver -VALUE = VÆRDI ## Konverterer et tekstargument til et tal +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Tilføjelsesprogram- og automatiseringsfunktioner +## +GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data, der er lagret i en pivottabelrapport + + +## +## Cube functions Kubefunktioner +## +CUBEKPIMEMBER = KUBE.KPI.MEDLEM ## Returnerer navn, egenskab og mål for en KPI-indikator og viser navnet og egenskaben i cellen. En KPI-indikator er en målbar størrelse, f.eks. bruttooverskud pr. måned eller personaleudskiftning pr. kvartal, der bruges til at overvåge en organisations præstationer. +CUBEMEMBER = KUBE.MEDLEM ## Returnerer et medlem eller en tupel fra kubehierarkiet. Bruges til at validere, om et medlem eller en tupel findes i kuben. +CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB ## Returnerer værdien af en egenskab for et medlem i kuben. Bruges til at validere, om et medlemsnavn findes i kuben, og returnere den angivne egenskab for medlemmet. +CUBERANKEDMEMBER = KUBEMEDLEM.RANG ## Returnerer det n'te eller rangordnede medlem i et sæt. Bruges til at returnere et eller flere elementer i et sæt, f.eks. topsælgere eller de 10 bedste elever. +CUBESET = KUBESÆT ## Definerer et beregnet sæt medlemmer eller tupler ved at sende et sætudtryk til kuben på serveren, som opretter sættet og returnerer det til Microsoft Office Excel. +CUBESETCOUNT = KUBESÆT.TÆL ## Returnerer antallet af elementer i et sæt. +CUBEVALUE = KUBEVÆRDI ## Returnerer en sammenlagt (aggregeret) værdi fra en kube. + + +## +## Database functions Databasefunktioner +## +DAVERAGE = DMIDDEL ## Returnerer gennemsnittet af markerede databaseposter +DCOUNT = DTÆL ## Tæller de celler, der indeholder tal, i en database +DCOUNTA = DTÆLV ## Tæller udfyldte celler i en database +DGET = DHENT ## Uddrager en enkelt post, der opfylder de angivne kriterier, fra en database +DMAX = DMAKS ## Returnerer den største værdi blandt markerede databaseposter +DMIN = DMIN ## Returnerer den mindste værdi blandt markerede databaseposter +DPRODUCT = DPRODUKT ## Ganger værdierne i et bestemt felt med poster, der opfylder kriterierne i en database +DSTDEV = DSTDAFV ## Beregner et skøn over standardafvigelsen baseret på en stikprøve af markerede databaseposter +DSTDEVP = DSTDAFVP ## Beregner standardafvigelsen baseret på hele populationen af markerede databaseposter +DSUM = DSUM ## Sammenlægger de tal i feltkolonnen i databasen, der opfylder kriterierne +DVAR = DVARIANS ## Beregner varians baseret på en stikprøve af markerede databaseposter +DVARP = DVARIANSP ## Beregner varians baseret på hele populationen af markerede databaseposter + + +## +## Date and time functions Dato- og klokkeslætsfunktioner +## +DATE = DATO ## Returnerer serienummeret for en bestemt dato +DATEVALUE = DATOVÆRDI ## Konverterer en dato i form af tekst til et serienummer +DAY = DAG ## Konverterer et serienummer til en dag i måneden +DAYS360 = DAGE360 ## Beregner antallet af dage mellem to datoer på grundlag af et år med 360 dage +EDATE = EDATO ## Returnerer serienummeret for den dato, der ligger det angivne antal måneder før eller efter startdatoen +EOMONTH = SLUT.PÅ.MÅNED ## Returnerer serienummeret på den sidste dag i måneden før eller efter et angivet antal måneder +HOUR = TIME ## Konverterer et serienummer til en time +MINUTE = MINUT ## Konverterer et serienummer til et minut +MONTH = MÅNED ## Konverterer et serienummer til en måned +NETWORKDAYS = ANTAL.ARBEJDSDAGE ## Returnerer antallet af hele arbejdsdage mellem to datoer +NOW = NU ## Returnerer serienummeret for den aktuelle dato eller det aktuelle klokkeslæt +SECOND = SEKUND ## Konverterer et serienummer til et sekund +TIME = KLOKKESLÆT ## Returnerer serienummeret for et bestemt klokkeslæt +TIMEVALUE = TIDSVÆRDI ## Konverterer et klokkeslæt i form af tekst til et serienummer +TODAY = IDAG ## Returnerer serienummeret for dags dato +WEEKDAY = UGEDAG ## Konverterer et serienummer til en ugedag +WEEKNUM = UGE.NR ## Konverterer et serienummer til et tal, der angiver ugenummeret i året +WORKDAY = ARBEJDSDAG ## Returnerer serienummeret for dagen før eller efter det angivne antal arbejdsdage +YEAR = ÅR ## Konverterer et serienummer til et år +YEARFRAC = ÅR.BRØK ## Returnerer årsbrøken, der repræsenterer antallet af hele dage mellem startdato og slutdato + + +## +## Engineering functions Tekniske funktioner +## +BESSELI = BESSELI ## Returnerer den modificerede Bessel-funktion In(x) +BESSELJ = BESSELJ ## Returnerer Bessel-funktionen Jn(x) +BESSELK = BESSELK ## Returnerer den modificerede Bessel-funktion Kn(x) +BESSELY = BESSELY ## Returnerer Bessel-funktionen Yn(x) +BIN2DEC = BIN.TIL.DEC ## Konverterer et binært tal til et decimaltal +BIN2HEX = BIN.TIL.HEX ## Konverterer et binært tal til et heksadecimalt tal +BIN2OCT = BIN.TIL.OKT ## Konverterer et binært tal til et oktaltal. +COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koefficienter til et komplekst tal +CONVERT = KONVERTER ## Konverterer et tal fra én måleenhed til en anden +DEC2BIN = DEC.TIL.BIN ## Konverterer et decimaltal til et binært tal +DEC2HEX = DEC.TIL.HEX ## Konverterer et decimaltal til et heksadecimalt tal +DEC2OCT = DEC.TIL.OKT ## Konverterer et decimaltal til et oktaltal +DELTA = DELTA ## Tester, om to værdier er ens +ERF = FEJLFUNK ## Returner fejlfunktionen +ERFC = FEJLFUNK.KOMP ## Returnerer den komplementære fejlfunktion +GESTEP = GETRIN ## Tester, om et tal er større end en grænseværdi +HEX2BIN = HEX.TIL.BIN ## Konverterer et heksadecimalt tal til et binært tal +HEX2DEC = HEX.TIL.DEC ## Konverterer et decimaltal til et heksadecimalt tal +HEX2OCT = HEX.TIL.OKT ## Konverterer et heksadecimalt tal til et oktaltal +IMABS = IMAGABS ## Returnerer den absolutte værdi (modulus) for et komplekst tal +IMAGINARY = IMAGINÆR ## Returnerer den imaginære koefficient for et komplekst tal +IMARGUMENT = IMAGARGUMENT ## Returnerer argumentet theta, en vinkel udtrykt i radianer +IMCONJUGATE = IMAGKONJUGERE ## Returnerer den komplekse konjugation af et komplekst tal +IMCOS = IMAGCOS ## Returnerer et komplekst tals cosinus +IMDIV = IMAGDIV ## Returnerer kvotienten for to komplekse tal +IMEXP = IMAGEKSP ## Returnerer et komplekst tals eksponentialfunktion +IMLN = IMAGLN ## Returnerer et komplekst tals naturlige logaritme +IMLOG10 = IMAGLOG10 ## Returnerer et komplekst tals sædvanlige logaritme (titalslogaritme) +IMLOG2 = IMAGLOG2 ## Returnerer et komplekst tals sædvanlige logaritme (totalslogaritme) +IMPOWER = IMAGPOTENS ## Returnerer et komplekst tal opløftet i en heltalspotens +IMPRODUCT = IMAGPRODUKT ## Returnerer produktet af komplekse tal +IMREAL = IMAGREELT ## Returnerer den reelle koefficient for et komplekst tal +IMSIN = IMAGSIN ## Returnerer et komplekst tals sinus +IMSQRT = IMAGKVROD ## Returnerer et komplekst tals kvadratrod +IMSUB = IMAGSUB ## Returnerer forskellen mellem to komplekse tal +IMSUM = IMAGSUM ## Returnerer summen af komplekse tal +OCT2BIN = OKT.TIL.BIN ## Konverterer et oktaltal til et binært tal +OCT2DEC = OKT.TIL.DEC ## Konverterer et oktaltal til et decimaltal +OCT2HEX = OKT.TIL.HEX ## Konverterer et oktaltal til et heksadecimalt tal + + +## +## Financial functions Finansielle funktioner +## +ACCRINT = PÅLØBRENTE ## Returnerer den påløbne rente for et værdipapir med periodiske renteudbetalinger +ACCRINTM = PÅLØBRENTE.UDLØB ## Returnerer den påløbne rente for et værdipapir, hvor renteudbetalingen finder sted ved papirets udløb +AMORDEGRC = AMORDEGRC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode ved hjælp af en afskrivningskoefficient +AMORLINC = AMORLINC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode +COUPDAYBS = KUPONDAGE.SA ## Returnerer antallet af dage fra starten af kuponperioden til afregningsdatoen +COUPDAYS = KUPONDAGE.A ## Returnerer antallet af dage fra begyndelsen af kuponperioden til afregningsdatoen +COUPDAYSNC = KUPONDAGE.ANK ## Returnerer antallet af dage i den kuponperiode, der indeholder afregningsdatoen +COUPNCD = KUPONDAG.NÆSTE ## Returnerer den næste kupondato efter afregningsdatoen +COUPNUM = KUPONBETALINGER ## Returnerer antallet af kuponudbetalinger mellem afregnings- og udløbsdatoen +COUPPCD = KUPONDAG.FORRIGE ## Returnerer den forrige kupondato før afregningsdatoen +CUMIPMT = AKKUM.RENTE ## Returnerer den akkumulerede rente, der betales på et lån mellem to perioder +CUMPRINC = AKKUM.HOVEDSTOL ## Returnerer den akkumulerede nedbringelse af hovedstol mellem to perioder +DB = DB ## Returnerer afskrivningen på et aktiv i en angivet periode ved anvendelse af saldometoden +DDB = DSA ## Returnerer afskrivningsbeløbet for et aktiv over en bestemt periode ved anvendelse af dobbeltsaldometoden eller en anden afskrivningsmetode, som du angiver +DISC = DISKONTO ## Returnerer et værdipapirs diskonto +DOLLARDE = KR.DECIMAL ## Konverterer en kronepris udtrykt som brøk til en kronepris udtrykt som decimaltal +DOLLARFR = KR.BRØK ## Konverterer en kronepris udtrykt som decimaltal til en kronepris udtrykt som brøk +DURATION = VARIGHED ## Returnerer den årlige løbetid for et værdipapir med periodiske renteudbetalinger +EFFECT = EFFEKTIV.RENTE ## Returnerer den årlige effektive rente +FV = FV ## Returnerer fremtidsværdien af en investering +FVSCHEDULE = FVTABEL ## Returnerer den fremtidige værdi af en hovedstol, når der er tilskrevet rente og rentes rente efter forskellige rentesatser +INTRATE = RENTEFOD ## Returnerer renten på et fuldt ud investeret værdipapir +IPMT = R.YDELSE ## Returnerer renten fra en investering for en given periode +IRR = IA ## Returnerer den interne rente for en række pengestrømme +ISPMT = ISPMT ## Beregner den betalte rente i løbet af en bestemt investeringsperiode +MDURATION = MVARIGHED ## Returnerer Macauleys modificerede løbetid for et værdipapir med en formodet pari på kr. 100 +MIRR = MIA ## Returnerer den interne forrentning, hvor positive og negative pengestrømme finansieres til forskellig rente +NOMINAL = NOMINEL ## Returnerer den årlige nominelle rente +NPER = NPER ## Returnerer antallet af perioder for en investering +NPV = NUTIDSVÆRDI ## Returnerer nettonutidsværdien for en investering baseret på en række periodiske pengestrømme og en diskonteringssats +ODDFPRICE = ULIGE.KURS.PÅLYDENDE ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med en ulige (kort eller lang) første periode +ODDFYIELD = ULIGE.FØRSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige første periode +ODDLPRICE = ULIGE.SIDSTE.KURS ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med ulige sidste periode +ODDLYIELD = ULIGE.SIDSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige sidste periode +PMT = YDELSE ## Returnerer renten fra en investering for en given periode +PPMT = H.YDELSE ## Returnerer ydelsen på hovedstolen for en investering i en given periode +PRICE = KURS ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir med periodiske renteudbetalinger +PRICEDISC = KURS.DISKONTO ## Returnerer kursen pr. kr 100 nominel værdi for et diskonteret værdipapir +PRICEMAT = KURS.UDLØB ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir, hvor renten udbetales ved papirets udløb +PV = NV ## Returnerer den nuværende værdi af en investering +RATE = RENTE ## Returnerer renten i hver periode for en annuitet +RECEIVED = MODTAGET.VED.UDLØB ## Returnerer det beløb, der modtages ved udløbet af et fuldt ud investeret værdipapir +SLN = LA ## Returnerer den lineære afskrivning for et aktiv i en enkelt periode +SYD = ÅRSAFSKRIVNING ## Returnerer den årlige afskrivning på et aktiv i en bestemt periode +TBILLEQ = STATSOBLIGATION ## Returnerer det obligationsækvivalente afkast for en statsobligation +TBILLPRICE = STATSOBLIGATION.KURS ## Returnerer kursen pr. kr 100 nominel værdi for en statsobligation +TBILLYIELD = STATSOBLIGATION.AFKAST ## Returnerer en afkastet på en statsobligation +VDB = VSA ## Returnerer afskrivningen på et aktiv i en angivet periode, herunder delperioder, ved brug af dobbeltsaldometoden +XIRR = INTERN.RENTE ## Returnerer den interne rente for en plan over pengestrømme, der ikke behøver at være periodiske +XNPV = NETTO.NUTIDSVÆRDI ## Returnerer nutidsværdien for en plan over pengestrømme, der ikke behøver at være periodiske +YIELD = AFKAST ## Returnerer afkastet for et værdipapir med periodiske renteudbetalinger +YIELDDISC = AFKAST.DISKONTO ## Returnerer det årlige afkast for et diskonteret værdipapir, f.eks. en statsobligation +YIELDMAT = AFKAST.UDLØBSDATO ## Returnerer det årlige afkast for et værdipapir, hvor renten udbetales ved papirets udløb + + +## +## Information functions Informationsfunktioner +## +CELL = CELLE ## Returnerer oplysninger om formatering, placering eller indhold af en celle +ERROR.TYPE = FEJLTYPE ## Returnerer et tal, der svarer til en fejltype +INFO = INFO ## Returnerer oplysninger om det aktuelle operativmiljø +ISBLANK = ER.TOM ## Returnerer SAND, hvis værdien er tom +ISERR = ER.FJL ## Returnerer SAND, hvis værdien er en fejlværdi undtagen #I/T +ISERROR = ER.FEJL ## Returnerer SAND, hvis værdien er en fejlværdi +ISEVEN = ER.LIGE ## Returnerer SAND, hvis tallet er lige +ISLOGICAL = ER.LOGISK ## Returnerer SAND, hvis værdien er en logisk værdi +ISNA = ER.IKKE.TILGÆNGELIG ## Returnerer SAND, hvis værdien er fejlværdien #I/T +ISNONTEXT = ER.IKKE.TEKST ## Returnerer SAND, hvis værdien ikke er tekst +ISNUMBER = ER.TAL ## Returnerer SAND, hvis værdien er et tal +ISODD = ER.ULIGE ## Returnerer SAND, hvis tallet er ulige +ISREF = ER.REFERENCE ## Returnerer SAND, hvis værdien er en reference +ISTEXT = ER.TEKST ## Returnerer SAND, hvis værdien er tekst +N = TAL ## Returnerer en værdi konverteret til et tal +NA = IKKE.TILGÆNGELIG ## Returnerer fejlværdien #I/T +TYPE = VÆRDITYPE ## Returnerer et tal, der angiver datatypen for en værdi + + +## +## Logical functions Logiske funktioner +## +AND = OG ## Returnerer SAND, hvis alle argumenterne er sande +FALSE = FALSK ## Returnerer den logiske værdi FALSK +IF = HVIS ## Angiver en logisk test, der skal udføres +IFERROR = HVIS.FEJL ## Returnerer en værdi, du angiver, hvis en formel evauleres som en fejl. Returnerer i modsat fald resultatet af formlen +NOT = IKKE ## Vender argumentets logik om +OR = ELLER ## Returneret værdien SAND, hvis mindst ét argument er sandt +TRUE = SAND ## Returnerer den logiske værdi SAND + + +## +## Lookup and reference functions Opslags- og referencefunktioner +## +ADDRESS = ADRESSE ## Returnerer en reference som tekst til en enkelt celle i et regneark +AREAS = OMRÅDER ## Returnerer antallet af områder i en reference +CHOOSE = VÆLG ## Vælger en værdi på en liste med værdier +COLUMN = KOLONNE ## Returnerer kolonnenummeret i en reference +COLUMNS = KOLONNER ## Returnerer antallet af kolonner i en reference +HLOOKUP = VOPSLAG ## Søger i den øverste række af en matrix og returnerer værdien af den angivne celle +HYPERLINK = HYPERLINK ## Opretter en genvej kaldet et hyperlink, der åbner et dokument, som er lagret på en netværksserver, på et intranet eller på internettet +INDEX = INDEKS ## Anvender et indeks til at vælge en værdi fra en reference eller en matrix +INDIRECT = INDIREKTE ## Returnerer en reference, der er angivet af en tekstværdi +LOOKUP = SLÅ.OP ## Søger værdier i en vektor eller en matrix +MATCH = SAMMENLIGN ## Søger værdier i en reference eller en matrix +OFFSET = FORSKYDNING ## Returnerer en reference forskudt i forhold til en given reference +ROW = RÆKKE ## Returnerer rækkenummeret for en reference +ROWS = RÆKKER ## Returnerer antallet af rækker i en reference +RTD = RTD ## Henter realtidsdata fra et program, der understøtter COM-automatisering (Automation: En metode til at arbejde med objekter fra et andet program eller udviklingsværktøj. Automation, som tidligere blev kaldt OLE Automation, er en industristandard og en funktion i COM (Component Object Model).) +TRANSPOSE = TRANSPONER ## Returnerer en transponeret matrix +VLOOKUP = LOPSLAG ## Søger i øverste række af en matrix og flytter på tværs af rækken for at returnere en celleværdi + + +## +## Math and trigonometry functions Matematiske og trigonometriske funktioner +## +ABS = ABS ## Returnerer den absolutte værdi af et tal +ACOS = ARCCOS ## Returnerer et tals arcus cosinus +ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus af tal +ASIN = ARCSIN ## Returnerer et tals arcus sinus +ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus for tal +ATAN = ARCTAN ## Returnerer et tals arcus tangens +ATAN2 = ARCTAN2 ## Returnerer de angivne x- og y-koordinaters arcus tangens +ATANH = ARCTANH ## Returnerer et tals inverse hyperbolske tangens +CEILING = AFRUND.LOFT ## Afrunder et tal til nærmeste heltal eller til nærmeste multiplum af betydning +COMBIN = KOMBIN ## Returnerer antallet af kombinationer for et givet antal objekter +COS = COS ## Returnerer et tals cosinus +COSH = COSH ## Returnerer den inverse hyperbolske cosinus af et tal +DEGREES = GRADER ## Konverterer radianer til grader +EVEN = LIGE ## Runder et tal op til nærmeste lige heltal +EXP = EKSP ## Returnerer e opløftet til en potens af et angivet tal +FACT = FAKULTET ## Returnerer et tals fakultet +FACTDOUBLE = DOBBELT.FAKULTET ## Returnerer et tals dobbelte fakultet +FLOOR = AFRUND.GULV ## Runder et tal ned mod nul +GCD = STØRSTE.FÆLLES.DIVISOR ## Returnerer den største fælles divisor +INT = HELTAL ## Nedrunder et tal til det nærmeste heltal +LCM = MINDSTE.FÆLLES.MULTIPLUM ## Returnerer det mindste fælles multiplum +LN = LN ## Returnerer et tals naturlige logaritme +LOG = LOG ## Returnerer logaritmen for et tal på grundlag af et angivet grundtal +LOG10 = LOG10 ## Returnerer titalslogaritmen af et tal +MDETERM = MDETERM ## Returnerer determinanten for en matrix +MINVERSE = MINVERT ## Returnerer den inverse matrix for en matrix +MMULT = MPRODUKT ## Returnerer matrixproduktet af to matrixer +MOD = REST ## Returnerer restværdien fra division +MROUND = MAFRUND ## Returnerer et tal afrundet til det ønskede multiplum +MULTINOMIAL = MULTINOMIAL ## Returnerer et multinomialt talsæt +ODD = ULIGE ## Runder et tal op til nærmeste ulige heltal +PI = PI ## Returnerer værdien af pi +POWER = POTENS ## Returnerer resultatet af et tal opløftet til en potens +PRODUCT = PRODUKT ## Multiplicerer argumenterne +QUOTIENT = KVOTIENT ## Returnerer heltalsdelen ved division +RADIANS = RADIANER ## Konverterer grader til radianer +RAND = SLUMP ## Returnerer et tilfældigt tal mellem 0 og 1 +RANDBETWEEN = SLUMP.MELLEM ## Returnerer et tilfældigt tal mellem de tal, der angives +ROMAN = ROMERTAL ## Konverterer et arabertal til romertal som tekst +ROUND = AFRUND ## Afrunder et tal til et angivet antal decimaler +ROUNDDOWN = RUND.NED ## Runder et tal ned mod nul +ROUNDUP = RUND.OP ## Runder et tal op, væk fra 0 (nul) +SERIESSUM = SERIESUM ## Returnerer summen af en potensserie baseret på en formel +SIGN = FORTEGN ## Returnerer et tals fortegn +SIN = SIN ## Returnerer en given vinkels sinusværdi +SINH = SINH ## Returnerer den hyperbolske sinus af et tal +SQRT = KVROD ## Returnerer en positiv kvadratrod +SQRTPI = KVRODPI ## Returnerer kvadratroden af (tal * pi;) +SUBTOTAL = SUBTOTAL ## Returnerer en subtotal på en liste eller i en database +SUM = SUM ## Lægger argumenterne sammen +SUMIF = SUM.HVIS ## Lægger de celler sammen, der er specificeret af et givet kriterium. +SUMIFS = SUM.HVISER ## Lægger de celler i et område sammen, der opfylder flere kriterier. +SUMPRODUCT = SUMPRODUKT ## Returnerer summen af produkter af ens matrixkomponenter +SUMSQ = SUMKV ## Returnerer summen af argumenternes kvadrater +SUMX2MY2 = SUMX2MY2 ## Returnerer summen af differensen mellem kvadrater af ens værdier i to matrixer +SUMX2PY2 = SUMX2PY2 ## Returnerer summen af summen af kvadrater af tilsvarende værdier i to matrixer +SUMXMY2 = SUMXMY2 ## Returnerer summen af kvadrater af differenser mellem ens værdier i to matrixer +TAN = TAN ## Returnerer et tals tangens +TANH = TANH ## Returnerer et tals hyperbolske tangens +TRUNC = AFKORT ## Afkorter et tal til et heltal + + +## +## Statistical functions Statistiske funktioner +## +AVEDEV = MAD ## Returnerer den gennemsnitlige numeriske afvigelse fra stikprøvens middelværdi +AVERAGE = MIDDEL ## Returnerer middelværdien af argumenterne +AVERAGEA = MIDDELV ## Returnerer middelværdien af argumenterne og medtager tal, tekst og logiske værdier +AVERAGEIF = MIDDEL.HVIS ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder et givet kriterium, i et område +AVERAGEIFS = MIDDEL.HVISER ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder flere kriterier. +BETADIST = BETAFORDELING ## Returnerer den kumulative betafordelingsfunktion +BETAINV = BETAINV ## Returnerer den inverse kumulative fordelingsfunktion for en angivet betafordeling +BINOMDIST = BINOMIALFORDELING ## Returnerer punktsandsynligheden for binomialfordelingen +CHIDIST = CHIFORDELING ## Returnerer fraktilsandsynligheden for en chi2-fordeling +CHIINV = CHIINV ## Returnerer den inverse fraktilsandsynlighed for en chi2-fordeling +CHITEST = CHITEST ## Foretager en test for uafhængighed +CONFIDENCE = KONFIDENSINTERVAL ## Returnerer et konfidensinterval for en population +CORREL = KORRELATION ## Returnerer korrelationskoefficienten mellem to datasæt +COUNT = TÆL ## Tæller antallet af tal på en liste med argumenter +COUNTA = TÆLV ## Tæller antallet af værdier på en liste med argumenter +COUNTBLANK = ANTAL.BLANKE ## Tæller antallet af tomme celler i et område +COUNTIF = TÆLHVIS ## Tæller antallet af celler, som opfylder de givne kriterier, i et område +COUNTIFS = TÆL.HVISER ## Tæller antallet af de celler, som opfylder flere kriterier, i et område +COVAR = KOVARIANS ## Beregner kovariansen mellem to stokastiske variabler +CRITBINOM = KRITBINOM ## Returnerer den mindste værdi for x, for hvilken det gælder, at fordelingsfunktionen er mindre end eller lig med kriterieværdien. +DEVSQ = SAK ## Returnerer summen af de kvadrerede afvigelser fra middelværdien +EXPONDIST = EKSPFORDELING ## Returnerer eksponentialfordelingen +FDIST = FFORDELING ## Returnerer fraktilsandsynligheden for F-fordelingen +FINV = FINV ## Returnerer den inverse fraktilsandsynlighed for F-fordelingen +FISHER = FISHER ## Returnerer Fisher-transformationen +FISHERINV = FISHERINV ## Returnerer den inverse Fisher-transformation +FORECAST = PROGNOSE ## Returnerer en prognoseværdi baseret på lineær tendens +FREQUENCY = FREKVENS ## Returnerer en frekvensfordeling i en søjlevektor +FTEST = FTEST ## Returnerer resultatet af en F-test til sammenligning af varians +GAMMADIST = GAMMAFORDELING ## Returnerer fordelingsfunktionen for gammafordelingen +GAMMAINV = GAMMAINV ## Returnerer den inverse fordelingsfunktion for gammafordelingen +GAMMALN = GAMMALN ## Returnerer den naturlige logaritme til gammafordelingen, G(x) +GEOMEAN = GEOMIDDELVÆRDI ## Returnerer det geometriske gennemsnit +GROWTH = FORØGELSE ## Returnerer værdier langs en eksponentiel tendens +HARMEAN = HARMIDDELVÆRDI ## Returnerer det harmoniske gennemsnit +HYPGEOMDIST = HYPGEOFORDELING ## Returnerer punktsandsynligheden i en hypergeometrisk fordeling +INTERCEPT = SKÆRING ## Returnerer afskæringsværdien på y-aksen i en lineær regression +KURT = TOPSTEJL ## Returnerer kurtosisværdien for en stokastisk variabel +LARGE = STOR ## Returnerer den k'te største værdi i et datasæt +LINEST = LINREGR ## Returnerer parameterestimaterne for en lineær tendens +LOGEST = LOGREGR ## Returnerer parameterestimaterne for en eksponentiel tendens +LOGINV = LOGINV ## Returnerer den inverse fordelingsfunktion for lognormalfordelingen +LOGNORMDIST = LOGNORMFORDELING ## Returnerer fordelingsfunktionen for lognormalfordelingen +MAX = MAKS ## Returnerer den maksimale værdi på en liste med argumenter. +MAXA = MAKSV ## Returnerer den maksimale værdi på en liste med argumenter og medtager tal, tekst og logiske værdier +MEDIAN = MEDIAN ## Returnerer medianen for de angivne tal +MIN = MIN ## Returnerer den mindste værdi på en liste med argumenter. +MINA = MINV ## Returnerer den mindste værdi på en liste med argumenter og medtager tal, tekst og logiske værdier +MODE = HYPPIGST ## Returnerer den hyppigste værdi i et datasæt +NEGBINOMDIST = NEGBINOMFORDELING ## Returnerer den negative binomialfordeling +NORMDIST = NORMFORDELING ## Returnerer fordelingsfunktionen for normalfordelingen +NORMINV = NORMINV ## Returnerer den inverse fordelingsfunktion for normalfordelingen +NORMSDIST = STANDARDNORMFORDELING ## Returnerer fordelingsfunktionen for standardnormalfordelingen +NORMSINV = STANDARDNORMINV ## Returnerer den inverse fordelingsfunktion for standardnormalfordelingen +PEARSON = PEARSON ## Returnerer Pearsons korrelationskoefficient +PERCENTILE = FRAKTIL ## Returnerer den k'te fraktil for datasættet +PERCENTRANK = PROCENTPLADS ## Returnerer den procentuelle rang for en given værdi i et datasæt +PERMUT = PERMUT ## Returnerer antallet af permutationer for et givet sæt objekter +POISSON = POISSON ## Returnerer fordelingsfunktionen for en Poisson-fordeling +PROB = SANDSYNLIGHED ## Returnerer intervalsandsynligheden +QUARTILE = KVARTIL ## Returnerer kvartilen i et givet datasæt +RANK = PLADS ## Returnerer rangen for et tal på en liste med tal +RSQ = FORKLARINGSGRAD ## Returnerer R2-værdien fra en simpel lineær regression +SKEW = SKÆVHED ## Returnerer skævheden for en stokastisk variabel +SLOPE = HÆLDNING ## Returnerer estimatet på hældningen fra en simpel lineær regression +SMALL = MINDSTE ## Returnerer den k'te mindste værdi i datasættet +STANDARDIZE = STANDARDISER ## Returnerer en standardiseret værdi +STDEV = STDAFV ## Estimerer standardafvigelsen på basis af en stikprøve +STDEVA = STDAFVV ## Beregner standardafvigelsen på basis af en prøve og medtager tal, tekst og logiske værdier +STDEVP = STDAFVP ## Beregner standardafvigelsen på basis af en hel population +STDEVPA = STDAFVPV ## Beregner standardafvigelsen på basis af en hel population og medtager tal, tekst og logiske værdier +STEYX = STFYX ## Returnerer standardafvigelsen for de estimerede y-værdier i den simple lineære regression +TDIST = TFORDELING ## Returnerer fordelingsfunktionen for Student's t-fordeling +TINV = TINV ## Returnerer den inverse fordelingsfunktion for Student's t-fordeling +TREND = TENDENS ## Returnerer værdi under antagelse af en lineær tendens +TRIMMEAN = TRIMMIDDELVÆRDI ## Returnerer den trimmede middelværdi for datasættet +TTEST = TTEST ## Returnerer den sandsynlighed, der er forbundet med Student's t-test +VAR = VARIANS ## Beregner variansen på basis af en prøve +VARA = VARIANSV ## Beregner variansen på basis af en prøve og medtager tal, tekst og logiske værdier +VARP = VARIANSP ## Beregner variansen på basis af hele populationen +VARPA = VARIANSPV ## Beregner variansen på basis af hele populationen og medtager tal, tekst og logiske værdier +WEIBULL = WEIBULL ## Returnerer fordelingsfunktionen for Weibull-fordelingen +ZTEST = ZTEST ## Returnerer sandsynlighedsværdien ved en en-sidet z-test + + +## +## Text functions Tekstfunktioner +## +ASC = ASC ## Ændrer engelske tegn i fuld bredde (dobbelt-byte) eller katakana i en tegnstreng til tegn i halv bredde (enkelt-byte) +BAHTTEXT = BAHTTEKST ## Konverterer et tal til tekst ved hjælp af valutaformatet ß (baht) +CHAR = TEGN ## Returnerer det tegn, der svarer til kodenummeret +CLEAN = RENS ## Fjerner alle tegn, der ikke kan udskrives, fra tekst +CODE = KODE ## Returnerer en numerisk kode for det første tegn i en tekststreng +CONCATENATE = SAMMENKÆDNING ## Sammenkæder adskillige tekstelementer til ét tekstelement +DOLLAR = KR ## Konverterer et tal til tekst ved hjælp af valutaformatet kr. (kroner) +EXACT = EKSAKT ## Kontrollerer, om to tekstværdier er identiske +FIND = FIND ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) +FINDB = FINDB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) +FIXED = FAST ## Formaterer et tal som tekst med et fast antal decimaler +JIS = JIS ## Ændrer engelske tegn i halv bredde (enkelt-byte) eller katakana i en tegnstreng til tegn i fuld bredde (dobbelt-byte) +LEFT = VENSTRE ## Returnerer tegnet længst til venstre i en tekstværdi +LEFTB = VENSTREB ## Returnerer tegnet længst til venstre i en tekstværdi +LEN = LÆNGDE ## Returnerer antallet af tegn i en tekststreng +LENB = LÆNGDEB ## Returnerer antallet af tegn i en tekststreng +LOWER = SMÅ.BOGSTAVER ## Konverterer tekst til små bogstaver +MID = MIDT ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition +MIDB = MIDTB ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition +PHONETIC = FONETISK ## Uddrager de fonetiske (furigana) tegn fra en tekststreng +PROPER = STORT.FORBOGSTAV ## Konverterer første bogstav i hvert ord i teksten til stort bogstav +REPLACE = ERSTAT ## Erstatter tegn i tekst +REPLACEB = ERSTATB ## Erstatter tegn i tekst +REPT = GENTAG ## Gentager tekst et givet antal gange +RIGHT = HØJRE ## Returnerer tegnet længste til højre i en tekstværdi +RIGHTB = HØJREB ## Returnerer tegnet længste til højre i en tekstværdi +SEARCH = SØG ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) +SEARCHB = SØGB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) +SUBSTITUTE = UDSKIFT ## Udskifter gammel tekst med ny tekst i en tekststreng +T = T ## Konverterer argumenterne til tekst +TEXT = TEKST ## Formaterer et tal og konverterer det til tekst +TRIM = FJERN.OVERFLØDIGE.BLANKE ## Fjerner mellemrum fra tekst +UPPER = STORE.BOGSTAVER ## Konverterer tekst til store bogstaver +VALUE = VÆRDI ## Konverterer et tekstargument til et tal diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/de/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/de/functions index 3147f9c8be7..ce85641a3c9 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/de/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/de/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Add-In- und Automatisierungsfunktionen -## -GETPIVOTDATA = PIVOTDATENZUORDNEN ## In einem PivotTable-Bericht gespeicherte Daten werden zurückgegeben. - - -## -## Cube functions Cubefunktionen -## -CUBEKPIMEMBER = CUBEKPIELEMENT ## Gibt Name, Eigenschaft und Measure eines Key Performance Indicators (KPI) zurück und zeigt den Namen und die Eigenschaft in der Zelle an. Ein KPI ist ein quantifizierbares Maß, wie z. B. der monatliche Bruttogewinn oder die vierteljährliche Mitarbeiterfluktuation, mit dessen Hilfe das Leistungsverhalten eines Unternehmens überwacht werden kann. -CUBEMEMBER = CUBEELEMENT ## Gibt ein Element oder ein Tuple in einer Cubehierarchie zurück. Wird verwendet, um zu überprüfen, ob das Element oder Tuple im Cube vorhanden ist. -CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT ## Gibt den Wert einer Elementeigenschaft im Cube zurück. Wird verwendet, um zu überprüfen, ob ein Elementname im Cube vorhanden ist, und um die für dieses Element angegebene Eigenschaft zurückzugeben. -CUBERANKEDMEMBER = CUBERANGELEMENT ## Gibt das n-te oder n-rangige Element in einer Menge zurück. Wird verwendet, um mindestens ein Element in einer Menge zurückzugeben, wie z. B. bester Vertriebsmitarbeiter oder 10 beste Kursteilnehmer. -CUBESET = CUBEMENGE ## Definiert eine berechnete Menge Elemente oder Tuples durch Senden eines Mengenausdrucks an den Cube auf dem Server, der die Menge erstellt und an Microsoft Office Excel zurückgibt. -CUBESETCOUNT = CUBEMENGENANZAHL ## Gibt die Anzahl der Elemente in einer Menge zurück. -CUBEVALUE = CUBEWERT ## Gibt einen Aggregatwert aus einem Cube zurück. - - -## -## Database functions Datenbankfunktionen -## -DAVERAGE = DBMITTELWERT ## Gibt den Mittelwert der ausgewählten Datenbankeinträge zurück -DCOUNT = DBANZAHL ## Zählt die Zellen mit Zahlen in einer Datenbank -DCOUNTA = DBANZAHL2 ## Zählt nicht leere Zellen in einer Datenbank -DGET = DBAUSZUG ## Extrahiert aus einer Datenbank einen einzelnen Datensatz, der den angegebenen Kriterien entspricht -DMAX = DBMAX ## Gibt den größten Wert aus ausgewählten Datenbankeinträgen zurück -DMIN = DBMIN ## Gibt den kleinsten Wert aus ausgewählten Datenbankeinträgen zurück -DPRODUCT = DBPRODUKT ## Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen -DSTDEV = DBSTDABW ## Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen -DSTDEVP = DBSTDABWN ## Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge -DSUM = DBSUMME ## Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen -DVAR = DBVARIANZ ## Schätzt die Varianz auf der Grundlage ausgewählter Datenbankeinträge -DVARP = DBVARIANZEN ## Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge - - -## -## Date and time functions Datums- und Zeitfunktionen -## -DATE = DATUM ## Gibt die fortlaufende Zahl eines bestimmten Datums zurück -DATEVALUE = DATWERT ## Wandelt ein Datum in Form von Text in eine fortlaufende Zahl um -DAY = TAG ## Wandelt eine fortlaufende Zahl in den Tag des Monats um -DAYS360 = TAGE360 ## Berechnet die Anzahl der Tage zwischen zwei Datumsangaben ausgehend von einem Jahr, das 360 Tage hat -EDATE = EDATUM ## Gibt die fortlaufende Zahl des Datums zurück, bei dem es sich um die angegebene Anzahl von Monaten vor oder nach dem Anfangstermin handelt -EOMONTH = MONATSENDE ## Gibt die fortlaufende Zahl des letzten Tags des Monats vor oder nach einer festgelegten Anzahl von Monaten zurück -HOUR = STUNDE ## Wandelt eine fortlaufende Zahl in eine Stunde um -MINUTE = MINUTE ## Wandelt eine fortlaufende Zahl in eine Minute um -MONTH = MONAT ## Wandelt eine fortlaufende Zahl in einen Monat um -NETWORKDAYS = NETTOARBEITSTAGE ## Gibt die Anzahl von ganzen Arbeitstagen zwischen zwei Datumswerten zurück -NOW = JETZT ## Gibt die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit zurück -SECOND = SEKUNDE ## Wandelt eine fortlaufende Zahl in eine Sekunde um -TIME = ZEIT ## Gibt die fortlaufende Zahl einer bestimmten Uhrzeit zurück -TIMEVALUE = ZEITWERT ## Wandelt eine Uhrzeit in Form von Text in eine fortlaufende Zahl um -TODAY = HEUTE ## Gibt die fortlaufende Zahl des heutigen Datums zurück -WEEKDAY = WOCHENTAG ## Wandelt eine fortlaufende Zahl in den Wochentag um -WEEKNUM = KALENDERWOCHE ## Wandelt eine fortlaufende Zahl in eine Zahl um, die angibt, in welche Woche eines Jahres das angegebene Datum fällt -WORKDAY = ARBEITSTAG ## Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück -YEAR = JAHR ## Wandelt eine fortlaufende Zahl in ein Jahr um -YEARFRAC = BRTEILJAHRE ## Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück - - -## -## Engineering functions Konstruktionsfunktionen -## -BESSELI = BESSELI ## Gibt die geänderte Besselfunktion In(x) zurück -BESSELJ = BESSELJ ## Gibt die Besselfunktion Jn(x) zurück -BESSELK = BESSELK ## Gibt die geänderte Besselfunktion Kn(x) zurück -BESSELY = BESSELY ## Gibt die Besselfunktion Yn(x) zurück -BIN2DEC = BININDEZ ## Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um -BIN2HEX = BININHEX ## Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um -BIN2OCT = BININOKT ## Wandelt eine binäre Zahl (Dualzahl) in eine oktale Zahl um -COMPLEX = KOMPLEXE ## Wandelt den Real- und Imaginärteil in eine komplexe Zahl um -CONVERT = UMWANDELN ## Wandelt eine Zahl von einem Maßsystem in ein anderes um -DEC2BIN = DEZINBIN ## Wandelt eine dezimale Zahl in eine binäre Zahl (Dualzahl) um -DEC2HEX = DEZINHEX ## Wandelt eine dezimale Zahl in eine hexadezimale Zahl um -DEC2OCT = DEZINOKT ## Wandelt eine dezimale Zahl in eine oktale Zahl um -DELTA = DELTA ## Überprüft, ob zwei Werte gleich sind -ERF = GAUSSFEHLER ## Gibt die Gauss'sche Fehlerfunktion zurück -ERFC = GAUSSFKOMPL ## Gibt das Komplement zur Gauss'schen Fehlerfunktion zurück -GESTEP = GGANZZAHL ## Überprüft, ob eine Zahl größer als ein gegebener Schwellenwert ist -HEX2BIN = HEXINBIN ## Wandelt eine hexadezimale Zahl in eine Binärzahl um -HEX2DEC = HEXINDEZ ## Wandelt eine hexadezimale Zahl in eine dezimale Zahl um -HEX2OCT = HEXINOKT ## Wandelt eine hexadezimale Zahl in eine Oktalzahl um -IMABS = IMABS ## Gibt den Absolutbetrag (Modulo) einer komplexen Zahl zurück -IMAGINARY = IMAGINÄRTEIL ## Gibt den Imaginärteil einer komplexen Zahl zurück -IMARGUMENT = IMARGUMENT ## Gibt das Argument Theta zurück, einen Winkel, der als Bogenmaß ausgedrückt wird -IMCONJUGATE = IMKONJUGIERTE ## Gibt die konjugierte komplexe Zahl zu einer komplexen Zahl zurück -IMCOS = IMCOS ## Gibt den Kosinus einer komplexen Zahl zurück -IMDIV = IMDIV ## Gibt den Quotienten zweier komplexer Zahlen zurück -IMEXP = IMEXP ## Gibt die algebraische Form einer in exponentieller Schreibweise vorliegenden komplexen Zahl zurück -IMLN = IMLN ## Gibt den natürlichen Logarithmus einer komplexen Zahl zurück -IMLOG10 = IMLOG10 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 10 zurück -IMLOG2 = IMLOG2 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 2 zurück -IMPOWER = IMAPOTENZ ## Potenziert eine komplexe Zahl mit einer ganzen Zahl -IMPRODUCT = IMPRODUKT ## Gibt das Produkt von komplexen Zahlen zurück -IMREAL = IMREALTEIL ## Gibt den Realteil einer komplexen Zahl zurück -IMSIN = IMSIN ## Gibt den Sinus einer komplexen Zahl zurück -IMSQRT = IMWURZEL ## Gibt die Quadratwurzel einer komplexen Zahl zurück -IMSUB = IMSUB ## Gibt die Differenz zwischen zwei komplexen Zahlen zurück -IMSUM = IMSUMME ## Gibt die Summe von komplexen Zahlen zurück -OCT2BIN = OKTINBIN ## Wandelt eine oktale Zahl in eine binäre Zahl (Dualzahl) um -OCT2DEC = OKTINDEZ ## Wandelt eine oktale Zahl in eine dezimale Zahl um -OCT2HEX = OKTINHEX ## Wandelt eine oktale Zahl in eine hexadezimale Zahl um - - -## -## Financial functions Finanzmathematische Funktionen -## -ACCRINT = AUFGELZINS ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück -ACCRINTM = AUFGELZINSF ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden -AMORDEGRC = AMORDEGRK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume mithilfe eines Abschreibungskoeffizienten zurück -AMORLINC = AMORLINEARK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume zurück -COUPDAYBS = ZINSTERMTAGVA ## Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück -COUPDAYS = ZINSTERMTAGE ## Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt -COUPDAYSNC = ZINSTERMTAGNZ ## Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück -COUPNCD = ZINSTERMNZ ## Gibt das Datum des ersten Zinstermins nach dem Abrechnungstermin zurück -COUPNUM = ZINSTERMZAHL ## Gibt die Anzahl der Zinstermine zwischen Abrechnungs- und Fälligkeitsdatum zurück -COUPPCD = ZINSTERMVZ ## Gibt das Datum des letzten Zinstermins vor dem Abrechnungstermin zurück -CUMIPMT = KUMZINSZ ## Berechnet die kumulierten Zinsen, die zwischen zwei Perioden zu zahlen sind -CUMPRINC = KUMKAPITAL ## Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist -DB = GDA2 ## Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück -DDB = GDA ## Gibt die Abschreibung eines Anlageguts für einen angegebenen Zeitraum unter Verwendung der degressiven Doppelraten-Abschreibung oder eines anderen von Ihnen angegebenen Abschreibungsverfahrens zurück -DISC = DISAGIO ## Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück -DOLLARDE = NOTIERUNGDEZ ## Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um -DOLLARFR = NOTIERUNGBRU ## Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um -DURATION = DURATION ## Gibt die jährliche Duration eines Wertpapiers mit periodischen Zinszahlungen zurück -EFFECT = EFFEKTIV ## Gibt die jährliche Effektivverzinsung zurück -FV = ZW ## Gibt den zukünftigen Wert (Endwert) einer Investition zurück -FVSCHEDULE = ZW2 ## Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück -INTRATE = ZINSSATZ ## Gibt den Zinssatz eines voll investierten Wertpapiers zurück -IPMT = ZINSZ ## Gibt die Zinszahlung einer Investition für die angegebene Periode zurück -IRR = IKV ## Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück -ISPMT = ISPMT ## Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen -MDURATION = MDURATION ## Gibt die geänderte Dauer für ein Wertpapier mit einem angenommenen Nennwert von 100 € zurück -MIRR = QIKV ## Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden -NOMINAL = NOMINAL ## Gibt die jährliche Nominalverzinsung zurück -NPER = ZZR ## Gibt die Anzahl der Zahlungsperioden einer Investition zurück -NPV = NBW ## Gibt den Nettobarwert einer Investition auf Basis periodisch anfallender Zahlungen und eines Abzinsungsfaktors zurück -ODDFPRICE = UNREGER.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück -ODDFYIELD = UNREGER.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück -ODDLPRICE = UNREGLE.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück -ODDLYIELD = UNREGLE.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück -PMT = RMZ ## Gibt die periodische Zahlung für eine Annuität zurück -PPMT = KAPZ ## Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück -PRICE = KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt -PRICEDISC = KURSDISAGIO ## Gibt den Kurs pro 100 € Nennwert eines unverzinslichen Wertpapiers zurück -PRICEMAT = KURSFÄLLIG ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt -PV = BW ## Gibt den Barwert einer Investition zurück -RATE = ZINS ## Gibt den Zinssatz pro Zeitraum einer Annuität zurück -RECEIVED = AUSZAHLUNG ## Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück -SLN = LIA ## Gibt die lineare Abschreibung eines Wirtschaftsguts pro Periode zurück -SYD = DIA ## Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück -TBILLEQ = TBILLÄQUIV ## Gibt die Rendite für ein Wertpapier zurück -TBILLPRICE = TBILLKURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück -TBILLYIELD = TBILLRENDITE ## Gibt die Rendite für ein Wertpapier zurück -VDB = VDB ## Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück -XIRR = XINTZINSFUSS ## Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück -XNPV = XKAPITALWERT ## Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück -YIELD = RENDITE ## Gibt die Rendite eines Wertpapiers zurück, das periodisch Zinsen auszahlt -YIELDDISC = RENDITEDIS ## Gibt die jährliche Rendite eines unverzinslichen Wertpapiers zurück -YIELDMAT = RENDITEFÄLL ## Gibt die jährliche Rendite eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt - - -## -## Information functions Informationsfunktionen -## -CELL = ZELLE ## Gibt Informationen zu Formatierung, Position oder Inhalt einer Zelle zurück -ERROR.TYPE = FEHLER.TYP ## Gibt eine Zahl zurück, die einem Fehlertyp entspricht -INFO = INFO ## Gibt Informationen zur aktuellen Betriebssystemumgebung zurück -ISBLANK = ISTLEER ## Gibt WAHR zurück, wenn der Wert leer ist -ISERR = ISTFEHL ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert außer #N/V ist -ISERROR = ISTFEHLER ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert ist -ISEVEN = ISTGERADE ## Gibt WAHR zurück, wenn es sich um eine gerade Zahl handelt -ISLOGICAL = ISTLOG ## Gibt WAHR zurück, wenn der Wert ein Wahrheitswert ist -ISNA = ISTNV ## Gibt WAHR zurück, wenn der Wert der Fehlerwert #N/V ist -ISNONTEXT = ISTKTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das keinen Text enthält -ISNUMBER = ISTZAHL ## Gibt WAHR zurück, wenn der Wert eine Zahl ist -ISODD = ISTUNGERADE ## Gibt WAHR zurück, wenn es sich um eine ungerade Zahl handelt -ISREF = ISTBEZUG ## Gibt WAHR zurück, wenn der Wert ein Bezug ist -ISTEXT = ISTTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das Text enthält -N = N ## Gibt den in eine Zahl umgewandelten Wert zurück -NA = NV ## Gibt den Fehlerwert #NV zurück -TYPE = TYP ## Gibt eine Zahl zurück, die den Datentyp des angegebenen Werts anzeigt - - -## -## Logical functions Logische Funktionen -## -AND = UND ## Gibt WAHR zurück, wenn alle zugehörigen Argumente WAHR sind -FALSE = FALSCH ## Gibt den Wahrheitswert FALSCH zurück -IF = WENN ## Gibt einen logischen Test zum Ausführen an -IFERROR = WENNFEHLER ## Gibt einen von Ihnen festgelegten Wert zurück, wenn die Auswertung der Formel zu einem Fehler führt; andernfalls wird das Ergebnis der Formel zurückgegeben -NOT = NICHT ## Kehrt den Wahrheitswert der zugehörigen Argumente um -OR = ODER ## Gibt WAHR zurück, wenn ein Argument WAHR ist -TRUE = WAHR ## Gibt den Wahrheitswert WAHR zurück - - -## -## Lookup and reference functions Nachschlage- und Verweisfunktionen -## -ADDRESS = ADRESSE ## Gibt einen Bezug auf eine einzelne Zelle in einem Tabellenblatt als Text zurück -AREAS = BEREICHE ## Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück -CHOOSE = WAHL ## Wählt einen Wert aus eine Liste mit Werten aus -COLUMN = SPALTE ## Gibt die Spaltennummer eines Bezugs zurück -COLUMNS = SPALTEN ## Gibt die Anzahl der Spalten in einem Bezug zurück -HLOOKUP = HVERWEIS ## Sucht in der obersten Zeile einer Matrix und gibt den Wert der angegebenen Zelle zurück -HYPERLINK = HYPERLINK ## Erstellt eine Verknüpfung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird -INDEX = INDEX ## Verwendet einen Index, um einen Wert aus einem Bezug oder einer Matrix auszuwählen -INDIRECT = INDIREKT ## Gibt einen Bezug zurück, der von einem Textwert angegeben wird -LOOKUP = LOOKUP ## Sucht Werte in einem Vektor oder einer Matrix -MATCH = VERGLEICH ## Sucht Werte in einem Bezug oder einer Matrix -OFFSET = BEREICH.VERSCHIEBEN ## Gibt einen Bezugoffset aus einem gegebenen Bezug zurück -ROW = ZEILE ## Gibt die Zeilennummer eines Bezugs zurück -ROWS = ZEILEN ## Gibt die Anzahl der Zeilen in einem Bezug zurück -RTD = RTD ## Ruft Echtzeitdaten von einem Programm ab, das die COM-Automatisierung (Automatisierung: Ein Verfahren, bei dem aus einer Anwendung oder einem Entwicklungstool heraus mit den Objekten einer anderen Anwendung gearbeitet wird. Die früher als OLE-Automatisierung bezeichnete Automatisierung ist ein Industriestandard und eine Funktion von COM (Component Object Model).) unterstützt -TRANSPOSE = MTRANS ## Gibt die transponierte Matrix einer Matrix zurück -VLOOKUP = SVERWEIS ## Sucht in der ersten Spalte einer Matrix und arbeitet sich durch die Zeile, um den Wert einer Zelle zurückzugeben - - -## -## Math and trigonometry functions Mathematische und trigonometrische Funktionen -## -ABS = ABS ## Gibt den Absolutwert einer Zahl zurück -ACOS = ARCCOS ## Gibt den Arkuskosinus einer Zahl zurück -ACOSH = ARCCOSHYP ## Gibt den umgekehrten hyperbolischen Kosinus einer Zahl zurück -ASIN = ARCSIN ## Gibt den Arkussinus einer Zahl zurück -ASINH = ARCSINHYP ## Gibt den umgekehrten hyperbolischen Sinus einer Zahl zurück -ATAN = ARCTAN ## Gibt den Arkustangens einer Zahl zurück -ATAN2 = ARCTAN2 ## Gibt den Arkustangens einer x- und einer y-Koordinate zurück -ATANH = ARCTANHYP ## Gibt den umgekehrten hyperbolischen Tangens einer Zahl zurück -CEILING = OBERGRENZE ## Rundet eine Zahl auf die nächste ganze Zahl oder das nächste Vielfache von Schritt -COMBIN = KOMBINATIONEN ## Gibt die Anzahl der Kombinationen für eine bestimmte Anzahl von Objekten zurück -COS = COS ## Gibt den Kosinus einer Zahl zurück -COSH = COSHYP ## Gibt den hyperbolischen Kosinus einer Zahl zurück -DEGREES = GRAD ## Wandelt Bogenmaß (Radiant) in Grad um -EVEN = GERADE ## Rundet eine Zahl auf die nächste gerade ganze Zahl auf -EXP = EXP ## Potenziert die Basis e mit der als Argument angegebenen Zahl -FACT = FAKULTÄT ## Gibt die Fakultät einer Zahl zurück -FACTDOUBLE = ZWEIFAKULTÄT ## Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück -FLOOR = UNTERGRENZE ## Rundet die Zahl auf Anzahl_Stellen ab -GCD = GGT ## Gibt den größten gemeinsamen Teiler zurück -INT = GANZZAHL ## Rundet eine Zahl auf die nächstkleinere ganze Zahl ab -LCM = KGV ## Gibt das kleinste gemeinsame Vielfache zurück -LN = LN ## Gibt den natürlichen Logarithmus einer Zahl zurück -LOG = LOG ## Gibt den Logarithmus einer Zahl zu der angegebenen Basis zurück -LOG10 = LOG10 ## Gibt den Logarithmus einer Zahl zur Basis 10 zurück -MDETERM = MDET ## Gibt die Determinante einer Matrix zurück -MINVERSE = MINV ## Gibt die inverse Matrix einer Matrix zurück -MMULT = MMULT ## Gibt das Produkt zweier Matrizen zurück -MOD = REST ## Gibt den Rest einer Division zurück -MROUND = VRUNDEN ## Gibt eine auf das gewünschte Vielfache gerundete Zahl zurück -MULTINOMIAL = POLYNOMIAL ## Gibt den Polynomialkoeffizienten einer Gruppe von Zahlen zurück -ODD = UNGERADE ## Rundet eine Zahl auf die nächste ungerade ganze Zahl auf -PI = PI ## Gibt den Wert Pi zurück -POWER = POTENZ ## Gibt als Ergebnis eine potenzierte Zahl zurück -PRODUCT = PRODUKT ## Multipliziert die zugehörigen Argumente -QUOTIENT = QUOTIENT ## Gibt den ganzzahligen Anteil einer Division zurück -RADIANS = BOGENMASS ## Wandelt Grad in Bogenmaß (Radiant) um -RAND = ZUFALLSZAHL ## Gibt eine Zufallszahl zwischen 0 und 1 zurück -RANDBETWEEN = ZUFALLSBEREICH ## Gibt eine Zufallszahl aus dem festgelegten Bereich zurück -ROMAN = RÖMISCH ## Wandelt eine arabische Zahl in eine römische Zahl als Text um -ROUND = RUNDEN ## Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen -ROUNDDOWN = ABRUNDEN ## Rundet die Zahl auf Anzahl_Stellen ab -ROUNDUP = AUFRUNDEN ## Rundet die Zahl auf Anzahl_Stellen auf -SERIESSUM = POTENZREIHE ## Gibt die Summe von Potenzen (zur Berechnung von Potenzreihen und dichotomen Wahrscheinlichkeiten) zurück -SIGN = VORZEICHEN ## Gibt das Vorzeichen einer Zahl zurück -SIN = SIN ## Gibt den Sinus einer Zahl zurück -SINH = SINHYP ## Gibt den hyperbolischen Sinus einer Zahl zurück -SQRT = WURZEL ## Gibt die Quadratwurzel einer Zahl zurück -SQRTPI = WURZELPI ## Gibt die Wurzel aus der mit Pi (pi) multiplizierten Zahl zurück -SUBTOTAL = TEILERGEBNIS ## Gibt ein Teilergebnis in einer Liste oder Datenbank zurück -SUM = SUMME ## Addiert die zugehörigen Argumente -SUMIF = SUMMEWENN ## Addiert Zahlen, die mit den Suchkriterien übereinstimmen -SUMIFS = SUMMEWENNS ## Die Zellen, die mehrere Kriterien erfüllen, werden in einem Bereich hinzugefügt -SUMPRODUCT = SUMMENPRODUKT ## Gibt die Summe der Produkte zusammengehöriger Matrixkomponenten zurück -SUMSQ = QUADRATESUMME ## Gibt die Summe der quadrierten Argumente zurück -SUMX2MY2 = SUMMEX2MY2 ## Gibt die Summe der Differenzen der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück -SUMX2PY2 = SUMMEX2PY2 ## Gibt die Summe der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück -SUMXMY2 = SUMMEXMY2 ## Gibt die Summe der quadrierten Differenzen für zusammengehörige Komponenten zweier Matrizen zurück -TAN = TAN ## Gibt den Tangens einer Zahl zurück -TANH = TANHYP ## Gibt den hyperbolischen Tangens einer Zahl zurück -TRUNC = KÜRZEN ## Schneidet die Kommastellen einer Zahl ab und gibt als Ergebnis eine ganze Zahl zurück - - -## -## Statistical functions Statistische Funktionen -## -AVEDEV = MITTELABW ## Gibt die durchschnittliche absolute Abweichung einer Reihe von Merkmalsausprägungen und ihrem Mittelwert zurück -AVERAGE = MITTELWERT ## Gibt den Mittelwert der zugehörigen Argumente zurück -AVERAGEA = MITTELWERTA ## Gibt den Mittelwert der zugehörigen Argumente, die Zahlen, Text und Wahrheitswerte enthalten, zurück -AVERAGEIF = MITTELWERTWENN ## Der Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, wird zurückgegeben -AVERAGEIFS = MITTELWERTWENNS ## Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen -BETADIST = BETAVERT ## Gibt die Werte der kumulierten Betaverteilungsfunktion zurück -BETAINV = BETAINV ## Gibt das Quantil der angegebenen Betaverteilung zurück -BINOMDIST = BINOMVERT ## Gibt Wahrscheinlichkeiten einer binomialverteilten Zufallsvariablen zurück -CHIDIST = CHIVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück -CHIINV = CHIINV ## Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück -CHITEST = CHITEST ## Gibt die Teststatistik eines Unabhängigkeitstests zurück -CONFIDENCE = KONFIDENZ ## Ermöglicht die Berechnung des 1-Alpha Konfidenzintervalls für den Erwartungswert einer Zufallsvariablen -CORREL = KORREL ## Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück -COUNT = ANZAHL ## Gibt die Anzahl der Zahlen in der Liste mit Argumenten an -COUNTA = ANZAHL2 ## Gibt die Anzahl der Werte in der Liste mit Argumenten an -COUNTBLANK = ANZAHLLEEREZELLEN ## Gibt die Anzahl der leeren Zellen in einem Bereich an -COUNTIF = ZÄHLENWENN ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit den Suchkriterien übereinstimmen -COUNTIFS = ZÄHLENWENNS ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit mehreren Suchkriterien übereinstimmen -COVAR = KOVAR ## Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen -CRITBINOM = KRITBINOM ## Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind -DEVSQ = SUMQUADABW ## Gibt die Summe der quadrierten Abweichungen der Datenpunkte von ihrem Stichprobenmittelwert zurück -EXPONDIST = EXPONVERT ## Gibt Wahrscheinlichkeiten einer exponential verteilten Zufallsvariablen zurück -FDIST = FVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück -FINV = FINV ## Gibt Quantile der F-Verteilung zurück -FISHER = FISHER ## Gibt die Fisher-Transformation zurück -FISHERINV = FISHERINV ## Gibt die Umkehrung der Fisher-Transformation zurück -FORECAST = PROGNOSE ## Gibt einen Wert zurück, der sich aus einem linearen Trend ergibt -FREQUENCY = HÄUFIGKEIT ## Gibt eine Häufigkeitsverteilung als vertikale Matrix zurück -FTEST = FTEST ## Gibt die Teststatistik eines F-Tests zurück -GAMMADIST = GAMMAVERT ## Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück -GAMMAINV = GAMMAINV ## Gibt Quantile der Gammaverteilung zurück -GAMMALN = GAMMALN ## Gibt den natürlichen Logarithmus der Gammafunktion zurück, Γ(x) -GEOMEAN = GEOMITTEL ## Gibt das geometrische Mittel zurück -GROWTH = VARIATION ## Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben -HARMEAN = HARMITTEL ## Gibt das harmonische Mittel zurück -HYPGEOMDIST = HYPGEOMVERT ## Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück -INTERCEPT = ACHSENABSCHNITT ## Gibt den Schnittpunkt der Regressionsgeraden zurück -KURT = KURT ## Gibt die Kurtosis (Exzess) einer Datengruppe zurück -LARGE = KGRÖSSTE ## Gibt den k-größten Wert einer Datengruppe zurück -LINEST = RGP ## Gibt die Parameter eines linearen Trends zurück -LOGEST = RKP ## Gibt die Parameter eines exponentiellen Trends zurück -LOGINV = LOGINV ## Gibt Quantile der Lognormalverteilung zurück -LOGNORMDIST = LOGNORMVERT ## Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück -MAX = MAX ## Gibt den Maximalwert einer Liste mit Argumenten zurück -MAXA = MAXA ## Gibt den Maximalwert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten -MEDIAN = MEDIAN ## Gibt den Median der angegebenen Zahlen zurück -MIN = MIN ## Gibt den Minimalwert einer Liste mit Argumenten zurück -MINA = MINA ## Gibt den kleinsten Wert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten -MODE = MODALWERT ## Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück -NEGBINOMDIST = NEGBINOMVERT ## Gibt Wahrscheinlichkeiten einer negativen, binominal verteilten Zufallsvariablen zurück -NORMDIST = NORMVERT ## Gibt Wahrscheinlichkeiten einer normal verteilten Zufallsvariablen zurück -NORMINV = NORMINV ## Gibt Quantile der Normalverteilung zurück -NORMSDIST = STANDNORMVERT ## Gibt Werte der Verteilungsfunktion einer standardnormalverteilten Zufallsvariablen zurück -NORMSINV = STANDNORMINV ## Gibt Quantile der Standardnormalverteilung zurück -PEARSON = PEARSON ## Gibt den Pearsonschen Korrelationskoeffizienten zurück -PERCENTILE = QUANTIL ## Gibt das Alpha-Quantil einer Gruppe von Daten zurück -PERCENTRANK = QUANTILSRANG ## Gibt den prozentualen Rang (Alpha) eines Werts in einer Datengruppe zurück -PERMUT = VARIATIONEN ## Gibt die Anzahl der Möglichkeiten zurück, um k Elemente aus einer Menge von n Elementen ohne Zurücklegen zu ziehen -POISSON = POISSON ## Gibt Wahrscheinlichkeiten einer poissonverteilten Zufallsvariablen zurück -PROB = WAHRSCHBEREICH ## Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück -QUARTILE = QUARTILE ## Gibt die Quartile der Datengruppe zurück -RANK = RANG ## Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt -RSQ = BESTIMMTHEITSMASS ## Gibt das Quadrat des Pearsonschen Korrelationskoeffizienten zurück -SKEW = SCHIEFE ## Gibt die Schiefe einer Verteilung zurück -SLOPE = STEIGUNG ## Gibt die Steigung der Regressionsgeraden zurück -SMALL = KKLEINSTE ## Gibt den k-kleinsten Wert einer Datengruppe zurück -STANDARDIZE = STANDARDISIERUNG ## Gibt den standardisierten Wert zurück -STDEV = STABW ## Schätzt die Standardabweichung ausgehend von einer Stichprobe -STDEVA = STABWA ## Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält -STDEVP = STABWN ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit -STDEVPA = STABWNA ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält -STEYX = STFEHLERYX ## Gibt den Standardfehler der geschätzten y-Werte für alle x-Werte der Regression zurück -TDIST = TVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück -TINV = TINV ## Gibt Quantile der t-Verteilung zurück -TREND = TREND ## Gibt Werte zurück, die sich aus einem linearen Trend ergeben -TRIMMEAN = GESTUTZTMITTEL ## Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen -TTEST = TTEST ## Gibt die Teststatistik eines Student'schen t-Tests zurück -VAR = VARIANZ ## Schätzt die Varianz ausgehend von einer Stichprobe -VARA = VARIANZA ## Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält -VARP = VARIANZEN ## Berechnet die Varianz ausgehend von der Grundgesamtheit -VARPA = VARIANZENA ## Berechnet die Varianz ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält -WEIBULL = WEIBULL ## Gibt Wahrscheinlichkeiten einer weibullverteilten Zufallsvariablen zurück -ZTEST = GTEST ## Gibt den einseitigen Wahrscheinlichkeitswert für einen Gausstest (Normalverteilung) zurück - - -## -## Text functions Textfunktionen -## -ASC = ASC ## Konvertiert DB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in SB-Text -BAHTTEXT = BAHTTEXT ## Wandelt eine Zahl in Text im Währungsformat ß (Baht) um -CHAR = ZEICHEN ## Gibt das der Codezahl entsprechende Zeichen zurück -CLEAN = SÄUBERN ## Löscht alle nicht druckbaren Zeichen aus einem Text -CODE = CODE ## Gibt die Codezahl des ersten Zeichens in einem Text zurück -CONCATENATE = VERKETTEN ## Verknüpft mehrere Textelemente zu einem Textelement -DOLLAR = DM ## Wandelt eine Zahl in Text im Währungsformat € (Euro) um -EXACT = IDENTISCH ## Prüft, ob zwei Textwerte identisch sind -FIND = FINDEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) -FINDB = FINDENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) -FIXED = FEST ## Formatiert eine Zahl als Text mit einer festen Anzahl von Dezimalstellen -JIS = JIS ## Konvertiert SB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in DB-Text -LEFT = LINKS ## Gibt die Zeichen ganz links in einem Textwert zurück -LEFTB = LINKSB ## Gibt die Zeichen ganz links in einem Textwert zurück -LEN = LÄNGE ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück -LENB = LÄNGEB ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück -LOWER = KLEIN ## Wandelt Text in Kleinbuchstaben um -MID = TEIL ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück -MIDB = TEILB ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück -PHONETIC = PHONETIC ## Extrahiert die phonetischen (Furigana-)Zeichen aus einer Textzeichenfolge -PROPER = GROSS2 ## Wandelt den ersten Buchstaben aller Wörter eines Textwerts in Großbuchstaben um -REPLACE = ERSETZEN ## Ersetzt Zeichen in Text -REPLACEB = ERSETZENB ## Ersetzt Zeichen in Text -REPT = WIEDERHOLEN ## Wiederholt einen Text so oft wie angegeben -RIGHT = RECHTS ## Gibt die Zeichen ganz rechts in einem Textwert zurück -RIGHTB = RECHTSB ## Gibt die Zeichen ganz rechts in einem Textwert zurück -SEARCH = SUCHEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) -SEARCHB = SUCHENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) -SUBSTITUTE = WECHSELN ## Ersetzt in einer Zeichenfolge neuen Text gegen alten -T = T ## Wandelt die zugehörigen Argumente in Text um -TEXT = TEXT ## Formatiert eine Zahl und wandelt sie in Text um -TRIM = GLÄTTEN ## Entfernt Leerzeichen aus Text -UPPER = GROSS ## Wandelt Text in Großbuchstaben um -VALUE = WERT ## Wandelt ein Textargument in eine Zahl um +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Add-In- und Automatisierungsfunktionen +## +GETPIVOTDATA = PIVOTDATENZUORDNEN ## In einem PivotTable-Bericht gespeicherte Daten werden zurückgegeben. + + +## +## Cube functions Cubefunktionen +## +CUBEKPIMEMBER = CUBEKPIELEMENT ## Gibt Name, Eigenschaft und Measure eines Key Performance Indicators (KPI) zurück und zeigt den Namen und die Eigenschaft in der Zelle an. Ein KPI ist ein quantifizierbares Maß, wie z. B. der monatliche Bruttogewinn oder die vierteljährliche Mitarbeiterfluktuation, mit dessen Hilfe das Leistungsverhalten eines Unternehmens überwacht werden kann. +CUBEMEMBER = CUBEELEMENT ## Gibt ein Element oder ein Tuple in einer Cubehierarchie zurück. Wird verwendet, um zu überprüfen, ob das Element oder Tuple im Cube vorhanden ist. +CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT ## Gibt den Wert einer Elementeigenschaft im Cube zurück. Wird verwendet, um zu überprüfen, ob ein Elementname im Cube vorhanden ist, und um die für dieses Element angegebene Eigenschaft zurückzugeben. +CUBERANKEDMEMBER = CUBERANGELEMENT ## Gibt das n-te oder n-rangige Element in einer Menge zurück. Wird verwendet, um mindestens ein Element in einer Menge zurückzugeben, wie z. B. bester Vertriebsmitarbeiter oder 10 beste Kursteilnehmer. +CUBESET = CUBEMENGE ## Definiert eine berechnete Menge Elemente oder Tuples durch Senden eines Mengenausdrucks an den Cube auf dem Server, der die Menge erstellt und an Microsoft Office Excel zurückgibt. +CUBESETCOUNT = CUBEMENGENANZAHL ## Gibt die Anzahl der Elemente in einer Menge zurück. +CUBEVALUE = CUBEWERT ## Gibt einen Aggregatwert aus einem Cube zurück. + + +## +## Database functions Datenbankfunktionen +## +DAVERAGE = DBMITTELWERT ## Gibt den Mittelwert der ausgewählten Datenbankeinträge zurück +DCOUNT = DBANZAHL ## Zählt die Zellen mit Zahlen in einer Datenbank +DCOUNTA = DBANZAHL2 ## Zählt nicht leere Zellen in einer Datenbank +DGET = DBAUSZUG ## Extrahiert aus einer Datenbank einen einzelnen Datensatz, der den angegebenen Kriterien entspricht +DMAX = DBMAX ## Gibt den größten Wert aus ausgewählten Datenbankeinträgen zurück +DMIN = DBMIN ## Gibt den kleinsten Wert aus ausgewählten Datenbankeinträgen zurück +DPRODUCT = DBPRODUKT ## Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen +DSTDEV = DBSTDABW ## Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen +DSTDEVP = DBSTDABWN ## Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge +DSUM = DBSUMME ## Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen +DVAR = DBVARIANZ ## Schätzt die Varianz auf der Grundlage ausgewählter Datenbankeinträge +DVARP = DBVARIANZEN ## Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge + + +## +## Date and time functions Datums- und Zeitfunktionen +## +DATE = DATUM ## Gibt die fortlaufende Zahl eines bestimmten Datums zurück +DATEVALUE = DATWERT ## Wandelt ein Datum in Form von Text in eine fortlaufende Zahl um +DAY = TAG ## Wandelt eine fortlaufende Zahl in den Tag des Monats um +DAYS360 = TAGE360 ## Berechnet die Anzahl der Tage zwischen zwei Datumsangaben ausgehend von einem Jahr, das 360 Tage hat +EDATE = EDATUM ## Gibt die fortlaufende Zahl des Datums zurück, bei dem es sich um die angegebene Anzahl von Monaten vor oder nach dem Anfangstermin handelt +EOMONTH = MONATSENDE ## Gibt die fortlaufende Zahl des letzten Tags des Monats vor oder nach einer festgelegten Anzahl von Monaten zurück +HOUR = STUNDE ## Wandelt eine fortlaufende Zahl in eine Stunde um +MINUTE = MINUTE ## Wandelt eine fortlaufende Zahl in eine Minute um +MONTH = MONAT ## Wandelt eine fortlaufende Zahl in einen Monat um +NETWORKDAYS = NETTOARBEITSTAGE ## Gibt die Anzahl von ganzen Arbeitstagen zwischen zwei Datumswerten zurück +NOW = JETZT ## Gibt die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit zurück +SECOND = SEKUNDE ## Wandelt eine fortlaufende Zahl in eine Sekunde um +TIME = ZEIT ## Gibt die fortlaufende Zahl einer bestimmten Uhrzeit zurück +TIMEVALUE = ZEITWERT ## Wandelt eine Uhrzeit in Form von Text in eine fortlaufende Zahl um +TODAY = HEUTE ## Gibt die fortlaufende Zahl des heutigen Datums zurück +WEEKDAY = WOCHENTAG ## Wandelt eine fortlaufende Zahl in den Wochentag um +WEEKNUM = KALENDERWOCHE ## Wandelt eine fortlaufende Zahl in eine Zahl um, die angibt, in welche Woche eines Jahres das angegebene Datum fällt +WORKDAY = ARBEITSTAG ## Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück +YEAR = JAHR ## Wandelt eine fortlaufende Zahl in ein Jahr um +YEARFRAC = BRTEILJAHRE ## Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück + + +## +## Engineering functions Konstruktionsfunktionen +## +BESSELI = BESSELI ## Gibt die geänderte Besselfunktion In(x) zurück +BESSELJ = BESSELJ ## Gibt die Besselfunktion Jn(x) zurück +BESSELK = BESSELK ## Gibt die geänderte Besselfunktion Kn(x) zurück +BESSELY = BESSELY ## Gibt die Besselfunktion Yn(x) zurück +BIN2DEC = BININDEZ ## Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um +BIN2HEX = BININHEX ## Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um +BIN2OCT = BININOKT ## Wandelt eine binäre Zahl (Dualzahl) in eine oktale Zahl um +COMPLEX = KOMPLEXE ## Wandelt den Real- und Imaginärteil in eine komplexe Zahl um +CONVERT = UMWANDELN ## Wandelt eine Zahl von einem Maßsystem in ein anderes um +DEC2BIN = DEZINBIN ## Wandelt eine dezimale Zahl in eine binäre Zahl (Dualzahl) um +DEC2HEX = DEZINHEX ## Wandelt eine dezimale Zahl in eine hexadezimale Zahl um +DEC2OCT = DEZINOKT ## Wandelt eine dezimale Zahl in eine oktale Zahl um +DELTA = DELTA ## Überprüft, ob zwei Werte gleich sind +ERF = GAUSSFEHLER ## Gibt die Gauss'sche Fehlerfunktion zurück +ERFC = GAUSSFKOMPL ## Gibt das Komplement zur Gauss'schen Fehlerfunktion zurück +GESTEP = GGANZZAHL ## Überprüft, ob eine Zahl größer als ein gegebener Schwellenwert ist +HEX2BIN = HEXINBIN ## Wandelt eine hexadezimale Zahl in eine Binärzahl um +HEX2DEC = HEXINDEZ ## Wandelt eine hexadezimale Zahl in eine dezimale Zahl um +HEX2OCT = HEXINOKT ## Wandelt eine hexadezimale Zahl in eine Oktalzahl um +IMABS = IMABS ## Gibt den Absolutbetrag (Modulo) einer komplexen Zahl zurück +IMAGINARY = IMAGINÄRTEIL ## Gibt den Imaginärteil einer komplexen Zahl zurück +IMARGUMENT = IMARGUMENT ## Gibt das Argument Theta zurück, einen Winkel, der als Bogenmaß ausgedrückt wird +IMCONJUGATE = IMKONJUGIERTE ## Gibt die konjugierte komplexe Zahl zu einer komplexen Zahl zurück +IMCOS = IMCOS ## Gibt den Kosinus einer komplexen Zahl zurück +IMDIV = IMDIV ## Gibt den Quotienten zweier komplexer Zahlen zurück +IMEXP = IMEXP ## Gibt die algebraische Form einer in exponentieller Schreibweise vorliegenden komplexen Zahl zurück +IMLN = IMLN ## Gibt den natürlichen Logarithmus einer komplexen Zahl zurück +IMLOG10 = IMLOG10 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 10 zurück +IMLOG2 = IMLOG2 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 2 zurück +IMPOWER = IMAPOTENZ ## Potenziert eine komplexe Zahl mit einer ganzen Zahl +IMPRODUCT = IMPRODUKT ## Gibt das Produkt von komplexen Zahlen zurück +IMREAL = IMREALTEIL ## Gibt den Realteil einer komplexen Zahl zurück +IMSIN = IMSIN ## Gibt den Sinus einer komplexen Zahl zurück +IMSQRT = IMWURZEL ## Gibt die Quadratwurzel einer komplexen Zahl zurück +IMSUB = IMSUB ## Gibt die Differenz zwischen zwei komplexen Zahlen zurück +IMSUM = IMSUMME ## Gibt die Summe von komplexen Zahlen zurück +OCT2BIN = OKTINBIN ## Wandelt eine oktale Zahl in eine binäre Zahl (Dualzahl) um +OCT2DEC = OKTINDEZ ## Wandelt eine oktale Zahl in eine dezimale Zahl um +OCT2HEX = OKTINHEX ## Wandelt eine oktale Zahl in eine hexadezimale Zahl um + + +## +## Financial functions Finanzmathematische Funktionen +## +ACCRINT = AUFGELZINS ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück +ACCRINTM = AUFGELZINSF ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden +AMORDEGRC = AMORDEGRK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume mithilfe eines Abschreibungskoeffizienten zurück +AMORLINC = AMORLINEARK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume zurück +COUPDAYBS = ZINSTERMTAGVA ## Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück +COUPDAYS = ZINSTERMTAGE ## Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt +COUPDAYSNC = ZINSTERMTAGNZ ## Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück +COUPNCD = ZINSTERMNZ ## Gibt das Datum des ersten Zinstermins nach dem Abrechnungstermin zurück +COUPNUM = ZINSTERMZAHL ## Gibt die Anzahl der Zinstermine zwischen Abrechnungs- und Fälligkeitsdatum zurück +COUPPCD = ZINSTERMVZ ## Gibt das Datum des letzten Zinstermins vor dem Abrechnungstermin zurück +CUMIPMT = KUMZINSZ ## Berechnet die kumulierten Zinsen, die zwischen zwei Perioden zu zahlen sind +CUMPRINC = KUMKAPITAL ## Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist +DB = GDA2 ## Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück +DDB = GDA ## Gibt die Abschreibung eines Anlageguts für einen angegebenen Zeitraum unter Verwendung der degressiven Doppelraten-Abschreibung oder eines anderen von Ihnen angegebenen Abschreibungsverfahrens zurück +DISC = DISAGIO ## Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück +DOLLARDE = NOTIERUNGDEZ ## Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um +DOLLARFR = NOTIERUNGBRU ## Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um +DURATION = DURATION ## Gibt die jährliche Duration eines Wertpapiers mit periodischen Zinszahlungen zurück +EFFECT = EFFEKTIV ## Gibt die jährliche Effektivverzinsung zurück +FV = ZW ## Gibt den zukünftigen Wert (Endwert) einer Investition zurück +FVSCHEDULE = ZW2 ## Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück +INTRATE = ZINSSATZ ## Gibt den Zinssatz eines voll investierten Wertpapiers zurück +IPMT = ZINSZ ## Gibt die Zinszahlung einer Investition für die angegebene Periode zurück +IRR = IKV ## Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück +ISPMT = ISPMT ## Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen +MDURATION = MDURATION ## Gibt die geänderte Dauer für ein Wertpapier mit einem angenommenen Nennwert von 100 € zurück +MIRR = QIKV ## Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden +NOMINAL = NOMINAL ## Gibt die jährliche Nominalverzinsung zurück +NPER = ZZR ## Gibt die Anzahl der Zahlungsperioden einer Investition zurück +NPV = NBW ## Gibt den Nettobarwert einer Investition auf Basis periodisch anfallender Zahlungen und eines Abzinsungsfaktors zurück +ODDFPRICE = UNREGER.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück +ODDFYIELD = UNREGER.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück +ODDLPRICE = UNREGLE.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück +ODDLYIELD = UNREGLE.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück +PMT = RMZ ## Gibt die periodische Zahlung für eine Annuität zurück +PPMT = KAPZ ## Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück +PRICE = KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt +PRICEDISC = KURSDISAGIO ## Gibt den Kurs pro 100 € Nennwert eines unverzinslichen Wertpapiers zurück +PRICEMAT = KURSFÄLLIG ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt +PV = BW ## Gibt den Barwert einer Investition zurück +RATE = ZINS ## Gibt den Zinssatz pro Zeitraum einer Annuität zurück +RECEIVED = AUSZAHLUNG ## Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück +SLN = LIA ## Gibt die lineare Abschreibung eines Wirtschaftsguts pro Periode zurück +SYD = DIA ## Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück +TBILLEQ = TBILLÄQUIV ## Gibt die Rendite für ein Wertpapier zurück +TBILLPRICE = TBILLKURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück +TBILLYIELD = TBILLRENDITE ## Gibt die Rendite für ein Wertpapier zurück +VDB = VDB ## Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück +XIRR = XINTZINSFUSS ## Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück +XNPV = XKAPITALWERT ## Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück +YIELD = RENDITE ## Gibt die Rendite eines Wertpapiers zurück, das periodisch Zinsen auszahlt +YIELDDISC = RENDITEDIS ## Gibt die jährliche Rendite eines unverzinslichen Wertpapiers zurück +YIELDMAT = RENDITEFÄLL ## Gibt die jährliche Rendite eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt + + +## +## Information functions Informationsfunktionen +## +CELL = ZELLE ## Gibt Informationen zu Formatierung, Position oder Inhalt einer Zelle zurück +ERROR.TYPE = FEHLER.TYP ## Gibt eine Zahl zurück, die einem Fehlertyp entspricht +INFO = INFO ## Gibt Informationen zur aktuellen Betriebssystemumgebung zurück +ISBLANK = ISTLEER ## Gibt WAHR zurück, wenn der Wert leer ist +ISERR = ISTFEHL ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert außer #N/V ist +ISERROR = ISTFEHLER ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert ist +ISEVEN = ISTGERADE ## Gibt WAHR zurück, wenn es sich um eine gerade Zahl handelt +ISLOGICAL = ISTLOG ## Gibt WAHR zurück, wenn der Wert ein Wahrheitswert ist +ISNA = ISTNV ## Gibt WAHR zurück, wenn der Wert der Fehlerwert #N/V ist +ISNONTEXT = ISTKTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das keinen Text enthält +ISNUMBER = ISTZAHL ## Gibt WAHR zurück, wenn der Wert eine Zahl ist +ISODD = ISTUNGERADE ## Gibt WAHR zurück, wenn es sich um eine ungerade Zahl handelt +ISREF = ISTBEZUG ## Gibt WAHR zurück, wenn der Wert ein Bezug ist +ISTEXT = ISTTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das Text enthält +N = N ## Gibt den in eine Zahl umgewandelten Wert zurück +NA = NV ## Gibt den Fehlerwert #NV zurück +TYPE = TYP ## Gibt eine Zahl zurück, die den Datentyp des angegebenen Werts anzeigt + + +## +## Logical functions Logische Funktionen +## +AND = UND ## Gibt WAHR zurück, wenn alle zugehörigen Argumente WAHR sind +FALSE = FALSCH ## Gibt den Wahrheitswert FALSCH zurück +IF = WENN ## Gibt einen logischen Test zum Ausführen an +IFERROR = WENNFEHLER ## Gibt einen von Ihnen festgelegten Wert zurück, wenn die Auswertung der Formel zu einem Fehler führt; andernfalls wird das Ergebnis der Formel zurückgegeben +NOT = NICHT ## Kehrt den Wahrheitswert der zugehörigen Argumente um +OR = ODER ## Gibt WAHR zurück, wenn ein Argument WAHR ist +TRUE = WAHR ## Gibt den Wahrheitswert WAHR zurück + + +## +## Lookup and reference functions Nachschlage- und Verweisfunktionen +## +ADDRESS = ADRESSE ## Gibt einen Bezug auf eine einzelne Zelle in einem Tabellenblatt als Text zurück +AREAS = BEREICHE ## Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück +CHOOSE = WAHL ## Wählt einen Wert aus eine Liste mit Werten aus +COLUMN = SPALTE ## Gibt die Spaltennummer eines Bezugs zurück +COLUMNS = SPALTEN ## Gibt die Anzahl der Spalten in einem Bezug zurück +HLOOKUP = HVERWEIS ## Sucht in der obersten Zeile einer Matrix und gibt den Wert der angegebenen Zelle zurück +HYPERLINK = HYPERLINK ## Erstellt eine Verknüpfung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird +INDEX = INDEX ## Verwendet einen Index, um einen Wert aus einem Bezug oder einer Matrix auszuwählen +INDIRECT = INDIREKT ## Gibt einen Bezug zurück, der von einem Textwert angegeben wird +LOOKUP = LOOKUP ## Sucht Werte in einem Vektor oder einer Matrix +MATCH = VERGLEICH ## Sucht Werte in einem Bezug oder einer Matrix +OFFSET = BEREICH.VERSCHIEBEN ## Gibt einen Bezugoffset aus einem gegebenen Bezug zurück +ROW = ZEILE ## Gibt die Zeilennummer eines Bezugs zurück +ROWS = ZEILEN ## Gibt die Anzahl der Zeilen in einem Bezug zurück +RTD = RTD ## Ruft Echtzeitdaten von einem Programm ab, das die COM-Automatisierung (Automatisierung: Ein Verfahren, bei dem aus einer Anwendung oder einem Entwicklungstool heraus mit den Objekten einer anderen Anwendung gearbeitet wird. Die früher als OLE-Automatisierung bezeichnete Automatisierung ist ein Industriestandard und eine Funktion von COM (Component Object Model).) unterstützt +TRANSPOSE = MTRANS ## Gibt die transponierte Matrix einer Matrix zurück +VLOOKUP = SVERWEIS ## Sucht in der ersten Spalte einer Matrix und arbeitet sich durch die Zeile, um den Wert einer Zelle zurückzugeben + + +## +## Math and trigonometry functions Mathematische und trigonometrische Funktionen +## +ABS = ABS ## Gibt den Absolutwert einer Zahl zurück +ACOS = ARCCOS ## Gibt den Arkuskosinus einer Zahl zurück +ACOSH = ARCCOSHYP ## Gibt den umgekehrten hyperbolischen Kosinus einer Zahl zurück +ASIN = ARCSIN ## Gibt den Arkussinus einer Zahl zurück +ASINH = ARCSINHYP ## Gibt den umgekehrten hyperbolischen Sinus einer Zahl zurück +ATAN = ARCTAN ## Gibt den Arkustangens einer Zahl zurück +ATAN2 = ARCTAN2 ## Gibt den Arkustangens einer x- und einer y-Koordinate zurück +ATANH = ARCTANHYP ## Gibt den umgekehrten hyperbolischen Tangens einer Zahl zurück +CEILING = OBERGRENZE ## Rundet eine Zahl auf die nächste ganze Zahl oder das nächste Vielfache von Schritt +COMBIN = KOMBINATIONEN ## Gibt die Anzahl der Kombinationen für eine bestimmte Anzahl von Objekten zurück +COS = COS ## Gibt den Kosinus einer Zahl zurück +COSH = COSHYP ## Gibt den hyperbolischen Kosinus einer Zahl zurück +DEGREES = GRAD ## Wandelt Bogenmaß (Radiant) in Grad um +EVEN = GERADE ## Rundet eine Zahl auf die nächste gerade ganze Zahl auf +EXP = EXP ## Potenziert die Basis e mit der als Argument angegebenen Zahl +FACT = FAKULTÄT ## Gibt die Fakultät einer Zahl zurück +FACTDOUBLE = ZWEIFAKULTÄT ## Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück +FLOOR = UNTERGRENZE ## Rundet die Zahl auf Anzahl_Stellen ab +GCD = GGT ## Gibt den größten gemeinsamen Teiler zurück +INT = GANZZAHL ## Rundet eine Zahl auf die nächstkleinere ganze Zahl ab +LCM = KGV ## Gibt das kleinste gemeinsame Vielfache zurück +LN = LN ## Gibt den natürlichen Logarithmus einer Zahl zurück +LOG = LOG ## Gibt den Logarithmus einer Zahl zu der angegebenen Basis zurück +LOG10 = LOG10 ## Gibt den Logarithmus einer Zahl zur Basis 10 zurück +MDETERM = MDET ## Gibt die Determinante einer Matrix zurück +MINVERSE = MINV ## Gibt die inverse Matrix einer Matrix zurück +MMULT = MMULT ## Gibt das Produkt zweier Matrizen zurück +MOD = REST ## Gibt den Rest einer Division zurück +MROUND = VRUNDEN ## Gibt eine auf das gewünschte Vielfache gerundete Zahl zurück +MULTINOMIAL = POLYNOMIAL ## Gibt den Polynomialkoeffizienten einer Gruppe von Zahlen zurück +ODD = UNGERADE ## Rundet eine Zahl auf die nächste ungerade ganze Zahl auf +PI = PI ## Gibt den Wert Pi zurück +POWER = POTENZ ## Gibt als Ergebnis eine potenzierte Zahl zurück +PRODUCT = PRODUKT ## Multipliziert die zugehörigen Argumente +QUOTIENT = QUOTIENT ## Gibt den ganzzahligen Anteil einer Division zurück +RADIANS = BOGENMASS ## Wandelt Grad in Bogenmaß (Radiant) um +RAND = ZUFALLSZAHL ## Gibt eine Zufallszahl zwischen 0 und 1 zurück +RANDBETWEEN = ZUFALLSBEREICH ## Gibt eine Zufallszahl aus dem festgelegten Bereich zurück +ROMAN = RÖMISCH ## Wandelt eine arabische Zahl in eine römische Zahl als Text um +ROUND = RUNDEN ## Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen +ROUNDDOWN = ABRUNDEN ## Rundet die Zahl auf Anzahl_Stellen ab +ROUNDUP = AUFRUNDEN ## Rundet die Zahl auf Anzahl_Stellen auf +SERIESSUM = POTENZREIHE ## Gibt die Summe von Potenzen (zur Berechnung von Potenzreihen und dichotomen Wahrscheinlichkeiten) zurück +SIGN = VORZEICHEN ## Gibt das Vorzeichen einer Zahl zurück +SIN = SIN ## Gibt den Sinus einer Zahl zurück +SINH = SINHYP ## Gibt den hyperbolischen Sinus einer Zahl zurück +SQRT = WURZEL ## Gibt die Quadratwurzel einer Zahl zurück +SQRTPI = WURZELPI ## Gibt die Wurzel aus der mit Pi (pi) multiplizierten Zahl zurück +SUBTOTAL = TEILERGEBNIS ## Gibt ein Teilergebnis in einer Liste oder Datenbank zurück +SUM = SUMME ## Addiert die zugehörigen Argumente +SUMIF = SUMMEWENN ## Addiert Zahlen, die mit den Suchkriterien übereinstimmen +SUMIFS = SUMMEWENNS ## Die Zellen, die mehrere Kriterien erfüllen, werden in einem Bereich hinzugefügt +SUMPRODUCT = SUMMENPRODUKT ## Gibt die Summe der Produkte zusammengehöriger Matrixkomponenten zurück +SUMSQ = QUADRATESUMME ## Gibt die Summe der quadrierten Argumente zurück +SUMX2MY2 = SUMMEX2MY2 ## Gibt die Summe der Differenzen der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück +SUMX2PY2 = SUMMEX2PY2 ## Gibt die Summe der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück +SUMXMY2 = SUMMEXMY2 ## Gibt die Summe der quadrierten Differenzen für zusammengehörige Komponenten zweier Matrizen zurück +TAN = TAN ## Gibt den Tangens einer Zahl zurück +TANH = TANHYP ## Gibt den hyperbolischen Tangens einer Zahl zurück +TRUNC = KÜRZEN ## Schneidet die Kommastellen einer Zahl ab und gibt als Ergebnis eine ganze Zahl zurück + + +## +## Statistical functions Statistische Funktionen +## +AVEDEV = MITTELABW ## Gibt die durchschnittliche absolute Abweichung einer Reihe von Merkmalsausprägungen und ihrem Mittelwert zurück +AVERAGE = MITTELWERT ## Gibt den Mittelwert der zugehörigen Argumente zurück +AVERAGEA = MITTELWERTA ## Gibt den Mittelwert der zugehörigen Argumente, die Zahlen, Text und Wahrheitswerte enthalten, zurück +AVERAGEIF = MITTELWERTWENN ## Der Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, wird zurückgegeben +AVERAGEIFS = MITTELWERTWENNS ## Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen +BETADIST = BETAVERT ## Gibt die Werte der kumulierten Betaverteilungsfunktion zurück +BETAINV = BETAINV ## Gibt das Quantil der angegebenen Betaverteilung zurück +BINOMDIST = BINOMVERT ## Gibt Wahrscheinlichkeiten einer binomialverteilten Zufallsvariablen zurück +CHIDIST = CHIVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück +CHIINV = CHIINV ## Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück +CHITEST = CHITEST ## Gibt die Teststatistik eines Unabhängigkeitstests zurück +CONFIDENCE = KONFIDENZ ## Ermöglicht die Berechnung des 1-Alpha Konfidenzintervalls für den Erwartungswert einer Zufallsvariablen +CORREL = KORREL ## Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück +COUNT = ANZAHL ## Gibt die Anzahl der Zahlen in der Liste mit Argumenten an +COUNTA = ANZAHL2 ## Gibt die Anzahl der Werte in der Liste mit Argumenten an +COUNTBLANK = ANZAHLLEEREZELLEN ## Gibt die Anzahl der leeren Zellen in einem Bereich an +COUNTIF = ZÄHLENWENN ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit den Suchkriterien übereinstimmen +COUNTIFS = ZÄHLENWENNS ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit mehreren Suchkriterien übereinstimmen +COVAR = KOVAR ## Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen +CRITBINOM = KRITBINOM ## Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind +DEVSQ = SUMQUADABW ## Gibt die Summe der quadrierten Abweichungen der Datenpunkte von ihrem Stichprobenmittelwert zurück +EXPONDIST = EXPONVERT ## Gibt Wahrscheinlichkeiten einer exponential verteilten Zufallsvariablen zurück +FDIST = FVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück +FINV = FINV ## Gibt Quantile der F-Verteilung zurück +FISHER = FISHER ## Gibt die Fisher-Transformation zurück +FISHERINV = FISHERINV ## Gibt die Umkehrung der Fisher-Transformation zurück +FORECAST = PROGNOSE ## Gibt einen Wert zurück, der sich aus einem linearen Trend ergibt +FREQUENCY = HÄUFIGKEIT ## Gibt eine Häufigkeitsverteilung als vertikale Matrix zurück +FTEST = FTEST ## Gibt die Teststatistik eines F-Tests zurück +GAMMADIST = GAMMAVERT ## Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück +GAMMAINV = GAMMAINV ## Gibt Quantile der Gammaverteilung zurück +GAMMALN = GAMMALN ## Gibt den natürlichen Logarithmus der Gammafunktion zurück, Γ(x) +GEOMEAN = GEOMITTEL ## Gibt das geometrische Mittel zurück +GROWTH = VARIATION ## Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben +HARMEAN = HARMITTEL ## Gibt das harmonische Mittel zurück +HYPGEOMDIST = HYPGEOMVERT ## Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück +INTERCEPT = ACHSENABSCHNITT ## Gibt den Schnittpunkt der Regressionsgeraden zurück +KURT = KURT ## Gibt die Kurtosis (Exzess) einer Datengruppe zurück +LARGE = KGRÖSSTE ## Gibt den k-größten Wert einer Datengruppe zurück +LINEST = RGP ## Gibt die Parameter eines linearen Trends zurück +LOGEST = RKP ## Gibt die Parameter eines exponentiellen Trends zurück +LOGINV = LOGINV ## Gibt Quantile der Lognormalverteilung zurück +LOGNORMDIST = LOGNORMVERT ## Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück +MAX = MAX ## Gibt den Maximalwert einer Liste mit Argumenten zurück +MAXA = MAXA ## Gibt den Maximalwert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten +MEDIAN = MEDIAN ## Gibt den Median der angegebenen Zahlen zurück +MIN = MIN ## Gibt den Minimalwert einer Liste mit Argumenten zurück +MINA = MINA ## Gibt den kleinsten Wert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten +MODE = MODALWERT ## Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück +NEGBINOMDIST = NEGBINOMVERT ## Gibt Wahrscheinlichkeiten einer negativen, binominal verteilten Zufallsvariablen zurück +NORMDIST = NORMVERT ## Gibt Wahrscheinlichkeiten einer normal verteilten Zufallsvariablen zurück +NORMINV = NORMINV ## Gibt Quantile der Normalverteilung zurück +NORMSDIST = STANDNORMVERT ## Gibt Werte der Verteilungsfunktion einer standardnormalverteilten Zufallsvariablen zurück +NORMSINV = STANDNORMINV ## Gibt Quantile der Standardnormalverteilung zurück +PEARSON = PEARSON ## Gibt den Pearsonschen Korrelationskoeffizienten zurück +PERCENTILE = QUANTIL ## Gibt das Alpha-Quantil einer Gruppe von Daten zurück +PERCENTRANK = QUANTILSRANG ## Gibt den prozentualen Rang (Alpha) eines Werts in einer Datengruppe zurück +PERMUT = VARIATIONEN ## Gibt die Anzahl der Möglichkeiten zurück, um k Elemente aus einer Menge von n Elementen ohne Zurücklegen zu ziehen +POISSON = POISSON ## Gibt Wahrscheinlichkeiten einer poissonverteilten Zufallsvariablen zurück +PROB = WAHRSCHBEREICH ## Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück +QUARTILE = QUARTILE ## Gibt die Quartile der Datengruppe zurück +RANK = RANG ## Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt +RSQ = BESTIMMTHEITSMASS ## Gibt das Quadrat des Pearsonschen Korrelationskoeffizienten zurück +SKEW = SCHIEFE ## Gibt die Schiefe einer Verteilung zurück +SLOPE = STEIGUNG ## Gibt die Steigung der Regressionsgeraden zurück +SMALL = KKLEINSTE ## Gibt den k-kleinsten Wert einer Datengruppe zurück +STANDARDIZE = STANDARDISIERUNG ## Gibt den standardisierten Wert zurück +STDEV = STABW ## Schätzt die Standardabweichung ausgehend von einer Stichprobe +STDEVA = STABWA ## Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält +STDEVP = STABWN ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit +STDEVPA = STABWNA ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält +STEYX = STFEHLERYX ## Gibt den Standardfehler der geschätzten y-Werte für alle x-Werte der Regression zurück +TDIST = TVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück +TINV = TINV ## Gibt Quantile der t-Verteilung zurück +TREND = TREND ## Gibt Werte zurück, die sich aus einem linearen Trend ergeben +TRIMMEAN = GESTUTZTMITTEL ## Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen +TTEST = TTEST ## Gibt die Teststatistik eines Student'schen t-Tests zurück +VAR = VARIANZ ## Schätzt die Varianz ausgehend von einer Stichprobe +VARA = VARIANZA ## Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält +VARP = VARIANZEN ## Berechnet die Varianz ausgehend von der Grundgesamtheit +VARPA = VARIANZENA ## Berechnet die Varianz ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält +WEIBULL = WEIBULL ## Gibt Wahrscheinlichkeiten einer weibullverteilten Zufallsvariablen zurück +ZTEST = GTEST ## Gibt den einseitigen Wahrscheinlichkeitswert für einen Gausstest (Normalverteilung) zurück + + +## +## Text functions Textfunktionen +## +ASC = ASC ## Konvertiert DB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in SB-Text +BAHTTEXT = BAHTTEXT ## Wandelt eine Zahl in Text im Währungsformat ß (Baht) um +CHAR = ZEICHEN ## Gibt das der Codezahl entsprechende Zeichen zurück +CLEAN = SÄUBERN ## Löscht alle nicht druckbaren Zeichen aus einem Text +CODE = CODE ## Gibt die Codezahl des ersten Zeichens in einem Text zurück +CONCATENATE = VERKETTEN ## Verknüpft mehrere Textelemente zu einem Textelement +DOLLAR = DM ## Wandelt eine Zahl in Text im Währungsformat € (Euro) um +EXACT = IDENTISCH ## Prüft, ob zwei Textwerte identisch sind +FIND = FINDEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) +FINDB = FINDENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) +FIXED = FEST ## Formatiert eine Zahl als Text mit einer festen Anzahl von Dezimalstellen +JIS = JIS ## Konvertiert SB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in DB-Text +LEFT = LINKS ## Gibt die Zeichen ganz links in einem Textwert zurück +LEFTB = LINKSB ## Gibt die Zeichen ganz links in einem Textwert zurück +LEN = LÄNGE ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück +LENB = LÄNGEB ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück +LOWER = KLEIN ## Wandelt Text in Kleinbuchstaben um +MID = TEIL ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück +MIDB = TEILB ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück +PHONETIC = PHONETIC ## Extrahiert die phonetischen (Furigana-)Zeichen aus einer Textzeichenfolge +PROPER = GROSS2 ## Wandelt den ersten Buchstaben aller Wörter eines Textwerts in Großbuchstaben um +REPLACE = ERSETZEN ## Ersetzt Zeichen in Text +REPLACEB = ERSETZENB ## Ersetzt Zeichen in Text +REPT = WIEDERHOLEN ## Wiederholt einen Text so oft wie angegeben +RIGHT = RECHTS ## Gibt die Zeichen ganz rechts in einem Textwert zurück +RIGHTB = RECHTSB ## Gibt die Zeichen ganz rechts in einem Textwert zurück +SEARCH = SUCHEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) +SEARCHB = SUCHENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) +SUBSTITUTE = WECHSELN ## Ersetzt in einer Zeichenfolge neuen Text gegen alten +T = T ## Wandelt die zugehörigen Argumente in Text um +TEXT = TEXT ## Formatiert eine Zahl und wandelt sie in Text um +TRIM = GLÄTTEN ## Entfernt Leerzeichen aus Text +UPPER = GROSS ## Wandelt Text in Großbuchstaben um +VALUE = WERT ## Wandelt ein Textargument in eine Zahl um diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/es/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/es/functions index 48762695bf8..51ce48b3153 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/es/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/es/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funciones de complementos y automatización -## -GETPIVOTDATA = IMPORTARDATOSDINAMICOS ## Devuelve los datos almacenados en un informe de tabla dinámica. - - -## -## Cube functions Funciones de cubo -## -CUBEKPIMEMBER = MIEMBROKPICUBO ## Devuelve un nombre, propiedad y medida de indicador de rendimiento clave (KPI) y muestra el nombre y la propiedad en la celda. Un KPI es una medida cuantificable, como los beneficios brutos mensuales o la facturación trimestral por empleado, que se usa para supervisar el rendimiento de una organización. -CUBEMEMBER = MIEMBROCUBO ## Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la existencia del miembro o la tupla en el cubo. -CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO ## Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la existencia de un nombre de miembro en el cubo y para devolver la propiedad especificada para este miembro. -CUBERANKEDMEMBER = MIEMBRORANGOCUBO ## Devuelve el miembro n, o clasificado, de un conjunto. Se usa para devolver uno o más elementos de un conjunto, por ejemplo, el representante con mejores ventas o los diez mejores alumnos. -CUBESET = CONJUNTOCUBO ## Define un conjunto calculado de miembros o tuplas mediante el envío de una expresión de conjunto al cubo en el servidor, lo que crea el conjunto y, después, devuelve dicho conjunto a Microsoft Office Excel. -CUBESETCOUNT = RECUENTOCONJUNTOCUBO ## Devuelve el número de elementos de un conjunto. -CUBEVALUE = VALORCUBO ## Devuelve un valor agregado de un cubo. - - -## -## Database functions Funciones de base de datos -## -DAVERAGE = BDPROMEDIO ## Devuelve el promedio de las entradas seleccionadas en la base de datos. -DCOUNT = BDCONTAR ## Cuenta el número de celdas que contienen números en una base de datos. -DCOUNTA = BDCONTARA ## Cuenta el número de celdas no vacías en una base de datos. -DGET = BDEXTRAER ## Extrae de una base de datos un único registro que cumple los criterios especificados. -DMAX = BDMAX ## Devuelve el valor máximo de las entradas seleccionadas de la base de datos. -DMIN = BDMIN ## Devuelve el valor mínimo de las entradas seleccionadas de la base de datos. -DPRODUCT = BDPRODUCTO ## Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados. -DSTDEV = BDDESVEST ## Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos. -DSTDEVP = BDDESVESTP ## Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos. -DSUM = BDSUMA ## Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios. -DVAR = BDVAR ## Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos. -DVARP = BDVARP ## Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos. - - -## -## Date and time functions Funciones de fecha y hora -## -DATE = FECHA ## Devuelve el número de serie correspondiente a una fecha determinada. -DATEVALUE = FECHANUMERO ## Convierte una fecha con formato de texto en un valor de número de serie. -DAY = DIA ## Convierte un número de serie en un valor de día del mes. -DAYS360 = DIAS360 ## Calcula el número de días entre dos fechas a partir de un año de 360 días. -EDATE = FECHA.MES ## Devuelve el número de serie de la fecha equivalente al número indicado de meses anteriores o posteriores a la fecha inicial. -EOMONTH = FIN.MES ## Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un número de meses especificado. -HOUR = HORA ## Convierte un número de serie en un valor de hora. -MINUTE = MINUTO ## Convierte un número de serie en un valor de minuto. -MONTH = MES ## Convierte un número de serie en un valor de mes. -NETWORKDAYS = DIAS.LAB ## Devuelve el número de todos los días laborables existentes entre dos fechas. -NOW = AHORA ## Devuelve el número de serie correspondiente a la fecha y hora actuales. -SECOND = SEGUNDO ## Convierte un número de serie en un valor de segundo. -TIME = HORA ## Devuelve el número de serie correspondiente a una hora determinada. -TIMEVALUE = HORANUMERO ## Convierte una hora con formato de texto en un valor de número de serie. -TODAY = HOY ## Devuelve el número de serie correspondiente al día actual. -WEEKDAY = DIASEM ## Convierte un número de serie en un valor de día de la semana. -WEEKNUM = NUM.DE.SEMANA ## Convierte un número de serie en un número que representa el lugar numérico correspondiente a una semana de un año. -WORKDAY = DIA.LAB ## Devuelve el número de serie de la fecha que tiene lugar antes o después de un número determinado de días laborables. -YEAR = AÑO ## Convierte un número de serie en un valor de año. -YEARFRAC = FRAC.AÑO ## Devuelve la fracción de año que representa el número total de días existentes entre el valor de fecha_inicial y el de fecha_final. - - -## -## Engineering functions Funciones de ingeniería -## -BESSELI = BESSELI ## Devuelve la función Bessel In(x) modificada. -BESSELJ = BESSELJ ## Devuelve la función Bessel Jn(x). -BESSELK = BESSELK ## Devuelve la función Bessel Kn(x) modificada. -BESSELY = BESSELY ## Devuelve la función Bessel Yn(x). -BIN2DEC = BIN.A.DEC ## Convierte un número binario en decimal. -BIN2HEX = BIN.A.HEX ## Convierte un número binario en hexadecimal. -BIN2OCT = BIN.A.OCT ## Convierte un número binario en octal. -COMPLEX = COMPLEJO ## Convierte coeficientes reales e imaginarios en un número complejo. -CONVERT = CONVERTIR ## Convierte un número de un sistema de medida a otro. -DEC2BIN = DEC.A.BIN ## Convierte un número decimal en binario. -DEC2HEX = DEC.A.HEX ## Convierte un número decimal en hexadecimal. -DEC2OCT = DEC.A.OCT ## Convierte un número decimal en octal. -DELTA = DELTA ## Comprueba si dos valores son iguales. -ERF = FUN.ERROR ## Devuelve la función de error. -ERFC = FUN.ERROR.COMPL ## Devuelve la función de error complementario. -GESTEP = MAYOR.O.IGUAL ## Comprueba si un número es mayor que un valor de umbral. -HEX2BIN = HEX.A.BIN ## Convierte un número hexadecimal en binario. -HEX2DEC = HEX.A.DEC ## Convierte un número hexadecimal en decimal. -HEX2OCT = HEX.A.OCT ## Convierte un número hexadecimal en octal. -IMABS = IM.ABS ## Devuelve el valor absoluto (módulo) de un número complejo. -IMAGINARY = IMAGINARIO ## Devuelve el coeficiente imaginario de un número complejo. -IMARGUMENT = IM.ANGULO ## Devuelve el argumento theta, un ángulo expresado en radianes. -IMCONJUGATE = IM.CONJUGADA ## Devuelve la conjugada compleja de un número complejo. -IMCOS = IM.COS ## Devuelve el coseno de un número complejo. -IMDIV = IM.DIV ## Devuelve el cociente de dos números complejos. -IMEXP = IM.EXP ## Devuelve el valor exponencial de un número complejo. -IMLN = IM.LN ## Devuelve el logaritmo natural (neperiano) de un número complejo. -IMLOG10 = IM.LOG10 ## Devuelve el logaritmo en base 10 de un número complejo. -IMLOG2 = IM.LOG2 ## Devuelve el logaritmo en base 2 de un número complejo. -IMPOWER = IM.POT ## Devuelve un número complejo elevado a una potencia entera. -IMPRODUCT = IM.PRODUCT ## Devuelve el producto de números complejos. -IMREAL = IM.REAL ## Devuelve el coeficiente real de un número complejo. -IMSIN = IM.SENO ## Devuelve el seno de un número complejo. -IMSQRT = IM.RAIZ2 ## Devuelve la raíz cuadrada de un número complejo. -IMSUB = IM.SUSTR ## Devuelve la diferencia entre dos números complejos. -IMSUM = IM.SUM ## Devuelve la suma de números complejos. -OCT2BIN = OCT.A.BIN ## Convierte un número octal en binario. -OCT2DEC = OCT.A.DEC ## Convierte un número octal en decimal. -OCT2HEX = OCT.A.HEX ## Convierte un número octal en hexadecimal. - - -## -## Financial functions Funciones financieras -## -ACCRINT = INT.ACUM ## Devuelve el interés acumulado de un valor bursátil con pagos de interés periódicos. -ACCRINTM = INT.ACUM.V ## Devuelve el interés acumulado de un valor bursátil con pagos de interés al vencimiento. -AMORDEGRC = AMORTIZ.PROGRE ## Devuelve la amortización de cada período contable mediante el uso de un coeficiente de amortización. -AMORLINC = AMORTIZ.LIN ## Devuelve la amortización de cada uno de los períodos contables. -COUPDAYBS = CUPON.DIAS.L1 ## Devuelve el número de días desde el principio del período de un cupón hasta la fecha de liquidación. -COUPDAYS = CUPON.DIAS ## Devuelve el número de días del período (entre dos cupones) donde se encuentra la fecha de liquidación. -COUPDAYSNC = CUPON.DIAS.L2 ## Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo cupón. -COUPNCD = CUPON.FECHA.L2 ## Devuelve la fecha del próximo cupón después de la fecha de liquidación. -COUPNUM = CUPON.NUM ## Devuelve el número de pagos de cupón entre la fecha de liquidación y la fecha de vencimiento. -COUPPCD = CUPON.FECHA.L1 ## Devuelve la fecha de cupón anterior a la fecha de liquidación. -CUMIPMT = PAGO.INT.ENTRE ## Devuelve el interés acumulado pagado entre dos períodos. -CUMPRINC = PAGO.PRINC.ENTRE ## Devuelve el capital acumulado pagado de un préstamo entre dos períodos. -DB = DB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización de saldo fijo. -DDB = DDB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización por doble disminución de saldo u otro método que se especifique. -DISC = TASA.DESC ## Devuelve la tasa de descuento de un valor bursátil. -DOLLARDE = MONEDA.DEC ## Convierte una cotización de un valor bursátil expresada en forma fraccionaria en una cotización de un valor bursátil expresada en forma decimal. -DOLLARFR = MONEDA.FRAC ## Convierte una cotización de un valor bursátil expresada en forma decimal en una cotización de un valor bursátil expresada en forma fraccionaria. -DURATION = DURACION ## Devuelve la duración anual de un valor bursátil con pagos de interés periódico. -EFFECT = INT.EFECTIVO ## Devuelve la tasa de interés anual efectiva. -FV = VF ## Devuelve el valor futuro de una inversión. -FVSCHEDULE = VF.PLAN ## Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de interés compuesto. -INTRATE = TASA.INT ## Devuelve la tasa de interés para la inversión total de un valor bursátil. -IPMT = PAGOINT ## Devuelve el pago de intereses de una inversión durante un período determinado. -IRR = TIR ## Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos. -ISPMT = INT.PAGO.DIR ## Calcula el interés pagado durante un período específico de una inversión. -MDURATION = DURACION.MODIF ## Devuelve la duración de Macauley modificada de un valor bursátil con un valor nominal supuesto de 100 $. -MIRR = TIRM ## Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos y negativos a tasas diferentes. -NOMINAL = TASA.NOMINAL ## Devuelve la tasa nominal de interés anual. -NPER = NPER ## Devuelve el número de períodos de una inversión. -NPV = VNA ## Devuelve el valor neto actual de una inversión en función de una serie de flujos periódicos de efectivo y una tasa de descuento. -ODDFPRICE = PRECIO.PER.IRREGULAR.1 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un primer período impar. -ODDFYIELD = RENDTO.PER.IRREGULAR.1 ## Devuelve el rendimiento de un valor bursátil con un primer período impar. -ODDLPRICE = PRECIO.PER.IRREGULAR.2 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un último período impar. -ODDLYIELD = RENDTO.PER.IRREGULAR.2 ## Devuelve el rendimiento de un valor bursátil con un último período impar. -PMT = PAGO ## Devuelve el pago periódico de una anualidad. -PPMT = PAGOPRIN ## Devuelve el pago de capital de una inversión durante un período determinado. -PRICE = PRECIO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una tasa de interés periódico. -PRICEDISC = PRECIO.DESCUENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con descuento. -PRICEMAT = PRECIO.VENCIMIENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga interés a su vencimiento. -PV = VALACT ## Devuelve el valor actual de una inversión. -RATE = TASA ## Devuelve la tasa de interés por período de una anualidad. -RECEIVED = CANTIDAD.RECIBIDA ## Devuelve la cantidad recibida al vencimiento de un valor bursátil completamente invertido. -SLN = SLN ## Devuelve la amortización por método directo de un bien en un período dado. -SYD = SYD ## Devuelve la amortización por suma de dígitos de los años de un bien durante un período especificado. -TBILLEQ = LETRA.DE.TES.EQV.A.BONO ## Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.) -TBILLPRICE = LETRA.DE.TES.PRECIO ## Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de EE.UU.) -TBILLYIELD = LETRA.DE.TES.RENDTO ## Devuelve el rendimiento de una letra del Tesoro (de EE.UU.) -VDB = DVS ## Devuelve la amortización de un bien durante un período específico o parcial a través del método de cálculo del saldo en disminución. -XIRR = TIR.NO.PER ## Devuelve la tasa interna de retorno para un flujo de efectivo que no es necesariamente periódico. -XNPV = VNA.NO.PER ## Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente periódico. -YIELD = RENDTO ## Devuelve el rendimiento de un valor bursátil que paga intereses periódicos. -YIELDDISC = RENDTO.DESC ## Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo, una letra del Tesoro (de EE.UU.) -YIELDMAT = RENDTO.VENCTO ## Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento. - - -## -## Information functions Funciones de información -## -CELL = CELDA ## Devuelve información acerca del formato, la ubicación o el contenido de una celda. -ERROR.TYPE = TIPO.DE.ERROR ## Devuelve un número que corresponde a un tipo de error. -INFO = INFO ## Devuelve información acerca del entorno operativo en uso. -ISBLANK = ESBLANCO ## Devuelve VERDADERO si el valor está en blanco. -ISERR = ESERR ## Devuelve VERDADERO si el valor es cualquier valor de error excepto #N/A. -ISERROR = ESERROR ## Devuelve VERDADERO si el valor es cualquier valor de error. -ISEVEN = ES.PAR ## Devuelve VERDADERO si el número es par. -ISLOGICAL = ESLOGICO ## Devuelve VERDADERO si el valor es un valor lógico. -ISNA = ESNOD ## Devuelve VERDADERO si el valor es el valor de error #N/A. -ISNONTEXT = ESNOTEXTO ## Devuelve VERDADERO si el valor no es texto. -ISNUMBER = ESNUMERO ## Devuelve VERDADERO si el valor es un número. -ISODD = ES.IMPAR ## Devuelve VERDADERO si el número es impar. -ISREF = ESREF ## Devuelve VERDADERO si el valor es una referencia. -ISTEXT = ESTEXTO ## Devuelve VERDADERO si el valor es texto. -N = N ## Devuelve un valor convertido en un número. -NA = ND ## Devuelve el valor de error #N/A. -TYPE = TIPO ## Devuelve un número que indica el tipo de datos de un valor. - - -## -## Logical functions Funciones lógicas -## -AND = Y ## Devuelve VERDADERO si todos sus argumentos son VERDADERO. -FALSE = FALSO ## Devuelve el valor lógico FALSO. -IF = SI ## Especifica una prueba lógica que realizar. -IFERROR = SI.ERROR ## Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario, devuelve el resultado de la fórmula. -NOT = NO ## Invierte el valor lógico del argumento. -OR = O ## Devuelve VERDADERO si cualquier argumento es VERDADERO. -TRUE = VERDADERO ## Devuelve el valor lógico VERDADERO. - - -## -## Lookup and reference functions Funciones de búsqueda y referencia -## -ADDRESS = DIRECCION ## Devuelve una referencia como texto a una sola celda de una hoja de cálculo. -AREAS = AREAS ## Devuelve el número de áreas de una referencia. -CHOOSE = ELEGIR ## Elige un valor de una lista de valores. -COLUMN = COLUMNA ## Devuelve el número de columna de una referencia. -COLUMNS = COLUMNAS ## Devuelve el número de columnas de una referencia. -HLOOKUP = BUSCARH ## Busca en la fila superior de una matriz y devuelve el valor de la celda indicada. -HYPERLINK = HIPERVINCULO ## Crea un acceso directo o un salto que abre un documento almacenado en un servidor de red, en una intranet o en Internet. -INDEX = INDICE ## Usa un índice para elegir un valor de una referencia o matriz. -INDIRECT = INDIRECTO ## Devuelve una referencia indicada por un valor de texto. -LOOKUP = BUSCAR ## Busca valores de un vector o una matriz. -MATCH = COINCIDIR ## Busca valores de una referencia o matriz. -OFFSET = DESREF ## Devuelve un desplazamiento de referencia respecto a una referencia dada. -ROW = FILA ## Devuelve el número de fila de una referencia. -ROWS = FILAS ## Devuelve el número de filas de una referencia. -RTD = RDTR ## Recupera datos en tiempo real desde un programa compatible con la automatización COM (automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o herramienta de entorno. La automatización, antes denominada automatización OLE, es un estándar de la industria y una función del Modelo de objetos componentes (COM).). -TRANSPOSE = TRANSPONER ## Devuelve la transposición de una matriz. -VLOOKUP = BUSCARV ## Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el valor de una celda. - - -## -## Math and trigonometry functions Funciones matemáticas y trigonométricas -## -ABS = ABS ## Devuelve el valor absoluto de un número. -ACOS = ACOS ## Devuelve el arcocoseno de un número. -ACOSH = ACOSH ## Devuelve el coseno hiperbólico inverso de un número. -ASIN = ASENO ## Devuelve el arcoseno de un número. -ASINH = ASENOH ## Devuelve el seno hiperbólico inverso de un número. -ATAN = ATAN ## Devuelve la arcotangente de un número. -ATAN2 = ATAN2 ## Devuelve la arcotangente de las coordenadas "x" e "y". -ATANH = ATANH ## Devuelve la tangente hiperbólica inversa de un número. -CEILING = MULTIPLO.SUPERIOR ## Redondea un número al entero más próximo o al múltiplo significativo más cercano. -COMBIN = COMBINAT ## Devuelve el número de combinaciones para un número determinado de objetos. -COS = COS ## Devuelve el coseno de un número. -COSH = COSH ## Devuelve el coseno hiperbólico de un número. -DEGREES = GRADOS ## Convierte radianes en grados. -EVEN = REDONDEA.PAR ## Redondea un número hasta el entero par más próximo. -EXP = EXP ## Devuelve e elevado a la potencia de un número dado. -FACT = FACT ## Devuelve el factorial de un número. -FACTDOUBLE = FACT.DOBLE ## Devuelve el factorial doble de un número. -FLOOR = MULTIPLO.INFERIOR ## Redondea un número hacia abajo, en dirección hacia cero. -GCD = M.C.D ## Devuelve el máximo común divisor. -INT = ENTERO ## Redondea un número hacia abajo hasta el entero más próximo. -LCM = M.C.M ## Devuelve el mínimo común múltiplo. -LN = LN ## Devuelve el logaritmo natural (neperiano) de un número. -LOG = LOG ## Devuelve el logaritmo de un número en una base especificada. -LOG10 = LOG10 ## Devuelve el logaritmo en base 10 de un número. -MDETERM = MDETERM ## Devuelve la determinante matricial de una matriz. -MINVERSE = MINVERSA ## Devuelve la matriz inversa de una matriz. -MMULT = MMULT ## Devuelve el producto de matriz de dos matrices. -MOD = RESIDUO ## Devuelve el resto de la división. -MROUND = REDOND.MULT ## Devuelve un número redondeado al múltiplo deseado. -MULTINOMIAL = MULTINOMIAL ## Devuelve el polinomio de un conjunto de números. -ODD = REDONDEA.IMPAR ## Redondea un número hacia arriba hasta el entero impar más próximo. -PI = PI ## Devuelve el valor de pi. -POWER = POTENCIA ## Devuelve el resultado de elevar un número a una potencia. -PRODUCT = PRODUCTO ## Multiplica sus argumentos. -QUOTIENT = COCIENTE ## Devuelve la parte entera de una división. -RADIANS = RADIANES ## Convierte grados en radianes. -RAND = ALEATORIO ## Devuelve un número aleatorio entre 0 y 1. -RANDBETWEEN = ALEATORIO.ENTRE ## Devuelve un número aleatorio entre los números que especifique. -ROMAN = NUMERO.ROMANO ## Convierte un número arábigo en número romano, con formato de texto. -ROUND = REDONDEAR ## Redondea un número al número de decimales especificado. -ROUNDDOWN = REDONDEAR.MENOS ## Redondea un número hacia abajo, en dirección hacia cero. -ROUNDUP = REDONDEAR.MAS ## Redondea un número hacia arriba, en dirección contraria a cero. -SERIESSUM = SUMA.SERIES ## Devuelve la suma de una serie de potencias en función de la fórmula. -SIGN = SIGNO ## Devuelve el signo de un número. -SIN = SENO ## Devuelve el seno de un ángulo determinado. -SINH = SENOH ## Devuelve el seno hiperbólico de un número. -SQRT = RAIZ ## Devuelve la raíz cuadrada positiva de un número. -SQRTPI = RAIZ2PI ## Devuelve la raíz cuadrada de un número multiplicado por PI (número * pi). -SUBTOTAL = SUBTOTALES ## Devuelve un subtotal en una lista o base de datos. -SUM = SUMA ## Suma sus argumentos. -SUMIF = SUMAR.SI ## Suma las celdas especificadas que cumplen unos criterios determinados. -SUMIFS = SUMAR.SI.CONJUNTO ## Suma las celdas de un rango que cumplen varios criterios. -SUMPRODUCT = SUMAPRODUCTO ## Devuelve la suma de los productos de los correspondientes componentes de matriz. -SUMSQ = SUMA.CUADRADOS ## Devuelve la suma de los cuadrados de los argumentos. -SUMX2MY2 = SUMAX2MENOSY2 ## Devuelve la suma de la diferencia de los cuadrados de los valores correspondientes de dos matrices. -SUMX2PY2 = SUMAX2MASY2 ## Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos matrices. -SUMXMY2 = SUMAXMENOSY2 ## Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de dos matrices. -TAN = TAN ## Devuelve la tangente de un número. -TANH = TANH ## Devuelve la tangente hiperbólica de un número. -TRUNC = TRUNCAR ## Trunca un número a un entero. - - -## -## Statistical functions Funciones estadísticas -## -AVEDEV = DESVPROM ## Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos. -AVERAGE = PROMEDIO ## Devuelve el promedio de sus argumentos. -AVERAGEA = PROMEDIOA ## Devuelve el promedio de sus argumentos, incluidos números, texto y valores lógicos. -AVERAGEIF = PROMEDIO.SI ## Devuelve el promedio (media aritmética) de todas las celdas de un rango que cumplen unos criterios determinados. -AVERAGEIFS = PROMEDIO.SI.CONJUNTO ## Devuelve el promedio (media aritmética) de todas las celdas que cumplen múltiples criterios. -BETADIST = DISTR.BETA ## Devuelve la función de distribución beta acumulativa. -BETAINV = DISTR.BETA.INV ## Devuelve la función inversa de la función de distribución acumulativa de una distribución beta especificada. -BINOMDIST = DISTR.BINOM ## Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial. -CHIDIST = DISTR.CHI ## Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. -CHIINV = PRUEBA.CHI.INV ## Devuelve la función inversa de la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. -CHITEST = PRUEBA.CHI ## Devuelve la prueba de independencia. -CONFIDENCE = INTERVALO.CONFIANZA ## Devuelve el intervalo de confianza de la media de una población. -CORREL = COEF.DE.CORREL ## Devuelve el coeficiente de correlación entre dos conjuntos de datos. -COUNT = CONTAR ## Cuenta cuántos números hay en la lista de argumentos. -COUNTA = CONTARA ## Cuenta cuántos valores hay en la lista de argumentos. -COUNTBLANK = CONTAR.BLANCO ## Cuenta el número de celdas en blanco de un rango. -COUNTIF = CONTAR.SI ## Cuenta el número de celdas, dentro del rango, que cumplen el criterio especificado. -COUNTIFS = CONTAR.SI.CONJUNTO ## Cuenta el número de celdas, dentro del rango, que cumplen varios criterios. -COVAR = COVAR ## Devuelve la covarianza, que es el promedio de los productos de las desviaciones para cada pareja de puntos de datos. -CRITBINOM = BINOM.CRIT ## Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a un valor de criterio. -DEVSQ = DESVIA2 ## Devuelve la suma de los cuadrados de las desviaciones. -EXPONDIST = DISTR.EXP ## Devuelve la distribución exponencial. -FDIST = DISTR.F ## Devuelve la distribución de probabilidad F. -FINV = DISTR.F.INV ## Devuelve la función inversa de la distribución de probabilidad F. -FISHER = FISHER ## Devuelve la transformación Fisher. -FISHERINV = PRUEBA.FISHER.INV ## Devuelve la función inversa de la transformación Fisher. -FORECAST = PRONOSTICO ## Devuelve un valor en una tendencia lineal. -FREQUENCY = FRECUENCIA ## Devuelve una distribución de frecuencia como una matriz vertical. -FTEST = PRUEBA.F ## Devuelve el resultado de una prueba F. -GAMMADIST = DISTR.GAMMA ## Devuelve la distribución gamma. -GAMMAINV = DISTR.GAMMA.INV ## Devuelve la función inversa de la distribución gamma acumulativa. -GAMMALN = GAMMA.LN ## Devuelve el logaritmo natural de la función gamma, G(x). -GEOMEAN = MEDIA.GEOM ## Devuelve la media geométrica. -GROWTH = CRECIMIENTO ## Devuelve valores en una tendencia exponencial. -HARMEAN = MEDIA.ARMO ## Devuelve la media armónica. -HYPGEOMDIST = DISTR.HIPERGEOM ## Devuelve la distribución hipergeométrica. -INTERCEPT = INTERSECCION.EJE ## Devuelve la intersección de la línea de regresión lineal. -KURT = CURTOSIS ## Devuelve la curtosis de un conjunto de datos. -LARGE = K.ESIMO.MAYOR ## Devuelve el k-ésimo mayor valor de un conjunto de datos. -LINEST = ESTIMACION.LINEAL ## Devuelve los parámetros de una tendencia lineal. -LOGEST = ESTIMACION.LOGARITMICA ## Devuelve los parámetros de una tendencia exponencial. -LOGINV = DISTR.LOG.INV ## Devuelve la función inversa de la distribución logarítmico-normal. -LOGNORMDIST = DISTR.LOG.NORM ## Devuelve la distribución logarítmico-normal acumulativa. -MAX = MAX ## Devuelve el valor máximo de una lista de argumentos. -MAXA = MAXA ## Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y valores lógicos. -MEDIAN = MEDIANA ## Devuelve la mediana de los números dados. -MIN = MIN ## Devuelve el valor mínimo de una lista de argumentos. -MINA = MINA ## Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y valores lógicos. -MODE = MODA ## Devuelve el valor más común de un conjunto de datos. -NEGBINOMDIST = NEGBINOMDIST ## Devuelve la distribución binomial negativa. -NORMDIST = DISTR.NORM ## Devuelve la distribución normal acumulativa. -NORMINV = DISTR.NORM.INV ## Devuelve la función inversa de la distribución normal acumulativa. -NORMSDIST = DISTR.NORM.ESTAND ## Devuelve la distribución normal estándar acumulativa. -NORMSINV = DISTR.NORM.ESTAND.INV ## Devuelve la función inversa de la distribución normal estándar acumulativa. -PEARSON = PEARSON ## Devuelve el coeficiente de momento de correlación de producto Pearson. -PERCENTILE = PERCENTIL ## Devuelve el k-ésimo percentil de los valores de un rango. -PERCENTRANK = RANGO.PERCENTIL ## Devuelve el rango porcentual de un valor de un conjunto de datos. -PERMUT = PERMUTACIONES ## Devuelve el número de permutaciones de un número determinado de objetos. -POISSON = POISSON ## Devuelve la distribución de Poisson. -PROB = PROBABILIDAD ## Devuelve la probabilidad de que los valores de un rango se encuentren entre dos límites. -QUARTILE = CUARTIL ## Devuelve el cuartil de un conjunto de datos. -RANK = JERARQUIA ## Devuelve la jerarquía de un número en una lista de números. -RSQ = COEFICIENTE.R2 ## Devuelve el cuadrado del coeficiente de momento de correlación de producto Pearson. -SKEW = COEFICIENTE.ASIMETRIA ## Devuelve la asimetría de una distribución. -SLOPE = PENDIENTE ## Devuelve la pendiente de la línea de regresión lineal. -SMALL = K.ESIMO.MENOR ## Devuelve el k-ésimo menor valor de un conjunto de datos. -STANDARDIZE = NORMALIZACION ## Devuelve un valor normalizado. -STDEV = DESVEST ## Calcula la desviación estándar a partir de una muestra. -STDEVA = DESVESTA ## Calcula la desviación estándar a partir de una muestra, incluidos números, texto y valores lógicos. -STDEVP = DESVESTP ## Calcula la desviación estándar en función de toda la población. -STDEVPA = DESVESTPA ## Calcula la desviación estándar en función de toda la población, incluidos números, texto y valores lógicos. -STEYX = ERROR.TIPICO.XY ## Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión. -TDIST = DISTR.T ## Devuelve la distribución de t de Student. -TINV = DISTR.T.INV ## Devuelve la función inversa de la distribución de t de Student. -TREND = TENDENCIA ## Devuelve valores en una tendencia lineal. -TRIMMEAN = MEDIA.ACOTADA ## Devuelve la media del interior de un conjunto de datos. -TTEST = PRUEBA.T ## Devuelve la probabilidad asociada a una prueba t de Student. -VAR = VAR ## Calcula la varianza en función de una muestra. -VARA = VARA ## Calcula la varianza en función de una muestra, incluidos números, texto y valores lógicos. -VARP = VARP ## Calcula la varianza en función de toda la población. -VARPA = VARPA ## Calcula la varianza en función de toda la población, incluidos números, texto y valores lógicos. -WEIBULL = DIST.WEIBULL ## Devuelve la distribución de Weibull. -ZTEST = PRUEBA.Z ## Devuelve el valor de una probabilidad de una cola de una prueba z. - - -## -## Text functions Funciones de texto -## -ASC = ASC ## Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de una cadena de caracteres en caracteres de ancho medio (de un byte). -BAHTTEXT = TEXTOBAHT ## Convierte un número en texto, con el formato de moneda ß (Baht). -CHAR = CARACTER ## Devuelve el carácter especificado por el número de código. -CLEAN = LIMPIAR ## Quita del texto todos los caracteres no imprimibles. -CODE = CODIGO ## Devuelve un código numérico del primer carácter de una cadena de texto. -CONCATENATE = CONCATENAR ## Concatena varios elementos de texto en uno solo. -DOLLAR = MONEDA ## Convierte un número en texto, con el formato de moneda $ (dólar). -EXACT = IGUAL ## Comprueba si dos valores de texto son idénticos. -FIND = ENCONTRAR ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). -FINDB = ENCONTRARB ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). -FIXED = DECIMAL ## Da formato a un número como texto con un número fijo de decimales. -JIS = JIS ## Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una cadena de caracteres en caracteres de ancho completo (de dos bytes). -LEFT = IZQUIERDA ## Devuelve los caracteres del lado izquierdo de un valor de texto. -LEFTB = IZQUIERDAB ## Devuelve los caracteres del lado izquierdo de un valor de texto. -LEN = LARGO ## Devuelve el número de caracteres de una cadena de texto. -LENB = LARGOB ## Devuelve el número de caracteres de una cadena de texto. -LOWER = MINUSC ## Pone el texto en minúsculas. -MID = EXTRAE ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. -MIDB = EXTRAEB ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. -PHONETIC = FONETICO ## Extrae los caracteres fonéticos (furigana) de una cadena de texto. -PROPER = NOMPROPIO ## Pone en mayúscula la primera letra de cada palabra de un valor de texto. -REPLACE = REEMPLAZAR ## Reemplaza caracteres de texto. -REPLACEB = REEMPLAZARB ## Reemplaza caracteres de texto. -REPT = REPETIR ## Repite el texto un número determinado de veces. -RIGHT = DERECHA ## Devuelve los caracteres del lado derecho de un valor de texto. -RIGHTB = DERECHAB ## Devuelve los caracteres del lado derecho de un valor de texto. -SEARCH = HALLAR ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). -SEARCHB = HALLARB ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). -SUBSTITUTE = SUSTITUIR ## Sustituye texto nuevo por texto antiguo en una cadena de texto. -T = T ## Convierte sus argumentos a texto. -TEXT = TEXTO ## Da formato a un número y lo convierte en texto. -TRIM = ESPACIOS ## Quita los espacios del texto. -UPPER = MAYUSC ## Pone el texto en mayúsculas. -VALUE = VALOR ## Convierte un argumento de texto en un número. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funciones de complementos y automatización +## +GETPIVOTDATA = IMPORTARDATOSDINAMICOS ## Devuelve los datos almacenados en un informe de tabla dinámica. + + +## +## Cube functions Funciones de cubo +## +CUBEKPIMEMBER = MIEMBROKPICUBO ## Devuelve un nombre, propiedad y medida de indicador de rendimiento clave (KPI) y muestra el nombre y la propiedad en la celda. Un KPI es una medida cuantificable, como los beneficios brutos mensuales o la facturación trimestral por empleado, que se usa para supervisar el rendimiento de una organización. +CUBEMEMBER = MIEMBROCUBO ## Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la existencia del miembro o la tupla en el cubo. +CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO ## Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la existencia de un nombre de miembro en el cubo y para devolver la propiedad especificada para este miembro. +CUBERANKEDMEMBER = MIEMBRORANGOCUBO ## Devuelve el miembro n, o clasificado, de un conjunto. Se usa para devolver uno o más elementos de un conjunto, por ejemplo, el representante con mejores ventas o los diez mejores alumnos. +CUBESET = CONJUNTOCUBO ## Define un conjunto calculado de miembros o tuplas mediante el envío de una expresión de conjunto al cubo en el servidor, lo que crea el conjunto y, después, devuelve dicho conjunto a Microsoft Office Excel. +CUBESETCOUNT = RECUENTOCONJUNTOCUBO ## Devuelve el número de elementos de un conjunto. +CUBEVALUE = VALORCUBO ## Devuelve un valor agregado de un cubo. + + +## +## Database functions Funciones de base de datos +## +DAVERAGE = BDPROMEDIO ## Devuelve el promedio de las entradas seleccionadas en la base de datos. +DCOUNT = BDCONTAR ## Cuenta el número de celdas que contienen números en una base de datos. +DCOUNTA = BDCONTARA ## Cuenta el número de celdas no vacías en una base de datos. +DGET = BDEXTRAER ## Extrae de una base de datos un único registro que cumple los criterios especificados. +DMAX = BDMAX ## Devuelve el valor máximo de las entradas seleccionadas de la base de datos. +DMIN = BDMIN ## Devuelve el valor mínimo de las entradas seleccionadas de la base de datos. +DPRODUCT = BDPRODUCTO ## Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados. +DSTDEV = BDDESVEST ## Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos. +DSTDEVP = BDDESVESTP ## Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos. +DSUM = BDSUMA ## Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios. +DVAR = BDVAR ## Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos. +DVARP = BDVARP ## Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos. + + +## +## Date and time functions Funciones de fecha y hora +## +DATE = FECHA ## Devuelve el número de serie correspondiente a una fecha determinada. +DATEVALUE = FECHANUMERO ## Convierte una fecha con formato de texto en un valor de número de serie. +DAY = DIA ## Convierte un número de serie en un valor de día del mes. +DAYS360 = DIAS360 ## Calcula el número de días entre dos fechas a partir de un año de 360 días. +EDATE = FECHA.MES ## Devuelve el número de serie de la fecha equivalente al número indicado de meses anteriores o posteriores a la fecha inicial. +EOMONTH = FIN.MES ## Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un número de meses especificado. +HOUR = HORA ## Convierte un número de serie en un valor de hora. +MINUTE = MINUTO ## Convierte un número de serie en un valor de minuto. +MONTH = MES ## Convierte un número de serie en un valor de mes. +NETWORKDAYS = DIAS.LAB ## Devuelve el número de todos los días laborables existentes entre dos fechas. +NOW = AHORA ## Devuelve el número de serie correspondiente a la fecha y hora actuales. +SECOND = SEGUNDO ## Convierte un número de serie en un valor de segundo. +TIME = HORA ## Devuelve el número de serie correspondiente a una hora determinada. +TIMEVALUE = HORANUMERO ## Convierte una hora con formato de texto en un valor de número de serie. +TODAY = HOY ## Devuelve el número de serie correspondiente al día actual. +WEEKDAY = DIASEM ## Convierte un número de serie en un valor de día de la semana. +WEEKNUM = NUM.DE.SEMANA ## Convierte un número de serie en un número que representa el lugar numérico correspondiente a una semana de un año. +WORKDAY = DIA.LAB ## Devuelve el número de serie de la fecha que tiene lugar antes o después de un número determinado de días laborables. +YEAR = AÑO ## Convierte un número de serie en un valor de año. +YEARFRAC = FRAC.AÑO ## Devuelve la fracción de año que representa el número total de días existentes entre el valor de fecha_inicial y el de fecha_final. + + +## +## Engineering functions Funciones de ingeniería +## +BESSELI = BESSELI ## Devuelve la función Bessel In(x) modificada. +BESSELJ = BESSELJ ## Devuelve la función Bessel Jn(x). +BESSELK = BESSELK ## Devuelve la función Bessel Kn(x) modificada. +BESSELY = BESSELY ## Devuelve la función Bessel Yn(x). +BIN2DEC = BIN.A.DEC ## Convierte un número binario en decimal. +BIN2HEX = BIN.A.HEX ## Convierte un número binario en hexadecimal. +BIN2OCT = BIN.A.OCT ## Convierte un número binario en octal. +COMPLEX = COMPLEJO ## Convierte coeficientes reales e imaginarios en un número complejo. +CONVERT = CONVERTIR ## Convierte un número de un sistema de medida a otro. +DEC2BIN = DEC.A.BIN ## Convierte un número decimal en binario. +DEC2HEX = DEC.A.HEX ## Convierte un número decimal en hexadecimal. +DEC2OCT = DEC.A.OCT ## Convierte un número decimal en octal. +DELTA = DELTA ## Comprueba si dos valores son iguales. +ERF = FUN.ERROR ## Devuelve la función de error. +ERFC = FUN.ERROR.COMPL ## Devuelve la función de error complementario. +GESTEP = MAYOR.O.IGUAL ## Comprueba si un número es mayor que un valor de umbral. +HEX2BIN = HEX.A.BIN ## Convierte un número hexadecimal en binario. +HEX2DEC = HEX.A.DEC ## Convierte un número hexadecimal en decimal. +HEX2OCT = HEX.A.OCT ## Convierte un número hexadecimal en octal. +IMABS = IM.ABS ## Devuelve el valor absoluto (módulo) de un número complejo. +IMAGINARY = IMAGINARIO ## Devuelve el coeficiente imaginario de un número complejo. +IMARGUMENT = IM.ANGULO ## Devuelve el argumento theta, un ángulo expresado en radianes. +IMCONJUGATE = IM.CONJUGADA ## Devuelve la conjugada compleja de un número complejo. +IMCOS = IM.COS ## Devuelve el coseno de un número complejo. +IMDIV = IM.DIV ## Devuelve el cociente de dos números complejos. +IMEXP = IM.EXP ## Devuelve el valor exponencial de un número complejo. +IMLN = IM.LN ## Devuelve el logaritmo natural (neperiano) de un número complejo. +IMLOG10 = IM.LOG10 ## Devuelve el logaritmo en base 10 de un número complejo. +IMLOG2 = IM.LOG2 ## Devuelve el logaritmo en base 2 de un número complejo. +IMPOWER = IM.POT ## Devuelve un número complejo elevado a una potencia entera. +IMPRODUCT = IM.PRODUCT ## Devuelve el producto de números complejos. +IMREAL = IM.REAL ## Devuelve el coeficiente real de un número complejo. +IMSIN = IM.SENO ## Devuelve el seno de un número complejo. +IMSQRT = IM.RAIZ2 ## Devuelve la raíz cuadrada de un número complejo. +IMSUB = IM.SUSTR ## Devuelve la diferencia entre dos números complejos. +IMSUM = IM.SUM ## Devuelve la suma de números complejos. +OCT2BIN = OCT.A.BIN ## Convierte un número octal en binario. +OCT2DEC = OCT.A.DEC ## Convierte un número octal en decimal. +OCT2HEX = OCT.A.HEX ## Convierte un número octal en hexadecimal. + + +## +## Financial functions Funciones financieras +## +ACCRINT = INT.ACUM ## Devuelve el interés acumulado de un valor bursátil con pagos de interés periódicos. +ACCRINTM = INT.ACUM.V ## Devuelve el interés acumulado de un valor bursátil con pagos de interés al vencimiento. +AMORDEGRC = AMORTIZ.PROGRE ## Devuelve la amortización de cada período contable mediante el uso de un coeficiente de amortización. +AMORLINC = AMORTIZ.LIN ## Devuelve la amortización de cada uno de los períodos contables. +COUPDAYBS = CUPON.DIAS.L1 ## Devuelve el número de días desde el principio del período de un cupón hasta la fecha de liquidación. +COUPDAYS = CUPON.DIAS ## Devuelve el número de días del período (entre dos cupones) donde se encuentra la fecha de liquidación. +COUPDAYSNC = CUPON.DIAS.L2 ## Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo cupón. +COUPNCD = CUPON.FECHA.L2 ## Devuelve la fecha del próximo cupón después de la fecha de liquidación. +COUPNUM = CUPON.NUM ## Devuelve el número de pagos de cupón entre la fecha de liquidación y la fecha de vencimiento. +COUPPCD = CUPON.FECHA.L1 ## Devuelve la fecha de cupón anterior a la fecha de liquidación. +CUMIPMT = PAGO.INT.ENTRE ## Devuelve el interés acumulado pagado entre dos períodos. +CUMPRINC = PAGO.PRINC.ENTRE ## Devuelve el capital acumulado pagado de un préstamo entre dos períodos. +DB = DB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización de saldo fijo. +DDB = DDB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización por doble disminución de saldo u otro método que se especifique. +DISC = TASA.DESC ## Devuelve la tasa de descuento de un valor bursátil. +DOLLARDE = MONEDA.DEC ## Convierte una cotización de un valor bursátil expresada en forma fraccionaria en una cotización de un valor bursátil expresada en forma decimal. +DOLLARFR = MONEDA.FRAC ## Convierte una cotización de un valor bursátil expresada en forma decimal en una cotización de un valor bursátil expresada en forma fraccionaria. +DURATION = DURACION ## Devuelve la duración anual de un valor bursátil con pagos de interés periódico. +EFFECT = INT.EFECTIVO ## Devuelve la tasa de interés anual efectiva. +FV = VF ## Devuelve el valor futuro de una inversión. +FVSCHEDULE = VF.PLAN ## Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de interés compuesto. +INTRATE = TASA.INT ## Devuelve la tasa de interés para la inversión total de un valor bursátil. +IPMT = PAGOINT ## Devuelve el pago de intereses de una inversión durante un período determinado. +IRR = TIR ## Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos. +ISPMT = INT.PAGO.DIR ## Calcula el interés pagado durante un período específico de una inversión. +MDURATION = DURACION.MODIF ## Devuelve la duración de Macauley modificada de un valor bursátil con un valor nominal supuesto de 100 $. +MIRR = TIRM ## Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos y negativos a tasas diferentes. +NOMINAL = TASA.NOMINAL ## Devuelve la tasa nominal de interés anual. +NPER = NPER ## Devuelve el número de períodos de una inversión. +NPV = VNA ## Devuelve el valor neto actual de una inversión en función de una serie de flujos periódicos de efectivo y una tasa de descuento. +ODDFPRICE = PRECIO.PER.IRREGULAR.1 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un primer período impar. +ODDFYIELD = RENDTO.PER.IRREGULAR.1 ## Devuelve el rendimiento de un valor bursátil con un primer período impar. +ODDLPRICE = PRECIO.PER.IRREGULAR.2 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un último período impar. +ODDLYIELD = RENDTO.PER.IRREGULAR.2 ## Devuelve el rendimiento de un valor bursátil con un último período impar. +PMT = PAGO ## Devuelve el pago periódico de una anualidad. +PPMT = PAGOPRIN ## Devuelve el pago de capital de una inversión durante un período determinado. +PRICE = PRECIO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una tasa de interés periódico. +PRICEDISC = PRECIO.DESCUENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con descuento. +PRICEMAT = PRECIO.VENCIMIENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga interés a su vencimiento. +PV = VALACT ## Devuelve el valor actual de una inversión. +RATE = TASA ## Devuelve la tasa de interés por período de una anualidad. +RECEIVED = CANTIDAD.RECIBIDA ## Devuelve la cantidad recibida al vencimiento de un valor bursátil completamente invertido. +SLN = SLN ## Devuelve la amortización por método directo de un bien en un período dado. +SYD = SYD ## Devuelve la amortización por suma de dígitos de los años de un bien durante un período especificado. +TBILLEQ = LETRA.DE.TES.EQV.A.BONO ## Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.) +TBILLPRICE = LETRA.DE.TES.PRECIO ## Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de EE.UU.) +TBILLYIELD = LETRA.DE.TES.RENDTO ## Devuelve el rendimiento de una letra del Tesoro (de EE.UU.) +VDB = DVS ## Devuelve la amortización de un bien durante un período específico o parcial a través del método de cálculo del saldo en disminución. +XIRR = TIR.NO.PER ## Devuelve la tasa interna de retorno para un flujo de efectivo que no es necesariamente periódico. +XNPV = VNA.NO.PER ## Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente periódico. +YIELD = RENDTO ## Devuelve el rendimiento de un valor bursátil que paga intereses periódicos. +YIELDDISC = RENDTO.DESC ## Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo, una letra del Tesoro (de EE.UU.) +YIELDMAT = RENDTO.VENCTO ## Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento. + + +## +## Information functions Funciones de información +## +CELL = CELDA ## Devuelve información acerca del formato, la ubicación o el contenido de una celda. +ERROR.TYPE = TIPO.DE.ERROR ## Devuelve un número que corresponde a un tipo de error. +INFO = INFO ## Devuelve información acerca del entorno operativo en uso. +ISBLANK = ESBLANCO ## Devuelve VERDADERO si el valor está en blanco. +ISERR = ESERR ## Devuelve VERDADERO si el valor es cualquier valor de error excepto #N/A. +ISERROR = ESERROR ## Devuelve VERDADERO si el valor es cualquier valor de error. +ISEVEN = ES.PAR ## Devuelve VERDADERO si el número es par. +ISLOGICAL = ESLOGICO ## Devuelve VERDADERO si el valor es un valor lógico. +ISNA = ESNOD ## Devuelve VERDADERO si el valor es el valor de error #N/A. +ISNONTEXT = ESNOTEXTO ## Devuelve VERDADERO si el valor no es texto. +ISNUMBER = ESNUMERO ## Devuelve VERDADERO si el valor es un número. +ISODD = ES.IMPAR ## Devuelve VERDADERO si el número es impar. +ISREF = ESREF ## Devuelve VERDADERO si el valor es una referencia. +ISTEXT = ESTEXTO ## Devuelve VERDADERO si el valor es texto. +N = N ## Devuelve un valor convertido en un número. +NA = ND ## Devuelve el valor de error #N/A. +TYPE = TIPO ## Devuelve un número que indica el tipo de datos de un valor. + + +## +## Logical functions Funciones lógicas +## +AND = Y ## Devuelve VERDADERO si todos sus argumentos son VERDADERO. +FALSE = FALSO ## Devuelve el valor lógico FALSO. +IF = SI ## Especifica una prueba lógica que realizar. +IFERROR = SI.ERROR ## Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario, devuelve el resultado de la fórmula. +NOT = NO ## Invierte el valor lógico del argumento. +OR = O ## Devuelve VERDADERO si cualquier argumento es VERDADERO. +TRUE = VERDADERO ## Devuelve el valor lógico VERDADERO. + + +## +## Lookup and reference functions Funciones de búsqueda y referencia +## +ADDRESS = DIRECCION ## Devuelve una referencia como texto a una sola celda de una hoja de cálculo. +AREAS = AREAS ## Devuelve el número de áreas de una referencia. +CHOOSE = ELEGIR ## Elige un valor de una lista de valores. +COLUMN = COLUMNA ## Devuelve el número de columna de una referencia. +COLUMNS = COLUMNAS ## Devuelve el número de columnas de una referencia. +HLOOKUP = BUSCARH ## Busca en la fila superior de una matriz y devuelve el valor de la celda indicada. +HYPERLINK = HIPERVINCULO ## Crea un acceso directo o un salto que abre un documento almacenado en un servidor de red, en una intranet o en Internet. +INDEX = INDICE ## Usa un índice para elegir un valor de una referencia o matriz. +INDIRECT = INDIRECTO ## Devuelve una referencia indicada por un valor de texto. +LOOKUP = BUSCAR ## Busca valores de un vector o una matriz. +MATCH = COINCIDIR ## Busca valores de una referencia o matriz. +OFFSET = DESREF ## Devuelve un desplazamiento de referencia respecto a una referencia dada. +ROW = FILA ## Devuelve el número de fila de una referencia. +ROWS = FILAS ## Devuelve el número de filas de una referencia. +RTD = RDTR ## Recupera datos en tiempo real desde un programa compatible con la automatización COM (automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o herramienta de entorno. La automatización, antes denominada automatización OLE, es un estándar de la industria y una función del Modelo de objetos componentes (COM).). +TRANSPOSE = TRANSPONER ## Devuelve la transposición de una matriz. +VLOOKUP = BUSCARV ## Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el valor de una celda. + + +## +## Math and trigonometry functions Funciones matemáticas y trigonométricas +## +ABS = ABS ## Devuelve el valor absoluto de un número. +ACOS = ACOS ## Devuelve el arcocoseno de un número. +ACOSH = ACOSH ## Devuelve el coseno hiperbólico inverso de un número. +ASIN = ASENO ## Devuelve el arcoseno de un número. +ASINH = ASENOH ## Devuelve el seno hiperbólico inverso de un número. +ATAN = ATAN ## Devuelve la arcotangente de un número. +ATAN2 = ATAN2 ## Devuelve la arcotangente de las coordenadas "x" e "y". +ATANH = ATANH ## Devuelve la tangente hiperbólica inversa de un número. +CEILING = MULTIPLO.SUPERIOR ## Redondea un número al entero más próximo o al múltiplo significativo más cercano. +COMBIN = COMBINAT ## Devuelve el número de combinaciones para un número determinado de objetos. +COS = COS ## Devuelve el coseno de un número. +COSH = COSH ## Devuelve el coseno hiperbólico de un número. +DEGREES = GRADOS ## Convierte radianes en grados. +EVEN = REDONDEA.PAR ## Redondea un número hasta el entero par más próximo. +EXP = EXP ## Devuelve e elevado a la potencia de un número dado. +FACT = FACT ## Devuelve el factorial de un número. +FACTDOUBLE = FACT.DOBLE ## Devuelve el factorial doble de un número. +FLOOR = MULTIPLO.INFERIOR ## Redondea un número hacia abajo, en dirección hacia cero. +GCD = M.C.D ## Devuelve el máximo común divisor. +INT = ENTERO ## Redondea un número hacia abajo hasta el entero más próximo. +LCM = M.C.M ## Devuelve el mínimo común múltiplo. +LN = LN ## Devuelve el logaritmo natural (neperiano) de un número. +LOG = LOG ## Devuelve el logaritmo de un número en una base especificada. +LOG10 = LOG10 ## Devuelve el logaritmo en base 10 de un número. +MDETERM = MDETERM ## Devuelve la determinante matricial de una matriz. +MINVERSE = MINVERSA ## Devuelve la matriz inversa de una matriz. +MMULT = MMULT ## Devuelve el producto de matriz de dos matrices. +MOD = RESIDUO ## Devuelve el resto de la división. +MROUND = REDOND.MULT ## Devuelve un número redondeado al múltiplo deseado. +MULTINOMIAL = MULTINOMIAL ## Devuelve el polinomio de un conjunto de números. +ODD = REDONDEA.IMPAR ## Redondea un número hacia arriba hasta el entero impar más próximo. +PI = PI ## Devuelve el valor de pi. +POWER = POTENCIA ## Devuelve el resultado de elevar un número a una potencia. +PRODUCT = PRODUCTO ## Multiplica sus argumentos. +QUOTIENT = COCIENTE ## Devuelve la parte entera de una división. +RADIANS = RADIANES ## Convierte grados en radianes. +RAND = ALEATORIO ## Devuelve un número aleatorio entre 0 y 1. +RANDBETWEEN = ALEATORIO.ENTRE ## Devuelve un número aleatorio entre los números que especifique. +ROMAN = NUMERO.ROMANO ## Convierte un número arábigo en número romano, con formato de texto. +ROUND = REDONDEAR ## Redondea un número al número de decimales especificado. +ROUNDDOWN = REDONDEAR.MENOS ## Redondea un número hacia abajo, en dirección hacia cero. +ROUNDUP = REDONDEAR.MAS ## Redondea un número hacia arriba, en dirección contraria a cero. +SERIESSUM = SUMA.SERIES ## Devuelve la suma de una serie de potencias en función de la fórmula. +SIGN = SIGNO ## Devuelve el signo de un número. +SIN = SENO ## Devuelve el seno de un ángulo determinado. +SINH = SENOH ## Devuelve el seno hiperbólico de un número. +SQRT = RAIZ ## Devuelve la raíz cuadrada positiva de un número. +SQRTPI = RAIZ2PI ## Devuelve la raíz cuadrada de un número multiplicado por PI (número * pi). +SUBTOTAL = SUBTOTALES ## Devuelve un subtotal en una lista o base de datos. +SUM = SUMA ## Suma sus argumentos. +SUMIF = SUMAR.SI ## Suma las celdas especificadas que cumplen unos criterios determinados. +SUMIFS = SUMAR.SI.CONJUNTO ## Suma las celdas de un rango que cumplen varios criterios. +SUMPRODUCT = SUMAPRODUCTO ## Devuelve la suma de los productos de los correspondientes componentes de matriz. +SUMSQ = SUMA.CUADRADOS ## Devuelve la suma de los cuadrados de los argumentos. +SUMX2MY2 = SUMAX2MENOSY2 ## Devuelve la suma de la diferencia de los cuadrados de los valores correspondientes de dos matrices. +SUMX2PY2 = SUMAX2MASY2 ## Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos matrices. +SUMXMY2 = SUMAXMENOSY2 ## Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de dos matrices. +TAN = TAN ## Devuelve la tangente de un número. +TANH = TANH ## Devuelve la tangente hiperbólica de un número. +TRUNC = TRUNCAR ## Trunca un número a un entero. + + +## +## Statistical functions Funciones estadísticas +## +AVEDEV = DESVPROM ## Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos. +AVERAGE = PROMEDIO ## Devuelve el promedio de sus argumentos. +AVERAGEA = PROMEDIOA ## Devuelve el promedio de sus argumentos, incluidos números, texto y valores lógicos. +AVERAGEIF = PROMEDIO.SI ## Devuelve el promedio (media aritmética) de todas las celdas de un rango que cumplen unos criterios determinados. +AVERAGEIFS = PROMEDIO.SI.CONJUNTO ## Devuelve el promedio (media aritmética) de todas las celdas que cumplen múltiples criterios. +BETADIST = DISTR.BETA ## Devuelve la función de distribución beta acumulativa. +BETAINV = DISTR.BETA.INV ## Devuelve la función inversa de la función de distribución acumulativa de una distribución beta especificada. +BINOMDIST = DISTR.BINOM ## Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial. +CHIDIST = DISTR.CHI ## Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. +CHIINV = PRUEBA.CHI.INV ## Devuelve la función inversa de la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. +CHITEST = PRUEBA.CHI ## Devuelve la prueba de independencia. +CONFIDENCE = INTERVALO.CONFIANZA ## Devuelve el intervalo de confianza de la media de una población. +CORREL = COEF.DE.CORREL ## Devuelve el coeficiente de correlación entre dos conjuntos de datos. +COUNT = CONTAR ## Cuenta cuántos números hay en la lista de argumentos. +COUNTA = CONTARA ## Cuenta cuántos valores hay en la lista de argumentos. +COUNTBLANK = CONTAR.BLANCO ## Cuenta el número de celdas en blanco de un rango. +COUNTIF = CONTAR.SI ## Cuenta el número de celdas, dentro del rango, que cumplen el criterio especificado. +COUNTIFS = CONTAR.SI.CONJUNTO ## Cuenta el número de celdas, dentro del rango, que cumplen varios criterios. +COVAR = COVAR ## Devuelve la covarianza, que es el promedio de los productos de las desviaciones para cada pareja de puntos de datos. +CRITBINOM = BINOM.CRIT ## Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a un valor de criterio. +DEVSQ = DESVIA2 ## Devuelve la suma de los cuadrados de las desviaciones. +EXPONDIST = DISTR.EXP ## Devuelve la distribución exponencial. +FDIST = DISTR.F ## Devuelve la distribución de probabilidad F. +FINV = DISTR.F.INV ## Devuelve la función inversa de la distribución de probabilidad F. +FISHER = FISHER ## Devuelve la transformación Fisher. +FISHERINV = PRUEBA.FISHER.INV ## Devuelve la función inversa de la transformación Fisher. +FORECAST = PRONOSTICO ## Devuelve un valor en una tendencia lineal. +FREQUENCY = FRECUENCIA ## Devuelve una distribución de frecuencia como una matriz vertical. +FTEST = PRUEBA.F ## Devuelve el resultado de una prueba F. +GAMMADIST = DISTR.GAMMA ## Devuelve la distribución gamma. +GAMMAINV = DISTR.GAMMA.INV ## Devuelve la función inversa de la distribución gamma acumulativa. +GAMMALN = GAMMA.LN ## Devuelve el logaritmo natural de la función gamma, G(x). +GEOMEAN = MEDIA.GEOM ## Devuelve la media geométrica. +GROWTH = CRECIMIENTO ## Devuelve valores en una tendencia exponencial. +HARMEAN = MEDIA.ARMO ## Devuelve la media armónica. +HYPGEOMDIST = DISTR.HIPERGEOM ## Devuelve la distribución hipergeométrica. +INTERCEPT = INTERSECCION.EJE ## Devuelve la intersección de la línea de regresión lineal. +KURT = CURTOSIS ## Devuelve la curtosis de un conjunto de datos. +LARGE = K.ESIMO.MAYOR ## Devuelve el k-ésimo mayor valor de un conjunto de datos. +LINEST = ESTIMACION.LINEAL ## Devuelve los parámetros de una tendencia lineal. +LOGEST = ESTIMACION.LOGARITMICA ## Devuelve los parámetros de una tendencia exponencial. +LOGINV = DISTR.LOG.INV ## Devuelve la función inversa de la distribución logarítmico-normal. +LOGNORMDIST = DISTR.LOG.NORM ## Devuelve la distribución logarítmico-normal acumulativa. +MAX = MAX ## Devuelve el valor máximo de una lista de argumentos. +MAXA = MAXA ## Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y valores lógicos. +MEDIAN = MEDIANA ## Devuelve la mediana de los números dados. +MIN = MIN ## Devuelve el valor mínimo de una lista de argumentos. +MINA = MINA ## Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y valores lógicos. +MODE = MODA ## Devuelve el valor más común de un conjunto de datos. +NEGBINOMDIST = NEGBINOMDIST ## Devuelve la distribución binomial negativa. +NORMDIST = DISTR.NORM ## Devuelve la distribución normal acumulativa. +NORMINV = DISTR.NORM.INV ## Devuelve la función inversa de la distribución normal acumulativa. +NORMSDIST = DISTR.NORM.ESTAND ## Devuelve la distribución normal estándar acumulativa. +NORMSINV = DISTR.NORM.ESTAND.INV ## Devuelve la función inversa de la distribución normal estándar acumulativa. +PEARSON = PEARSON ## Devuelve el coeficiente de momento de correlación de producto Pearson. +PERCENTILE = PERCENTIL ## Devuelve el k-ésimo percentil de los valores de un rango. +PERCENTRANK = RANGO.PERCENTIL ## Devuelve el rango porcentual de un valor de un conjunto de datos. +PERMUT = PERMUTACIONES ## Devuelve el número de permutaciones de un número determinado de objetos. +POISSON = POISSON ## Devuelve la distribución de Poisson. +PROB = PROBABILIDAD ## Devuelve la probabilidad de que los valores de un rango se encuentren entre dos límites. +QUARTILE = CUARTIL ## Devuelve el cuartil de un conjunto de datos. +RANK = JERARQUIA ## Devuelve la jerarquía de un número en una lista de números. +RSQ = COEFICIENTE.R2 ## Devuelve el cuadrado del coeficiente de momento de correlación de producto Pearson. +SKEW = COEFICIENTE.ASIMETRIA ## Devuelve la asimetría de una distribución. +SLOPE = PENDIENTE ## Devuelve la pendiente de la línea de regresión lineal. +SMALL = K.ESIMO.MENOR ## Devuelve el k-ésimo menor valor de un conjunto de datos. +STANDARDIZE = NORMALIZACION ## Devuelve un valor normalizado. +STDEV = DESVEST ## Calcula la desviación estándar a partir de una muestra. +STDEVA = DESVESTA ## Calcula la desviación estándar a partir de una muestra, incluidos números, texto y valores lógicos. +STDEVP = DESVESTP ## Calcula la desviación estándar en función de toda la población. +STDEVPA = DESVESTPA ## Calcula la desviación estándar en función de toda la población, incluidos números, texto y valores lógicos. +STEYX = ERROR.TIPICO.XY ## Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión. +TDIST = DISTR.T ## Devuelve la distribución de t de Student. +TINV = DISTR.T.INV ## Devuelve la función inversa de la distribución de t de Student. +TREND = TENDENCIA ## Devuelve valores en una tendencia lineal. +TRIMMEAN = MEDIA.ACOTADA ## Devuelve la media del interior de un conjunto de datos. +TTEST = PRUEBA.T ## Devuelve la probabilidad asociada a una prueba t de Student. +VAR = VAR ## Calcula la varianza en función de una muestra. +VARA = VARA ## Calcula la varianza en función de una muestra, incluidos números, texto y valores lógicos. +VARP = VARP ## Calcula la varianza en función de toda la población. +VARPA = VARPA ## Calcula la varianza en función de toda la población, incluidos números, texto y valores lógicos. +WEIBULL = DIST.WEIBULL ## Devuelve la distribución de Weibull. +ZTEST = PRUEBA.Z ## Devuelve el valor de una probabilidad de una cola de una prueba z. + + +## +## Text functions Funciones de texto +## +ASC = ASC ## Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de una cadena de caracteres en caracteres de ancho medio (de un byte). +BAHTTEXT = TEXTOBAHT ## Convierte un número en texto, con el formato de moneda ß (Baht). +CHAR = CARACTER ## Devuelve el carácter especificado por el número de código. +CLEAN = LIMPIAR ## Quita del texto todos los caracteres no imprimibles. +CODE = CODIGO ## Devuelve un código numérico del primer carácter de una cadena de texto. +CONCATENATE = CONCATENAR ## Concatena varios elementos de texto en uno solo. +DOLLAR = MONEDA ## Convierte un número en texto, con el formato de moneda $ (dólar). +EXACT = IGUAL ## Comprueba si dos valores de texto son idénticos. +FIND = ENCONTRAR ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). +FINDB = ENCONTRARB ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). +FIXED = DECIMAL ## Da formato a un número como texto con un número fijo de decimales. +JIS = JIS ## Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una cadena de caracteres en caracteres de ancho completo (de dos bytes). +LEFT = IZQUIERDA ## Devuelve los caracteres del lado izquierdo de un valor de texto. +LEFTB = IZQUIERDAB ## Devuelve los caracteres del lado izquierdo de un valor de texto. +LEN = LARGO ## Devuelve el número de caracteres de una cadena de texto. +LENB = LARGOB ## Devuelve el número de caracteres de una cadena de texto. +LOWER = MINUSC ## Pone el texto en minúsculas. +MID = EXTRAE ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. +MIDB = EXTRAEB ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. +PHONETIC = FONETICO ## Extrae los caracteres fonéticos (furigana) de una cadena de texto. +PROPER = NOMPROPIO ## Pone en mayúscula la primera letra de cada palabra de un valor de texto. +REPLACE = REEMPLAZAR ## Reemplaza caracteres de texto. +REPLACEB = REEMPLAZARB ## Reemplaza caracteres de texto. +REPT = REPETIR ## Repite el texto un número determinado de veces. +RIGHT = DERECHA ## Devuelve los caracteres del lado derecho de un valor de texto. +RIGHTB = DERECHAB ## Devuelve los caracteres del lado derecho de un valor de texto. +SEARCH = HALLAR ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). +SEARCHB = HALLARB ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). +SUBSTITUTE = SUSTITUIR ## Sustituye texto nuevo por texto antiguo en una cadena de texto. +T = T ## Convierte sus argumentos a texto. +TEXT = TEXTO ## Da formato a un número y lo convierte en texto. +TRIM = ESPACIOS ## Quita los espacios del texto. +UPPER = MAYUSC ## Pone el texto en mayúsculas. +VALUE = VALOR ## Convierte un argumento de texto en un número. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fi/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fi/functions index 6a7c2b36f87..7bed722a641 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fi/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fi/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Apuohjelma- ja automaatiofunktiot -## -GETPIVOTDATA = NOUDA.PIVOT.TIEDOT ## Palauttaa pivot-taulukkoraporttiin tallennettuja tietoja. - - -## -## Cube functions Kuutiofunktiot -## -CUBEKPIMEMBER = KUUTIOKPIJÄSEN ## Palauttaa suorituskykyilmaisimen (KPI) nimen, ominaisuuden sekä mitan ja näyttää nimen sekä ominaisuuden solussa. KPI on mitattavissa oleva suure, kuten kuukauden bruttotuotto tai vuosineljänneksen työntekijäkohtainen liikevaihto, joiden avulla tarkkaillaan organisaation suorituskykyä. -CUBEMEMBER = KUUTIONJÄSEN ## Palauttaa kuutiohierarkian jäsenen tai monikon. Tällä funktiolla voit tarkistaa, että jäsen tai monikko on olemassa kuutiossa. -CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS ## Palauttaa kuution jäsenominaisuuden arvon. Tällä funktiolla voit tarkistaa, että nimi on olemassa kuutiossa, ja palauttaa tämän jäsenen määritetyn ominaisuuden. -CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN ## Palauttaa joukon n:nnen jäsenen. Tällä funktiolla voit palauttaa joukosta elementtejä, kuten parhaan myyjän tai 10 parasta opiskelijaa. -CUBESET = KUUTIOJOUKKO ## Määrittää lasketun jäsen- tai monikkojoukon lähettämällä joukon lausekkeita palvelimessa olevalle kuutiolle. Palvelin luo joukon ja palauttaa sen Microsoft Office Excelille. -CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ ## Palauttaa joukon kohteiden määrän. -CUBEVALUE = KUUTIONARVO ## Palauttaa koostetun arvon kuutiosta. - - -## -## Database functions Tietokantafunktiot -## -DAVERAGE = TKESKIARVO ## Palauttaa valittujen tietokantamerkintöjen keskiarvon. -DCOUNT = TLASKE ## Laskee tietokannan lukuja sisältävien solujen määrän. -DCOUNTA = TLASKEA ## Laskee tietokannan tietoja sisältävien solujen määrän. -DGET = TNOUDA ## Hakee määritettyjä ehtoja vastaavan tietueen tietokannasta. -DMAX = TMAKS ## Palauttaa suurimman arvon tietokannasta valittujen arvojen joukosta. -DMIN = TMIN ## Palauttaa pienimmän arvon tietokannasta valittujen arvojen joukosta. -DPRODUCT = TTULO ## Kertoo määritetyn ehdon täyttävien tietokannan tietueiden tietyssä kentässä olevat arvot. -DSTDEV = TKESKIHAJONTA ## Laskee keskihajonnan tietokannasta valituista arvoista muodostuvan otoksen perusteella. -DSTDEVP = TKESKIHAJONTAP ## Laskee keskihajonnan tietokannasta valittujen arvojen koko populaation perusteella. -DSUM = TSUMMA ## Lisää luvut määritetyn ehdon täyttävien tietokannan tietueiden kenttäsarakkeeseen. -DVAR = TVARIANSSI ## Laskee varianssin tietokannasta valittujen arvojen otoksen perusteella. -DVARP = TVARIANSSIP ## Laskee varianssin tietokannasta valittujen arvojen koko populaation perusteella. - - -## -## Date and time functions Päivämäärä- ja aikafunktiot -## -DATE = PÄIVÄYS ## Palauttaa annetun päivämäärän järjestysluvun. -DATEVALUE = PÄIVÄYSARVO ## Muuntaa tekstimuodossa olevan päivämäärän järjestysluvuksi. -DAY = PÄIVÄ ## Muuntaa järjestysluvun kuukauden päiväksi. -DAYS360 = PÄIVÄT360 ## Laskee kahden päivämäärän välisten päivien määrän käyttäen perustana 360-päiväistä vuotta. -EDATE = PÄIVÄ.KUUKAUSI ## Palauttaa järjestyslukuna päivämäärän, joka poikkeaa aloituspäivän päivämäärästä annetun kuukausimäärän verran joko eteen- tai taaksepäin. -EOMONTH = KUUKAUSI.LOPPU ## Palauttaa järjestyslukuna sen kuukauden viimeisen päivämäärän, joka poikkeaa annetun kuukausimäärän verran eteen- tai taaksepäin. -HOUR = TUNNIT ## Muuntaa järjestysluvun tunneiksi. -MINUTE = MINUUTIT ## Muuntaa järjestysluvun minuuteiksi. -MONTH = KUUKAUSI ## Muuntaa järjestysluvun kuukausiksi. -NETWORKDAYS = TYÖPÄIVÄT ## Palauttaa kahden päivämäärän välissä olevien täysien työpäivien määrän. -NOW = NYT ## Palauttaa kuluvan päivämäärän ja ajan järjestysnumeron. -SECOND = SEKUNNIT ## Muuntaa järjestysluvun sekunneiksi. -TIME = AIKA ## Palauttaa annetun kellonajan järjestysluvun. -TIMEVALUE = AIKA_ARVO ## Muuntaa tekstimuodossa olevan kellonajan järjestysluvuksi. -TODAY = TÄMÄ.PÄIVÄ ## Palauttaa kuluvan päivän päivämäärän järjestysluvun. -WEEKDAY = VIIKONPÄIVÄ ## Muuntaa järjestysluvun viikonpäiväksi. -WEEKNUM = VIIKKO.NRO ## Muuntaa järjestysluvun luvuksi, joka ilmaisee viikon järjestysluvun vuoden alusta laskettuna. -WORKDAY = TYÖPÄIVÄ ## Palauttaa järjestysluvun päivämäärälle, joka sijaitsee annettujen työpäivien verran eteen tai taaksepäin. -YEAR = VUOSI ## Muuntaa järjestysluvun vuosiksi. -YEARFRAC = VUOSI.OSA ## Palauttaa määritettyjen päivämäärien (aloituspäivä ja lopetuspäivä) välisen osan vuodesta. - - -## -## Engineering functions Tekniset funktiot -## -BESSELI = BESSELI ## Palauttaa muunnetun Bessel-funktion In(x). -BESSELJ = BESSELJ ## Palauttaa Bessel-funktion Jn(x). -BESSELK = BESSELK ## Palauttaa muunnetun Bessel-funktion Kn(x). -BESSELY = BESSELY ## Palauttaa Bessel-funktion Yn(x). -BIN2DEC = BINDES ## Muuntaa binaariluvun desimaaliluvuksi. -BIN2HEX = BINHEKSA ## Muuntaa binaariluvun heksadesimaaliluvuksi. -BIN2OCT = BINOKT ## Muuntaa binaariluvun oktaaliluvuksi. -COMPLEX = KOMPLEKSI ## Muuntaa reaali- ja imaginaariosien kertoimet kompleksiluvuksi. -CONVERT = MUUNNA ## Muuntaa luvun toisen mittajärjestelmän mukaiseksi. -DEC2BIN = DESBIN ## Muuntaa desimaaliluvun binaariluvuksi. -DEC2HEX = DESHEKSA ## Muuntaa kymmenjärjestelmän luvun heksadesimaaliluvuksi. -DEC2OCT = DESOKT ## Muuntaa kymmenjärjestelmän luvun oktaaliluvuksi. -DELTA = SAMA.ARVO ## Tarkistaa, ovatko kaksi arvoa yhtä suuria. -ERF = VIRHEFUNKTIO ## Palauttaa virhefunktion. -ERFC = VIRHEFUNKTIO.KOMPLEMENTTI ## Palauttaa komplementtivirhefunktion. -GESTEP = RAJA ## Testaa, onko luku suurempi kuin kynnysarvo. -HEX2BIN = HEKSABIN ## Muuntaa heksadesimaaliluvun binaariluvuksi. -HEX2DEC = HEKSADES ## Muuntaa heksadesimaaliluvun desimaaliluvuksi. -HEX2OCT = HEKSAOKT ## Muuntaa heksadesimaaliluvun oktaaliluvuksi. -IMABS = KOMPLEKSI.ITSEISARVO ## Palauttaa kompleksiluvun itseisarvon (moduluksen). -IMAGINARY = KOMPLEKSI.IMAG ## Palauttaa kompleksiluvun imaginaariosan kertoimen. -IMARGUMENT = KOMPLEKSI.ARG ## Palauttaa theeta-argumentin, joka on radiaaneina annettu kulma. -IMCONJUGATE = KOMPLEKSI.KONJ ## Palauttaa kompleksiluvun konjugaattiluvun. -IMCOS = KOMPLEKSI.COS ## Palauttaa kompleksiluvun kosinin. -IMDIV = KOMPLEKSI.OSAM ## Palauttaa kahden kompleksiluvun osamäärän. -IMEXP = KOMPLEKSI.EKSP ## Palauttaa kompleksiluvun eksponentin. -IMLN = KOMPLEKSI.LN ## Palauttaa kompleksiluvun luonnollisen logaritmin. -IMLOG10 = KOMPLEKSI.LOG10 ## Palauttaa kompleksiluvun kymmenkantaisen logaritmin. -IMLOG2 = KOMPLEKSI.LOG2 ## Palauttaa kompleksiluvun kaksikantaisen logaritmin. -IMPOWER = KOMPLEKSI.POT ## Palauttaa kokonaislukupotenssiin korotetun kompleksiluvun. -IMPRODUCT = KOMPLEKSI.TULO ## Palauttaa kompleksilukujen tulon. -IMREAL = KOMPLEKSI.REAALI ## Palauttaa kompleksiluvun reaaliosan kertoimen. -IMSIN = KOMPLEKSI.SIN ## Palauttaa kompleksiluvun sinin. -IMSQRT = KOMPLEKSI.NELIÖJ ## Palauttaa kompleksiluvun neliöjuuren. -IMSUB = KOMPLEKSI.EROTUS ## Palauttaa kahden kompleksiluvun erotuksen. -IMSUM = KOMPLEKSI.SUM ## Palauttaa kompleksilukujen summan. -OCT2BIN = OKTBIN ## Muuntaa oktaaliluvun binaariluvuksi. -OCT2DEC = OKTDES ## Muuntaa oktaaliluvun desimaaliluvuksi. -OCT2HEX = OKTHEKSA ## Muuntaa oktaaliluvun heksadesimaaliluvuksi. - - -## -## Financial functions Rahoitusfunktiot -## -ACCRINT = KERTYNYT.KORKO ## Laskee arvopaperille kertyneen koron, kun korko kertyy säännöllisin väliajoin. -ACCRINTM = KERTYNYT.KORKO.LOPUSSA ## Laskee arvopaperille kertyneen koron, kun korko maksetaan eräpäivänä. -AMORDEGRC = AMORDEGRC ## Laskee kunkin laskentakauden poiston poistokerrointa käyttämällä. -AMORLINC = AMORLINC ## Palauttaa kunkin laskentakauden poiston. -COUPDAYBS = KORKOPÄIVÄT.ALUSTA ## Palauttaa koronmaksukauden aloituspäivän ja tilityspäivän välisen ajanjakson päivien määrän. -COUPDAYS = KORKOPÄIVÄT ## Palauttaa päivien määrän koronmaksukaudelta, johon tilityspäivä kuuluu. -COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA ## Palauttaa tilityspäivän ja seuraavan koronmaksupäivän välisen ajanjakson päivien määrän. -COUPNCD = KORKOMAKSU.SEURAAVA ## Palauttaa tilityspäivän jälkeisen seuraavan koronmaksupäivän. -COUPNUM = KORKOPÄIVÄJAKSOT ## Palauttaa arvopaperin ostopäivän ja erääntymispäivän välisten koronmaksupäivien määrän. -COUPPCD = KORKOPÄIVÄ.EDELLINEN ## Palauttaa tilityspäivää edeltävän koronmaksupäivän. -CUMIPMT = MAKSETTU.KORKO ## Palauttaa kahden jakson välisenä aikana kertyneen koron. -CUMPRINC = MAKSETTU.LYHENNYS ## Palauttaa lainalle kahden jakson välisenä aikana kertyneen lyhennyksen. -DB = DB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. -DDB = DDB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DDB-menetelmän (Double-Declining Balance) tai jonkin muun määrittämäsi menetelmän mukaan. -DISC = DISKONTTOKORKO ## Palauttaa arvopaperin diskonttokoron. -DOLLARDE = VALUUTTA.DES ## Muuntaa murtolukuna ilmoitetun valuuttamäärän desimaaliluvuksi. -DOLLARFR = VALUUTTA.MURTO ## Muuntaa desimaalilukuna ilmaistun valuuttamäärän murtoluvuksi. -DURATION = KESTO ## Palauttaa keston arvopaperille, jonka koronmaksu tapahtuu säännöllisesti. -EFFECT = KORKO.EFEKT ## Palauttaa todellisen vuosikoron. -FV = TULEVA.ARVO ## Palauttaa sijoituksen tulevan arvon. -FVSCHEDULE = TULEVA.ARVO.ERIKORKO ## Palauttaa pääoman tulevan arvon, kun pääomalle on kertynyt korkoa vaihtelevasti. -INTRATE = KORKO.ARVOPAPERI ## Palauttaa arvopaperin korkokannan täysin sijoitetulle arvopaperille. -IPMT = IPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona kertyvän koron. -IRR = SISÄINEN.KORKO ## Laskee sisäisen korkokannan kassavirrasta muodostuvalle sarjalle. -ISPMT = ONMAKSU ## Laskee sijoituksen maksetun koron tietyllä jaksolla. -MDURATION = KESTO.MUUNN ## Palauttaa muunnetun Macauley-keston arvopaperille, jonka oletettu nimellisarvo on 100 euroa. -MIRR = MSISÄINEN ## Palauttaa sisäisen korkokannan, kun positiivisten ja negatiivisten kassavirtojen rahoituskorko on erilainen. -NOMINAL = KORKO.VUOSI ## Palauttaa vuosittaisen nimelliskoron. -NPER = NJAKSO ## Palauttaa sijoituksen jaksojen määrän. -NPV = NNA ## Palauttaa sijoituksen nykyarvon toistuvista kassavirroista muodostuvan sarjan ja diskonttokoron perusteella. -ODDFPRICE = PARITON.ENS.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa ensimmäinen jakso on pariton. -ODDFYIELD = PARITON.ENS.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa ensimmäinen jakso on pariton. -ODDLPRICE = PARITON.VIIM.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa viimeinen jakso on pariton. -ODDLYIELD = PARITON.VIIM.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa viimeinen jakso on pariton. -PMT = MAKSU ## Palauttaa annuiteetin kausittaisen maksuerän. -PPMT = PPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona maksettavan lyhennyksen. -PRICE = HINTA ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan säännöllisin väliajoin. -PRICEDISC = HINTA.DISK ## Palauttaa diskontatun arvopaperin hinnan 100 euron nimellisarvoa kohden. -PRICEMAT = HINTA.LUNASTUS ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan erääntymispäivänä. -PV = NA ## Palauttaa sijoituksen nykyarvon. -RATE = KORKO ## Palauttaa annuiteetin kausittaisen korkokannan. -RECEIVED = SAATU.HINTA ## Palauttaa arvopaperin tuoton erääntymispäivänä kokonaan maksetulle sijoitukselle. -SLN = STP ## Palauttaa sijoituksen tasapoiston yhdeltä jaksolta. -SYD = VUOSIPOISTO ## Palauttaa sijoituksen vuosipoiston annettuna kautena amerikkalaisen SYD-menetelmän (Sum-of-Year's Digits) avulla. -TBILLEQ = OBLIG.TUOTTOPROS ## Palauttaa valtion obligaation tuoton vastaavana joukkovelkakirjan tuottona. -TBILLPRICE = OBLIG.HINTA ## Palauttaa obligaation hinnan 100 euron nimellisarvoa kohden. -TBILLYIELD = OBLIG.TUOTTO ## Palauttaa obligaation tuoton. -VDB = VDB ## Palauttaa annetun kauden tai kauden osan kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. -XIRR = SISÄINEN.KORKO.JAKSOTON ## Palauttaa sisäisen korkokannan kassavirtojen sarjoille, jotka eivät välttämättä ole säännöllisiä. -XNPV = NNA.JAKSOTON ## Palauttaa nettonykyarvon kassavirtasarjalle, joka ei välttämättä ole kausittainen. -YIELD = TUOTTO ## Palauttaa tuoton arvopaperille, jonka korko maksetaan säännöllisin väliajoin. -YIELDDISC = TUOTTO.DISK ## Palauttaa diskontatun arvopaperin, kuten obligaation, vuosittaisen tuoton. -YIELDMAT = TUOTTO.ERÄP ## Palauttaa erääntymispäivänään korkoa tuottavan arvopaperin vuosittaisen tuoton. - - -## -## Information functions Erikoisfunktiot -## -CELL = SOLU ## Palauttaa tietoja solun muotoilusta, sijainnista ja sisällöstä. -ERROR.TYPE = VIRHEEN.LAJI ## Palauttaa virhetyyppiä vastaavan luvun. -INFO = KUVAUS ## Palauttaa tietoja nykyisestä käyttöympäristöstä. -ISBLANK = ONTYHJÄ ## Palauttaa arvon TOSI, jos arvo on tyhjä. -ISERR = ONVIRH ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo paitsi arvo #PUUTTUU!. -ISERROR = ONVIRHE ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo. -ISEVEN = ONPARILLINEN ## Palauttaa arvon TOSI, jos arvo on parillinen. -ISLOGICAL = ONTOTUUS ## Palauttaa arvon TOSI, jos arvo on mikä tahansa looginen arvo. -ISNA = ONPUUTTUU ## Palauttaa arvon TOSI, jos virhearvo on #PUUTTUU!. -ISNONTEXT = ONEI_TEKSTI ## Palauttaa arvon TOSI, jos arvo ei ole teksti. -ISNUMBER = ONLUKU ## Palauttaa arvon TOSI, jos arvo on luku. -ISODD = ONPARITON ## Palauttaa arvon TOSI, jos arvo on pariton. -ISREF = ONVIITT ## Palauttaa arvon TOSI, jos arvo on viittaus. -ISTEXT = ONTEKSTI ## Palauttaa arvon TOSI, jos arvo on teksti. -N = N ## Palauttaa arvon luvuksi muunnettuna. -NA = PUUTTUU ## Palauttaa virhearvon #PUUTTUU!. -TYPE = TYYPPI ## Palauttaa luvun, joka ilmaisee arvon tietotyypin. - - -## -## Logical functions Loogiset funktiot -## -AND = JA ## Palauttaa arvon TOSI, jos kaikkien argumenttien arvo on TOSI. -FALSE = EPÄTOSI ## Palauttaa totuusarvon EPÄTOSI. -IF = JOS ## Määrittää suoritettavan loogisen testin. -IFERROR = JOSVIRHE ## Palauttaa määrittämäsi arvon, jos kaavan tulos on virhe; muussa tapauksessa palauttaa kaavan tuloksen. -NOT = EI ## Kääntää argumentin loogisen arvon. -OR = TAI ## Palauttaa arvon TOSI, jos minkä tahansa argumentin arvo on TOSI. -TRUE = TOSI ## Palauttaa totuusarvon TOSI. - - -## -## Lookup and reference functions Haku- ja viitefunktiot -## -ADDRESS = OSOITE ## Palauttaa laskentataulukon soluun osoittavan viittauksen tekstinä. -AREAS = ALUEET ## Palauttaa viittauksessa olevien alueiden määrän. -CHOOSE = VALITSE.INDEKSI ## Valitsee arvon arvoluettelosta. -COLUMN = SARAKE ## Palauttaa viittauksen sarakenumeron. -COLUMNS = SARAKKEET ## Palauttaa viittauksessa olevien sarakkeiden määrän. -HLOOKUP = VHAKU ## Suorittaa haun matriisin ylimmältä riviltä ja palauttaa määritetyn solun arvon. -HYPERLINK = HYPERLINKKI ## Luo pikakuvakkeen tai tekstin, joka avaa verkkopalvelimeen, intranetiin tai Internetiin tallennetun tiedoston. -INDEX = INDEKSI ## Valitsee arvon viittauksesta tai matriisista indeksin mukaan. -INDIRECT = EPÄSUORA ## Palauttaa tekstiarvona ilmaistun viittauksen. -LOOKUP = HAKU ## Etsii arvoja vektorista tai matriisista. -MATCH = VASTINE ## Etsii arvoja viittauksesta tai matriisista. -OFFSET = SIIRTYMÄ ## Palauttaa annetun viittauksen siirtymän. -ROW = RIVI ## Palauttaa viittauksen rivinumeron. -ROWS = RIVIT ## Palauttaa viittauksessa olevien rivien määrän. -RTD = RTD ## Noutaa COM-automaatiota (automaatio: Tapa käsitellä sovelluksen objekteja toisesta sovelluksesta tai kehitystyökalusta. Automaatio, jota aiemmin kutsuttiin OLE-automaatioksi, on teollisuusstandardi ja COM-mallin (Component Object Model) ominaisuus.) tukevasta ohjelmasta reaaliaikaisia tietoja. -TRANSPOSE = TRANSPONOI ## Palauttaa matriisin käänteismatriisin. -VLOOKUP = PHAKU ## Suorittaa haun matriisin ensimmäisestä sarakkeesta ja palauttaa rivillä olevan solun arvon. - - -## -## Math and trigonometry functions Matemaattiset ja trigonometriset funktiot -## -ABS = ITSEISARVO ## Palauttaa luvun itseisarvon. -ACOS = ACOS ## Palauttaa luvun arkuskosinin. -ACOSH = ACOSH ## Palauttaa luvun käänteisen hyperbolisen kosinin. -ASIN = ASIN ## Palauttaa luvun arkussinin. -ASINH = ASINH ## Palauttaa luvun käänteisen hyperbolisen sinin. -ATAN = ATAN ## Palauttaa luvun arkustangentin. -ATAN2 = ATAN2 ## Palauttaa arkustangentin x- ja y-koordinaatin perusteella. -ATANH = ATANH ## Palauttaa luvun käänteisen hyperbolisen tangentin. -CEILING = PYÖRISTÄ.KERR.YLÖS ## Pyöristää luvun lähimpään kokonaislukuun tai tarkkuusargumentin lähimpään kerrannaiseen. -COMBIN = KOMBINAATIO ## Palauttaa mahdollisten kombinaatioiden määrän annetulle objektien määrälle. -COS = COS ## Palauttaa luvun kosinin. -COSH = COSH ## Palauttaa luvun hyperbolisen kosinin. -DEGREES = ASTEET ## Muuntaa radiaanit asteiksi. -EVEN = PARILLINEN ## Pyöristää luvun ylöspäin lähimpään parilliseen kokonaislukuun. -EXP = EKSPONENTTI ## Palauttaa e:n korotettuna annetun luvun osoittamaan potenssiin. -FACT = KERTOMA ## Palauttaa luvun kertoman. -FACTDOUBLE = KERTOMA.OSA ## Palauttaa luvun osakertoman. -FLOOR = PYÖRISTÄ.KERR.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). -GCD = SUURIN.YHT.TEKIJÄ ## Palauttaa suurimman yhteisen tekijän. -INT = KOKONAISLUKU ## Pyöristää luvun alaspäin lähimpään kokonaislukuun. -LCM = PIENIN.YHT.JAETTAVA ## Palauttaa pienimmän yhteisen tekijän. -LN = LUONNLOG ## Palauttaa luvun luonnollisen logaritmin. -LOG = LOG ## Laskee luvun logaritmin käyttämällä annettua kantalukua. -LOG10 = LOG10 ## Palauttaa luvun kymmenkantaisen logaritmin. -MDETERM = MDETERM ## Palauttaa matriisin matriisideterminantin. -MINVERSE = MKÄÄNTEINEN ## Palauttaa matriisin käänteismatriisin. -MMULT = MKERRO ## Palauttaa kahden matriisin tulon. -MOD = JAKOJ ## Palauttaa jakolaskun jäännöksen. -MROUND = PYÖRISTÄ.KERR ## Palauttaa luvun pyöristettynä annetun luvun kerrannaiseen. -MULTINOMIAL = MULTINOMI ## Palauttaa lukujoukon multinomin. -ODD = PARITON ## Pyöristää luvun ylöspäin lähimpään parittomaan kokonaislukuun. -PI = PII ## Palauttaa piin arvon. -POWER = POTENSSI ## Palauttaa luvun korotettuna haluttuun potenssiin. -PRODUCT = TULO ## Kertoo annetut argumentit. -QUOTIENT = OSAMÄÄRÄ ## Palauttaa osamäärän kokonaislukuosan. -RADIANS = RADIAANIT ## Muuntaa asteet radiaaneiksi. -RAND = SATUNNAISLUKU ## Palauttaa satunnaisluvun väliltä 0–1. -RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ ## Palauttaa satunnaisluvun määritettyjen lukujen väliltä. -ROMAN = ROMAN ## Muuntaa arabialaisen numeron tekstimuotoiseksi roomalaiseksi numeroksi. -ROUND = PYÖRISTÄ ## Pyöristää luvun annettuun määrään desimaaleja. -ROUNDDOWN = PYÖRISTÄ.DES.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). -ROUNDUP = PYÖRISTÄ.DES.YLÖS ## Pyöristää luvun ylöspäin (poispäin nollasta). -SERIESSUM = SARJA.SUMMA ## Palauttaa kaavaan perustuvan potenssisarjan arvon. -SIGN = ETUMERKKI ## Palauttaa luvun etumerkin. -SIN = SIN ## Palauttaa annetun kulman sinin. -SINH = SINH ## Palauttaa luvun hyperbolisen sinin. -SQRT = NELIÖJUURI ## Palauttaa positiivisen neliöjuuren. -SQRTPI = NELIÖJUURI.PII ## Palauttaa tulon (luku * pii) neliöjuuren. -SUBTOTAL = VÄLISUMMA ## Palauttaa luettelon tai tietokannan välisumman. -SUM = SUMMA ## Laskee yhteen annetut argumentit. -SUMIF = SUMMA.JOS ## Laskee ehdot täyttävien solujen summan. -SUMIFS = SUMMA.JOS.JOUKKO ## Laskee yhteen solualueen useita ehtoja vastaavat solut. -SUMPRODUCT = TULOJEN.SUMMA ## Palauttaa matriisin toisiaan vastaavien osien tulojen summan. -SUMSQ = NELIÖSUMMA ## Palauttaa argumenttien neliöiden summan. -SUMX2MY2 = NELIÖSUMMIEN.EROTUS ## Palauttaa kahden matriisin toisiaan vastaavien arvojen laskettujen neliösummien erotuksen. -SUMX2PY2 = NELIÖSUMMIEN.SUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen neliösummien summan. -SUMXMY2 = EROTUSTEN.NELIÖSUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen erotusten neliösumman. -TAN = TAN ## Palauttaa luvun tangentin. -TANH = TANH ## Palauttaa luvun hyperbolisen tangentin. -TRUNC = KATKAISE ## Katkaisee luvun kokonaisluvuksi. - - -## -## Statistical functions Tilastolliset funktiot -## -AVEDEV = KESKIPOIKKEAMA ## Palauttaa hajontojen itseisarvojen keskiarvon. -AVERAGE = KESKIARVO ## Palauttaa argumenttien keskiarvon. -AVERAGEA = KESKIARVOA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, keskiarvon. -AVERAGEIF = KESKIARVO.JOS ## Palauttaa alueen niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka täyttävät annetut ehdot. -AVERAGEIFS = KESKIARVO.JOS.JOUKKO ## Palauttaa niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka vastaavat useita ehtoja. -BETADIST = BEETAJAKAUMA ## Palauttaa kumulatiivisen beetajakaumafunktion arvon. -BETAINV = BEETAJAKAUMA.KÄÄNT ## Palauttaa määritetyn beetajakauman käänteisen kumulatiivisen jakaumafunktion arvon. -BINOMDIST = BINOMIJAKAUMA ## Palauttaa yksittäisen termin binomijakaumatodennäköisyyden. -CHIDIST = CHIJAKAUMA ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden. -CHIINV = CHIJAKAUMA.KÄÄNT ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden käänteisarvon. -CHITEST = CHITESTI ## Palauttaa riippumattomuustestin tuloksen. -CONFIDENCE = LUOTTAMUSVÄLI ## Palauttaa luottamusvälin populaation keskiarvolle. -CORREL = KORRELAATIO ## Palauttaa kahden arvojoukon korrelaatiokertoimen. -COUNT = LASKE ## Laskee argumenttiluettelossa olevien lukujen määrän. -COUNTA = LASKE.A ## Laskee argumenttiluettelossa olevien arvojen määrän. -COUNTBLANK = LASKE.TYHJÄT ## Laskee alueella olevien tyhjien solujen määrän. -COUNTIF = LASKE.JOS ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa annettuja ehtoja. -COUNTIFS = LASKE.JOS.JOUKKO ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa useita ehtoja. -COVAR = KOVARIANSSI ## Palauttaa kovarianssin, joka on keskiarvo havaintoaineiston kunkin pisteparin poikkeamien tuloista. -CRITBINOM = BINOMIJAKAUMA.KRIT ## Palauttaa pienimmän arvon, jossa binomijakauman kertymäfunktion arvo on pienempi tai yhtä suuri kuin vertailuarvo. -DEVSQ = OIKAISTU.NELIÖSUMMA ## Palauttaa keskipoikkeamien neliösumman. -EXPONDIST = EKSPONENTIAALIJAKAUMA ## Palauttaa eksponentiaalijakauman. -FDIST = FJAKAUMA ## Palauttaa F-todennäköisyysjakauman. -FINV = FJAKAUMA.KÄÄNT ## Palauttaa F-todennäköisyysjakauman käänteisfunktion. -FISHER = FISHER ## Palauttaa Fisher-muunnoksen. -FISHERINV = FISHER.KÄÄNT ## Palauttaa käänteisen Fisher-muunnoksen. -FORECAST = ENNUSTE ## Palauttaa lineaarisen trendin arvon. -FREQUENCY = TAAJUUS ## Palauttaa frekvenssijakautuman pystysuuntaisena matriisina. -FTEST = FTESTI ## Palauttaa F-testin tuloksen. -GAMMADIST = GAMMAJAKAUMA ## Palauttaa gammajakauman. -GAMMAINV = GAMMAJAKAUMA.KÄÄNT ## Palauttaa käänteisen gammajakauman kertymäfunktion. -GAMMALN = GAMMALN ## Palauttaa gammafunktion luonnollisen logaritmin G(x). -GEOMEAN = KESKIARVO.GEOM ## Palauttaa geometrisen keskiarvon. -GROWTH = KASVU ## Palauttaa eksponentiaalisen trendin arvon. -HARMEAN = KESKIARVO.HARM ## Palauttaa harmonisen keskiarvon. -HYPGEOMDIST = HYPERGEOM.JAKAUMA ## Palauttaa hypergeometrisen jakauman. -INTERCEPT = LEIKKAUSPISTE ## Palauttaa lineaarisen regressiosuoran leikkauspisteen. -KURT = KURT ## Palauttaa tietoalueen vinous-arvon eli huipukkuuden. -LARGE = SUURI ## Palauttaa tietojoukon k:nneksi suurimman arvon. -LINEST = LINREGR ## Palauttaa lineaarisen trendin parametrit. -LOGEST = LOGREGR ## Palauttaa eksponentiaalisen trendin parametrit. -LOGINV = LOGNORM.JAKAUMA.KÄÄNT ## Palauttaa lognormeeratun jakauman käänteisfunktion. -LOGNORMDIST = LOGNORM.JAKAUMA ## Palauttaa lognormaalisen jakauman kertymäfunktion. -MAX = MAKS ## Palauttaa suurimman arvon argumenttiluettelosta. -MAXA = MAKSA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, suurimman arvon. -MEDIAN = MEDIAANI ## Palauttaa annettujen lukujen mediaanin. -MIN = MIN ## Palauttaa pienimmän arvon argumenttiluettelosta. -MINA = MINA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, pienimmän arvon. -MODE = MOODI ## Palauttaa tietojoukossa useimmin esiintyvän arvon. -NEGBINOMDIST = BINOMIJAKAUMA.NEG ## Palauttaa negatiivisen binomijakauman. -NORMDIST = NORM.JAKAUMA ## Palauttaa normaalijakauman kertymäfunktion. -NORMINV = NORM.JAKAUMA.KÄÄNT ## Palauttaa käänteisen normaalijakauman kertymäfunktion. -NORMSDIST = NORM.JAKAUMA.NORMIT ## Palauttaa normitetun normaalijakauman kertymäfunktion. -NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT ## Palauttaa normitetun normaalijakauman kertymäfunktion käänteisarvon. -PEARSON = PEARSON ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen. -PERCENTILE = PROSENTTIPISTE ## Palauttaa alueen arvojen k:nnen prosenttipisteen. -PERCENTRANK = PROSENTTIJÄRJESTYS ## Palauttaa tietojoukon arvon prosentuaalisen järjestysluvun. -PERMUT = PERMUTAATIO ## Palauttaa mahdollisten permutaatioiden määrän annetulle objektien määrälle. -POISSON = POISSON ## Palauttaa Poissonin todennäköisyysjakauman. -PROB = TODENNÄKÖISYYS ## Palauttaa todennäköisyyden sille, että arvot ovat tietyltä väliltä. -QUARTILE = NELJÄNNES ## Palauttaa tietoalueen neljänneksen. -RANK = ARVON.MUKAAN ## Palauttaa luvun paikan lukuarvoluettelossa. -RSQ = PEARSON.NELIÖ ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen neliön. -SKEW = JAKAUMAN.VINOUS ## Palauttaa jakauman vinouden. -SLOPE = KULMAKERROIN ## Palauttaa lineaarisen regressiosuoran kulmakertoimen. -SMALL = PIENI ## Palauttaa tietojoukon k:nneksi pienimmän arvon. -STANDARDIZE = NORMITA ## Palauttaa normitetun arvon. -STDEV = KESKIHAJONTA ## Laskee populaation keskihajonnan otoksen perusteella. -STDEVA = KESKIHAJONTAA ## Laskee populaation keskihajonnan otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. -STDEVP = KESKIHAJONTAP ## Laskee normaalijakautuman koko populaation perusteella. -STDEVPA = KESKIHAJONTAPA ## Laskee populaation keskihajonnan koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. -STEYX = KESKIVIRHE ## Palauttaa regression kutakin x-arvoa vastaavan ennustetun y-arvon keskivirheen. -TDIST = TJAKAUMA ## Palauttaa t-jakautuman. -TINV = TJAKAUMA.KÄÄNT ## Palauttaa käänteisen t-jakauman. -TREND = SUUNTAUS ## Palauttaa lineaarisen trendin arvoja. -TRIMMEAN = KESKIARVO.TASATTU ## Palauttaa tietojoukon tasatun keskiarvon. -TTEST = TTESTI ## Palauttaa t-testiin liittyvän todennäköisyyden. -VAR = VAR ## Arvioi populaation varianssia otoksen perusteella. -VARA = VARA ## Laskee populaation varianssin otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. -VARP = VARP ## Laskee varianssin koko populaation perusteella. -VARPA = VARPA ## Laskee populaation varianssin koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. -WEIBULL = WEIBULL ## Palauttaa Weibullin jakauman. -ZTEST = ZTESTI ## Palauttaa z-testin yksisuuntaisen todennäköisyysarvon. - - -## -## Text functions Tekstifunktiot -## -ASC = ASC ## Muuntaa merkkijonossa olevat englanninkieliset DBCS- tai katakana-merkit SBCS-merkeiksi. -BAHTTEXT = BAHTTEKSTI ## Muuntaa luvun tekstiksi ß (baht) -valuuttamuotoa käyttämällä. -CHAR = MERKKI ## Palauttaa koodin lukua vastaavan merkin. -CLEAN = SIIVOA ## Poistaa tekstistä kaikki tulostumattomat merkit. -CODE = KOODI ## Palauttaa tekstimerkkijonon ensimmäisen merkin numerokoodin. -CONCATENATE = KETJUTA ## Yhdistää useat merkkijonot yhdeksi merkkijonoksi. -DOLLAR = VALUUTTA ## Muuntaa luvun tekstiksi $ (dollari) -valuuttamuotoa käyttämällä. -EXACT = VERTAA ## Tarkistaa, ovatko kaksi tekstiarvoa samanlaiset. -FIND = ETSI ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). -FINDB = ETSIB ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). -FIXED = KIINTEÄ ## Muotoilee luvun tekstiksi, jossa on kiinteä määrä desimaaleja. -JIS = JIS ## Muuntaa merkkijonossa olevat englanninkieliset SBCS- tai katakana-merkit DBCS-merkeiksi. -LEFT = VASEN ## Palauttaa tekstiarvon vasemmanpuoliset merkit. -LEFTB = VASENB ## Palauttaa tekstiarvon vasemmanpuoliset merkit. -LEN = PITUUS ## Palauttaa tekstimerkkijonon merkkien määrän. -LENB = PITUUSB ## Palauttaa tekstimerkkijonon merkkien määrän. -LOWER = PIENET ## Muuntaa tekstin pieniksi kirjaimiksi. -MID = POIMI.TEKSTI ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. -MIDB = POIMI.TEKSTIB ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. -PHONETIC = FONEETTINEN ## Hakee foneettiset (furigana) merkit merkkijonosta. -PROPER = ERISNIMI ## Muuttaa merkkijonon kunkin sanan ensimmäisen kirjaimen isoksi. -REPLACE = KORVAA ## Korvaa tekstissä olevat merkit. -REPLACEB = KORVAAB ## Korvaa tekstissä olevat merkit. -REPT = TOISTA ## Toistaa tekstin annetun määrän kertoja. -RIGHT = OIKEA ## Palauttaa tekstiarvon oikeanpuoliset merkit. -RIGHTB = OIKEAB ## Palauttaa tekstiarvon oikeanpuoliset merkit. -SEARCH = KÄY.LÄPI ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). -SEARCHB = KÄY.LÄPIB ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). -SUBSTITUTE = VAIHDA ## Korvaa merkkijonossa olevan tekstin toisella. -T = T ## Muuntaa argumentit tekstiksi. -TEXT = TEKSTI ## Muotoilee luvun ja muuntaa sen tekstiksi. -TRIM = POISTA.VÄLIT ## Poistaa välilyönnit tekstistä. -UPPER = ISOT ## Muuntaa tekstin isoiksi kirjaimiksi. -VALUE = ARVO ## Muuntaa tekstiargumentin luvuksi. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Apuohjelma- ja automaatiofunktiot +## +GETPIVOTDATA = NOUDA.PIVOT.TIEDOT ## Palauttaa pivot-taulukkoraporttiin tallennettuja tietoja. + + +## +## Cube functions Kuutiofunktiot +## +CUBEKPIMEMBER = KUUTIOKPIJÄSEN ## Palauttaa suorituskykyilmaisimen (KPI) nimen, ominaisuuden sekä mitan ja näyttää nimen sekä ominaisuuden solussa. KPI on mitattavissa oleva suure, kuten kuukauden bruttotuotto tai vuosineljänneksen työntekijäkohtainen liikevaihto, joiden avulla tarkkaillaan organisaation suorituskykyä. +CUBEMEMBER = KUUTIONJÄSEN ## Palauttaa kuutiohierarkian jäsenen tai monikon. Tällä funktiolla voit tarkistaa, että jäsen tai monikko on olemassa kuutiossa. +CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS ## Palauttaa kuution jäsenominaisuuden arvon. Tällä funktiolla voit tarkistaa, että nimi on olemassa kuutiossa, ja palauttaa tämän jäsenen määritetyn ominaisuuden. +CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN ## Palauttaa joukon n:nnen jäsenen. Tällä funktiolla voit palauttaa joukosta elementtejä, kuten parhaan myyjän tai 10 parasta opiskelijaa. +CUBESET = KUUTIOJOUKKO ## Määrittää lasketun jäsen- tai monikkojoukon lähettämällä joukon lausekkeita palvelimessa olevalle kuutiolle. Palvelin luo joukon ja palauttaa sen Microsoft Office Excelille. +CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ ## Palauttaa joukon kohteiden määrän. +CUBEVALUE = KUUTIONARVO ## Palauttaa koostetun arvon kuutiosta. + + +## +## Database functions Tietokantafunktiot +## +DAVERAGE = TKESKIARVO ## Palauttaa valittujen tietokantamerkintöjen keskiarvon. +DCOUNT = TLASKE ## Laskee tietokannan lukuja sisältävien solujen määrän. +DCOUNTA = TLASKEA ## Laskee tietokannan tietoja sisältävien solujen määrän. +DGET = TNOUDA ## Hakee määritettyjä ehtoja vastaavan tietueen tietokannasta. +DMAX = TMAKS ## Palauttaa suurimman arvon tietokannasta valittujen arvojen joukosta. +DMIN = TMIN ## Palauttaa pienimmän arvon tietokannasta valittujen arvojen joukosta. +DPRODUCT = TTULO ## Kertoo määritetyn ehdon täyttävien tietokannan tietueiden tietyssä kentässä olevat arvot. +DSTDEV = TKESKIHAJONTA ## Laskee keskihajonnan tietokannasta valituista arvoista muodostuvan otoksen perusteella. +DSTDEVP = TKESKIHAJONTAP ## Laskee keskihajonnan tietokannasta valittujen arvojen koko populaation perusteella. +DSUM = TSUMMA ## Lisää luvut määritetyn ehdon täyttävien tietokannan tietueiden kenttäsarakkeeseen. +DVAR = TVARIANSSI ## Laskee varianssin tietokannasta valittujen arvojen otoksen perusteella. +DVARP = TVARIANSSIP ## Laskee varianssin tietokannasta valittujen arvojen koko populaation perusteella. + + +## +## Date and time functions Päivämäärä- ja aikafunktiot +## +DATE = PÄIVÄYS ## Palauttaa annetun päivämäärän järjestysluvun. +DATEVALUE = PÄIVÄYSARVO ## Muuntaa tekstimuodossa olevan päivämäärän järjestysluvuksi. +DAY = PÄIVÄ ## Muuntaa järjestysluvun kuukauden päiväksi. +DAYS360 = PÄIVÄT360 ## Laskee kahden päivämäärän välisten päivien määrän käyttäen perustana 360-päiväistä vuotta. +EDATE = PÄIVÄ.KUUKAUSI ## Palauttaa järjestyslukuna päivämäärän, joka poikkeaa aloituspäivän päivämäärästä annetun kuukausimäärän verran joko eteen- tai taaksepäin. +EOMONTH = KUUKAUSI.LOPPU ## Palauttaa järjestyslukuna sen kuukauden viimeisen päivämäärän, joka poikkeaa annetun kuukausimäärän verran eteen- tai taaksepäin. +HOUR = TUNNIT ## Muuntaa järjestysluvun tunneiksi. +MINUTE = MINUUTIT ## Muuntaa järjestysluvun minuuteiksi. +MONTH = KUUKAUSI ## Muuntaa järjestysluvun kuukausiksi. +NETWORKDAYS = TYÖPÄIVÄT ## Palauttaa kahden päivämäärän välissä olevien täysien työpäivien määrän. +NOW = NYT ## Palauttaa kuluvan päivämäärän ja ajan järjestysnumeron. +SECOND = SEKUNNIT ## Muuntaa järjestysluvun sekunneiksi. +TIME = AIKA ## Palauttaa annetun kellonajan järjestysluvun. +TIMEVALUE = AIKA_ARVO ## Muuntaa tekstimuodossa olevan kellonajan järjestysluvuksi. +TODAY = TÄMÄ.PÄIVÄ ## Palauttaa kuluvan päivän päivämäärän järjestysluvun. +WEEKDAY = VIIKONPÄIVÄ ## Muuntaa järjestysluvun viikonpäiväksi. +WEEKNUM = VIIKKO.NRO ## Muuntaa järjestysluvun luvuksi, joka ilmaisee viikon järjestysluvun vuoden alusta laskettuna. +WORKDAY = TYÖPÄIVÄ ## Palauttaa järjestysluvun päivämäärälle, joka sijaitsee annettujen työpäivien verran eteen tai taaksepäin. +YEAR = VUOSI ## Muuntaa järjestysluvun vuosiksi. +YEARFRAC = VUOSI.OSA ## Palauttaa määritettyjen päivämäärien (aloituspäivä ja lopetuspäivä) välisen osan vuodesta. + + +## +## Engineering functions Tekniset funktiot +## +BESSELI = BESSELI ## Palauttaa muunnetun Bessel-funktion In(x). +BESSELJ = BESSELJ ## Palauttaa Bessel-funktion Jn(x). +BESSELK = BESSELK ## Palauttaa muunnetun Bessel-funktion Kn(x). +BESSELY = BESSELY ## Palauttaa Bessel-funktion Yn(x). +BIN2DEC = BINDES ## Muuntaa binaariluvun desimaaliluvuksi. +BIN2HEX = BINHEKSA ## Muuntaa binaariluvun heksadesimaaliluvuksi. +BIN2OCT = BINOKT ## Muuntaa binaariluvun oktaaliluvuksi. +COMPLEX = KOMPLEKSI ## Muuntaa reaali- ja imaginaariosien kertoimet kompleksiluvuksi. +CONVERT = MUUNNA ## Muuntaa luvun toisen mittajärjestelmän mukaiseksi. +DEC2BIN = DESBIN ## Muuntaa desimaaliluvun binaariluvuksi. +DEC2HEX = DESHEKSA ## Muuntaa kymmenjärjestelmän luvun heksadesimaaliluvuksi. +DEC2OCT = DESOKT ## Muuntaa kymmenjärjestelmän luvun oktaaliluvuksi. +DELTA = SAMA.ARVO ## Tarkistaa, ovatko kaksi arvoa yhtä suuria. +ERF = VIRHEFUNKTIO ## Palauttaa virhefunktion. +ERFC = VIRHEFUNKTIO.KOMPLEMENTTI ## Palauttaa komplementtivirhefunktion. +GESTEP = RAJA ## Testaa, onko luku suurempi kuin kynnysarvo. +HEX2BIN = HEKSABIN ## Muuntaa heksadesimaaliluvun binaariluvuksi. +HEX2DEC = HEKSADES ## Muuntaa heksadesimaaliluvun desimaaliluvuksi. +HEX2OCT = HEKSAOKT ## Muuntaa heksadesimaaliluvun oktaaliluvuksi. +IMABS = KOMPLEKSI.ITSEISARVO ## Palauttaa kompleksiluvun itseisarvon (moduluksen). +IMAGINARY = KOMPLEKSI.IMAG ## Palauttaa kompleksiluvun imaginaariosan kertoimen. +IMARGUMENT = KOMPLEKSI.ARG ## Palauttaa theeta-argumentin, joka on radiaaneina annettu kulma. +IMCONJUGATE = KOMPLEKSI.KONJ ## Palauttaa kompleksiluvun konjugaattiluvun. +IMCOS = KOMPLEKSI.COS ## Palauttaa kompleksiluvun kosinin. +IMDIV = KOMPLEKSI.OSAM ## Palauttaa kahden kompleksiluvun osamäärän. +IMEXP = KOMPLEKSI.EKSP ## Palauttaa kompleksiluvun eksponentin. +IMLN = KOMPLEKSI.LN ## Palauttaa kompleksiluvun luonnollisen logaritmin. +IMLOG10 = KOMPLEKSI.LOG10 ## Palauttaa kompleksiluvun kymmenkantaisen logaritmin. +IMLOG2 = KOMPLEKSI.LOG2 ## Palauttaa kompleksiluvun kaksikantaisen logaritmin. +IMPOWER = KOMPLEKSI.POT ## Palauttaa kokonaislukupotenssiin korotetun kompleksiluvun. +IMPRODUCT = KOMPLEKSI.TULO ## Palauttaa kompleksilukujen tulon. +IMREAL = KOMPLEKSI.REAALI ## Palauttaa kompleksiluvun reaaliosan kertoimen. +IMSIN = KOMPLEKSI.SIN ## Palauttaa kompleksiluvun sinin. +IMSQRT = KOMPLEKSI.NELIÖJ ## Palauttaa kompleksiluvun neliöjuuren. +IMSUB = KOMPLEKSI.EROTUS ## Palauttaa kahden kompleksiluvun erotuksen. +IMSUM = KOMPLEKSI.SUM ## Palauttaa kompleksilukujen summan. +OCT2BIN = OKTBIN ## Muuntaa oktaaliluvun binaariluvuksi. +OCT2DEC = OKTDES ## Muuntaa oktaaliluvun desimaaliluvuksi. +OCT2HEX = OKTHEKSA ## Muuntaa oktaaliluvun heksadesimaaliluvuksi. + + +## +## Financial functions Rahoitusfunktiot +## +ACCRINT = KERTYNYT.KORKO ## Laskee arvopaperille kertyneen koron, kun korko kertyy säännöllisin väliajoin. +ACCRINTM = KERTYNYT.KORKO.LOPUSSA ## Laskee arvopaperille kertyneen koron, kun korko maksetaan eräpäivänä. +AMORDEGRC = AMORDEGRC ## Laskee kunkin laskentakauden poiston poistokerrointa käyttämällä. +AMORLINC = AMORLINC ## Palauttaa kunkin laskentakauden poiston. +COUPDAYBS = KORKOPÄIVÄT.ALUSTA ## Palauttaa koronmaksukauden aloituspäivän ja tilityspäivän välisen ajanjakson päivien määrän. +COUPDAYS = KORKOPÄIVÄT ## Palauttaa päivien määrän koronmaksukaudelta, johon tilityspäivä kuuluu. +COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA ## Palauttaa tilityspäivän ja seuraavan koronmaksupäivän välisen ajanjakson päivien määrän. +COUPNCD = KORKOMAKSU.SEURAAVA ## Palauttaa tilityspäivän jälkeisen seuraavan koronmaksupäivän. +COUPNUM = KORKOPÄIVÄJAKSOT ## Palauttaa arvopaperin ostopäivän ja erääntymispäivän välisten koronmaksupäivien määrän. +COUPPCD = KORKOPÄIVÄ.EDELLINEN ## Palauttaa tilityspäivää edeltävän koronmaksupäivän. +CUMIPMT = MAKSETTU.KORKO ## Palauttaa kahden jakson välisenä aikana kertyneen koron. +CUMPRINC = MAKSETTU.LYHENNYS ## Palauttaa lainalle kahden jakson välisenä aikana kertyneen lyhennyksen. +DB = DB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. +DDB = DDB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DDB-menetelmän (Double-Declining Balance) tai jonkin muun määrittämäsi menetelmän mukaan. +DISC = DISKONTTOKORKO ## Palauttaa arvopaperin diskonttokoron. +DOLLARDE = VALUUTTA.DES ## Muuntaa murtolukuna ilmoitetun valuuttamäärän desimaaliluvuksi. +DOLLARFR = VALUUTTA.MURTO ## Muuntaa desimaalilukuna ilmaistun valuuttamäärän murtoluvuksi. +DURATION = KESTO ## Palauttaa keston arvopaperille, jonka koronmaksu tapahtuu säännöllisesti. +EFFECT = KORKO.EFEKT ## Palauttaa todellisen vuosikoron. +FV = TULEVA.ARVO ## Palauttaa sijoituksen tulevan arvon. +FVSCHEDULE = TULEVA.ARVO.ERIKORKO ## Palauttaa pääoman tulevan arvon, kun pääomalle on kertynyt korkoa vaihtelevasti. +INTRATE = KORKO.ARVOPAPERI ## Palauttaa arvopaperin korkokannan täysin sijoitetulle arvopaperille. +IPMT = IPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona kertyvän koron. +IRR = SISÄINEN.KORKO ## Laskee sisäisen korkokannan kassavirrasta muodostuvalle sarjalle. +ISPMT = ONMAKSU ## Laskee sijoituksen maksetun koron tietyllä jaksolla. +MDURATION = KESTO.MUUNN ## Palauttaa muunnetun Macauley-keston arvopaperille, jonka oletettu nimellisarvo on 100 euroa. +MIRR = MSISÄINEN ## Palauttaa sisäisen korkokannan, kun positiivisten ja negatiivisten kassavirtojen rahoituskorko on erilainen. +NOMINAL = KORKO.VUOSI ## Palauttaa vuosittaisen nimelliskoron. +NPER = NJAKSO ## Palauttaa sijoituksen jaksojen määrän. +NPV = NNA ## Palauttaa sijoituksen nykyarvon toistuvista kassavirroista muodostuvan sarjan ja diskonttokoron perusteella. +ODDFPRICE = PARITON.ENS.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa ensimmäinen jakso on pariton. +ODDFYIELD = PARITON.ENS.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa ensimmäinen jakso on pariton. +ODDLPRICE = PARITON.VIIM.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa viimeinen jakso on pariton. +ODDLYIELD = PARITON.VIIM.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa viimeinen jakso on pariton. +PMT = MAKSU ## Palauttaa annuiteetin kausittaisen maksuerän. +PPMT = PPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona maksettavan lyhennyksen. +PRICE = HINTA ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan säännöllisin väliajoin. +PRICEDISC = HINTA.DISK ## Palauttaa diskontatun arvopaperin hinnan 100 euron nimellisarvoa kohden. +PRICEMAT = HINTA.LUNASTUS ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan erääntymispäivänä. +PV = NA ## Palauttaa sijoituksen nykyarvon. +RATE = KORKO ## Palauttaa annuiteetin kausittaisen korkokannan. +RECEIVED = SAATU.HINTA ## Palauttaa arvopaperin tuoton erääntymispäivänä kokonaan maksetulle sijoitukselle. +SLN = STP ## Palauttaa sijoituksen tasapoiston yhdeltä jaksolta. +SYD = VUOSIPOISTO ## Palauttaa sijoituksen vuosipoiston annettuna kautena amerikkalaisen SYD-menetelmän (Sum-of-Year's Digits) avulla. +TBILLEQ = OBLIG.TUOTTOPROS ## Palauttaa valtion obligaation tuoton vastaavana joukkovelkakirjan tuottona. +TBILLPRICE = OBLIG.HINTA ## Palauttaa obligaation hinnan 100 euron nimellisarvoa kohden. +TBILLYIELD = OBLIG.TUOTTO ## Palauttaa obligaation tuoton. +VDB = VDB ## Palauttaa annetun kauden tai kauden osan kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. +XIRR = SISÄINEN.KORKO.JAKSOTON ## Palauttaa sisäisen korkokannan kassavirtojen sarjoille, jotka eivät välttämättä ole säännöllisiä. +XNPV = NNA.JAKSOTON ## Palauttaa nettonykyarvon kassavirtasarjalle, joka ei välttämättä ole kausittainen. +YIELD = TUOTTO ## Palauttaa tuoton arvopaperille, jonka korko maksetaan säännöllisin väliajoin. +YIELDDISC = TUOTTO.DISK ## Palauttaa diskontatun arvopaperin, kuten obligaation, vuosittaisen tuoton. +YIELDMAT = TUOTTO.ERÄP ## Palauttaa erääntymispäivänään korkoa tuottavan arvopaperin vuosittaisen tuoton. + + +## +## Information functions Erikoisfunktiot +## +CELL = SOLU ## Palauttaa tietoja solun muotoilusta, sijainnista ja sisällöstä. +ERROR.TYPE = VIRHEEN.LAJI ## Palauttaa virhetyyppiä vastaavan luvun. +INFO = KUVAUS ## Palauttaa tietoja nykyisestä käyttöympäristöstä. +ISBLANK = ONTYHJÄ ## Palauttaa arvon TOSI, jos arvo on tyhjä. +ISERR = ONVIRH ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo paitsi arvo #PUUTTUU!. +ISERROR = ONVIRHE ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo. +ISEVEN = ONPARILLINEN ## Palauttaa arvon TOSI, jos arvo on parillinen. +ISLOGICAL = ONTOTUUS ## Palauttaa arvon TOSI, jos arvo on mikä tahansa looginen arvo. +ISNA = ONPUUTTUU ## Palauttaa arvon TOSI, jos virhearvo on #PUUTTUU!. +ISNONTEXT = ONEI_TEKSTI ## Palauttaa arvon TOSI, jos arvo ei ole teksti. +ISNUMBER = ONLUKU ## Palauttaa arvon TOSI, jos arvo on luku. +ISODD = ONPARITON ## Palauttaa arvon TOSI, jos arvo on pariton. +ISREF = ONVIITT ## Palauttaa arvon TOSI, jos arvo on viittaus. +ISTEXT = ONTEKSTI ## Palauttaa arvon TOSI, jos arvo on teksti. +N = N ## Palauttaa arvon luvuksi muunnettuna. +NA = PUUTTUU ## Palauttaa virhearvon #PUUTTUU!. +TYPE = TYYPPI ## Palauttaa luvun, joka ilmaisee arvon tietotyypin. + + +## +## Logical functions Loogiset funktiot +## +AND = JA ## Palauttaa arvon TOSI, jos kaikkien argumenttien arvo on TOSI. +FALSE = EPÄTOSI ## Palauttaa totuusarvon EPÄTOSI. +IF = JOS ## Määrittää suoritettavan loogisen testin. +IFERROR = JOSVIRHE ## Palauttaa määrittämäsi arvon, jos kaavan tulos on virhe; muussa tapauksessa palauttaa kaavan tuloksen. +NOT = EI ## Kääntää argumentin loogisen arvon. +OR = TAI ## Palauttaa arvon TOSI, jos minkä tahansa argumentin arvo on TOSI. +TRUE = TOSI ## Palauttaa totuusarvon TOSI. + + +## +## Lookup and reference functions Haku- ja viitefunktiot +## +ADDRESS = OSOITE ## Palauttaa laskentataulukon soluun osoittavan viittauksen tekstinä. +AREAS = ALUEET ## Palauttaa viittauksessa olevien alueiden määrän. +CHOOSE = VALITSE.INDEKSI ## Valitsee arvon arvoluettelosta. +COLUMN = SARAKE ## Palauttaa viittauksen sarakenumeron. +COLUMNS = SARAKKEET ## Palauttaa viittauksessa olevien sarakkeiden määrän. +HLOOKUP = VHAKU ## Suorittaa haun matriisin ylimmältä riviltä ja palauttaa määritetyn solun arvon. +HYPERLINK = HYPERLINKKI ## Luo pikakuvakkeen tai tekstin, joka avaa verkkopalvelimeen, intranetiin tai Internetiin tallennetun tiedoston. +INDEX = INDEKSI ## Valitsee arvon viittauksesta tai matriisista indeksin mukaan. +INDIRECT = EPÄSUORA ## Palauttaa tekstiarvona ilmaistun viittauksen. +LOOKUP = HAKU ## Etsii arvoja vektorista tai matriisista. +MATCH = VASTINE ## Etsii arvoja viittauksesta tai matriisista. +OFFSET = SIIRTYMÄ ## Palauttaa annetun viittauksen siirtymän. +ROW = RIVI ## Palauttaa viittauksen rivinumeron. +ROWS = RIVIT ## Palauttaa viittauksessa olevien rivien määrän. +RTD = RTD ## Noutaa COM-automaatiota (automaatio: Tapa käsitellä sovelluksen objekteja toisesta sovelluksesta tai kehitystyökalusta. Automaatio, jota aiemmin kutsuttiin OLE-automaatioksi, on teollisuusstandardi ja COM-mallin (Component Object Model) ominaisuus.) tukevasta ohjelmasta reaaliaikaisia tietoja. +TRANSPOSE = TRANSPONOI ## Palauttaa matriisin käänteismatriisin. +VLOOKUP = PHAKU ## Suorittaa haun matriisin ensimmäisestä sarakkeesta ja palauttaa rivillä olevan solun arvon. + + +## +## Math and trigonometry functions Matemaattiset ja trigonometriset funktiot +## +ABS = ITSEISARVO ## Palauttaa luvun itseisarvon. +ACOS = ACOS ## Palauttaa luvun arkuskosinin. +ACOSH = ACOSH ## Palauttaa luvun käänteisen hyperbolisen kosinin. +ASIN = ASIN ## Palauttaa luvun arkussinin. +ASINH = ASINH ## Palauttaa luvun käänteisen hyperbolisen sinin. +ATAN = ATAN ## Palauttaa luvun arkustangentin. +ATAN2 = ATAN2 ## Palauttaa arkustangentin x- ja y-koordinaatin perusteella. +ATANH = ATANH ## Palauttaa luvun käänteisen hyperbolisen tangentin. +CEILING = PYÖRISTÄ.KERR.YLÖS ## Pyöristää luvun lähimpään kokonaislukuun tai tarkkuusargumentin lähimpään kerrannaiseen. +COMBIN = KOMBINAATIO ## Palauttaa mahdollisten kombinaatioiden määrän annetulle objektien määrälle. +COS = COS ## Palauttaa luvun kosinin. +COSH = COSH ## Palauttaa luvun hyperbolisen kosinin. +DEGREES = ASTEET ## Muuntaa radiaanit asteiksi. +EVEN = PARILLINEN ## Pyöristää luvun ylöspäin lähimpään parilliseen kokonaislukuun. +EXP = EKSPONENTTI ## Palauttaa e:n korotettuna annetun luvun osoittamaan potenssiin. +FACT = KERTOMA ## Palauttaa luvun kertoman. +FACTDOUBLE = KERTOMA.OSA ## Palauttaa luvun osakertoman. +FLOOR = PYÖRISTÄ.KERR.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). +GCD = SUURIN.YHT.TEKIJÄ ## Palauttaa suurimman yhteisen tekijän. +INT = KOKONAISLUKU ## Pyöristää luvun alaspäin lähimpään kokonaislukuun. +LCM = PIENIN.YHT.JAETTAVA ## Palauttaa pienimmän yhteisen tekijän. +LN = LUONNLOG ## Palauttaa luvun luonnollisen logaritmin. +LOG = LOG ## Laskee luvun logaritmin käyttämällä annettua kantalukua. +LOG10 = LOG10 ## Palauttaa luvun kymmenkantaisen logaritmin. +MDETERM = MDETERM ## Palauttaa matriisin matriisideterminantin. +MINVERSE = MKÄÄNTEINEN ## Palauttaa matriisin käänteismatriisin. +MMULT = MKERRO ## Palauttaa kahden matriisin tulon. +MOD = JAKOJ ## Palauttaa jakolaskun jäännöksen. +MROUND = PYÖRISTÄ.KERR ## Palauttaa luvun pyöristettynä annetun luvun kerrannaiseen. +MULTINOMIAL = MULTINOMI ## Palauttaa lukujoukon multinomin. +ODD = PARITON ## Pyöristää luvun ylöspäin lähimpään parittomaan kokonaislukuun. +PI = PII ## Palauttaa piin arvon. +POWER = POTENSSI ## Palauttaa luvun korotettuna haluttuun potenssiin. +PRODUCT = TULO ## Kertoo annetut argumentit. +QUOTIENT = OSAMÄÄRÄ ## Palauttaa osamäärän kokonaislukuosan. +RADIANS = RADIAANIT ## Muuntaa asteet radiaaneiksi. +RAND = SATUNNAISLUKU ## Palauttaa satunnaisluvun väliltä 0–1. +RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ ## Palauttaa satunnaisluvun määritettyjen lukujen väliltä. +ROMAN = ROMAN ## Muuntaa arabialaisen numeron tekstimuotoiseksi roomalaiseksi numeroksi. +ROUND = PYÖRISTÄ ## Pyöristää luvun annettuun määrään desimaaleja. +ROUNDDOWN = PYÖRISTÄ.DES.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). +ROUNDUP = PYÖRISTÄ.DES.YLÖS ## Pyöristää luvun ylöspäin (poispäin nollasta). +SERIESSUM = SARJA.SUMMA ## Palauttaa kaavaan perustuvan potenssisarjan arvon. +SIGN = ETUMERKKI ## Palauttaa luvun etumerkin. +SIN = SIN ## Palauttaa annetun kulman sinin. +SINH = SINH ## Palauttaa luvun hyperbolisen sinin. +SQRT = NELIÖJUURI ## Palauttaa positiivisen neliöjuuren. +SQRTPI = NELIÖJUURI.PII ## Palauttaa tulon (luku * pii) neliöjuuren. +SUBTOTAL = VÄLISUMMA ## Palauttaa luettelon tai tietokannan välisumman. +SUM = SUMMA ## Laskee yhteen annetut argumentit. +SUMIF = SUMMA.JOS ## Laskee ehdot täyttävien solujen summan. +SUMIFS = SUMMA.JOS.JOUKKO ## Laskee yhteen solualueen useita ehtoja vastaavat solut. +SUMPRODUCT = TULOJEN.SUMMA ## Palauttaa matriisin toisiaan vastaavien osien tulojen summan. +SUMSQ = NELIÖSUMMA ## Palauttaa argumenttien neliöiden summan. +SUMX2MY2 = NELIÖSUMMIEN.EROTUS ## Palauttaa kahden matriisin toisiaan vastaavien arvojen laskettujen neliösummien erotuksen. +SUMX2PY2 = NELIÖSUMMIEN.SUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen neliösummien summan. +SUMXMY2 = EROTUSTEN.NELIÖSUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen erotusten neliösumman. +TAN = TAN ## Palauttaa luvun tangentin. +TANH = TANH ## Palauttaa luvun hyperbolisen tangentin. +TRUNC = KATKAISE ## Katkaisee luvun kokonaisluvuksi. + + +## +## Statistical functions Tilastolliset funktiot +## +AVEDEV = KESKIPOIKKEAMA ## Palauttaa hajontojen itseisarvojen keskiarvon. +AVERAGE = KESKIARVO ## Palauttaa argumenttien keskiarvon. +AVERAGEA = KESKIARVOA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, keskiarvon. +AVERAGEIF = KESKIARVO.JOS ## Palauttaa alueen niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka täyttävät annetut ehdot. +AVERAGEIFS = KESKIARVO.JOS.JOUKKO ## Palauttaa niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka vastaavat useita ehtoja. +BETADIST = BEETAJAKAUMA ## Palauttaa kumulatiivisen beetajakaumafunktion arvon. +BETAINV = BEETAJAKAUMA.KÄÄNT ## Palauttaa määritetyn beetajakauman käänteisen kumulatiivisen jakaumafunktion arvon. +BINOMDIST = BINOMIJAKAUMA ## Palauttaa yksittäisen termin binomijakaumatodennäköisyyden. +CHIDIST = CHIJAKAUMA ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden. +CHIINV = CHIJAKAUMA.KÄÄNT ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden käänteisarvon. +CHITEST = CHITESTI ## Palauttaa riippumattomuustestin tuloksen. +CONFIDENCE = LUOTTAMUSVÄLI ## Palauttaa luottamusvälin populaation keskiarvolle. +CORREL = KORRELAATIO ## Palauttaa kahden arvojoukon korrelaatiokertoimen. +COUNT = LASKE ## Laskee argumenttiluettelossa olevien lukujen määrän. +COUNTA = LASKE.A ## Laskee argumenttiluettelossa olevien arvojen määrän. +COUNTBLANK = LASKE.TYHJÄT ## Laskee alueella olevien tyhjien solujen määrän. +COUNTIF = LASKE.JOS ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa annettuja ehtoja. +COUNTIFS = LASKE.JOS.JOUKKO ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa useita ehtoja. +COVAR = KOVARIANSSI ## Palauttaa kovarianssin, joka on keskiarvo havaintoaineiston kunkin pisteparin poikkeamien tuloista. +CRITBINOM = BINOMIJAKAUMA.KRIT ## Palauttaa pienimmän arvon, jossa binomijakauman kertymäfunktion arvo on pienempi tai yhtä suuri kuin vertailuarvo. +DEVSQ = OIKAISTU.NELIÖSUMMA ## Palauttaa keskipoikkeamien neliösumman. +EXPONDIST = EKSPONENTIAALIJAKAUMA ## Palauttaa eksponentiaalijakauman. +FDIST = FJAKAUMA ## Palauttaa F-todennäköisyysjakauman. +FINV = FJAKAUMA.KÄÄNT ## Palauttaa F-todennäköisyysjakauman käänteisfunktion. +FISHER = FISHER ## Palauttaa Fisher-muunnoksen. +FISHERINV = FISHER.KÄÄNT ## Palauttaa käänteisen Fisher-muunnoksen. +FORECAST = ENNUSTE ## Palauttaa lineaarisen trendin arvon. +FREQUENCY = TAAJUUS ## Palauttaa frekvenssijakautuman pystysuuntaisena matriisina. +FTEST = FTESTI ## Palauttaa F-testin tuloksen. +GAMMADIST = GAMMAJAKAUMA ## Palauttaa gammajakauman. +GAMMAINV = GAMMAJAKAUMA.KÄÄNT ## Palauttaa käänteisen gammajakauman kertymäfunktion. +GAMMALN = GAMMALN ## Palauttaa gammafunktion luonnollisen logaritmin G(x). +GEOMEAN = KESKIARVO.GEOM ## Palauttaa geometrisen keskiarvon. +GROWTH = KASVU ## Palauttaa eksponentiaalisen trendin arvon. +HARMEAN = KESKIARVO.HARM ## Palauttaa harmonisen keskiarvon. +HYPGEOMDIST = HYPERGEOM.JAKAUMA ## Palauttaa hypergeometrisen jakauman. +INTERCEPT = LEIKKAUSPISTE ## Palauttaa lineaarisen regressiosuoran leikkauspisteen. +KURT = KURT ## Palauttaa tietoalueen vinous-arvon eli huipukkuuden. +LARGE = SUURI ## Palauttaa tietojoukon k:nneksi suurimman arvon. +LINEST = LINREGR ## Palauttaa lineaarisen trendin parametrit. +LOGEST = LOGREGR ## Palauttaa eksponentiaalisen trendin parametrit. +LOGINV = LOGNORM.JAKAUMA.KÄÄNT ## Palauttaa lognormeeratun jakauman käänteisfunktion. +LOGNORMDIST = LOGNORM.JAKAUMA ## Palauttaa lognormaalisen jakauman kertymäfunktion. +MAX = MAKS ## Palauttaa suurimman arvon argumenttiluettelosta. +MAXA = MAKSA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, suurimman arvon. +MEDIAN = MEDIAANI ## Palauttaa annettujen lukujen mediaanin. +MIN = MIN ## Palauttaa pienimmän arvon argumenttiluettelosta. +MINA = MINA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, pienimmän arvon. +MODE = MOODI ## Palauttaa tietojoukossa useimmin esiintyvän arvon. +NEGBINOMDIST = BINOMIJAKAUMA.NEG ## Palauttaa negatiivisen binomijakauman. +NORMDIST = NORM.JAKAUMA ## Palauttaa normaalijakauman kertymäfunktion. +NORMINV = NORM.JAKAUMA.KÄÄNT ## Palauttaa käänteisen normaalijakauman kertymäfunktion. +NORMSDIST = NORM.JAKAUMA.NORMIT ## Palauttaa normitetun normaalijakauman kertymäfunktion. +NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT ## Palauttaa normitetun normaalijakauman kertymäfunktion käänteisarvon. +PEARSON = PEARSON ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen. +PERCENTILE = PROSENTTIPISTE ## Palauttaa alueen arvojen k:nnen prosenttipisteen. +PERCENTRANK = PROSENTTIJÄRJESTYS ## Palauttaa tietojoukon arvon prosentuaalisen järjestysluvun. +PERMUT = PERMUTAATIO ## Palauttaa mahdollisten permutaatioiden määrän annetulle objektien määrälle. +POISSON = POISSON ## Palauttaa Poissonin todennäköisyysjakauman. +PROB = TODENNÄKÖISYYS ## Palauttaa todennäköisyyden sille, että arvot ovat tietyltä väliltä. +QUARTILE = NELJÄNNES ## Palauttaa tietoalueen neljänneksen. +RANK = ARVON.MUKAAN ## Palauttaa luvun paikan lukuarvoluettelossa. +RSQ = PEARSON.NELIÖ ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen neliön. +SKEW = JAKAUMAN.VINOUS ## Palauttaa jakauman vinouden. +SLOPE = KULMAKERROIN ## Palauttaa lineaarisen regressiosuoran kulmakertoimen. +SMALL = PIENI ## Palauttaa tietojoukon k:nneksi pienimmän arvon. +STANDARDIZE = NORMITA ## Palauttaa normitetun arvon. +STDEV = KESKIHAJONTA ## Laskee populaation keskihajonnan otoksen perusteella. +STDEVA = KESKIHAJONTAA ## Laskee populaation keskihajonnan otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. +STDEVP = KESKIHAJONTAP ## Laskee normaalijakautuman koko populaation perusteella. +STDEVPA = KESKIHAJONTAPA ## Laskee populaation keskihajonnan koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. +STEYX = KESKIVIRHE ## Palauttaa regression kutakin x-arvoa vastaavan ennustetun y-arvon keskivirheen. +TDIST = TJAKAUMA ## Palauttaa t-jakautuman. +TINV = TJAKAUMA.KÄÄNT ## Palauttaa käänteisen t-jakauman. +TREND = SUUNTAUS ## Palauttaa lineaarisen trendin arvoja. +TRIMMEAN = KESKIARVO.TASATTU ## Palauttaa tietojoukon tasatun keskiarvon. +TTEST = TTESTI ## Palauttaa t-testiin liittyvän todennäköisyyden. +VAR = VAR ## Arvioi populaation varianssia otoksen perusteella. +VARA = VARA ## Laskee populaation varianssin otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. +VARP = VARP ## Laskee varianssin koko populaation perusteella. +VARPA = VARPA ## Laskee populaation varianssin koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. +WEIBULL = WEIBULL ## Palauttaa Weibullin jakauman. +ZTEST = ZTESTI ## Palauttaa z-testin yksisuuntaisen todennäköisyysarvon. + + +## +## Text functions Tekstifunktiot +## +ASC = ASC ## Muuntaa merkkijonossa olevat englanninkieliset DBCS- tai katakana-merkit SBCS-merkeiksi. +BAHTTEXT = BAHTTEKSTI ## Muuntaa luvun tekstiksi ß (baht) -valuuttamuotoa käyttämällä. +CHAR = MERKKI ## Palauttaa koodin lukua vastaavan merkin. +CLEAN = SIIVOA ## Poistaa tekstistä kaikki tulostumattomat merkit. +CODE = KOODI ## Palauttaa tekstimerkkijonon ensimmäisen merkin numerokoodin. +CONCATENATE = KETJUTA ## Yhdistää useat merkkijonot yhdeksi merkkijonoksi. +DOLLAR = VALUUTTA ## Muuntaa luvun tekstiksi $ (dollari) -valuuttamuotoa käyttämällä. +EXACT = VERTAA ## Tarkistaa, ovatko kaksi tekstiarvoa samanlaiset. +FIND = ETSI ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). +FINDB = ETSIB ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). +FIXED = KIINTEÄ ## Muotoilee luvun tekstiksi, jossa on kiinteä määrä desimaaleja. +JIS = JIS ## Muuntaa merkkijonossa olevat englanninkieliset SBCS- tai katakana-merkit DBCS-merkeiksi. +LEFT = VASEN ## Palauttaa tekstiarvon vasemmanpuoliset merkit. +LEFTB = VASENB ## Palauttaa tekstiarvon vasemmanpuoliset merkit. +LEN = PITUUS ## Palauttaa tekstimerkkijonon merkkien määrän. +LENB = PITUUSB ## Palauttaa tekstimerkkijonon merkkien määrän. +LOWER = PIENET ## Muuntaa tekstin pieniksi kirjaimiksi. +MID = POIMI.TEKSTI ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. +MIDB = POIMI.TEKSTIB ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. +PHONETIC = FONEETTINEN ## Hakee foneettiset (furigana) merkit merkkijonosta. +PROPER = ERISNIMI ## Muuttaa merkkijonon kunkin sanan ensimmäisen kirjaimen isoksi. +REPLACE = KORVAA ## Korvaa tekstissä olevat merkit. +REPLACEB = KORVAAB ## Korvaa tekstissä olevat merkit. +REPT = TOISTA ## Toistaa tekstin annetun määrän kertoja. +RIGHT = OIKEA ## Palauttaa tekstiarvon oikeanpuoliset merkit. +RIGHTB = OIKEAB ## Palauttaa tekstiarvon oikeanpuoliset merkit. +SEARCH = KÄY.LÄPI ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). +SEARCHB = KÄY.LÄPIB ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). +SUBSTITUTE = VAIHDA ## Korvaa merkkijonossa olevan tekstin toisella. +T = T ## Muuntaa argumentit tekstiksi. +TEXT = TEKSTI ## Muotoilee luvun ja muuntaa sen tekstiksi. +TRIM = POISTA.VÄLIT ## Poistaa välilyönnit tekstistä. +UPPER = ISOT ## Muuntaa tekstin isoiksi kirjaimiksi. +VALUE = ARVO ## Muuntaa tekstiargumentin luvuksi. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fr/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fr/functions index 03b80e5a401..8d25f6ac193 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fr/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/fr/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Fonctions de complément et d’automatisation -## -GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE ## Renvoie les données stockées dans un rapport de tableau croisé dynamique. - - -## -## Cube functions Fonctions Cube -## -CUBEKPIMEMBER = MEMBREKPICUBE ## Renvoie un nom, une propriété et une mesure d’indicateur de performance clé et affiche le nom et la propriété dans la cellule. Un indicateur de performance clé est une mesure quantifiable, telle que la marge bénéficiaire brute mensuelle ou la rotation trimestrielle du personnel, utilisée pour évaluer les performances d’une entreprise. -CUBEMEMBER = MEMBRECUBE ## Renvoie un membre ou un uplet dans une hiérarchie de cubes. Utilisez cette fonction pour valider l’existence du membre ou de l’uplet dans le cube. -CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE ## Renvoie la valeur d’une propriété de membre du cube. Utilisez cette fonction pour valider l’existence d’un nom de membre dans le cube et pour renvoyer la propriété spécifiée pour ce membre. -CUBERANKEDMEMBER = RANGMEMBRECUBE ## Renvoie le nième membre ou le membre placé à un certain rang dans un ensemble. Utilisez cette fonction pour renvoyer un ou plusieurs éléments d’un ensemble, tels que les meilleurs vendeurs ou les 10 meilleurs étudiants. -CUBESET = JEUCUBE ## Définit un ensemble calculé de membres ou d’uplets en envoyant une expression définie au cube sur le serveur qui crée l’ensemble et le renvoie à Microsoft Office Excel. -CUBESETCOUNT = NBJEUCUBE ## Renvoie le nombre d’éléments dans un jeu. -CUBEVALUE = VALEURCUBE ## Renvoie une valeur d’agrégation issue d’un cube. - - -## -## Database functions Fonctions de base de données -## -DAVERAGE = BDMOYENNE ## Renvoie la moyenne des entrées de base de données sélectionnées. -DCOUNT = BCOMPTE ## Compte le nombre de cellules d’une base de données qui contiennent des nombres. -DCOUNTA = BDNBVAL ## Compte les cellules non vides d’une base de données. -DGET = BDLIRE ## Extrait d’une base de données un enregistrement unique répondant aux critères spécifiés. -DMAX = BDMAX ## Renvoie la valeur maximale des entrées de base de données sélectionnées. -DMIN = BDMIN ## Renvoie la valeur minimale des entrées de base de données sélectionnées. -DPRODUCT = BDPRODUIT ## Multiplie les valeurs d’un champ particulier des enregistrements d’une base de données, qui répondent aux critères spécifiés. -DSTDEV = BDECARTYPE ## Calcule l’écart type pour un échantillon d’entrées de base de données sélectionnées. -DSTDEVP = BDECARTYPEP ## Calcule l’écart type pour l’ensemble d’une population d’entrées de base de données sélectionnées. -DSUM = BDSOMME ## Ajoute les nombres dans la colonne de champ des enregistrements de la base de données, qui répondent aux critères. -DVAR = BDVAR ## Calcule la variance pour un échantillon d’entrées de base de données sélectionnées. -DVARP = BDVARP ## Calcule la variance pour l’ensemble d’une population d’entrées de base de données sélectionnées. - - -## -## Date and time functions Fonctions de date et d’heure -## -DATE = DATE ## Renvoie le numéro de série d’une date précise. -DATEVALUE = DATEVAL ## Convertit une date représentée sous forme de texte en numéro de série. -DAY = JOUR ## Convertit un numéro de série en jour du mois. -DAYS360 = JOURS360 ## Calcule le nombre de jours qui séparent deux dates sur la base d’une année de 360 jours. -EDATE = MOIS.DECALER ## Renvoie le numéro séquentiel de la date qui représente une date spécifiée (l’argument date_départ), corrigée en plus ou en moins du nombre de mois indiqué. -EOMONTH = FIN.MOIS ## Renvoie le numéro séquentiel de la date du dernier jour du mois précédant ou suivant la date_départ du nombre de mois indiqué. -HOUR = HEURE ## Convertit un numéro de série en heure. -MINUTE = MINUTE ## Convertit un numéro de série en minute. -MONTH = MOIS ## Convertit un numéro de série en mois. -NETWORKDAYS = NB.JOURS.OUVRES ## Renvoie le nombre de jours ouvrés entiers compris entre deux dates. -NOW = MAINTENANT ## Renvoie le numéro de série de la date et de l’heure du jour. -SECOND = SECONDE ## Convertit un numéro de série en seconde. -TIME = TEMPS ## Renvoie le numéro de série d’une heure précise. -TIMEVALUE = TEMPSVAL ## Convertit une date représentée sous forme de texte en numéro de série. -TODAY = AUJOURDHUI ## Renvoie le numéro de série de la date du jour. -WEEKDAY = JOURSEM ## Convertit un numéro de série en jour de la semaine. -WEEKNUM = NO.SEMAINE ## Convertit un numéro de série en un numéro représentant l’ordre de la semaine dans l’année. -WORKDAY = SERIE.JOUR.OUVRE ## Renvoie le numéro de série de la date avant ou après le nombre de jours ouvrés spécifiés. -YEAR = ANNEE ## Convertit un numéro de série en année. -YEARFRAC = FRACTION.ANNEE ## Renvoie la fraction de l’année représentant le nombre de jours entre la date de début et la date de fin. - - -## -## Engineering functions Fonctions d’ingénierie -## -BESSELI = BESSELI ## Renvoie la fonction Bessel modifiée In(x). -BESSELJ = BESSELJ ## Renvoie la fonction Bessel Jn(x). -BESSELK = BESSELK ## Renvoie la fonction Bessel modifiée Kn(x). -BESSELY = BESSELY ## Renvoie la fonction Bessel Yn(x). -BIN2DEC = BINDEC ## Convertit un nombre binaire en nombre décimal. -BIN2HEX = BINHEX ## Convertit un nombre binaire en nombre hexadécimal. -BIN2OCT = BINOCT ## Convertit un nombre binaire en nombre octal. -COMPLEX = COMPLEXE ## Convertit des coefficients réel et imaginaire en un nombre complexe. -CONVERT = CONVERT ## Convertit un nombre d’une unité de mesure à une autre. -DEC2BIN = DECBIN ## Convertit un nombre décimal en nombre binaire. -DEC2HEX = DECHEX ## Convertit un nombre décimal en nombre hexadécimal. -DEC2OCT = DECOCT ## Convertit un nombre décimal en nombre octal. -DELTA = DELTA ## Teste l’égalité de deux nombres. -ERF = ERF ## Renvoie la valeur de la fonction d’erreur. -ERFC = ERFC ## Renvoie la valeur de la fonction d’erreur complémentaire. -GESTEP = SUP.SEUIL ## Teste si un nombre est supérieur à une valeur de seuil. -HEX2BIN = HEXBIN ## Convertit un nombre hexadécimal en nombre binaire. -HEX2DEC = HEXDEC ## Convertit un nombre hexadécimal en nombre décimal. -HEX2OCT = HEXOCT ## Convertit un nombre hexadécimal en nombre octal. -IMABS = COMPLEXE.MODULE ## Renvoie la valeur absolue (module) d’un nombre complexe. -IMAGINARY = COMPLEXE.IMAGINAIRE ## Renvoie le coefficient imaginaire d’un nombre complexe. -IMARGUMENT = COMPLEXE.ARGUMENT ## Renvoie l’argument thêta, un angle exprimé en radians. -IMCONJUGATE = COMPLEXE.CONJUGUE ## Renvoie le nombre complexe conjugué d’un nombre complexe. -IMCOS = IMCOS ## Renvoie le cosinus d’un nombre complexe. -IMDIV = COMPLEXE.DIV ## Renvoie le quotient de deux nombres complexes. -IMEXP = COMPLEXE.EXP ## Renvoie la fonction exponentielle d’un nombre complexe. -IMLN = COMPLEXE.LN ## Renvoie le logarithme népérien d’un nombre complexe. -IMLOG10 = COMPLEXE.LOG10 ## Calcule le logarithme en base 10 d’un nombre complexe. -IMLOG2 = COMPLEXE.LOG2 ## Calcule le logarithme en base 2 d’un nombre complexe. -IMPOWER = COMPLEXE.PUISSANCE ## Renvoie un nombre complexe élevé à une puissance entière. -IMPRODUCT = COMPLEXE.PRODUIT ## Renvoie le produit de plusieurs nombres complexes. -IMREAL = COMPLEXE.REEL ## Renvoie le coefficient réel d’un nombre complexe. -IMSIN = COMPLEXE.SIN ## Renvoie le sinus d’un nombre complexe. -IMSQRT = COMPLEXE.RACINE ## Renvoie la racine carrée d’un nombre complexe. -IMSUB = COMPLEXE.DIFFERENCE ## Renvoie la différence entre deux nombres complexes. -IMSUM = COMPLEXE.SOMME ## Renvoie la somme de plusieurs nombres complexes. -OCT2BIN = OCTBIN ## Convertit un nombre octal en nombre binaire. -OCT2DEC = OCTDEC ## Convertit un nombre octal en nombre décimal. -OCT2HEX = OCTHEX ## Convertit un nombre octal en nombre hexadécimal. - - -## -## Financial functions Fonctions financières -## -ACCRINT = INTERET.ACC ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu périodiquement. -ACCRINTM = INTERET.ACC.MAT ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu à l’échéance. -AMORDEGRC = AMORDEGRC ## Renvoie l’amortissement correspondant à chaque période comptable en utilisant un coefficient d’amortissement. -AMORLINC = AMORLINC ## Renvoie l’amortissement d’un bien à la fin d’une période fiscale donnée. -COUPDAYBS = NB.JOURS.COUPON.PREC ## Renvoie le nombre de jours entre le début de la période de coupon et la date de liquidation. -COUPDAYS = NB.JOURS.COUPONS ## Renvoie le nombre de jours pour la période du coupon contenant la date de liquidation. -COUPDAYSNC = NB.JOURS.COUPON.SUIV ## Renvoie le nombre de jours entre la date de liquidation et la date du coupon suivant la date de liquidation. -COUPNCD = DATE.COUPON.SUIV ## Renvoie la première date de coupon ultérieure à la date de règlement. -COUPNUM = NB.COUPONS ## Renvoie le nombre de coupons dus entre la date de règlement et la date d’échéance. -COUPPCD = DATE.COUPON.PREC ## Renvoie la date de coupon précédant la date de règlement. -CUMIPMT = CUMUL.INTER ## Renvoie l’intérêt cumulé payé sur un emprunt entre deux périodes. -CUMPRINC = CUMUL.PRINCPER ## Renvoie le montant cumulé des remboursements du capital d’un emprunt effectués entre deux périodes. -DB = DB ## Renvoie l’amortissement d’un bien pour une période spécifiée en utilisant la méthode de l’amortissement dégressif à taux fixe. -DDB = DDB ## Renvoie l’amortissement d’un bien pour toute période spécifiée, en utilisant la méthode de l’amortissement dégressif à taux double ou selon un coefficient à spécifier. -DISC = TAUX.ESCOMPTE ## Calcule le taux d’escompte d’une transaction. -DOLLARDE = PRIX.DEC ## Convertit un prix en euros, exprimé sous forme de fraction, en un prix en euros exprimé sous forme de nombre décimal. -DOLLARFR = PRIX.FRAC ## Convertit un prix en euros, exprimé sous forme de nombre décimal, en un prix en euros exprimé sous forme de fraction. -DURATION = DUREE ## Renvoie la durée, en années, d’un titre dont l’intérêt est perçu périodiquement. -EFFECT = TAUX.EFFECTIF ## Renvoie le taux d’intérêt annuel effectif. -FV = VC ## Renvoie la valeur future d’un investissement. -FVSCHEDULE = VC.PAIEMENTS ## Calcule la valeur future d’un investissement en appliquant une série de taux d’intérêt composites. -INTRATE = TAUX.INTERET ## Affiche le taux d’intérêt d’un titre totalement investi. -IPMT = INTPER ## Calcule le montant des intérêts d’un investissement pour une période donnée. -IRR = TRI ## Calcule le taux de rentabilité interne d’un investissement pour une succession de trésoreries. -ISPMT = ISPMT ## Calcule le montant des intérêts d’un investissement pour une période donnée. -MDURATION = DUREE.MODIFIEE ## Renvoie la durée de Macauley modifiée pour un titre ayant une valeur nominale hypothétique de 100_euros. -MIRR = TRIM ## Calcule le taux de rentabilité interne lorsque les paiements positifs et négatifs sont financés à des taux différents. -NOMINAL = TAUX.NOMINAL ## Calcule le taux d’intérêt nominal annuel. -NPER = NPM ## Renvoie le nombre de versements nécessaires pour rembourser un emprunt. -NPV = VAN ## Calcule la valeur actuelle nette d’un investissement basé sur une série de décaissements et un taux d’escompte. -ODDFPRICE = PRIX.PCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. -ODDFYIELD = REND.PCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la première période de coupon est irrégulière. -ODDLPRICE = PRIX.DCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. -ODDLYIELD = REND.DCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la dernière période de coupon est irrégulière. -PMT = VPM ## Calcule le paiement périodique d’un investissement donné. -PPMT = PRINCPER ## Calcule, pour une période donnée, la part de remboursement du principal d’un investissement. -PRICE = PRIX.TITRE ## Renvoie le prix d’un titre rapportant des intérêts périodiques, pour une valeur nominale de 100 euros. -PRICEDISC = VALEUR.ENCAISSEMENT ## Renvoie la valeur d’encaissement d’un escompte commercial, pour une valeur nominale de 100 euros. -PRICEMAT = PRIX.TITRE.ECHEANCE ## Renvoie le prix d’un titre dont la valeur nominale est 100 euros et qui rapporte des intérêts à l’échéance. -PV = PV ## Calcule la valeur actuelle d’un investissement. -RATE = TAUX ## Calcule le taux d’intérêt par période pour une annuité. -RECEIVED = VALEUR.NOMINALE ## Renvoie la valeur nominale à échéance d’un effet de commerce. -SLN = AMORLIN ## Calcule l’amortissement linéaire d’un bien pour une période donnée. -SYD = SYD ## Calcule l’amortissement d’un bien pour une période donnée sur la base de la méthode américaine Sum-of-Years Digits (amortissement dégressif à taux décroissant appliqué à une valeur constante). -TBILLEQ = TAUX.ESCOMPTE.R ## Renvoie le taux d’escompte rationnel d’un bon du Trésor. -TBILLPRICE = PRIX.BON.TRESOR ## Renvoie le prix d’un bon du Trésor d’une valeur nominale de 100 euros. -TBILLYIELD = RENDEMENT.BON.TRESOR ## Calcule le taux de rendement d’un bon du Trésor. -VDB = VDB ## Renvoie l’amortissement d’un bien pour une période spécifiée ou partielle en utilisant une méthode de l’amortissement dégressif à taux fixe. -XIRR = TRI.PAIEMENTS ## Calcule le taux de rentabilité interne d’un ensemble de paiements non périodiques. -XNPV = VAN.PAIEMENTS ## Renvoie la valeur actuelle nette d’un ensemble de paiements non périodiques. -YIELD = RENDEMENT.TITRE ## Calcule le rendement d’un titre rapportant des intérêts périodiquement. -YIELDDISC = RENDEMENT.SIMPLE ## Calcule le taux de rendement d’un emprunt à intérêt simple (par exemple, un bon du Trésor). -YIELDMAT = RENDEMENT.TITRE.ECHEANCE ## Renvoie le rendement annuel d’un titre qui rapporte des intérêts à l’échéance. - - -## -## Information functions Fonctions d’information -## -CELL = CELLULE ## Renvoie des informations sur la mise en forme, l’emplacement et le contenu d’une cellule. -ERROR.TYPE = TYPE.ERREUR ## Renvoie un nombre correspondant à un type d’erreur. -INFO = INFORMATIONS ## Renvoie des informations sur l’environnement d’exploitation actuel. -ISBLANK = ESTVIDE ## Renvoie VRAI si l’argument valeur est vide. -ISERR = ESTERR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, sauf #N/A. -ISERROR = ESTERREUR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur. -ISEVEN = EST.PAIR ## Renvoie VRAI si le chiffre est pair. -ISLOGICAL = ESTLOGIQUE ## Renvoie VRAI si l’argument valeur fait référence à une valeur logique. -ISNA = ESTNA ## Renvoie VRAI si l’argument valeur fait référence à la valeur d’erreur #N/A. -ISNONTEXT = ESTNONTEXTE ## Renvoie VRAI si l’argument valeur ne se présente pas sous forme de texte. -ISNUMBER = ESTNUM ## Renvoie VRAI si l’argument valeur représente un nombre. -ISODD = EST.IMPAIR ## Renvoie VRAI si le chiffre est impair. -ISREF = ESTREF ## Renvoie VRAI si l’argument valeur est une référence. -ISTEXT = ESTTEXTE ## Renvoie VRAI si l’argument valeur se présente sous forme de texte. -N = N ## Renvoie une valeur convertie en nombre. -NA = NA ## Renvoie la valeur d’erreur #N/A. -TYPE = TYPE ## Renvoie un nombre indiquant le type de données d’une valeur. - - -## -## Logical functions Fonctions logiques -## -AND = ET ## Renvoie VRAI si tous ses arguments sont VRAI. -FALSE = FAUX ## Renvoie la valeur logique FAUX. -IF = SI ## Spécifie un test logique à effectuer. -IFERROR = SIERREUR ## Renvoie une valeur que vous spécifiez si une formule génère une erreur ; sinon, elle renvoie le résultat de la formule. -NOT = NON ## Inverse la logique de cet argument. -OR = OU ## Renvoie VRAI si un des arguments est VRAI. -TRUE = VRAI ## Renvoie la valeur logique VRAI. - - -## -## Lookup and reference functions Fonctions de recherche et de référence -## -ADDRESS = ADRESSE ## Renvoie une référence sous forme de texte à une seule cellule d’une feuille de calcul. -AREAS = ZONES ## Renvoie le nombre de zones dans une référence. -CHOOSE = CHOISIR ## Choisit une valeur dans une liste. -COLUMN = COLONNE ## Renvoie le numéro de colonne d’une référence. -COLUMNS = COLONNES ## Renvoie le nombre de colonnes dans une référence. -HLOOKUP = RECHERCHEH ## Effectue une recherche dans la première ligne d’une matrice et renvoie la valeur de la cellule indiquée. -HYPERLINK = LIEN_HYPERTEXTE ## Crée un raccourci ou un renvoi qui ouvre un document stocké sur un serveur réseau, sur un réseau Intranet ou sur Internet. -INDEX = INDEX ## Utilise un index pour choisir une valeur provenant d’une référence ou d’une matrice. -INDIRECT = INDIRECT ## Renvoie une référence indiquée par une valeur de texte. -LOOKUP = RECHERCHE ## Recherche des valeurs dans un vecteur ou une matrice. -MATCH = EQUIV ## Recherche des valeurs dans une référence ou une matrice. -OFFSET = DECALER ## Renvoie une référence décalée par rapport à une référence donnée. -ROW = LIGNE ## Renvoie le numéro de ligne d’une référence. -ROWS = LIGNES ## Renvoie le nombre de lignes dans une référence. -RTD = RTD ## Extrait les données en temps réel à partir d’un programme prenant en charge l’automation COM (Automation : utilisation des objets d'une application à partir d'une autre application ou d'un autre outil de développement. Autrefois appelée OLE Automation, Automation est une norme industrielle et une fonctionnalité du modèle d'objet COM (Component Object Model).). -TRANSPOSE = TRANSPOSE ## Renvoie la transposition d’une matrice. -VLOOKUP = RECHERCHEV ## Effectue une recherche dans la première colonne d’une matrice et se déplace sur la ligne pour renvoyer la valeur d’une cellule. - - -## -## Math and trigonometry functions Fonctions mathématiques et trigonométriques -## -ABS = ABS ## Renvoie la valeur absolue d’un nombre. -ACOS = ACOS ## Renvoie l’arccosinus d’un nombre. -ACOSH = ACOSH ## Renvoie le cosinus hyperbolique inverse d’un nombre. -ASIN = ASIN ## Renvoie l’arcsinus d’un nombre. -ASINH = ASINH ## Renvoie le sinus hyperbolique inverse d’un nombre. -ATAN = ATAN ## Renvoie l’arctangente d’un nombre. -ATAN2 = ATAN2 ## Renvoie l’arctangente des coordonnées x et y. -ATANH = ATANH ## Renvoie la tangente hyperbolique inverse d’un nombre. -CEILING = PLAFOND ## Arrondit un nombre au nombre entier le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro. -COMBIN = COMBIN ## Renvoie le nombre de combinaisons que l’on peut former avec un nombre donné d’objets. -COS = COS ## Renvoie le cosinus d’un nombre. -COSH = COSH ## Renvoie le cosinus hyperbolique d’un nombre. -DEGREES = DEGRES ## Convertit des radians en degrés. -EVEN = PAIR ## Arrondit un nombre au nombre entier pair le plus proche en s’éloignant de zéro. -EXP = EXP ## Renvoie e élevé à la puissance d’un nombre donné. -FACT = FACT ## Renvoie la factorielle d’un nombre. -FACTDOUBLE = FACTDOUBLE ## Renvoie la factorielle double d’un nombre. -FLOOR = PLANCHER ## Arrondit un nombre en tendant vers 0 (zéro). -GCD = PGCD ## Renvoie le plus grand commun diviseur. -INT = ENT ## Arrondit un nombre à l’entier immédiatement inférieur. -LCM = PPCM ## Renvoie le plus petit commun multiple. -LN = LN ## Renvoie le logarithme népérien d’un nombre. -LOG = LOG ## Renvoie le logarithme d’un nombre dans la base spécifiée. -LOG10 = LOG10 ## Calcule le logarithme en base 10 d’un nombre. -MDETERM = DETERMAT ## Renvoie le déterminant d’une matrice. -MINVERSE = INVERSEMAT ## Renvoie la matrice inverse d’une matrice. -MMULT = PRODUITMAT ## Renvoie le produit de deux matrices. -MOD = MOD ## Renvoie le reste d’une division. -MROUND = ARRONDI.AU.MULTIPLE ## Donne l’arrondi d’un nombre au multiple spécifié. -MULTINOMIAL = MULTINOMIALE ## Calcule la multinomiale d’un ensemble de nombres. -ODD = IMPAIR ## Renvoie le nombre, arrondi à la valeur du nombre entier impair le plus proche en s’éloignant de zéro. -PI = PI ## Renvoie la valeur de pi. -POWER = PUISSANCE ## Renvoie la valeur du nombre élevé à une puissance. -PRODUCT = PRODUIT ## Multiplie ses arguments. -QUOTIENT = QUOTIENT ## Renvoie la partie entière du résultat d’une division. -RADIANS = RADIANS ## Convertit des degrés en radians. -RAND = ALEA ## Renvoie un nombre aléatoire compris entre 0 et 1. -RANDBETWEEN = ALEA.ENTRE.BORNES ## Renvoie un nombre aléatoire entre les nombres que vous spécifiez. -ROMAN = ROMAIN ## Convertit des chiffres arabes en chiffres romains, sous forme de texte. -ROUND = ARRONDI ## Arrondit un nombre au nombre de chiffres indiqué. -ROUNDDOWN = ARRONDI.INF ## Arrondit un nombre en tendant vers 0 (zéro). -ROUNDUP = ARRONDI.SUP ## Arrondit un nombre à l’entier supérieur, en s’éloignant de zéro. -SERIESSUM = SOMME.SERIES ## Renvoie la somme d’une série géométrique en s’appuyant sur la formule suivante : -SIGN = SIGNE ## Renvoie le signe d’un nombre. -SIN = SIN ## Renvoie le sinus d’un angle donné. -SINH = SINH ## Renvoie le sinus hyperbolique d’un nombre. -SQRT = RACINE ## Renvoie la racine carrée d’un nombre. -SQRTPI = RACINE.PI ## Renvoie la racine carrée de (nombre * pi). -SUBTOTAL = SOUS.TOTAL ## Renvoie un sous-total dans une liste ou une base de données. -SUM = SOMME ## Calcule la somme de ses arguments. -SUMIF = SOMME.SI ## Additionne les cellules spécifiées si elles répondent à un critère donné. -SUMIFS = SOMME.SI.ENS ## Ajoute les cellules d’une plage qui répondent à plusieurs critères. -SUMPRODUCT = SOMMEPROD ## Multiplie les valeurs correspondantes des matrices spécifiées et calcule la somme de ces produits. -SUMSQ = SOMME.CARRES ## Renvoie la somme des carrés des arguments. -SUMX2MY2 = SOMME.X2MY2 ## Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices. -SUMX2PY2 = SOMME.X2PY2 ## Renvoie la somme de la somme des carrés des valeurs correspondantes de deux matrices. -SUMXMY2 = SOMME.XMY2 ## Renvoie la somme des carrés des différences entre les valeurs correspondantes de deux matrices. -TAN = TAN ## Renvoie la tangente d’un nombre. -TANH = TANH ## Renvoie la tangente hyperbolique d’un nombre. -TRUNC = TRONQUE ## Renvoie la partie entière d’un nombre. - - -## -## Statistical functions Fonctions statistiques -## -AVEDEV = ECART.MOYEN ## Renvoie la moyenne des écarts absolus observés dans la moyenne des points de données. -AVERAGE = MOYENNE ## Renvoie la moyenne de ses arguments. -AVERAGEA = AVERAGEA ## Renvoie la moyenne de ses arguments, nombres, texte et valeurs logiques inclus. -AVERAGEIF = MOYENNE.SI ## Renvoie la moyenne (arithmétique) de toutes les cellules d’une plage qui répondent à des critères donnés. -AVERAGEIFS = MOYENNE.SI.ENS ## Renvoie la moyenne (arithmétique) de toutes les cellules qui répondent à plusieurs critères. -BETADIST = LOI.BETA ## Renvoie la fonction de distribution cumulée. -BETAINV = BETA.INVERSE ## Renvoie l’inverse de la fonction de distribution cumulée pour une distribution bêta spécifiée. -BINOMDIST = LOI.BINOMIALE ## Renvoie la probabilité d’une variable aléatoire discrète suivant la loi binomiale. -CHIDIST = LOI.KHIDEUX ## Renvoie la probabilité unilatérale de la distribution khi-deux. -CHIINV = KHIDEUX.INVERSE ## Renvoie l’inverse de la probabilité unilatérale de la distribution khi-deux. -CHITEST = TEST.KHIDEUX ## Renvoie le test d’indépendance. -CONFIDENCE = INTERVALLE.CONFIANCE ## Renvoie l’intervalle de confiance pour une moyenne de population. -CORREL = COEFFICIENT.CORRELATION ## Renvoie le coefficient de corrélation entre deux séries de données. -COUNT = NB ## Détermine les nombres compris dans la liste des arguments. -COUNTA = NBVAL ## Détermine le nombre de valeurs comprises dans la liste des arguments. -COUNTBLANK = NB.VIDE ## Compte le nombre de cellules vides dans une plage. -COUNTIF = NB.SI ## Compte le nombre de cellules qui répondent à un critère donné dans une plage. -COUNTIFS = NB.SI.ENS ## Compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères. -COVAR = COVARIANCE ## Renvoie la covariance, moyenne des produits des écarts pour chaque série d’observations. -CRITBINOM = CRITERE.LOI.BINOMIALE ## Renvoie la plus petite valeur pour laquelle la distribution binomiale cumulée est inférieure ou égale à une valeur de critère. -DEVSQ = SOMME.CARRES.ECARTS ## Renvoie la somme des carrés des écarts. -EXPONDIST = LOI.EXPONENTIELLE ## Renvoie la distribution exponentielle. -FDIST = LOI.F ## Renvoie la distribution de probabilité F. -FINV = INVERSE.LOI.F ## Renvoie l’inverse de la distribution de probabilité F. -FISHER = FISHER ## Renvoie la transformation de Fisher. -FISHERINV = FISHER.INVERSE ## Renvoie l’inverse de la transformation de Fisher. -FORECAST = PREVISION ## Calcule une valeur par rapport à une tendance linéaire. -FREQUENCY = FREQUENCE ## Calcule la fréquence d’apparition des valeurs dans une plage de valeurs, puis renvoie des nombres sous forme de matrice verticale. -FTEST = TEST.F ## Renvoie le résultat d’un test F. -GAMMADIST = LOI.GAMMA ## Renvoie la probabilité d’une variable aléatoire suivant une loi Gamma. -GAMMAINV = LOI.GAMMA.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi Gamma. -GAMMALN = LNGAMMA ## Renvoie le logarithme népérien de la fonction Gamma, G(x) -GEOMEAN = MOYENNE.GEOMETRIQUE ## Renvoie la moyenne géométrique. -GROWTH = CROISSANCE ## Calcule des valeurs par rapport à une tendance exponentielle. -HARMEAN = MOYENNE.HARMONIQUE ## Renvoie la moyenne harmonique. -HYPGEOMDIST = LOI.HYPERGEOMETRIQUE ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi hypergéométrique. -INTERCEPT = ORDONNEE.ORIGINE ## Renvoie l’ordonnée à l’origine d’une droite de régression linéaire. -KURT = KURTOSIS ## Renvoie le kurtosis d’une série de données. -LARGE = GRANDE.VALEUR ## Renvoie la k-ième plus grande valeur d’une série de données. -LINEST = DROITEREG ## Renvoie les paramètres d’une tendance linéaire. -LOGEST = LOGREG ## Renvoie les paramètres d’une tendance exponentielle. -LOGINV = LOI.LOGNORMALE.INVERSE ## Renvoie l’inverse de la probabilité pour une variable aléatoire suivant la loi lognormale. -LOGNORMDIST = LOI.LOGNORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi lognormale. -MAX = MAX ## Renvoie la valeur maximale contenue dans une liste d’arguments. -MAXA = MAXA ## Renvoie la valeur maximale d’une liste d’arguments, nombres, texte et valeurs logiques inclus. -MEDIAN = MEDIANE ## Renvoie la valeur médiane des nombres donnés. -MIN = MIN ## Renvoie la valeur minimale contenue dans une liste d’arguments. -MINA = MINA ## Renvoie la plus petite valeur d’une liste d’arguments, nombres, texte et valeurs logiques inclus. -MODE = MODE ## Renvoie la valeur la plus courante d’une série de données. -NEGBINOMDIST = LOI.BINOMIALE.NEG ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi binomiale négative. -NORMDIST = LOI.NORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale. -NORMINV = LOI.NORMALE.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi normale standard. -NORMSDIST = LOI.NORMALE.STANDARD ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale standard. -NORMSINV = LOI.NORMALE.STANDARD.INVERSE ## Renvoie l’inverse de la distribution cumulée normale standard. -PEARSON = PEARSON ## Renvoie le coefficient de corrélation d’échantillonnage de Pearson. -PERCENTILE = CENTILE ## Renvoie le k-ième centile des valeurs d’une plage. -PERCENTRANK = RANG.POURCENTAGE ## Renvoie le rang en pourcentage d’une valeur d’une série de données. -PERMUT = PERMUTATION ## Renvoie le nombre de permutations pour un nombre donné d’objets. -POISSON = LOI.POISSON ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Poisson. -PROB = PROBABILITE ## Renvoie la probabilité que des valeurs d’une plage soient comprises entre deux limites. -QUARTILE = QUARTILE ## Renvoie le quartile d’une série de données. -RANK = RANG ## Renvoie le rang d’un nombre contenu dans une liste. -RSQ = COEFFICIENT.DETERMINATION ## Renvoie la valeur du coefficient de détermination R^2 d’une régression linéaire. -SKEW = COEFFICIENT.ASYMETRIE ## Renvoie l’asymétrie d’une distribution. -SLOPE = PENTE ## Renvoie la pente d’une droite de régression linéaire. -SMALL = PETITE.VALEUR ## Renvoie la k-ième plus petite valeur d’une série de données. -STANDARDIZE = CENTREE.REDUITE ## Renvoie une valeur centrée réduite. -STDEV = ECARTYPE ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population. -STDEVA = STDEVA ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques inclus. -STDEVP = ECARTYPEP ## Calcule l’écart type d’une population à partir de la population entière. -STDEVPA = STDEVPA ## Calcule l’écart type d’une population à partir de l’ensemble de la population, nombres, texte et valeurs logiques inclus. -STEYX = ERREUR.TYPE.XY ## Renvoie l’erreur type de la valeur y prévue pour chaque x de la régression. -TDIST = LOI.STUDENT ## Renvoie la probabilité d’une variable aléatoire suivant une loi T de Student. -TINV = LOI.STUDENT.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi T de Student. -TREND = TENDANCE ## Renvoie des valeurs par rapport à une tendance linéaire. -TRIMMEAN = MOYENNE.REDUITE ## Renvoie la moyenne de l’intérieur d’une série de données. -TTEST = TEST.STUDENT ## Renvoie la probabilité associée à un test T de Student. -VAR = VAR ## Calcule la variance sur la base d’un échantillon. -VARA = VARA ## Estime la variance d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques incluses. -VARP = VAR.P ## Calcule la variance sur la base de l’ensemble de la population. -VARPA = VARPA ## Calcule la variance d’une population en se basant sur la population entière, nombres, texte et valeurs logiques inclus. -WEIBULL = LOI.WEIBULL ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Weibull. -ZTEST = TEST.Z ## Renvoie la valeur de probabilité unilatérale d’un test z. - - -## -## Text functions Fonctions de texte -## -ASC = ASC ## Change les caractères anglais ou katakana à pleine chasse (codés sur deux octets) à l’intérieur d’une chaîne de caractères en caractères à demi-chasse (codés sur un octet). -BAHTTEXT = BAHTTEXT ## Convertit un nombre en texte en utilisant le format monétaire ß (baht). -CHAR = CAR ## Renvoie le caractère spécifié par le code numérique. -CLEAN = EPURAGE ## Supprime tous les caractères de contrôle du texte. -CODE = CODE ## Renvoie le numéro de code du premier caractère du texte. -CONCATENATE = CONCATENER ## Assemble plusieurs éléments textuels de façon à n’en former qu’un seul. -DOLLAR = EURO ## Convertit un nombre en texte en utilisant le format monétaire € (euro). -EXACT = EXACT ## Vérifie si deux valeurs de texte sont identiques. -FIND = TROUVE ## Trouve un valeur textuelle dans une autre, en respectant la casse. -FINDB = TROUVERB ## Trouve un valeur textuelle dans une autre, en respectant la casse. -FIXED = CTXT ## Convertit un nombre au format texte avec un nombre de décimales spécifié. -JIS = JIS ## Change les caractères anglais ou katakana à demi-chasse (codés sur un octet) à l’intérieur d’une chaîne de caractères en caractères à à pleine chasse (codés sur deux octets). -LEFT = GAUCHE ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. -LEFTB = GAUCHEB ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. -LEN = NBCAR ## Renvoie le nombre de caractères contenus dans une chaîne de texte. -LENB = LENB ## Renvoie le nombre de caractères contenus dans une chaîne de texte. -LOWER = MINUSCULE ## Convertit le texte en minuscules. -MID = STXT ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. -MIDB = STXTB ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. -PHONETIC = PHONETIQUE ## Extrait les caractères phonétiques (furigana) d’une chaîne de texte. -PROPER = NOMPROPRE ## Met en majuscules la première lettre de chaque mot dans une chaîne textuelle. -REPLACE = REMPLACER ## Remplace des caractères dans un texte. -REPLACEB = REMPLACERB ## Remplace des caractères dans un texte. -REPT = REPT ## Répète un texte un certain nombre de fois. -RIGHT = DROITE ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. -RIGHTB = DROITEB ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. -SEARCH = CHERCHE ## Trouve un texte dans un autre texte (sans respecter la casse). -SEARCHB = CHERCHERB ## Trouve un texte dans un autre texte (sans respecter la casse). -SUBSTITUTE = SUBSTITUE ## Remplace l’ancien texte d’une chaîne de caractères par un nouveau. -T = T ## Convertit ses arguments en texte. -TEXT = TEXTE ## Convertit un nombre au format texte. -TRIM = SUPPRESPACE ## Supprime les espaces du texte. -UPPER = MAJUSCULE ## Convertit le texte en majuscules. -VALUE = CNUM ## Convertit un argument textuel en nombre +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Fonctions de complément et d’automatisation +## +GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE ## Renvoie les données stockées dans un rapport de tableau croisé dynamique. + + +## +## Cube functions Fonctions Cube +## +CUBEKPIMEMBER = MEMBREKPICUBE ## Renvoie un nom, une propriété et une mesure d’indicateur de performance clé et affiche le nom et la propriété dans la cellule. Un indicateur de performance clé est une mesure quantifiable, telle que la marge bénéficiaire brute mensuelle ou la rotation trimestrielle du personnel, utilisée pour évaluer les performances d’une entreprise. +CUBEMEMBER = MEMBRECUBE ## Renvoie un membre ou un uplet dans une hiérarchie de cubes. Utilisez cette fonction pour valider l’existence du membre ou de l’uplet dans le cube. +CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE ## Renvoie la valeur d’une propriété de membre du cube. Utilisez cette fonction pour valider l’existence d’un nom de membre dans le cube et pour renvoyer la propriété spécifiée pour ce membre. +CUBERANKEDMEMBER = RANGMEMBRECUBE ## Renvoie le nième membre ou le membre placé à un certain rang dans un ensemble. Utilisez cette fonction pour renvoyer un ou plusieurs éléments d’un ensemble, tels que les meilleurs vendeurs ou les 10 meilleurs étudiants. +CUBESET = JEUCUBE ## Définit un ensemble calculé de membres ou d’uplets en envoyant une expression définie au cube sur le serveur qui crée l’ensemble et le renvoie à Microsoft Office Excel. +CUBESETCOUNT = NBJEUCUBE ## Renvoie le nombre d’éléments dans un jeu. +CUBEVALUE = VALEURCUBE ## Renvoie une valeur d’agrégation issue d’un cube. + + +## +## Database functions Fonctions de base de données +## +DAVERAGE = BDMOYENNE ## Renvoie la moyenne des entrées de base de données sélectionnées. +DCOUNT = BCOMPTE ## Compte le nombre de cellules d’une base de données qui contiennent des nombres. +DCOUNTA = BDNBVAL ## Compte les cellules non vides d’une base de données. +DGET = BDLIRE ## Extrait d’une base de données un enregistrement unique répondant aux critères spécifiés. +DMAX = BDMAX ## Renvoie la valeur maximale des entrées de base de données sélectionnées. +DMIN = BDMIN ## Renvoie la valeur minimale des entrées de base de données sélectionnées. +DPRODUCT = BDPRODUIT ## Multiplie les valeurs d’un champ particulier des enregistrements d’une base de données, qui répondent aux critères spécifiés. +DSTDEV = BDECARTYPE ## Calcule l’écart type pour un échantillon d’entrées de base de données sélectionnées. +DSTDEVP = BDECARTYPEP ## Calcule l’écart type pour l’ensemble d’une population d’entrées de base de données sélectionnées. +DSUM = BDSOMME ## Ajoute les nombres dans la colonne de champ des enregistrements de la base de données, qui répondent aux critères. +DVAR = BDVAR ## Calcule la variance pour un échantillon d’entrées de base de données sélectionnées. +DVARP = BDVARP ## Calcule la variance pour l’ensemble d’une population d’entrées de base de données sélectionnées. + + +## +## Date and time functions Fonctions de date et d’heure +## +DATE = DATE ## Renvoie le numéro de série d’une date précise. +DATEVALUE = DATEVAL ## Convertit une date représentée sous forme de texte en numéro de série. +DAY = JOUR ## Convertit un numéro de série en jour du mois. +DAYS360 = JOURS360 ## Calcule le nombre de jours qui séparent deux dates sur la base d’une année de 360 jours. +EDATE = MOIS.DECALER ## Renvoie le numéro séquentiel de la date qui représente une date spécifiée (l’argument date_départ), corrigée en plus ou en moins du nombre de mois indiqué. +EOMONTH = FIN.MOIS ## Renvoie le numéro séquentiel de la date du dernier jour du mois précédant ou suivant la date_départ du nombre de mois indiqué. +HOUR = HEURE ## Convertit un numéro de série en heure. +MINUTE = MINUTE ## Convertit un numéro de série en minute. +MONTH = MOIS ## Convertit un numéro de série en mois. +NETWORKDAYS = NB.JOURS.OUVRES ## Renvoie le nombre de jours ouvrés entiers compris entre deux dates. +NOW = MAINTENANT ## Renvoie le numéro de série de la date et de l’heure du jour. +SECOND = SECONDE ## Convertit un numéro de série en seconde. +TIME = TEMPS ## Renvoie le numéro de série d’une heure précise. +TIMEVALUE = TEMPSVAL ## Convertit une date représentée sous forme de texte en numéro de série. +TODAY = AUJOURDHUI ## Renvoie le numéro de série de la date du jour. +WEEKDAY = JOURSEM ## Convertit un numéro de série en jour de la semaine. +WEEKNUM = NO.SEMAINE ## Convertit un numéro de série en un numéro représentant l’ordre de la semaine dans l’année. +WORKDAY = SERIE.JOUR.OUVRE ## Renvoie le numéro de série de la date avant ou après le nombre de jours ouvrés spécifiés. +YEAR = ANNEE ## Convertit un numéro de série en année. +YEARFRAC = FRACTION.ANNEE ## Renvoie la fraction de l’année représentant le nombre de jours entre la date de début et la date de fin. + + +## +## Engineering functions Fonctions d’ingénierie +## +BESSELI = BESSELI ## Renvoie la fonction Bessel modifiée In(x). +BESSELJ = BESSELJ ## Renvoie la fonction Bessel Jn(x). +BESSELK = BESSELK ## Renvoie la fonction Bessel modifiée Kn(x). +BESSELY = BESSELY ## Renvoie la fonction Bessel Yn(x). +BIN2DEC = BINDEC ## Convertit un nombre binaire en nombre décimal. +BIN2HEX = BINHEX ## Convertit un nombre binaire en nombre hexadécimal. +BIN2OCT = BINOCT ## Convertit un nombre binaire en nombre octal. +COMPLEX = COMPLEXE ## Convertit des coefficients réel et imaginaire en un nombre complexe. +CONVERT = CONVERT ## Convertit un nombre d’une unité de mesure à une autre. +DEC2BIN = DECBIN ## Convertit un nombre décimal en nombre binaire. +DEC2HEX = DECHEX ## Convertit un nombre décimal en nombre hexadécimal. +DEC2OCT = DECOCT ## Convertit un nombre décimal en nombre octal. +DELTA = DELTA ## Teste l’égalité de deux nombres. +ERF = ERF ## Renvoie la valeur de la fonction d’erreur. +ERFC = ERFC ## Renvoie la valeur de la fonction d’erreur complémentaire. +GESTEP = SUP.SEUIL ## Teste si un nombre est supérieur à une valeur de seuil. +HEX2BIN = HEXBIN ## Convertit un nombre hexadécimal en nombre binaire. +HEX2DEC = HEXDEC ## Convertit un nombre hexadécimal en nombre décimal. +HEX2OCT = HEXOCT ## Convertit un nombre hexadécimal en nombre octal. +IMABS = COMPLEXE.MODULE ## Renvoie la valeur absolue (module) d’un nombre complexe. +IMAGINARY = COMPLEXE.IMAGINAIRE ## Renvoie le coefficient imaginaire d’un nombre complexe. +IMARGUMENT = COMPLEXE.ARGUMENT ## Renvoie l’argument thêta, un angle exprimé en radians. +IMCONJUGATE = COMPLEXE.CONJUGUE ## Renvoie le nombre complexe conjugué d’un nombre complexe. +IMCOS = IMCOS ## Renvoie le cosinus d’un nombre complexe. +IMDIV = COMPLEXE.DIV ## Renvoie le quotient de deux nombres complexes. +IMEXP = COMPLEXE.EXP ## Renvoie la fonction exponentielle d’un nombre complexe. +IMLN = COMPLEXE.LN ## Renvoie le logarithme népérien d’un nombre complexe. +IMLOG10 = COMPLEXE.LOG10 ## Calcule le logarithme en base 10 d’un nombre complexe. +IMLOG2 = COMPLEXE.LOG2 ## Calcule le logarithme en base 2 d’un nombre complexe. +IMPOWER = COMPLEXE.PUISSANCE ## Renvoie un nombre complexe élevé à une puissance entière. +IMPRODUCT = COMPLEXE.PRODUIT ## Renvoie le produit de plusieurs nombres complexes. +IMREAL = COMPLEXE.REEL ## Renvoie le coefficient réel d’un nombre complexe. +IMSIN = COMPLEXE.SIN ## Renvoie le sinus d’un nombre complexe. +IMSQRT = COMPLEXE.RACINE ## Renvoie la racine carrée d’un nombre complexe. +IMSUB = COMPLEXE.DIFFERENCE ## Renvoie la différence entre deux nombres complexes. +IMSUM = COMPLEXE.SOMME ## Renvoie la somme de plusieurs nombres complexes. +OCT2BIN = OCTBIN ## Convertit un nombre octal en nombre binaire. +OCT2DEC = OCTDEC ## Convertit un nombre octal en nombre décimal. +OCT2HEX = OCTHEX ## Convertit un nombre octal en nombre hexadécimal. + + +## +## Financial functions Fonctions financières +## +ACCRINT = INTERET.ACC ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu périodiquement. +ACCRINTM = INTERET.ACC.MAT ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu à l’échéance. +AMORDEGRC = AMORDEGRC ## Renvoie l’amortissement correspondant à chaque période comptable en utilisant un coefficient d’amortissement. +AMORLINC = AMORLINC ## Renvoie l’amortissement d’un bien à la fin d’une période fiscale donnée. +COUPDAYBS = NB.JOURS.COUPON.PREC ## Renvoie le nombre de jours entre le début de la période de coupon et la date de liquidation. +COUPDAYS = NB.JOURS.COUPONS ## Renvoie le nombre de jours pour la période du coupon contenant la date de liquidation. +COUPDAYSNC = NB.JOURS.COUPON.SUIV ## Renvoie le nombre de jours entre la date de liquidation et la date du coupon suivant la date de liquidation. +COUPNCD = DATE.COUPON.SUIV ## Renvoie la première date de coupon ultérieure à la date de règlement. +COUPNUM = NB.COUPONS ## Renvoie le nombre de coupons dus entre la date de règlement et la date d’échéance. +COUPPCD = DATE.COUPON.PREC ## Renvoie la date de coupon précédant la date de règlement. +CUMIPMT = CUMUL.INTER ## Renvoie l’intérêt cumulé payé sur un emprunt entre deux périodes. +CUMPRINC = CUMUL.PRINCPER ## Renvoie le montant cumulé des remboursements du capital d’un emprunt effectués entre deux périodes. +DB = DB ## Renvoie l’amortissement d’un bien pour une période spécifiée en utilisant la méthode de l’amortissement dégressif à taux fixe. +DDB = DDB ## Renvoie l’amortissement d’un bien pour toute période spécifiée, en utilisant la méthode de l’amortissement dégressif à taux double ou selon un coefficient à spécifier. +DISC = TAUX.ESCOMPTE ## Calcule le taux d’escompte d’une transaction. +DOLLARDE = PRIX.DEC ## Convertit un prix en euros, exprimé sous forme de fraction, en un prix en euros exprimé sous forme de nombre décimal. +DOLLARFR = PRIX.FRAC ## Convertit un prix en euros, exprimé sous forme de nombre décimal, en un prix en euros exprimé sous forme de fraction. +DURATION = DUREE ## Renvoie la durée, en années, d’un titre dont l’intérêt est perçu périodiquement. +EFFECT = TAUX.EFFECTIF ## Renvoie le taux d’intérêt annuel effectif. +FV = VC ## Renvoie la valeur future d’un investissement. +FVSCHEDULE = VC.PAIEMENTS ## Calcule la valeur future d’un investissement en appliquant une série de taux d’intérêt composites. +INTRATE = TAUX.INTERET ## Affiche le taux d’intérêt d’un titre totalement investi. +IPMT = INTPER ## Calcule le montant des intérêts d’un investissement pour une période donnée. +IRR = TRI ## Calcule le taux de rentabilité interne d’un investissement pour une succession de trésoreries. +ISPMT = ISPMT ## Calcule le montant des intérêts d’un investissement pour une période donnée. +MDURATION = DUREE.MODIFIEE ## Renvoie la durée de Macauley modifiée pour un titre ayant une valeur nominale hypothétique de 100_euros. +MIRR = TRIM ## Calcule le taux de rentabilité interne lorsque les paiements positifs et négatifs sont financés à des taux différents. +NOMINAL = TAUX.NOMINAL ## Calcule le taux d’intérêt nominal annuel. +NPER = NPM ## Renvoie le nombre de versements nécessaires pour rembourser un emprunt. +NPV = VAN ## Calcule la valeur actuelle nette d’un investissement basé sur une série de décaissements et un taux d’escompte. +ODDFPRICE = PRIX.PCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. +ODDFYIELD = REND.PCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la première période de coupon est irrégulière. +ODDLPRICE = PRIX.DCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. +ODDLYIELD = REND.DCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la dernière période de coupon est irrégulière. +PMT = VPM ## Calcule le paiement périodique d’un investissement donné. +PPMT = PRINCPER ## Calcule, pour une période donnée, la part de remboursement du principal d’un investissement. +PRICE = PRIX.TITRE ## Renvoie le prix d’un titre rapportant des intérêts périodiques, pour une valeur nominale de 100 euros. +PRICEDISC = VALEUR.ENCAISSEMENT ## Renvoie la valeur d’encaissement d’un escompte commercial, pour une valeur nominale de 100 euros. +PRICEMAT = PRIX.TITRE.ECHEANCE ## Renvoie le prix d’un titre dont la valeur nominale est 100 euros et qui rapporte des intérêts à l’échéance. +PV = PV ## Calcule la valeur actuelle d’un investissement. +RATE = TAUX ## Calcule le taux d’intérêt par période pour une annuité. +RECEIVED = VALEUR.NOMINALE ## Renvoie la valeur nominale à échéance d’un effet de commerce. +SLN = AMORLIN ## Calcule l’amortissement linéaire d’un bien pour une période donnée. +SYD = SYD ## Calcule l’amortissement d’un bien pour une période donnée sur la base de la méthode américaine Sum-of-Years Digits (amortissement dégressif à taux décroissant appliqué à une valeur constante). +TBILLEQ = TAUX.ESCOMPTE.R ## Renvoie le taux d’escompte rationnel d’un bon du Trésor. +TBILLPRICE = PRIX.BON.TRESOR ## Renvoie le prix d’un bon du Trésor d’une valeur nominale de 100 euros. +TBILLYIELD = RENDEMENT.BON.TRESOR ## Calcule le taux de rendement d’un bon du Trésor. +VDB = VDB ## Renvoie l’amortissement d’un bien pour une période spécifiée ou partielle en utilisant une méthode de l’amortissement dégressif à taux fixe. +XIRR = TRI.PAIEMENTS ## Calcule le taux de rentabilité interne d’un ensemble de paiements non périodiques. +XNPV = VAN.PAIEMENTS ## Renvoie la valeur actuelle nette d’un ensemble de paiements non périodiques. +YIELD = RENDEMENT.TITRE ## Calcule le rendement d’un titre rapportant des intérêts périodiquement. +YIELDDISC = RENDEMENT.SIMPLE ## Calcule le taux de rendement d’un emprunt à intérêt simple (par exemple, un bon du Trésor). +YIELDMAT = RENDEMENT.TITRE.ECHEANCE ## Renvoie le rendement annuel d’un titre qui rapporte des intérêts à l’échéance. + + +## +## Information functions Fonctions d’information +## +CELL = CELLULE ## Renvoie des informations sur la mise en forme, l’emplacement et le contenu d’une cellule. +ERROR.TYPE = TYPE.ERREUR ## Renvoie un nombre correspondant à un type d’erreur. +INFO = INFORMATIONS ## Renvoie des informations sur l’environnement d’exploitation actuel. +ISBLANK = ESTVIDE ## Renvoie VRAI si l’argument valeur est vide. +ISERR = ESTERR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, sauf #N/A. +ISERROR = ESTERREUR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur. +ISEVEN = EST.PAIR ## Renvoie VRAI si le chiffre est pair. +ISLOGICAL = ESTLOGIQUE ## Renvoie VRAI si l’argument valeur fait référence à une valeur logique. +ISNA = ESTNA ## Renvoie VRAI si l’argument valeur fait référence à la valeur d’erreur #N/A. +ISNONTEXT = ESTNONTEXTE ## Renvoie VRAI si l’argument valeur ne se présente pas sous forme de texte. +ISNUMBER = ESTNUM ## Renvoie VRAI si l’argument valeur représente un nombre. +ISODD = EST.IMPAIR ## Renvoie VRAI si le chiffre est impair. +ISREF = ESTREF ## Renvoie VRAI si l’argument valeur est une référence. +ISTEXT = ESTTEXTE ## Renvoie VRAI si l’argument valeur se présente sous forme de texte. +N = N ## Renvoie une valeur convertie en nombre. +NA = NA ## Renvoie la valeur d’erreur #N/A. +TYPE = TYPE ## Renvoie un nombre indiquant le type de données d’une valeur. + + +## +## Logical functions Fonctions logiques +## +AND = ET ## Renvoie VRAI si tous ses arguments sont VRAI. +FALSE = FAUX ## Renvoie la valeur logique FAUX. +IF = SI ## Spécifie un test logique à effectuer. +IFERROR = SIERREUR ## Renvoie une valeur que vous spécifiez si une formule génère une erreur ; sinon, elle renvoie le résultat de la formule. +NOT = NON ## Inverse la logique de cet argument. +OR = OU ## Renvoie VRAI si un des arguments est VRAI. +TRUE = VRAI ## Renvoie la valeur logique VRAI. + + +## +## Lookup and reference functions Fonctions de recherche et de référence +## +ADDRESS = ADRESSE ## Renvoie une référence sous forme de texte à une seule cellule d’une feuille de calcul. +AREAS = ZONES ## Renvoie le nombre de zones dans une référence. +CHOOSE = CHOISIR ## Choisit une valeur dans une liste. +COLUMN = COLONNE ## Renvoie le numéro de colonne d’une référence. +COLUMNS = COLONNES ## Renvoie le nombre de colonnes dans une référence. +HLOOKUP = RECHERCHEH ## Effectue une recherche dans la première ligne d’une matrice et renvoie la valeur de la cellule indiquée. +HYPERLINK = LIEN_HYPERTEXTE ## Crée un raccourci ou un renvoi qui ouvre un document stocké sur un serveur réseau, sur un réseau Intranet ou sur Internet. +INDEX = INDEX ## Utilise un index pour choisir une valeur provenant d’une référence ou d’une matrice. +INDIRECT = INDIRECT ## Renvoie une référence indiquée par une valeur de texte. +LOOKUP = RECHERCHE ## Recherche des valeurs dans un vecteur ou une matrice. +MATCH = EQUIV ## Recherche des valeurs dans une référence ou une matrice. +OFFSET = DECALER ## Renvoie une référence décalée par rapport à une référence donnée. +ROW = LIGNE ## Renvoie le numéro de ligne d’une référence. +ROWS = LIGNES ## Renvoie le nombre de lignes dans une référence. +RTD = RTD ## Extrait les données en temps réel à partir d’un programme prenant en charge l’automation COM (Automation : utilisation des objets d'une application à partir d'une autre application ou d'un autre outil de développement. Autrefois appelée OLE Automation, Automation est une norme industrielle et une fonctionnalité du modèle d'objet COM (Component Object Model).). +TRANSPOSE = TRANSPOSE ## Renvoie la transposition d’une matrice. +VLOOKUP = RECHERCHEV ## Effectue une recherche dans la première colonne d’une matrice et se déplace sur la ligne pour renvoyer la valeur d’une cellule. + + +## +## Math and trigonometry functions Fonctions mathématiques et trigonométriques +## +ABS = ABS ## Renvoie la valeur absolue d’un nombre. +ACOS = ACOS ## Renvoie l’arccosinus d’un nombre. +ACOSH = ACOSH ## Renvoie le cosinus hyperbolique inverse d’un nombre. +ASIN = ASIN ## Renvoie l’arcsinus d’un nombre. +ASINH = ASINH ## Renvoie le sinus hyperbolique inverse d’un nombre. +ATAN = ATAN ## Renvoie l’arctangente d’un nombre. +ATAN2 = ATAN2 ## Renvoie l’arctangente des coordonnées x et y. +ATANH = ATANH ## Renvoie la tangente hyperbolique inverse d’un nombre. +CEILING = PLAFOND ## Arrondit un nombre au nombre entier le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro. +COMBIN = COMBIN ## Renvoie le nombre de combinaisons que l’on peut former avec un nombre donné d’objets. +COS = COS ## Renvoie le cosinus d’un nombre. +COSH = COSH ## Renvoie le cosinus hyperbolique d’un nombre. +DEGREES = DEGRES ## Convertit des radians en degrés. +EVEN = PAIR ## Arrondit un nombre au nombre entier pair le plus proche en s’éloignant de zéro. +EXP = EXP ## Renvoie e élevé à la puissance d’un nombre donné. +FACT = FACT ## Renvoie la factorielle d’un nombre. +FACTDOUBLE = FACTDOUBLE ## Renvoie la factorielle double d’un nombre. +FLOOR = PLANCHER ## Arrondit un nombre en tendant vers 0 (zéro). +GCD = PGCD ## Renvoie le plus grand commun diviseur. +INT = ENT ## Arrondit un nombre à l’entier immédiatement inférieur. +LCM = PPCM ## Renvoie le plus petit commun multiple. +LN = LN ## Renvoie le logarithme népérien d’un nombre. +LOG = LOG ## Renvoie le logarithme d’un nombre dans la base spécifiée. +LOG10 = LOG10 ## Calcule le logarithme en base 10 d’un nombre. +MDETERM = DETERMAT ## Renvoie le déterminant d’une matrice. +MINVERSE = INVERSEMAT ## Renvoie la matrice inverse d’une matrice. +MMULT = PRODUITMAT ## Renvoie le produit de deux matrices. +MOD = MOD ## Renvoie le reste d’une division. +MROUND = ARRONDI.AU.MULTIPLE ## Donne l’arrondi d’un nombre au multiple spécifié. +MULTINOMIAL = MULTINOMIALE ## Calcule la multinomiale d’un ensemble de nombres. +ODD = IMPAIR ## Renvoie le nombre, arrondi à la valeur du nombre entier impair le plus proche en s’éloignant de zéro. +PI = PI ## Renvoie la valeur de pi. +POWER = PUISSANCE ## Renvoie la valeur du nombre élevé à une puissance. +PRODUCT = PRODUIT ## Multiplie ses arguments. +QUOTIENT = QUOTIENT ## Renvoie la partie entière du résultat d’une division. +RADIANS = RADIANS ## Convertit des degrés en radians. +RAND = ALEA ## Renvoie un nombre aléatoire compris entre 0 et 1. +RANDBETWEEN = ALEA.ENTRE.BORNES ## Renvoie un nombre aléatoire entre les nombres que vous spécifiez. +ROMAN = ROMAIN ## Convertit des chiffres arabes en chiffres romains, sous forme de texte. +ROUND = ARRONDI ## Arrondit un nombre au nombre de chiffres indiqué. +ROUNDDOWN = ARRONDI.INF ## Arrondit un nombre en tendant vers 0 (zéro). +ROUNDUP = ARRONDI.SUP ## Arrondit un nombre à l’entier supérieur, en s’éloignant de zéro. +SERIESSUM = SOMME.SERIES ## Renvoie la somme d’une série géométrique en s’appuyant sur la formule suivante : +SIGN = SIGNE ## Renvoie le signe d’un nombre. +SIN = SIN ## Renvoie le sinus d’un angle donné. +SINH = SINH ## Renvoie le sinus hyperbolique d’un nombre. +SQRT = RACINE ## Renvoie la racine carrée d’un nombre. +SQRTPI = RACINE.PI ## Renvoie la racine carrée de (nombre * pi). +SUBTOTAL = SOUS.TOTAL ## Renvoie un sous-total dans une liste ou une base de données. +SUM = SOMME ## Calcule la somme de ses arguments. +SUMIF = SOMME.SI ## Additionne les cellules spécifiées si elles répondent à un critère donné. +SUMIFS = SOMME.SI.ENS ## Ajoute les cellules d’une plage qui répondent à plusieurs critères. +SUMPRODUCT = SOMMEPROD ## Multiplie les valeurs correspondantes des matrices spécifiées et calcule la somme de ces produits. +SUMSQ = SOMME.CARRES ## Renvoie la somme des carrés des arguments. +SUMX2MY2 = SOMME.X2MY2 ## Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices. +SUMX2PY2 = SOMME.X2PY2 ## Renvoie la somme de la somme des carrés des valeurs correspondantes de deux matrices. +SUMXMY2 = SOMME.XMY2 ## Renvoie la somme des carrés des différences entre les valeurs correspondantes de deux matrices. +TAN = TAN ## Renvoie la tangente d’un nombre. +TANH = TANH ## Renvoie la tangente hyperbolique d’un nombre. +TRUNC = TRONQUE ## Renvoie la partie entière d’un nombre. + + +## +## Statistical functions Fonctions statistiques +## +AVEDEV = ECART.MOYEN ## Renvoie la moyenne des écarts absolus observés dans la moyenne des points de données. +AVERAGE = MOYENNE ## Renvoie la moyenne de ses arguments. +AVERAGEA = AVERAGEA ## Renvoie la moyenne de ses arguments, nombres, texte et valeurs logiques inclus. +AVERAGEIF = MOYENNE.SI ## Renvoie la moyenne (arithmétique) de toutes les cellules d’une plage qui répondent à des critères donnés. +AVERAGEIFS = MOYENNE.SI.ENS ## Renvoie la moyenne (arithmétique) de toutes les cellules qui répondent à plusieurs critères. +BETADIST = LOI.BETA ## Renvoie la fonction de distribution cumulée. +BETAINV = BETA.INVERSE ## Renvoie l’inverse de la fonction de distribution cumulée pour une distribution bêta spécifiée. +BINOMDIST = LOI.BINOMIALE ## Renvoie la probabilité d’une variable aléatoire discrète suivant la loi binomiale. +CHIDIST = LOI.KHIDEUX ## Renvoie la probabilité unilatérale de la distribution khi-deux. +CHIINV = KHIDEUX.INVERSE ## Renvoie l’inverse de la probabilité unilatérale de la distribution khi-deux. +CHITEST = TEST.KHIDEUX ## Renvoie le test d’indépendance. +CONFIDENCE = INTERVALLE.CONFIANCE ## Renvoie l’intervalle de confiance pour une moyenne de population. +CORREL = COEFFICIENT.CORRELATION ## Renvoie le coefficient de corrélation entre deux séries de données. +COUNT = NB ## Détermine les nombres compris dans la liste des arguments. +COUNTA = NBVAL ## Détermine le nombre de valeurs comprises dans la liste des arguments. +COUNTBLANK = NB.VIDE ## Compte le nombre de cellules vides dans une plage. +COUNTIF = NB.SI ## Compte le nombre de cellules qui répondent à un critère donné dans une plage. +COUNTIFS = NB.SI.ENS ## Compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères. +COVAR = COVARIANCE ## Renvoie la covariance, moyenne des produits des écarts pour chaque série d’observations. +CRITBINOM = CRITERE.LOI.BINOMIALE ## Renvoie la plus petite valeur pour laquelle la distribution binomiale cumulée est inférieure ou égale à une valeur de critère. +DEVSQ = SOMME.CARRES.ECARTS ## Renvoie la somme des carrés des écarts. +EXPONDIST = LOI.EXPONENTIELLE ## Renvoie la distribution exponentielle. +FDIST = LOI.F ## Renvoie la distribution de probabilité F. +FINV = INVERSE.LOI.F ## Renvoie l’inverse de la distribution de probabilité F. +FISHER = FISHER ## Renvoie la transformation de Fisher. +FISHERINV = FISHER.INVERSE ## Renvoie l’inverse de la transformation de Fisher. +FORECAST = PREVISION ## Calcule une valeur par rapport à une tendance linéaire. +FREQUENCY = FREQUENCE ## Calcule la fréquence d’apparition des valeurs dans une plage de valeurs, puis renvoie des nombres sous forme de matrice verticale. +FTEST = TEST.F ## Renvoie le résultat d’un test F. +GAMMADIST = LOI.GAMMA ## Renvoie la probabilité d’une variable aléatoire suivant une loi Gamma. +GAMMAINV = LOI.GAMMA.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi Gamma. +GAMMALN = LNGAMMA ## Renvoie le logarithme népérien de la fonction Gamma, G(x) +GEOMEAN = MOYENNE.GEOMETRIQUE ## Renvoie la moyenne géométrique. +GROWTH = CROISSANCE ## Calcule des valeurs par rapport à une tendance exponentielle. +HARMEAN = MOYENNE.HARMONIQUE ## Renvoie la moyenne harmonique. +HYPGEOMDIST = LOI.HYPERGEOMETRIQUE ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi hypergéométrique. +INTERCEPT = ORDONNEE.ORIGINE ## Renvoie l’ordonnée à l’origine d’une droite de régression linéaire. +KURT = KURTOSIS ## Renvoie le kurtosis d’une série de données. +LARGE = GRANDE.VALEUR ## Renvoie la k-ième plus grande valeur d’une série de données. +LINEST = DROITEREG ## Renvoie les paramètres d’une tendance linéaire. +LOGEST = LOGREG ## Renvoie les paramètres d’une tendance exponentielle. +LOGINV = LOI.LOGNORMALE.INVERSE ## Renvoie l’inverse de la probabilité pour une variable aléatoire suivant la loi lognormale. +LOGNORMDIST = LOI.LOGNORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi lognormale. +MAX = MAX ## Renvoie la valeur maximale contenue dans une liste d’arguments. +MAXA = MAXA ## Renvoie la valeur maximale d’une liste d’arguments, nombres, texte et valeurs logiques inclus. +MEDIAN = MEDIANE ## Renvoie la valeur médiane des nombres donnés. +MIN = MIN ## Renvoie la valeur minimale contenue dans une liste d’arguments. +MINA = MINA ## Renvoie la plus petite valeur d’une liste d’arguments, nombres, texte et valeurs logiques inclus. +MODE = MODE ## Renvoie la valeur la plus courante d’une série de données. +NEGBINOMDIST = LOI.BINOMIALE.NEG ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi binomiale négative. +NORMDIST = LOI.NORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale. +NORMINV = LOI.NORMALE.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi normale standard. +NORMSDIST = LOI.NORMALE.STANDARD ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale standard. +NORMSINV = LOI.NORMALE.STANDARD.INVERSE ## Renvoie l’inverse de la distribution cumulée normale standard. +PEARSON = PEARSON ## Renvoie le coefficient de corrélation d’échantillonnage de Pearson. +PERCENTILE = CENTILE ## Renvoie le k-ième centile des valeurs d’une plage. +PERCENTRANK = RANG.POURCENTAGE ## Renvoie le rang en pourcentage d’une valeur d’une série de données. +PERMUT = PERMUTATION ## Renvoie le nombre de permutations pour un nombre donné d’objets. +POISSON = LOI.POISSON ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Poisson. +PROB = PROBABILITE ## Renvoie la probabilité que des valeurs d’une plage soient comprises entre deux limites. +QUARTILE = QUARTILE ## Renvoie le quartile d’une série de données. +RANK = RANG ## Renvoie le rang d’un nombre contenu dans une liste. +RSQ = COEFFICIENT.DETERMINATION ## Renvoie la valeur du coefficient de détermination R^2 d’une régression linéaire. +SKEW = COEFFICIENT.ASYMETRIE ## Renvoie l’asymétrie d’une distribution. +SLOPE = PENTE ## Renvoie la pente d’une droite de régression linéaire. +SMALL = PETITE.VALEUR ## Renvoie la k-ième plus petite valeur d’une série de données. +STANDARDIZE = CENTREE.REDUITE ## Renvoie une valeur centrée réduite. +STDEV = ECARTYPE ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population. +STDEVA = STDEVA ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques inclus. +STDEVP = ECARTYPEP ## Calcule l’écart type d’une population à partir de la population entière. +STDEVPA = STDEVPA ## Calcule l’écart type d’une population à partir de l’ensemble de la population, nombres, texte et valeurs logiques inclus. +STEYX = ERREUR.TYPE.XY ## Renvoie l’erreur type de la valeur y prévue pour chaque x de la régression. +TDIST = LOI.STUDENT ## Renvoie la probabilité d’une variable aléatoire suivant une loi T de Student. +TINV = LOI.STUDENT.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi T de Student. +TREND = TENDANCE ## Renvoie des valeurs par rapport à une tendance linéaire. +TRIMMEAN = MOYENNE.REDUITE ## Renvoie la moyenne de l’intérieur d’une série de données. +TTEST = TEST.STUDENT ## Renvoie la probabilité associée à un test T de Student. +VAR = VAR ## Calcule la variance sur la base d’un échantillon. +VARA = VARA ## Estime la variance d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques incluses. +VARP = VAR.P ## Calcule la variance sur la base de l’ensemble de la population. +VARPA = VARPA ## Calcule la variance d’une population en se basant sur la population entière, nombres, texte et valeurs logiques inclus. +WEIBULL = LOI.WEIBULL ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Weibull. +ZTEST = TEST.Z ## Renvoie la valeur de probabilité unilatérale d’un test z. + + +## +## Text functions Fonctions de texte +## +ASC = ASC ## Change les caractères anglais ou katakana à pleine chasse (codés sur deux octets) à l’intérieur d’une chaîne de caractères en caractères à demi-chasse (codés sur un octet). +BAHTTEXT = BAHTTEXT ## Convertit un nombre en texte en utilisant le format monétaire ß (baht). +CHAR = CAR ## Renvoie le caractère spécifié par le code numérique. +CLEAN = EPURAGE ## Supprime tous les caractères de contrôle du texte. +CODE = CODE ## Renvoie le numéro de code du premier caractère du texte. +CONCATENATE = CONCATENER ## Assemble plusieurs éléments textuels de façon à n’en former qu’un seul. +DOLLAR = EURO ## Convertit un nombre en texte en utilisant le format monétaire € (euro). +EXACT = EXACT ## Vérifie si deux valeurs de texte sont identiques. +FIND = TROUVE ## Trouve un valeur textuelle dans une autre, en respectant la casse. +FINDB = TROUVERB ## Trouve un valeur textuelle dans une autre, en respectant la casse. +FIXED = CTXT ## Convertit un nombre au format texte avec un nombre de décimales spécifié. +JIS = JIS ## Change les caractères anglais ou katakana à demi-chasse (codés sur un octet) à l’intérieur d’une chaîne de caractères en caractères à à pleine chasse (codés sur deux octets). +LEFT = GAUCHE ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. +LEFTB = GAUCHEB ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. +LEN = NBCAR ## Renvoie le nombre de caractères contenus dans une chaîne de texte. +LENB = LENB ## Renvoie le nombre de caractères contenus dans une chaîne de texte. +LOWER = MINUSCULE ## Convertit le texte en minuscules. +MID = STXT ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. +MIDB = STXTB ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. +PHONETIC = PHONETIQUE ## Extrait les caractères phonétiques (furigana) d’une chaîne de texte. +PROPER = NOMPROPRE ## Met en majuscules la première lettre de chaque mot dans une chaîne textuelle. +REPLACE = REMPLACER ## Remplace des caractères dans un texte. +REPLACEB = REMPLACERB ## Remplace des caractères dans un texte. +REPT = REPT ## Répète un texte un certain nombre de fois. +RIGHT = DROITE ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. +RIGHTB = DROITEB ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. +SEARCH = CHERCHE ## Trouve un texte dans un autre texte (sans respecter la casse). +SEARCHB = CHERCHERB ## Trouve un texte dans un autre texte (sans respecter la casse). +SUBSTITUTE = SUBSTITUE ## Remplace l’ancien texte d’une chaîne de caractères par un nouveau. +T = T ## Convertit ses arguments en texte. +TEXT = TEXTE ## Convertit un nombre au format texte. +TRIM = SUPPRESPACE ## Supprime les espaces du texte. +UPPER = MAJUSCULE ## Convertit le texte en majuscules. +VALUE = CNUM ## Convertit un argument textuel en nombre diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/hu/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/hu/functions index 200d3f71fe2..4abce13b91b 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/hu/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/hu/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Bővítmények és automatizálási függvények -## -GETPIVOTDATA = KIMUTATÁSADATOT.VESZ ## A kimutatásokban tárolt adatok visszaadására használható. - - -## -## Cube functions Kockafüggvények -## -CUBEKPIMEMBER = KOCKA.FŐTELJMUT ## Egy fő teljesítménymutató (KPI) nevét, tulajdonságát és mértékegységét adja eredményül, a nevet és a tulajdonságot megjeleníti a cellában. A KPI-k számszerűsíthető mérési lehetőséget jelentenek – ilyen mutató például a havi bruttó nyereség vagy az egy alkalmazottra jutó negyedéves forgalom –, egy szervezet teljesítményének nyomonkövetésére használhatók. -CUBEMEMBER = KOCKA.TAG ## Kockahierachia tagját vagy rekordját adja eredményül. Ellenőrizhető vele, hogy szerepel-e a kockában az adott tag vagy rekord. -CUBEMEMBERPROPERTY = KOCKA.TAG.TUL ## A kocka egyik tagtulajdonságának értékét adja eredményül. Használatával ellenőrizhető, hogy szerepel-e egy tagnév a kockában, eredménye pedig az erre a tagra vonatkozó, megadott tulajdonság. -CUBERANKEDMEMBER = KOCKA.HALM.ELEM ## Egy halmaz rangsor szerinti n-edik tagját adja eredményül. Használatával egy halmaz egy vagy több elemét kaphatja meg, például a legnagyobb teljesítményű üzletkötőt vagy a 10 legjobb tanulót. -CUBESET = KOCKA.HALM ## Számított tagok vagy rekordok halmazát adja eredményül, ehhez egy beállított kifejezést elküld a kiszolgálón található kockának, majd ezt a halmazt adja vissza a Microsoft Office Excel alkalmazásnak. -CUBESETCOUNT = KOCKA.HALM.DB ## Egy halmaz elemszámát adja eredményül. -CUBEVALUE = KOCKA.ÉRTÉK ## Kockából összesített értéket ad eredményül. - - -## -## Database functions Adatbázis-kezelő függvények -## -DAVERAGE = AB.ÁTLAG ## A kijelölt adatbáziselemek átlagát számítja ki. -DCOUNT = AB.DARAB ## Megszámolja, hogy az adatbázisban hány cella tartalmaz számokat. -DCOUNTA = AB.DARAB2 ## Megszámolja az adatbázisban lévő nem üres cellákat. -DGET = AB.MEZŐ ## Egy adatbázisból egyetlen olyan rekordot ad vissza, amely megfelel a megadott feltételeknek. -DMAX = AB.MAX ## A kiválasztott adatbáziselemek közül a legnagyobb értéket adja eredményül. -DMIN = AB.MIN ## A kijelölt adatbáziselemek közül a legkisebb értéket adja eredményül. -DPRODUCT = AB.SZORZAT ## Az adatbázis megadott feltételeknek eleget tevő rekordjaira összeszorozza a megadott mezőben található számértékeket, és eredményül ezt a szorzatot adja. -DSTDEV = AB.SZÓRÁS ## A kijelölt adatbáziselemek egy mintája alapján megbecsüli a szórást. -DSTDEVP = AB.SZÓRÁS2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórást. -DSUM = AB.SZUM ## Összeadja a feltételnek megfelelő adatbázisrekordok mezőoszlopában a számokat. -DVAR = AB.VAR ## A kijelölt adatbáziselemek mintája alapján becslést ad a szórásnégyzetre. -DVARP = AB.VAR2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórásnégyzetet. - - -## -## Date and time functions Dátumfüggvények -## -DATE = DÁTUM ## Adott dátum dátumértékét adja eredményül. -DATEVALUE = DÁTUMÉRTÉK ## Szövegként megadott dátumot dátumértékké alakít át. -DAY = NAP ## Dátumértéket a hónap egy napjává (0-31) alakít. -DAYS360 = NAP360 ## Két dátum közé eső napok számát számítja ki a 360 napos év alapján. -EDATE = EDATE ## Adott dátumnál adott számú hónappal korábbi vagy későbbi dátum dátumértékét adja eredményül. -EOMONTH = EOMONTH ## Adott dátumnál adott számú hónappal korábbi vagy későbbi hónap utolsó napjának dátumértékét adja eredményül. -HOUR = ÓRA ## Időértéket órákká alakít. -MINUTE = PERC ## Időértéket percekké alakít. -MONTH = HÓNAP ## Időértéket hónapokká alakít. -NETWORKDAYS = NETWORKDAYS ## Két dátum között a teljes munkanapok számát adja meg. -NOW = MOST ## A napi dátum dátumértékét és a pontos idő időértékét adja eredményül. -SECOND = MPERC ## Időértéket másodpercekké alakít át. -TIME = IDŐ ## Adott időpont időértékét adja meg. -TIMEVALUE = IDŐÉRTÉK ## Szövegként megadott időpontot időértékké alakít át. -TODAY = MA ## A napi dátum dátumértékét adja eredményül. -WEEKDAY = HÉT.NAPJA ## Dátumértéket a hét napjává alakítja át. -WEEKNUM = WEEKNUM ## Visszatérési értéke egy szám, amely azt mutatja meg, hogy a megadott dátum az év hányadik hetére esik. -WORKDAY = WORKDAY ## Adott dátumnál adott munkanappal korábbi vagy későbbi dátum dátumértékét adja eredményül. -YEAR = ÉV ## Sorszámot évvé alakít át. -YEARFRAC = YEARFRAC ## Az adott dátumok közötti teljes napok számát törtévként adja meg. - - -## -## Engineering functions Mérnöki függvények -## -BESSELI = BESSELI ## Az In(x) módosított Bessel-függvény értékét adja eredményül. -BESSELJ = BESSELJ ## A Jn(x) Bessel-függvény értékét adja eredményül. -BESSELK = BESSELK ## A Kn(x) módosított Bessel-függvény értékét adja eredményül. -BESSELY = BESSELY ## Az Yn(x) módosított Bessel-függvény értékét adja eredményül. -BIN2DEC = BIN2DEC ## Bináris számot decimálissá alakít át. -BIN2HEX = BIN2HEX ## Bináris számot hexadecimálissá alakít át. -BIN2OCT = BIN2OCT ## Bináris számot oktálissá alakít át. -COMPLEX = COMPLEX ## Valós és képzetes részből komplex számot képez. -CONVERT = CONVERT ## Mértékegységeket vált át. -DEC2BIN = DEC2BIN ## Decimális számot binárissá alakít át. -DEC2HEX = DEC2HEX ## Decimális számot hexadecimálissá alakít át. -DEC2OCT = DEC2OCT ## Decimális számot oktálissá alakít át. -DELTA = DELTA ## Azt vizsgálja, hogy két érték egyenlő-e. -ERF = ERF ## A hibafüggvény értékét adja eredményül. -ERFC = ERFC ## A kiegészített hibafüggvény értékét adja eredményül. -GESTEP = GESTEP ## Azt vizsgálja, hogy egy szám nagyobb-e adott küszöbértéknél. -HEX2BIN = HEX2BIN ## Hexadecimális számot binárissá alakít át. -HEX2DEC = HEX2DEC ## Hexadecimális számot decimálissá alakít át. -HEX2OCT = HEX2OCT ## Hexadecimális számot oktálissá alakít át. -IMABS = IMABS ## Komplex szám abszolút értékét (modulusát) adja eredményül. -IMAGINARY = IMAGINARY ## Komplex szám képzetes részét adja eredményül. -IMARGUMENT = IMARGUMENT ## A komplex szám radiánban kifejezett théta argumentumát adja eredményül. -IMCONJUGATE = IMCONJUGATE ## Komplex szám komplex konjugáltját adja eredményül. -IMCOS = IMCOS ## Komplex szám koszinuszát adja eredményül. -IMDIV = IMDIV ## Két komplex szám hányadosát adja eredményül. -IMEXP = IMEXP ## Az e szám komplex kitevőjű hatványát adja eredményül. -IMLN = IMLN ## Komplex szám természetes logaritmusát adja eredményül. -IMLOG10 = IMLOG10 ## Komplex szám tízes alapú logaritmusát adja eredményül. -IMLOG2 = IMLOG2 ## Komplex szám kettes alapú logaritmusát adja eredményül. -IMPOWER = IMPOWER ## Komplex szám hatványát adja eredményül. -IMPRODUCT = IMPRODUCT ## Komplex számok szorzatát adja eredményül. -IMREAL = IMREAL ## Komplex szám valós részét adja eredményül. -IMSIN = IMSIN ## Komplex szám szinuszát adja eredményül. -IMSQRT = IMSQRT ## Komplex szám négyzetgyökét adja eredményül. -IMSUB = IMSUB ## Két komplex szám különbségét adja eredményül. -IMSUM = IMSUM ## Komplex számok összegét adja eredményül. -OCT2BIN = OCT2BIN ## Oktális számot binárissá alakít át. -OCT2DEC = OCT2DEC ## Oktális számot decimálissá alakít át. -OCT2HEX = OCT2HEX ## Oktális számot hexadecimálissá alakít át. - - -## -## Financial functions Pénzügyi függvények -## -ACCRINT = ACCRINT ## Periodikusan kamatozó értékpapír felszaporodott kamatát adja eredményül. -ACCRINTM = ACCRINTM ## Lejáratkor kamatozó értékpapír felszaporodott kamatát adja eredményül. -AMORDEGRC = AMORDEGRC ## Állóeszköz lineáris értékcsökkenését adja meg az egyes könyvelési időszakokra vonatkozóan. -AMORLINC = AMORLINC ## Az egyes könyvelési időszakokban az értékcsökkenést adja meg. -COUPDAYBS = COUPDAYBS ## A szelvényidőszak kezdetétől a kifizetés időpontjáig eltelt napokat adja vissza. -COUPDAYS = COUPDAYS ## A kifizetés időpontját magában foglaló szelvényperiódus hosszát adja meg napokban. -COUPDAYSNC = COUPDAYSNC ## A kifizetés időpontja és a legközelebbi szelvénydátum közötti napok számát adja meg. -COUPNCD = COUPNCD ## A kifizetést követő legelső szelvénydátumot adja eredményül. -COUPNUM = COUPNUM ## A kifizetés és a lejárat időpontja között kifizetendő szelvények számát adja eredményül. -COUPPCD = COUPPCD ## A kifizetés előtti utolsó szelvénydátumot adja eredményül. -CUMIPMT = CUMIPMT ## Két fizetési időszak között kifizetett kamat halmozott értékét adja eredményül. -CUMPRINC = CUMPRINC ## Két fizetési időszak között kifizetett részletek halmozott (kamatot nem tartalmazó) értékét adja eredményül. -DB = KCS2 ## Eszköz adott időszak alatti értékcsökkenését számítja ki a lineáris leírási modell alkalmazásával. -DDB = KCSA ## Eszköz értékcsökkenését számítja ki adott időszakra vonatkozóan a progresszív vagy egyéb megadott leírási modell alkalmazásával. -DISC = DISC ## Értékpapír leszámítolási kamatlábát adja eredményül. -DOLLARDE = DOLLARDE ## Egy közönséges törtként megadott számot tizedes törtté alakít át. -DOLLARFR = DOLLARFR ## Tizedes törtként megadott számot közönséges törtté alakít át. -DURATION = DURATION ## Periodikus kamatfizetésű értékpapír éves kamatérzékenységét adja eredményül. -EFFECT = EFFECT ## Az éves tényleges kamatláb értékét adja eredményül. -FV = JBÉ ## Befektetés jövőbeli értékét számítja ki. -FVSCHEDULE = FVSCHEDULE ## A kezdőtőke adott kamatlábak szerint megnövelt jövőbeli értékét adja eredményül. -INTRATE = INTRATE ## A lejáratig teljesen lekötött értékpapír kamatrátáját adja eredményül. -IPMT = RRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. -IRR = BMR ## A befektetés belső megtérülési rátáját számítja ki pénzáramláshoz. -ISPMT = LRÉSZLETKAMAT ## A befektetés adott időszakára fizetett kamatot számítja ki. -MDURATION = MDURATION ## Egy 100 Ft névértékű értékpapír Macauley-féle módosított kamatérzékenységét adja eredményül. -MIRR = MEGTÉRÜLÉS ## A befektetés belső megtérülési rátáját számítja ki a költségek és a bevételek különböző kamatlába mellett. -NOMINAL = NOMINAL ## Az éves névleges kamatláb értékét adja eredményül. -NPER = PER.SZÁM ## A törlesztési időszakok számát adja meg. -NPV = NMÉ ## Befektetéshez kapcsolódó pénzáramlás nettó jelenértékét számítja ki ismert pénzáramlás és kamatláb mellett. -ODDFPRICE = ODDFPRICE ## Egy 100 Ft névértékű, a futamidő elején töredék-időszakos értékpapír árát adja eredményül. -ODDFYIELD = ODDFYIELD ## A futamidő elején töredék-időszakos értékpapír hozamát adja eredményül. -ODDLPRICE = ODDLPRICE ## Egy 100 Ft névértékű, a futamidő végén töredék-időszakos értékpapír árát adja eredményül. -ODDLYIELD = ODDLYIELD ## A futamidő végén töredék-időszakos értékpapír hozamát adja eredményül. -PMT = RÉSZLET ## A törlesztési időszakra vonatkozó törlesztési összeget számítja ki. -PPMT = PRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. -PRICE = PRICE ## Egy 100 Ft névértékű, periodikusan kamatozó értékpapír árát adja eredményül. -PRICEDISC = PRICEDISC ## Egy 100 Ft névértékű leszámítolt értékpapír árát adja eredményül. -PRICEMAT = PRICEMAT ## Egy 100 Ft névértékű, a lejáratkor kamatozó értékpapír árát adja eredményül. -PV = MÉ ## Befektetés jelenlegi értékét számítja ki. -RATE = RÁTA ## Egy törlesztési időszakban az egy időszakra eső kamatláb nagyságát számítja ki. -RECEIVED = RECEIVED ## A lejáratig teljesen lekötött értékpapír lejáratakor kapott összegét adja eredményül. -SLN = LCSA ## Tárgyi eszköz egy időszakra eső amortizációját adja meg bruttó érték szerinti lineáris leírási kulcsot alkalmazva. -SYD = SYD ## Tárgyi eszköz értékcsökkenését számítja ki adott időszakra az évek számjegyösszegével dolgozó módszer alapján. -TBILLEQ = TBILLEQ ## Kincstárjegy kötvény-egyenértékű hozamát adja eredményül. -TBILLPRICE = TBILLPRICE ## Egy 100 Ft névértékű kincstárjegy árát adja eredményül. -TBILLYIELD = TBILLYIELD ## Kincstárjegy hozamát adja eredményül. -VDB = ÉCSRI ## Tárgyi eszköz amortizációját számítja ki megadott vagy részidőszakra a csökkenő egyenleg módszerének alkalmazásával. -XIRR = XIRR ## Ütemezett készpénzforgalom (cash flow) belső megtérülési kamatrátáját adja eredményül. -XNPV = XNPV ## Ütemezett készpénzforgalom (cash flow) nettó jelenlegi értékét adja eredményül. -YIELD = YIELD ## Periodikusan kamatozó értékpapír hozamát adja eredményül. -YIELDDISC = YIELDDISC ## Leszámítolt értékpapír (például kincstárjegy) éves hozamát adja eredményül. -YIELDMAT = YIELDMAT ## Lejáratkor kamatozó értékpapír éves hozamát adja eredményül. - - -## -## Information functions Információs függvények -## -CELL = CELLA ## Egy cella formátumára, elhelyezkedésére vagy tartalmára vonatkozó adatokat ad eredményül. -ERROR.TYPE = HIBA.TÍPUS ## Egy hibatípushoz tartozó számot ad eredményül. -INFO = INFÓ ## A rendszer- és munkakörnyezet pillanatnyi állapotáról ad felvilágosítást. -ISBLANK = ÜRES ## Eredménye IGAZ, ha az érték üres. -ISERR = HIBA ## Eredménye IGAZ, ha az érték valamelyik hibaérték a #HIÁNYZIK kivételével. -ISERROR = HIBÁS ## Eredménye IGAZ, ha az érték valamelyik hibaérték. -ISEVEN = ISEVEN ## Eredménye IGAZ, ha argumentuma páros szám. -ISLOGICAL = LOGIKAI ## Eredménye IGAZ, ha az érték logikai érték. -ISNA = NINCS ## Eredménye IGAZ, ha az érték a #HIÁNYZIK hibaérték. -ISNONTEXT = NEM.SZÖVEG ## Eredménye IGAZ, ha az érték nem szöveg. -ISNUMBER = SZÁM ## Eredménye IGAZ, ha az érték szám. -ISODD = ISODD ## Eredménye IGAZ, ha argumentuma páratlan szám. -ISREF = HIVATKOZÁS ## Eredménye IGAZ, ha az érték hivatkozás. -ISTEXT = SZÖVEG.E ## Eredménye IGAZ, ha az érték szöveg. -N = N ## Argumentumának értékét számmá alakítja. -NA = HIÁNYZIK ## Eredménye a #HIÁNYZIK hibaérték. -TYPE = TÍPUS ## Érték adattípusának azonosítószámát adja eredményül. - - -## -## Logical functions Logikai függvények -## -AND = ÉS ## Eredménye IGAZ, ha minden argumentuma IGAZ. -FALSE = HAMIS ## A HAMIS logikai értéket adja eredményül. -IF = HA ## Logikai vizsgálatot hajt végre. -IFERROR = HAHIBA ## A megadott értéket adja vissza, ha egy képlet hibához vezet; más esetben a képlet értékét adja eredményül. -NOT = NEM ## Argumentuma értékének ellentettjét adja eredményül. -OR = VAGY ## Eredménye IGAZ, ha bármely argumentuma IGAZ. -TRUE = IGAZ ## Az IGAZ logikai értéket adja eredményül. - - -## -## Lookup and reference functions Keresési és hivatkozási függvények -## -ADDRESS = CÍM ## A munkalap egy cellájára való hivatkozást adja szövegként eredményül. -AREAS = TERÜLET ## Hivatkozásban a területek számát adja eredményül. -CHOOSE = VÁLASZT ## Értékek listájából választ ki egy elemet. -COLUMN = OSZLOP ## Egy hivatkozás oszlopszámát adja eredményül. -COLUMNS = OSZLOPOK ## A hivatkozásban található oszlopok számát adja eredményül. -HLOOKUP = VKERES ## A megadott tömb felső sorában adott értékű elemet keres, és a megtalált elem oszlopából adott sorban elhelyezkedő értékkel tér vissza. -HYPERLINK = HIPERHIVATKOZÁS ## Hálózati kiszolgálón, intraneten vagy az interneten tárolt dokumentumot megnyitó parancsikont vagy hivatkozást hoz létre. -INDEX = INDEX ## Tömb- vagy hivatkozás indexszel megadott értékét adja vissza. -INDIRECT = INDIREKT ## Szöveg megadott hivatkozást ad eredményül. -LOOKUP = KERES ## Vektorban vagy tömbben keres meg értékeket. -MATCH = HOL.VAN ## Hivatkozásban vagy tömbben értékeket keres. -OFFSET = OFSZET ## Hivatkozás egy másik hivatkozástól számított távolságát adja meg. -ROW = SOR ## Egy hivatkozás sorának számát adja meg. -ROWS = SOROK ## Egy hivatkozás sorainak számát adja meg. -RTD = RTD ## Valós idejű adatokat keres vissza a COM automatizmust (automatizálás: Egy alkalmazás objektumaival való munka másik alkalmazásból vagy fejlesztőeszközből. A korábban OLE automatizmusnak nevezett automatizálás iparági szabvány, a Component Object Model (COM) szolgáltatása.) támogató programból. -TRANSPOSE = TRANSZPONÁLÁS ## Egy tömb transzponáltját adja eredményül. -VLOOKUP = FKERES ## A megadott tömb bal szélső oszlopában megkeres egy értéket, majd annak sora és a megadott oszlop metszéspontjában levő értéked adja eredményül. - - -## -## Math and trigonometry functions Matematikai és trigonometrikus függvények -## -ABS = ABS ## Egy szám abszolút értékét adja eredményül. -ACOS = ARCCOS ## Egy szám arkusz koszinuszát számítja ki. -ACOSH = ACOSH ## Egy szám inverz koszinusz hiperbolikuszát számítja ki. -ASIN = ARCSIN ## Egy szám arkusz szinuszát számítja ki. -ASINH = ASINH ## Egy szám inverz szinusz hiperbolikuszát számítja ki. -ATAN = ARCTAN ## Egy szám arkusz tangensét számítja ki. -ATAN2 = ARCTAN2 ## X és y koordináták alapján számítja ki az arkusz tangens értéket. -ATANH = ATANH ## A szám inverz tangens hiperbolikuszát számítja ki. -CEILING = PLAFON ## Egy számot a legközelebbi egészre vagy a pontosságként megadott érték legközelebb eső többszörösére kerekít. -COMBIN = KOMBINÁCIÓK ## Adott számú objektum összes lehetséges kombinációinak számát számítja ki. -COS = COS ## Egy szám koszinuszát számítja ki. -COSH = COSH ## Egy szám koszinusz hiperbolikuszát számítja ki. -DEGREES = FOK ## Radiánt fokká alakít át. -EVEN = PÁROS ## Egy számot a legközelebbi páros egész számra kerekít. -EXP = KITEVŐ ## Az e adott kitevőjű hatványát adja eredményül. -FACT = FAKT ## Egy szám faktoriálisát számítja ki. -FACTDOUBLE = FACTDOUBLE ## Egy szám dupla faktoriálisát adja eredményül. -FLOOR = PADLÓ ## Egy számot lefelé, a nulla felé kerekít. -GCD = GCD ## A legnagyobb közös osztót adja eredményül. -INT = INT ## Egy számot lefelé kerekít a legközelebbi egészre. -LCM = LCM ## A legkisebb közös többszöröst adja eredményül. -LN = LN ## Egy szám természetes logaritmusát számítja ki. -LOG = LOG ## Egy szám adott alapú logaritmusát számítja ki. -LOG10 = LOG10 ## Egy szám 10-es alapú logaritmusát számítja ki. -MDETERM = MDETERM ## Egy tömb mátrix-determinánsát számítja ki. -MINVERSE = INVERZ.MÁTRIX ## Egy tömb mátrix inverzét adja eredményül. -MMULT = MSZORZAT ## Két tömb mátrix-szorzatát adja meg. -MOD = MARADÉK ## Egy szám osztási maradékát adja eredményül. -MROUND = MROUND ## A kívánt többszörösére kerekített értéket ad eredményül. -MULTINOMIAL = MULTINOMIAL ## Számhalmaz multinomiálisát adja eredményül. -ODD = PÁRATLAN ## Egy számot a legközelebbi páratlan számra kerekít. -PI = PI ## A pi matematikai állandót adja vissza. -POWER = HATVÁNY ## Egy szám adott kitevőjű hatványát számítja ki. -PRODUCT = SZORZAT ## Argumentumai szorzatát számítja ki. -QUOTIENT = QUOTIENT ## Egy hányados egész részét adja eredményül. -RADIANS = RADIÁN ## Fokot radiánná alakít át. -RAND = VÉL ## Egy 0 és 1 közötti véletlen számot ad eredményül. -RANDBETWEEN = RANDBETWEEN ## Megadott számok közé eső véletlen számot állít elő. -ROMAN = RÓMAI ## Egy számot római számokkal kifejezve szövegként ad eredményül. -ROUND = KEREKÍTÉS ## Egy számot adott számú számjegyre kerekít. -ROUNDDOWN = KEREKÍTÉS.LE ## Egy számot lefelé, a nulla felé kerekít. -ROUNDUP = KEREKÍTÉS.FEL ## Egy számot felfelé, a nullától távolabbra kerekít. -SERIESSUM = SERIESSUM ## Hatványsor összegét adja eredményül. -SIGN = ELŐJEL ## Egy szám előjelét adja meg. -SIN = SIN ## Egy szög szinuszát számítja ki. -SINH = SINH ## Egy szám szinusz hiperbolikuszát számítja ki. -SQRT = GYÖK ## Egy szám pozitív négyzetgyökét számítja ki. -SQRTPI = SQRTPI ## A (szám*pi) négyzetgyökét adja eredményül. -SUBTOTAL = RÉSZÖSSZEG ## Lista vagy adatbázis részösszegét adja eredményül. -SUM = SZUM ## Összeadja az argumentumlistájában lévő számokat. -SUMIF = SZUMHA ## A megadott feltételeknek eleget tevő cellákban található értékeket adja össze. -SUMIFS = SZUMHATÖBB ## Több megadott feltételnek eleget tévő tartománycellák összegét adja eredményül. -SUMPRODUCT = SZORZATÖSSZEG ## A megfelelő tömbelemek szorzatának összegét számítja ki. -SUMSQ = NÉGYZETÖSSZEG ## Argumentumai négyzetének összegét számítja ki. -SUMX2MY2 = SZUMX2BŐLY2 ## Két tömb megfelelő elemei négyzetének különbségét összegzi. -SUMX2PY2 = SZUMX2MEGY2 ## Két tömb megfelelő elemei négyzetének összegét összegzi. -SUMXMY2 = SZUMXBŐLY2 ## Két tömb megfelelő elemei különbségének négyzetösszegét számítja ki. -TAN = TAN ## Egy szám tangensét számítja ki. -TANH = TANH ## Egy szám tangens hiperbolikuszát számítja ki. -TRUNC = CSONK ## Egy számot egésszé csonkít. - - -## -## Statistical functions Statisztikai függvények -## -AVEDEV = ÁTL.ELTÉRÉS ## Az adatpontoknak átlaguktól való átlagos abszolút eltérését számítja ki. -AVERAGE = ÁTLAG ## Argumentumai átlagát számítja ki. -AVERAGEA = ÁTLAGA ## Argumentumai átlagát számítja ki (beleértve a számokat, szöveget és logikai értékeket). -AVERAGEIF = ÁTLAGHA ## A megadott feltételnek eleget tévő tartomány celláinak átlagát (számtani közepét) adja eredményül. -AVERAGEIFS = ÁTLAGHATÖBB ## A megadott feltételeknek eleget tévő cellák átlagát (számtani közepét) adja eredményül. -BETADIST = BÉTA.ELOSZLÁS ## A béta-eloszlás függvényt számítja ki. -BETAINV = INVERZ.BÉTA ## Adott béta-eloszláshoz kiszámítja a béta eloszlásfüggvény inverzét. -BINOMDIST = BINOM.ELOSZLÁS ## A diszkrét binomiális eloszlás valószínűségértékét számítja ki. -CHIDIST = KHI.ELOSZLÁS ## A khi-négyzet-eloszlás egyszélű valószínűségértékét számítja ki. -CHIINV = INVERZ.KHI ## A khi-négyzet-eloszlás egyszélű valószínűségértékének inverzét számítja ki. -CHITEST = KHI.PRÓBA ## Függetlenségvizsgálatot hajt végre. -CONFIDENCE = MEGBÍZHATÓSÁG ## Egy statisztikai sokaság várható értékének megbízhatósági intervallumát adja eredményül. -CORREL = KORREL ## Két adathalmaz korrelációs együtthatóját számítja ki. -COUNT = DARAB ## Megszámolja, hogy argumentumlistájában hány szám található. -COUNTA = DARAB2 ## Megszámolja, hogy argumentumlistájában hány érték található. -COUNTBLANK = DARABÜRES ## Egy tartományban összeszámolja az üres cellákat. -COUNTIF = DARABTELI ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek a megadott feltételnek. -COUNTIFS = DARABHATÖBB ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek több feltételnek. -COVAR = KOVAR ## A kovarianciát, azaz a páronkénti eltérések szorzatának átlagát számítja ki. -CRITBINOM = KRITBINOM ## Azt a legkisebb számot adja eredményül, amelyre a binomiális eloszlásfüggvény értéke nem kisebb egy adott határértéknél. -DEVSQ = SQ ## Az átlagtól való eltérések négyzetének összegét számítja ki. -EXPONDIST = EXP.ELOSZLÁS ## Az exponenciális eloszlás értékét számítja ki. -FDIST = F.ELOSZLÁS ## Az F-eloszlás értékét számítja ki. -FINV = INVERZ.F ## Az F-eloszlás inverzének értékét számítja ki. -FISHER = FISHER ## Fisher-transzformációt hajt végre. -FISHERINV = INVERZ.FISHER ## A Fisher-transzformáció inverzét hajtja végre. -FORECAST = ELŐREJELZÉS ## Az ismert értékek alapján lineáris regresszióval becsült értéket ad eredményül. -FREQUENCY = GYAKORISÁG ## A gyakorisági vagy empirikus eloszlás értékét függőleges tömbként adja eredményül. -FTEST = F.PRÓBA ## Az F-próba értékét adja eredményül. -GAMMADIST = GAMMA.ELOSZLÁS ## A gamma-eloszlás értékét számítja ki. -GAMMAINV = INVERZ.GAMMA ## A gamma-eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -GAMMALN = GAMMALN ## A gamma-függvény természetes logaritmusát számítja ki. -GEOMEAN = MÉRTANI.KÖZÉP ## Argumentumai mértani középértékét számítja ki. -GROWTH = NÖV ## Exponenciális regresszió alapján ad becslést. -HARMEAN = HARM.KÖZÉP ## Argumentumai harmonikus átlagát számítja ki. -HYPGEOMDIST = HIPERGEOM.ELOSZLÁS ## A hipergeometriai eloszlás értékét számítja ki. -INTERCEPT = METSZ ## A regressziós egyenes y tengellyel való metszéspontját határozza meg. -KURT = CSÚCSOSSÁG ## Egy adathalmaz csúcsosságát számítja ki. -LARGE = NAGY ## Egy adathalmaz k-adik legnagyobb elemét adja eredményül. -LINEST = LIN.ILL ## A legkisebb négyzetek módszerével az adatokra illesztett egyenes paramétereit határozza meg. -LOGEST = LOG.ILL ## Az adatokra illesztett exponenciális görbe paramétereit határozza meg. -LOGINV = INVERZ.LOG.ELOSZLÁS ## A lognormális eloszlás inverzét számítja ki. -LOGNORMDIST = LOG.ELOSZLÁS ## A lognormális eloszlásfüggvény értékét számítja ki. -MAX = MAX ## Az argumentumai között szereplő legnagyobb számot adja meg. -MAXA = MAX2 ## Az argumentumai között szereplő legnagyobb számot adja meg (beleértve a számokat, szöveget és logikai értékeket). -MEDIAN = MEDIÁN ## Adott számhalmaz mediánját számítja ki. -MIN = MIN ## Az argumentumai között szereplő legkisebb számot adja meg. -MINA = MIN2 ## Az argumentumai között szereplő legkisebb számot adja meg, beleértve a számokat, szöveget és logikai értékeket. -MODE = MÓDUSZ ## Egy adathalmazból kiválasztja a leggyakrabban előforduló számot. -NEGBINOMDIST = NEGBINOM.ELOSZL ## A negatív binomiális eloszlás értékét számítja ki. -NORMDIST = NORM.ELOSZL ## A normális eloszlás értékét számítja ki. -NORMINV = INVERZ.NORM ## A normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -NORMSDIST = STNORMELOSZL ## A standard normális eloszlás eloszlásfüggvényének értékét számítja ki. -NORMSINV = INVERZ.STNORM ## A standard normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. -PEARSON = PEARSON ## A Pearson-féle korrelációs együtthatót számítja ki. -PERCENTILE = PERCENTILIS ## Egy tartományban található értékek k-adik percentilisét, azaz százalékosztályát adja eredményül. -PERCENTRANK = SZÁZALÉKRANG ## Egy értéknek egy adathalmazon belül vett százalékos rangját (elhelyezkedését) számítja ki. -PERMUT = VARIÁCIÓK ## Adott számú objektum k-ad osztályú ismétlés nélküli variációinak számát számítja ki. -POISSON = POISSON ## A Poisson-eloszlás értékét számítja ki. -PROB = VALÓSZÍNŰSÉG ## Annak valószínűségét számítja ki, hogy adott értékek két határérték közé esnek. -QUARTILE = KVARTILIS ## Egy adathalmaz kvartilisét (negyedszintjét) számítja ki. -RANK = SORSZÁM ## Kiszámítja, hogy egy szám hányadik egy számsorozatban. -RSQ = RNÉGYZET ## Kiszámítja a Pearson-féle szorzatmomentum korrelációs együtthatójának négyzetét. -SKEW = FERDESÉG ## Egy eloszlás ferdeségét határozza meg. -SLOPE = MEREDEKSÉG ## Egy lineáris regressziós egyenes meredekségét számítja ki. -SMALL = KICSI ## Egy adathalmaz k-adik legkisebb elemét adja meg. -STANDARDIZE = NORMALIZÁLÁS ## Normalizált értéket ad eredményül. -STDEV = SZÓRÁS ## Egy statisztikai sokaság mintájából kiszámítja annak szórását. -STDEVA = SZÓRÁSA ## Egy statisztikai sokaság mintájából kiszámítja annak szórását (beleértve a számokat, szöveget és logikai értékeket). -STDEVP = SZÓRÁSP ## Egy statisztikai sokaság egészéből kiszámítja annak szórását. -STDEVPA = SZÓRÁSPA ## Egy statisztikai sokaság egészéből kiszámítja annak szórását (beleértve számokat, szöveget és logikai értékeket). -STEYX = STHIBAYX ## Egy regresszió esetén az egyes x-értékek alapján meghatározott y-értékek standard hibáját számítja ki. -TDIST = T.ELOSZLÁS ## A Student-féle t-eloszlás értékét számítja ki. -TINV = INVERZ.T ## A Student-féle t-eloszlás inverzét számítja ki. -TREND = TREND ## Lineáris trend értékeit számítja ki. -TRIMMEAN = RÉSZÁTLAG ## Egy adathalmaz középső részének átlagát számítja ki. -TTEST = T.PRÓBA ## A Student-féle t-próbához tartozó valószínűséget számítja ki. -VAR = VAR ## Minta alapján becslést ad a varianciára. -VARA = VARA ## Minta alapján becslést ad a varianciára (beleértve számokat, szöveget és logikai értékeket). -VARP = VARP ## Egy statisztikai sokaság varianciáját számítja ki. -VARPA = VARPA ## Egy statisztikai sokaság varianciáját számítja ki (beleértve számokat, szöveget és logikai értékeket). -WEIBULL = WEIBULL ## A Weibull-féle eloszlás értékét számítja ki. -ZTEST = Z.PRÓBA ## Az egyszélű z-próbával kapott valószínűségértéket számítja ki. - - -## -## Text functions Szövegműveletekhez használható függvények -## -ASC = ASC ## Szöveg teljes szélességű (kétbájtos) latin és katakana karaktereit félszélességű (egybájtos) karakterekké alakítja. -BAHTTEXT = BAHTSZÖVEG ## Számot szöveggé alakít a ß (baht) pénznemformátum használatával. -CHAR = KARAKTER ## A kódszámmal meghatározott karaktert adja eredményül. -CLEAN = TISZTÍT ## A szövegből eltávolítja az összes nem nyomtatható karaktert. -CODE = KÓD ## Karaktersorozat első karakterének numerikus kódját adja eredményül. -CONCATENATE = ÖSSZEFŰZ ## Több szövegelemet egyetlen szöveges elemmé fűz össze. -DOLLAR = FORINT ## Számot pénznem formátumú szöveggé alakít át. -EXACT = AZONOS ## Megvizsgálja, hogy két érték azonos-e. -FIND = SZÖVEG.TALÁL ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). -FINDB = SZÖVEG.TALÁL2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). -FIXED = FIX ## Számot szöveges formátumúra alakít adott számú tizedesjegyre kerekítve. -JIS = JIS ## A félszélességű (egybájtos) latin és a katakana karaktereket teljes szélességű (kétbájtos) karakterekké alakítja. -LEFT = BAL ## Szöveg bal szélső karaktereit adja eredményül. -LEFTB = BAL2 ## Szöveg bal szélső karaktereit adja eredményül. -LEN = HOSSZ ## Szöveg karakterekben mért hosszát adja eredményül. -LENB = HOSSZ2 ## Szöveg karakterekben mért hosszát adja eredményül. -LOWER = KISBETŰ ## Szöveget kisbetűssé alakít át. -MID = KÖZÉP ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. -MIDB = KÖZÉP2 ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. -PHONETIC = PHONETIC ## Szöveg furigana (fonetikus) karaktereit adja vissza. -PROPER = TNÉV ## Szöveg minden szavának kezdőbetűjét nagybetűsre cseréli. -REPLACE = CSERE ## A szövegen belül karaktereket cserél. -REPLACEB = CSERE2 ## A szövegen belül karaktereket cserél. -REPT = SOKSZOR ## Megadott számú alkalommal megismétel egy szövegrészt. -RIGHT = JOBB ## Szövegrész jobb szélső karaktereit adja eredményül. -RIGHTB = JOBB2 ## Szövegrész jobb szélső karaktereit adja eredményül. -SEARCH = SZÖVEG.KERES ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). -SEARCHB = SZÖVEG.KERES2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). -SUBSTITUTE = HELYETTE ## Szövegben adott karaktereket másikra cserél. -T = T ## Argumentumát szöveggé alakítja át. -TEXT = SZÖVEG ## Számértéket alakít át adott számformátumú szöveggé. -TRIM = TRIM ## A szövegből eltávolítja a szóközöket. -UPPER = NAGYBETŰS ## Szöveget nagybetűssé alakít át. -VALUE = ÉRTÉK ## Szöveget számmá alakít át. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Bővítmények és automatizálási függvények +## +GETPIVOTDATA = KIMUTATÁSADATOT.VESZ ## A kimutatásokban tárolt adatok visszaadására használható. + + +## +## Cube functions Kockafüggvények +## +CUBEKPIMEMBER = KOCKA.FŐTELJMUT ## Egy fő teljesítménymutató (KPI) nevét, tulajdonságát és mértékegységét adja eredményül, a nevet és a tulajdonságot megjeleníti a cellában. A KPI-k számszerűsíthető mérési lehetőséget jelentenek – ilyen mutató például a havi bruttó nyereség vagy az egy alkalmazottra jutó negyedéves forgalom –, egy szervezet teljesítményének nyomonkövetésére használhatók. +CUBEMEMBER = KOCKA.TAG ## Kockahierachia tagját vagy rekordját adja eredményül. Ellenőrizhető vele, hogy szerepel-e a kockában az adott tag vagy rekord. +CUBEMEMBERPROPERTY = KOCKA.TAG.TUL ## A kocka egyik tagtulajdonságának értékét adja eredményül. Használatával ellenőrizhető, hogy szerepel-e egy tagnév a kockában, eredménye pedig az erre a tagra vonatkozó, megadott tulajdonság. +CUBERANKEDMEMBER = KOCKA.HALM.ELEM ## Egy halmaz rangsor szerinti n-edik tagját adja eredményül. Használatával egy halmaz egy vagy több elemét kaphatja meg, például a legnagyobb teljesítményű üzletkötőt vagy a 10 legjobb tanulót. +CUBESET = KOCKA.HALM ## Számított tagok vagy rekordok halmazát adja eredményül, ehhez egy beállított kifejezést elküld a kiszolgálón található kockának, majd ezt a halmazt adja vissza a Microsoft Office Excel alkalmazásnak. +CUBESETCOUNT = KOCKA.HALM.DB ## Egy halmaz elemszámát adja eredményül. +CUBEVALUE = KOCKA.ÉRTÉK ## Kockából összesített értéket ad eredményül. + + +## +## Database functions Adatbázis-kezelő függvények +## +DAVERAGE = AB.ÁTLAG ## A kijelölt adatbáziselemek átlagát számítja ki. +DCOUNT = AB.DARAB ## Megszámolja, hogy az adatbázisban hány cella tartalmaz számokat. +DCOUNTA = AB.DARAB2 ## Megszámolja az adatbázisban lévő nem üres cellákat. +DGET = AB.MEZŐ ## Egy adatbázisból egyetlen olyan rekordot ad vissza, amely megfelel a megadott feltételeknek. +DMAX = AB.MAX ## A kiválasztott adatbáziselemek közül a legnagyobb értéket adja eredményül. +DMIN = AB.MIN ## A kijelölt adatbáziselemek közül a legkisebb értéket adja eredményül. +DPRODUCT = AB.SZORZAT ## Az adatbázis megadott feltételeknek eleget tevő rekordjaira összeszorozza a megadott mezőben található számértékeket, és eredményül ezt a szorzatot adja. +DSTDEV = AB.SZÓRÁS ## A kijelölt adatbáziselemek egy mintája alapján megbecsüli a szórást. +DSTDEVP = AB.SZÓRÁS2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórást. +DSUM = AB.SZUM ## Összeadja a feltételnek megfelelő adatbázisrekordok mezőoszlopában a számokat. +DVAR = AB.VAR ## A kijelölt adatbáziselemek mintája alapján becslést ad a szórásnégyzetre. +DVARP = AB.VAR2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórásnégyzetet. + + +## +## Date and time functions Dátumfüggvények +## +DATE = DÁTUM ## Adott dátum dátumértékét adja eredményül. +DATEVALUE = DÁTUMÉRTÉK ## Szövegként megadott dátumot dátumértékké alakít át. +DAY = NAP ## Dátumértéket a hónap egy napjává (0-31) alakít. +DAYS360 = NAP360 ## Két dátum közé eső napok számát számítja ki a 360 napos év alapján. +EDATE = EDATE ## Adott dátumnál adott számú hónappal korábbi vagy későbbi dátum dátumértékét adja eredményül. +EOMONTH = EOMONTH ## Adott dátumnál adott számú hónappal korábbi vagy későbbi hónap utolsó napjának dátumértékét adja eredményül. +HOUR = ÓRA ## Időértéket órákká alakít. +MINUTE = PERC ## Időértéket percekké alakít. +MONTH = HÓNAP ## Időértéket hónapokká alakít. +NETWORKDAYS = NETWORKDAYS ## Két dátum között a teljes munkanapok számát adja meg. +NOW = MOST ## A napi dátum dátumértékét és a pontos idő időértékét adja eredményül. +SECOND = MPERC ## Időértéket másodpercekké alakít át. +TIME = IDŐ ## Adott időpont időértékét adja meg. +TIMEVALUE = IDŐÉRTÉK ## Szövegként megadott időpontot időértékké alakít át. +TODAY = MA ## A napi dátum dátumértékét adja eredményül. +WEEKDAY = HÉT.NAPJA ## Dátumértéket a hét napjává alakítja át. +WEEKNUM = WEEKNUM ## Visszatérési értéke egy szám, amely azt mutatja meg, hogy a megadott dátum az év hányadik hetére esik. +WORKDAY = WORKDAY ## Adott dátumnál adott munkanappal korábbi vagy későbbi dátum dátumértékét adja eredményül. +YEAR = ÉV ## Sorszámot évvé alakít át. +YEARFRAC = YEARFRAC ## Az adott dátumok közötti teljes napok számát törtévként adja meg. + + +## +## Engineering functions Mérnöki függvények +## +BESSELI = BESSELI ## Az In(x) módosított Bessel-függvény értékét adja eredményül. +BESSELJ = BESSELJ ## A Jn(x) Bessel-függvény értékét adja eredményül. +BESSELK = BESSELK ## A Kn(x) módosított Bessel-függvény értékét adja eredményül. +BESSELY = BESSELY ## Az Yn(x) módosított Bessel-függvény értékét adja eredményül. +BIN2DEC = BIN2DEC ## Bináris számot decimálissá alakít át. +BIN2HEX = BIN2HEX ## Bináris számot hexadecimálissá alakít át. +BIN2OCT = BIN2OCT ## Bináris számot oktálissá alakít át. +COMPLEX = COMPLEX ## Valós és képzetes részből komplex számot képez. +CONVERT = CONVERT ## Mértékegységeket vált át. +DEC2BIN = DEC2BIN ## Decimális számot binárissá alakít át. +DEC2HEX = DEC2HEX ## Decimális számot hexadecimálissá alakít át. +DEC2OCT = DEC2OCT ## Decimális számot oktálissá alakít át. +DELTA = DELTA ## Azt vizsgálja, hogy két érték egyenlő-e. +ERF = ERF ## A hibafüggvény értékét adja eredményül. +ERFC = ERFC ## A kiegészített hibafüggvény értékét adja eredményül. +GESTEP = GESTEP ## Azt vizsgálja, hogy egy szám nagyobb-e adott küszöbértéknél. +HEX2BIN = HEX2BIN ## Hexadecimális számot binárissá alakít át. +HEX2DEC = HEX2DEC ## Hexadecimális számot decimálissá alakít át. +HEX2OCT = HEX2OCT ## Hexadecimális számot oktálissá alakít át. +IMABS = IMABS ## Komplex szám abszolút értékét (modulusát) adja eredményül. +IMAGINARY = IMAGINARY ## Komplex szám képzetes részét adja eredményül. +IMARGUMENT = IMARGUMENT ## A komplex szám radiánban kifejezett théta argumentumát adja eredményül. +IMCONJUGATE = IMCONJUGATE ## Komplex szám komplex konjugáltját adja eredményül. +IMCOS = IMCOS ## Komplex szám koszinuszát adja eredményül. +IMDIV = IMDIV ## Két komplex szám hányadosát adja eredményül. +IMEXP = IMEXP ## Az e szám komplex kitevőjű hatványát adja eredményül. +IMLN = IMLN ## Komplex szám természetes logaritmusát adja eredményül. +IMLOG10 = IMLOG10 ## Komplex szám tízes alapú logaritmusát adja eredményül. +IMLOG2 = IMLOG2 ## Komplex szám kettes alapú logaritmusát adja eredményül. +IMPOWER = IMPOWER ## Komplex szám hatványát adja eredményül. +IMPRODUCT = IMPRODUCT ## Komplex számok szorzatát adja eredményül. +IMREAL = IMREAL ## Komplex szám valós részét adja eredményül. +IMSIN = IMSIN ## Komplex szám szinuszát adja eredményül. +IMSQRT = IMSQRT ## Komplex szám négyzetgyökét adja eredményül. +IMSUB = IMSUB ## Két komplex szám különbségét adja eredményül. +IMSUM = IMSUM ## Komplex számok összegét adja eredményül. +OCT2BIN = OCT2BIN ## Oktális számot binárissá alakít át. +OCT2DEC = OCT2DEC ## Oktális számot decimálissá alakít át. +OCT2HEX = OCT2HEX ## Oktális számot hexadecimálissá alakít át. + + +## +## Financial functions Pénzügyi függvények +## +ACCRINT = ACCRINT ## Periodikusan kamatozó értékpapír felszaporodott kamatát adja eredményül. +ACCRINTM = ACCRINTM ## Lejáratkor kamatozó értékpapír felszaporodott kamatát adja eredményül. +AMORDEGRC = AMORDEGRC ## Állóeszköz lineáris értékcsökkenését adja meg az egyes könyvelési időszakokra vonatkozóan. +AMORLINC = AMORLINC ## Az egyes könyvelési időszakokban az értékcsökkenést adja meg. +COUPDAYBS = COUPDAYBS ## A szelvényidőszak kezdetétől a kifizetés időpontjáig eltelt napokat adja vissza. +COUPDAYS = COUPDAYS ## A kifizetés időpontját magában foglaló szelvényperiódus hosszát adja meg napokban. +COUPDAYSNC = COUPDAYSNC ## A kifizetés időpontja és a legközelebbi szelvénydátum közötti napok számát adja meg. +COUPNCD = COUPNCD ## A kifizetést követő legelső szelvénydátumot adja eredményül. +COUPNUM = COUPNUM ## A kifizetés és a lejárat időpontja között kifizetendő szelvények számát adja eredményül. +COUPPCD = COUPPCD ## A kifizetés előtti utolsó szelvénydátumot adja eredményül. +CUMIPMT = CUMIPMT ## Két fizetési időszak között kifizetett kamat halmozott értékét adja eredményül. +CUMPRINC = CUMPRINC ## Két fizetési időszak között kifizetett részletek halmozott (kamatot nem tartalmazó) értékét adja eredményül. +DB = KCS2 ## Eszköz adott időszak alatti értékcsökkenését számítja ki a lineáris leírási modell alkalmazásával. +DDB = KCSA ## Eszköz értékcsökkenését számítja ki adott időszakra vonatkozóan a progresszív vagy egyéb megadott leírási modell alkalmazásával. +DISC = DISC ## Értékpapír leszámítolási kamatlábát adja eredményül. +DOLLARDE = DOLLARDE ## Egy közönséges törtként megadott számot tizedes törtté alakít át. +DOLLARFR = DOLLARFR ## Tizedes törtként megadott számot közönséges törtté alakít át. +DURATION = DURATION ## Periodikus kamatfizetésű értékpapír éves kamatérzékenységét adja eredményül. +EFFECT = EFFECT ## Az éves tényleges kamatláb értékét adja eredményül. +FV = JBÉ ## Befektetés jövőbeli értékét számítja ki. +FVSCHEDULE = FVSCHEDULE ## A kezdőtőke adott kamatlábak szerint megnövelt jövőbeli értékét adja eredményül. +INTRATE = INTRATE ## A lejáratig teljesen lekötött értékpapír kamatrátáját adja eredményül. +IPMT = RRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. +IRR = BMR ## A befektetés belső megtérülési rátáját számítja ki pénzáramláshoz. +ISPMT = LRÉSZLETKAMAT ## A befektetés adott időszakára fizetett kamatot számítja ki. +MDURATION = MDURATION ## Egy 100 Ft névértékű értékpapír Macauley-féle módosított kamatérzékenységét adja eredményül. +MIRR = MEGTÉRÜLÉS ## A befektetés belső megtérülési rátáját számítja ki a költségek és a bevételek különböző kamatlába mellett. +NOMINAL = NOMINAL ## Az éves névleges kamatláb értékét adja eredményül. +NPER = PER.SZÁM ## A törlesztési időszakok számát adja meg. +NPV = NMÉ ## Befektetéshez kapcsolódó pénzáramlás nettó jelenértékét számítja ki ismert pénzáramlás és kamatláb mellett. +ODDFPRICE = ODDFPRICE ## Egy 100 Ft névértékű, a futamidő elején töredék-időszakos értékpapír árát adja eredményül. +ODDFYIELD = ODDFYIELD ## A futamidő elején töredék-időszakos értékpapír hozamát adja eredményül. +ODDLPRICE = ODDLPRICE ## Egy 100 Ft névértékű, a futamidő végén töredék-időszakos értékpapír árát adja eredményül. +ODDLYIELD = ODDLYIELD ## A futamidő végén töredék-időszakos értékpapír hozamát adja eredményül. +PMT = RÉSZLET ## A törlesztési időszakra vonatkozó törlesztési összeget számítja ki. +PPMT = PRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. +PRICE = PRICE ## Egy 100 Ft névértékű, periodikusan kamatozó értékpapír árát adja eredményül. +PRICEDISC = PRICEDISC ## Egy 100 Ft névértékű leszámítolt értékpapír árát adja eredményül. +PRICEMAT = PRICEMAT ## Egy 100 Ft névértékű, a lejáratkor kamatozó értékpapír árát adja eredményül. +PV = MÉ ## Befektetés jelenlegi értékét számítja ki. +RATE = RÁTA ## Egy törlesztési időszakban az egy időszakra eső kamatláb nagyságát számítja ki. +RECEIVED = RECEIVED ## A lejáratig teljesen lekötött értékpapír lejáratakor kapott összegét adja eredményül. +SLN = LCSA ## Tárgyi eszköz egy időszakra eső amortizációját adja meg bruttó érték szerinti lineáris leírási kulcsot alkalmazva. +SYD = SYD ## Tárgyi eszköz értékcsökkenését számítja ki adott időszakra az évek számjegyösszegével dolgozó módszer alapján. +TBILLEQ = TBILLEQ ## Kincstárjegy kötvény-egyenértékű hozamát adja eredményül. +TBILLPRICE = TBILLPRICE ## Egy 100 Ft névértékű kincstárjegy árát adja eredményül. +TBILLYIELD = TBILLYIELD ## Kincstárjegy hozamát adja eredményül. +VDB = ÉCSRI ## Tárgyi eszköz amortizációját számítja ki megadott vagy részidőszakra a csökkenő egyenleg módszerének alkalmazásával. +XIRR = XIRR ## Ütemezett készpénzforgalom (cash flow) belső megtérülési kamatrátáját adja eredményül. +XNPV = XNPV ## Ütemezett készpénzforgalom (cash flow) nettó jelenlegi értékét adja eredményül. +YIELD = YIELD ## Periodikusan kamatozó értékpapír hozamát adja eredményül. +YIELDDISC = YIELDDISC ## Leszámítolt értékpapír (például kincstárjegy) éves hozamát adja eredményül. +YIELDMAT = YIELDMAT ## Lejáratkor kamatozó értékpapír éves hozamát adja eredményül. + + +## +## Information functions Információs függvények +## +CELL = CELLA ## Egy cella formátumára, elhelyezkedésére vagy tartalmára vonatkozó adatokat ad eredményül. +ERROR.TYPE = HIBA.TÍPUS ## Egy hibatípushoz tartozó számot ad eredményül. +INFO = INFÓ ## A rendszer- és munkakörnyezet pillanatnyi állapotáról ad felvilágosítást. +ISBLANK = ÜRES ## Eredménye IGAZ, ha az érték üres. +ISERR = HIBA ## Eredménye IGAZ, ha az érték valamelyik hibaérték a #HIÁNYZIK kivételével. +ISERROR = HIBÁS ## Eredménye IGAZ, ha az érték valamelyik hibaérték. +ISEVEN = ISEVEN ## Eredménye IGAZ, ha argumentuma páros szám. +ISLOGICAL = LOGIKAI ## Eredménye IGAZ, ha az érték logikai érték. +ISNA = NINCS ## Eredménye IGAZ, ha az érték a #HIÁNYZIK hibaérték. +ISNONTEXT = NEM.SZÖVEG ## Eredménye IGAZ, ha az érték nem szöveg. +ISNUMBER = SZÁM ## Eredménye IGAZ, ha az érték szám. +ISODD = ISODD ## Eredménye IGAZ, ha argumentuma páratlan szám. +ISREF = HIVATKOZÁS ## Eredménye IGAZ, ha az érték hivatkozás. +ISTEXT = SZÖVEG.E ## Eredménye IGAZ, ha az érték szöveg. +N = N ## Argumentumának értékét számmá alakítja. +NA = HIÁNYZIK ## Eredménye a #HIÁNYZIK hibaérték. +TYPE = TÍPUS ## Érték adattípusának azonosítószámát adja eredményül. + + +## +## Logical functions Logikai függvények +## +AND = ÉS ## Eredménye IGAZ, ha minden argumentuma IGAZ. +FALSE = HAMIS ## A HAMIS logikai értéket adja eredményül. +IF = HA ## Logikai vizsgálatot hajt végre. +IFERROR = HAHIBA ## A megadott értéket adja vissza, ha egy képlet hibához vezet; más esetben a képlet értékét adja eredményül. +NOT = NEM ## Argumentuma értékének ellentettjét adja eredményül. +OR = VAGY ## Eredménye IGAZ, ha bármely argumentuma IGAZ. +TRUE = IGAZ ## Az IGAZ logikai értéket adja eredményül. + + +## +## Lookup and reference functions Keresési és hivatkozási függvények +## +ADDRESS = CÍM ## A munkalap egy cellájára való hivatkozást adja szövegként eredményül. +AREAS = TERÜLET ## Hivatkozásban a területek számát adja eredményül. +CHOOSE = VÁLASZT ## Értékek listájából választ ki egy elemet. +COLUMN = OSZLOP ## Egy hivatkozás oszlopszámát adja eredményül. +COLUMNS = OSZLOPOK ## A hivatkozásban található oszlopok számát adja eredményül. +HLOOKUP = VKERES ## A megadott tömb felső sorában adott értékű elemet keres, és a megtalált elem oszlopából adott sorban elhelyezkedő értékkel tér vissza. +HYPERLINK = HIPERHIVATKOZÁS ## Hálózati kiszolgálón, intraneten vagy az interneten tárolt dokumentumot megnyitó parancsikont vagy hivatkozást hoz létre. +INDEX = INDEX ## Tömb- vagy hivatkozás indexszel megadott értékét adja vissza. +INDIRECT = INDIREKT ## Szöveg megadott hivatkozást ad eredményül. +LOOKUP = KERES ## Vektorban vagy tömbben keres meg értékeket. +MATCH = HOL.VAN ## Hivatkozásban vagy tömbben értékeket keres. +OFFSET = OFSZET ## Hivatkozás egy másik hivatkozástól számított távolságát adja meg. +ROW = SOR ## Egy hivatkozás sorának számát adja meg. +ROWS = SOROK ## Egy hivatkozás sorainak számát adja meg. +RTD = RTD ## Valós idejű adatokat keres vissza a COM automatizmust (automatizálás: Egy alkalmazás objektumaival való munka másik alkalmazásból vagy fejlesztőeszközből. A korábban OLE automatizmusnak nevezett automatizálás iparági szabvány, a Component Object Model (COM) szolgáltatása.) támogató programból. +TRANSPOSE = TRANSZPONÁLÁS ## Egy tömb transzponáltját adja eredményül. +VLOOKUP = FKERES ## A megadott tömb bal szélső oszlopában megkeres egy értéket, majd annak sora és a megadott oszlop metszéspontjában levő értéked adja eredményül. + + +## +## Math and trigonometry functions Matematikai és trigonometrikus függvények +## +ABS = ABS ## Egy szám abszolút értékét adja eredményül. +ACOS = ARCCOS ## Egy szám arkusz koszinuszát számítja ki. +ACOSH = ACOSH ## Egy szám inverz koszinusz hiperbolikuszát számítja ki. +ASIN = ARCSIN ## Egy szám arkusz szinuszát számítja ki. +ASINH = ASINH ## Egy szám inverz szinusz hiperbolikuszát számítja ki. +ATAN = ARCTAN ## Egy szám arkusz tangensét számítja ki. +ATAN2 = ARCTAN2 ## X és y koordináták alapján számítja ki az arkusz tangens értéket. +ATANH = ATANH ## A szám inverz tangens hiperbolikuszát számítja ki. +CEILING = PLAFON ## Egy számot a legközelebbi egészre vagy a pontosságként megadott érték legközelebb eső többszörösére kerekít. +COMBIN = KOMBINÁCIÓK ## Adott számú objektum összes lehetséges kombinációinak számát számítja ki. +COS = COS ## Egy szám koszinuszát számítja ki. +COSH = COSH ## Egy szám koszinusz hiperbolikuszát számítja ki. +DEGREES = FOK ## Radiánt fokká alakít át. +EVEN = PÁROS ## Egy számot a legközelebbi páros egész számra kerekít. +EXP = KITEVŐ ## Az e adott kitevőjű hatványát adja eredményül. +FACT = FAKT ## Egy szám faktoriálisát számítja ki. +FACTDOUBLE = FACTDOUBLE ## Egy szám dupla faktoriálisát adja eredményül. +FLOOR = PADLÓ ## Egy számot lefelé, a nulla felé kerekít. +GCD = GCD ## A legnagyobb közös osztót adja eredményül. +INT = INT ## Egy számot lefelé kerekít a legközelebbi egészre. +LCM = LCM ## A legkisebb közös többszöröst adja eredményül. +LN = LN ## Egy szám természetes logaritmusát számítja ki. +LOG = LOG ## Egy szám adott alapú logaritmusát számítja ki. +LOG10 = LOG10 ## Egy szám 10-es alapú logaritmusát számítja ki. +MDETERM = MDETERM ## Egy tömb mátrix-determinánsát számítja ki. +MINVERSE = INVERZ.MÁTRIX ## Egy tömb mátrix inverzét adja eredményül. +MMULT = MSZORZAT ## Két tömb mátrix-szorzatát adja meg. +MOD = MARADÉK ## Egy szám osztási maradékát adja eredményül. +MROUND = MROUND ## A kívánt többszörösére kerekített értéket ad eredményül. +MULTINOMIAL = MULTINOMIAL ## Számhalmaz multinomiálisát adja eredményül. +ODD = PÁRATLAN ## Egy számot a legközelebbi páratlan számra kerekít. +PI = PI ## A pi matematikai állandót adja vissza. +POWER = HATVÁNY ## Egy szám adott kitevőjű hatványát számítja ki. +PRODUCT = SZORZAT ## Argumentumai szorzatát számítja ki. +QUOTIENT = QUOTIENT ## Egy hányados egész részét adja eredményül. +RADIANS = RADIÁN ## Fokot radiánná alakít át. +RAND = VÉL ## Egy 0 és 1 közötti véletlen számot ad eredményül. +RANDBETWEEN = RANDBETWEEN ## Megadott számok közé eső véletlen számot állít elő. +ROMAN = RÓMAI ## Egy számot római számokkal kifejezve szövegként ad eredményül. +ROUND = KEREKÍTÉS ## Egy számot adott számú számjegyre kerekít. +ROUNDDOWN = KEREKÍTÉS.LE ## Egy számot lefelé, a nulla felé kerekít. +ROUNDUP = KEREKÍTÉS.FEL ## Egy számot felfelé, a nullától távolabbra kerekít. +SERIESSUM = SERIESSUM ## Hatványsor összegét adja eredményül. +SIGN = ELŐJEL ## Egy szám előjelét adja meg. +SIN = SIN ## Egy szög szinuszát számítja ki. +SINH = SINH ## Egy szám szinusz hiperbolikuszát számítja ki. +SQRT = GYÖK ## Egy szám pozitív négyzetgyökét számítja ki. +SQRTPI = SQRTPI ## A (szám*pi) négyzetgyökét adja eredményül. +SUBTOTAL = RÉSZÖSSZEG ## Lista vagy adatbázis részösszegét adja eredményül. +SUM = SZUM ## Összeadja az argumentumlistájában lévő számokat. +SUMIF = SZUMHA ## A megadott feltételeknek eleget tevő cellákban található értékeket adja össze. +SUMIFS = SZUMHATÖBB ## Több megadott feltételnek eleget tévő tartománycellák összegét adja eredményül. +SUMPRODUCT = SZORZATÖSSZEG ## A megfelelő tömbelemek szorzatának összegét számítja ki. +SUMSQ = NÉGYZETÖSSZEG ## Argumentumai négyzetének összegét számítja ki. +SUMX2MY2 = SZUMX2BŐLY2 ## Két tömb megfelelő elemei négyzetének különbségét összegzi. +SUMX2PY2 = SZUMX2MEGY2 ## Két tömb megfelelő elemei négyzetének összegét összegzi. +SUMXMY2 = SZUMXBŐLY2 ## Két tömb megfelelő elemei különbségének négyzetösszegét számítja ki. +TAN = TAN ## Egy szám tangensét számítja ki. +TANH = TANH ## Egy szám tangens hiperbolikuszát számítja ki. +TRUNC = CSONK ## Egy számot egésszé csonkít. + + +## +## Statistical functions Statisztikai függvények +## +AVEDEV = ÁTL.ELTÉRÉS ## Az adatpontoknak átlaguktól való átlagos abszolút eltérését számítja ki. +AVERAGE = ÁTLAG ## Argumentumai átlagát számítja ki. +AVERAGEA = ÁTLAGA ## Argumentumai átlagát számítja ki (beleértve a számokat, szöveget és logikai értékeket). +AVERAGEIF = ÁTLAGHA ## A megadott feltételnek eleget tévő tartomány celláinak átlagát (számtani közepét) adja eredményül. +AVERAGEIFS = ÁTLAGHATÖBB ## A megadott feltételeknek eleget tévő cellák átlagát (számtani közepét) adja eredményül. +BETADIST = BÉTA.ELOSZLÁS ## A béta-eloszlás függvényt számítja ki. +BETAINV = INVERZ.BÉTA ## Adott béta-eloszláshoz kiszámítja a béta eloszlásfüggvény inverzét. +BINOMDIST = BINOM.ELOSZLÁS ## A diszkrét binomiális eloszlás valószínűségértékét számítja ki. +CHIDIST = KHI.ELOSZLÁS ## A khi-négyzet-eloszlás egyszélű valószínűségértékét számítja ki. +CHIINV = INVERZ.KHI ## A khi-négyzet-eloszlás egyszélű valószínűségértékének inverzét számítja ki. +CHITEST = KHI.PRÓBA ## Függetlenségvizsgálatot hajt végre. +CONFIDENCE = MEGBÍZHATÓSÁG ## Egy statisztikai sokaság várható értékének megbízhatósági intervallumát adja eredményül. +CORREL = KORREL ## Két adathalmaz korrelációs együtthatóját számítja ki. +COUNT = DARAB ## Megszámolja, hogy argumentumlistájában hány szám található. +COUNTA = DARAB2 ## Megszámolja, hogy argumentumlistájában hány érték található. +COUNTBLANK = DARABÜRES ## Egy tartományban összeszámolja az üres cellákat. +COUNTIF = DARABTELI ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek a megadott feltételnek. +COUNTIFS = DARABHATÖBB ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek több feltételnek. +COVAR = KOVAR ## A kovarianciát, azaz a páronkénti eltérések szorzatának átlagát számítja ki. +CRITBINOM = KRITBINOM ## Azt a legkisebb számot adja eredményül, amelyre a binomiális eloszlásfüggvény értéke nem kisebb egy adott határértéknél. +DEVSQ = SQ ## Az átlagtól való eltérések négyzetének összegét számítja ki. +EXPONDIST = EXP.ELOSZLÁS ## Az exponenciális eloszlás értékét számítja ki. +FDIST = F.ELOSZLÁS ## Az F-eloszlás értékét számítja ki. +FINV = INVERZ.F ## Az F-eloszlás inverzének értékét számítja ki. +FISHER = FISHER ## Fisher-transzformációt hajt végre. +FISHERINV = INVERZ.FISHER ## A Fisher-transzformáció inverzét hajtja végre. +FORECAST = ELŐREJELZÉS ## Az ismert értékek alapján lineáris regresszióval becsült értéket ad eredményül. +FREQUENCY = GYAKORISÁG ## A gyakorisági vagy empirikus eloszlás értékét függőleges tömbként adja eredményül. +FTEST = F.PRÓBA ## Az F-próba értékét adja eredményül. +GAMMADIST = GAMMA.ELOSZLÁS ## A gamma-eloszlás értékét számítja ki. +GAMMAINV = INVERZ.GAMMA ## A gamma-eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +GAMMALN = GAMMALN ## A gamma-függvény természetes logaritmusát számítja ki. +GEOMEAN = MÉRTANI.KÖZÉP ## Argumentumai mértani középértékét számítja ki. +GROWTH = NÖV ## Exponenciális regresszió alapján ad becslést. +HARMEAN = HARM.KÖZÉP ## Argumentumai harmonikus átlagát számítja ki. +HYPGEOMDIST = HIPERGEOM.ELOSZLÁS ## A hipergeometriai eloszlás értékét számítja ki. +INTERCEPT = METSZ ## A regressziós egyenes y tengellyel való metszéspontját határozza meg. +KURT = CSÚCSOSSÁG ## Egy adathalmaz csúcsosságát számítja ki. +LARGE = NAGY ## Egy adathalmaz k-adik legnagyobb elemét adja eredményül. +LINEST = LIN.ILL ## A legkisebb négyzetek módszerével az adatokra illesztett egyenes paramétereit határozza meg. +LOGEST = LOG.ILL ## Az adatokra illesztett exponenciális görbe paramétereit határozza meg. +LOGINV = INVERZ.LOG.ELOSZLÁS ## A lognormális eloszlás inverzét számítja ki. +LOGNORMDIST = LOG.ELOSZLÁS ## A lognormális eloszlásfüggvény értékét számítja ki. +MAX = MAX ## Az argumentumai között szereplő legnagyobb számot adja meg. +MAXA = MAX2 ## Az argumentumai között szereplő legnagyobb számot adja meg (beleértve a számokat, szöveget és logikai értékeket). +MEDIAN = MEDIÁN ## Adott számhalmaz mediánját számítja ki. +MIN = MIN ## Az argumentumai között szereplő legkisebb számot adja meg. +MINA = MIN2 ## Az argumentumai között szereplő legkisebb számot adja meg, beleértve a számokat, szöveget és logikai értékeket. +MODE = MÓDUSZ ## Egy adathalmazból kiválasztja a leggyakrabban előforduló számot. +NEGBINOMDIST = NEGBINOM.ELOSZL ## A negatív binomiális eloszlás értékét számítja ki. +NORMDIST = NORM.ELOSZL ## A normális eloszlás értékét számítja ki. +NORMINV = INVERZ.NORM ## A normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +NORMSDIST = STNORMELOSZL ## A standard normális eloszlás eloszlásfüggvényének értékét számítja ki. +NORMSINV = INVERZ.STNORM ## A standard normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +PEARSON = PEARSON ## A Pearson-féle korrelációs együtthatót számítja ki. +PERCENTILE = PERCENTILIS ## Egy tartományban található értékek k-adik percentilisét, azaz százalékosztályát adja eredményül. +PERCENTRANK = SZÁZALÉKRANG ## Egy értéknek egy adathalmazon belül vett százalékos rangját (elhelyezkedését) számítja ki. +PERMUT = VARIÁCIÓK ## Adott számú objektum k-ad osztályú ismétlés nélküli variációinak számát számítja ki. +POISSON = POISSON ## A Poisson-eloszlás értékét számítja ki. +PROB = VALÓSZÍNŰSÉG ## Annak valószínűségét számítja ki, hogy adott értékek két határérték közé esnek. +QUARTILE = KVARTILIS ## Egy adathalmaz kvartilisét (negyedszintjét) számítja ki. +RANK = SORSZÁM ## Kiszámítja, hogy egy szám hányadik egy számsorozatban. +RSQ = RNÉGYZET ## Kiszámítja a Pearson-féle szorzatmomentum korrelációs együtthatójának négyzetét. +SKEW = FERDESÉG ## Egy eloszlás ferdeségét határozza meg. +SLOPE = MEREDEKSÉG ## Egy lineáris regressziós egyenes meredekségét számítja ki. +SMALL = KICSI ## Egy adathalmaz k-adik legkisebb elemét adja meg. +STANDARDIZE = NORMALIZÁLÁS ## Normalizált értéket ad eredményül. +STDEV = SZÓRÁS ## Egy statisztikai sokaság mintájából kiszámítja annak szórását. +STDEVA = SZÓRÁSA ## Egy statisztikai sokaság mintájából kiszámítja annak szórását (beleértve a számokat, szöveget és logikai értékeket). +STDEVP = SZÓRÁSP ## Egy statisztikai sokaság egészéből kiszámítja annak szórását. +STDEVPA = SZÓRÁSPA ## Egy statisztikai sokaság egészéből kiszámítja annak szórását (beleértve számokat, szöveget és logikai értékeket). +STEYX = STHIBAYX ## Egy regresszió esetén az egyes x-értékek alapján meghatározott y-értékek standard hibáját számítja ki. +TDIST = T.ELOSZLÁS ## A Student-féle t-eloszlás értékét számítja ki. +TINV = INVERZ.T ## A Student-féle t-eloszlás inverzét számítja ki. +TREND = TREND ## Lineáris trend értékeit számítja ki. +TRIMMEAN = RÉSZÁTLAG ## Egy adathalmaz középső részének átlagát számítja ki. +TTEST = T.PRÓBA ## A Student-féle t-próbához tartozó valószínűséget számítja ki. +VAR = VAR ## Minta alapján becslést ad a varianciára. +VARA = VARA ## Minta alapján becslést ad a varianciára (beleértve számokat, szöveget és logikai értékeket). +VARP = VARP ## Egy statisztikai sokaság varianciáját számítja ki. +VARPA = VARPA ## Egy statisztikai sokaság varianciáját számítja ki (beleértve számokat, szöveget és logikai értékeket). +WEIBULL = WEIBULL ## A Weibull-féle eloszlás értékét számítja ki. +ZTEST = Z.PRÓBA ## Az egyszélű z-próbával kapott valószínűségértéket számítja ki. + + +## +## Text functions Szövegműveletekhez használható függvények +## +ASC = ASC ## Szöveg teljes szélességű (kétbájtos) latin és katakana karaktereit félszélességű (egybájtos) karakterekké alakítja. +BAHTTEXT = BAHTSZÖVEG ## Számot szöveggé alakít a ß (baht) pénznemformátum használatával. +CHAR = KARAKTER ## A kódszámmal meghatározott karaktert adja eredményül. +CLEAN = TISZTÍT ## A szövegből eltávolítja az összes nem nyomtatható karaktert. +CODE = KÓD ## Karaktersorozat első karakterének numerikus kódját adja eredményül. +CONCATENATE = ÖSSZEFŰZ ## Több szövegelemet egyetlen szöveges elemmé fűz össze. +DOLLAR = FORINT ## Számot pénznem formátumú szöveggé alakít át. +EXACT = AZONOS ## Megvizsgálja, hogy két érték azonos-e. +FIND = SZÖVEG.TALÁL ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). +FINDB = SZÖVEG.TALÁL2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). +FIXED = FIX ## Számot szöveges formátumúra alakít adott számú tizedesjegyre kerekítve. +JIS = JIS ## A félszélességű (egybájtos) latin és a katakana karaktereket teljes szélességű (kétbájtos) karakterekké alakítja. +LEFT = BAL ## Szöveg bal szélső karaktereit adja eredményül. +LEFTB = BAL2 ## Szöveg bal szélső karaktereit adja eredményül. +LEN = HOSSZ ## Szöveg karakterekben mért hosszát adja eredményül. +LENB = HOSSZ2 ## Szöveg karakterekben mért hosszát adja eredményül. +LOWER = KISBETŰ ## Szöveget kisbetűssé alakít át. +MID = KÖZÉP ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. +MIDB = KÖZÉP2 ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. +PHONETIC = PHONETIC ## Szöveg furigana (fonetikus) karaktereit adja vissza. +PROPER = TNÉV ## Szöveg minden szavának kezdőbetűjét nagybetűsre cseréli. +REPLACE = CSERE ## A szövegen belül karaktereket cserél. +REPLACEB = CSERE2 ## A szövegen belül karaktereket cserél. +REPT = SOKSZOR ## Megadott számú alkalommal megismétel egy szövegrészt. +RIGHT = JOBB ## Szövegrész jobb szélső karaktereit adja eredményül. +RIGHTB = JOBB2 ## Szövegrész jobb szélső karaktereit adja eredményül. +SEARCH = SZÖVEG.KERES ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). +SEARCHB = SZÖVEG.KERES2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). +SUBSTITUTE = HELYETTE ## Szövegben adott karaktereket másikra cserél. +T = T ## Argumentumát szöveggé alakítja át. +TEXT = SZÖVEG ## Számértéket alakít át adott számformátumú szöveggé. +TRIM = TRIM ## A szövegből eltávolítja a szóközöket. +UPPER = NAGYBETŰS ## Szöveget nagybetűssé alakít át. +VALUE = ÉRTÉK ## Szöveget számmá alakít át. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/it/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/it/functions index d371f3d72eb..b9219a6a4ce 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/it/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/it/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funzioni di automazione e dei componenti aggiuntivi -## -GETPIVOTDATA = INFO.DATI.TAB.PIVOT ## Restituisce i dati memorizzati in un rapporto di tabella pivot - - -## -## Cube functions Funzioni cubo -## -CUBEKPIMEMBER = MEMBRO.KPI.CUBO ## Restituisce il nome, la proprietà e la misura di un indicatore di prestazioni chiave (KPI) e visualizza il nome e la proprietà nella cella. Un KPI è una misura quantificabile, ad esempio l'utile lordo mensile o il fatturato trimestrale dei dipendenti, utilizzata per il monitoraggio delle prestazioni di un'organizzazione. -CUBEMEMBER = MEMBRO.CUBO ## Restituisce un membro o una tupla in una gerarchia di cubi. Consente di verificare l'esistenza del membro o della tupla nel cubo. -CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO ## Restituisce il valore di una proprietà di un membro del cubo. Consente di verificare l'esistenza di un nome di membro all'interno del cubo e di restituire la proprietà specificata per tale membro. -CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO ## Restituisce l'n-esimo membro o il membro ordinato di un insieme. Consente di restituire uno o più elementi in un insieme, ad esempio l'agente di vendita migliore o i primi 10 studenti. -CUBESET = SET.CUBO ## Definisce un insieme di tuple o membri calcolati mediante l'invio di un'espressione di insieme al cubo sul server. In questo modo l'insieme viene creato e restituito a Microsoft Office Excel. -CUBESETCOUNT = CONTA.SET.CUBO ## Restituisce il numero di elementi di un insieme. -CUBEVALUE = VALORE.CUBO ## Restituisce un valore aggregato da un cubo. - - -## -## Database functions Funzioni di database -## -DAVERAGE = DB.MEDIA ## Restituisce la media di voci del database selezionate -DCOUNT = DB.CONTA.NUMERI ## Conta le celle di un database contenenti numeri -DCOUNTA = DB.CONTA.VALORI ## Conta le celle non vuote in un database -DGET = DB.VALORI ## Estrae da un database un singolo record che soddisfa i criteri specificati -DMAX = DB.MAX ## Restituisce il valore massimo dalle voci selezionate in un database -DMIN = DB.MIN ## Restituisce il valore minimo dalle voci di un database selezionate -DPRODUCT = DB.PRODOTTO ## Moltiplica i valori in un determinato campo di record che soddisfano i criteri del database -DSTDEV = DB.DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione di voci di un database selezionate -DSTDEVP = DB.DEV.ST.POP ## Calcola la deviazione standard sulla base di tutte le voci di un database selezionate -DSUM = DB.SOMMA ## Aggiunge i numeri nel campo colonna di record del database che soddisfa determinati criteri -DVAR = DB.VAR ## Restituisce una stima della varianza sulla base di un campione da voci di un database selezionate -DVARP = DB.VAR.POP ## Calcola la varianza sulla base di tutte le voci di un database selezionate - - -## -## Date and time functions Funzioni data e ora -## -DATE = DATA ## Restituisce il numero seriale di una determinata data -DATEVALUE = DATA.VALORE ## Converte una data sotto forma di testo in un numero seriale -DAY = GIORNO ## Converte un numero seriale in un giorno del mese -DAYS360 = GIORNO360 ## Calcola il numero di giorni compreso tra due date basandosi su un anno di 360 giorni -EDATE = DATA.MESE ## Restituisce il numero seriale della data che rappresenta il numero di mesi prima o dopo la data di inizio -EOMONTH = FINE.MESE ## Restituisce il numero seriale dell'ultimo giorno del mese, prima o dopo un determinato numero di mesi -HOUR = ORA ## Converte un numero seriale in un'ora -MINUTE = MINUTO ## Converte un numero seriale in un minuto -MONTH = MESE ## Converte un numero seriale in un mese -NETWORKDAYS = GIORNI.LAVORATIVI.TOT ## Restituisce il numero di tutti i giorni lavorativi compresi fra due date -NOW = ADESSO ## Restituisce il numero seriale della data e dell'ora corrente -SECOND = SECONDO ## Converte un numero seriale in un secondo -TIME = ORARIO ## Restituisce il numero seriale di una determinata ora -TIMEVALUE = ORARIO.VALORE ## Converte un orario in forma di testo in un numero seriale -TODAY = OGGI ## Restituisce il numero seriale relativo alla data odierna -WEEKDAY = GIORNO.SETTIMANA ## Converte un numero seriale in un giorno della settimana -WEEKNUM = NUM.SETTIMANA ## Converte un numero seriale in un numero che rappresenta la posizione numerica di una settimana nell'anno -WORKDAY = GIORNO.LAVORATIVO ## Restituisce il numero della data prima o dopo un determinato numero di giorni lavorativi -YEAR = ANNO ## Converte un numero seriale in un anno -YEARFRAC = FRAZIONE.ANNO ## Restituisce la frazione dell'anno che rappresenta il numero dei giorni compresi tra una data_ iniziale e una data_finale - - -## -## Engineering functions Funzioni ingegneristiche -## -BESSELI = BESSEL.I ## Restituisce la funzione di Bessel modificata In(x) -BESSELJ = BESSEL.J ## Restituisce la funzione di Bessel Jn(x) -BESSELK = BESSEL.K ## Restituisce la funzione di Bessel modificata Kn(x) -BESSELY = BESSEL.Y ## Restituisce la funzione di Bessel Yn(x) -BIN2DEC = BINARIO.DECIMALE ## Converte un numero binario in decimale -BIN2HEX = BINARIO.HEX ## Converte un numero binario in esadecimale -BIN2OCT = BINARIO.OCT ## Converte un numero binario in ottale -COMPLEX = COMPLESSO ## Converte i coefficienti reali e immaginari in numeri complessi -CONVERT = CONVERTI ## Converte un numero da un sistema di misura in un altro -DEC2BIN = DECIMALE.BINARIO ## Converte un numero decimale in binario -DEC2HEX = DECIMALE.HEX ## Converte un numero decimale in esadecimale -DEC2OCT = DECIMALE.OCT ## Converte un numero decimale in ottale -DELTA = DELTA ## Verifica se due valori sono uguali -ERF = FUNZ.ERRORE ## Restituisce la funzione di errore -ERFC = FUNZ.ERRORE.COMP ## Restituisce la funzione di errore complementare -GESTEP = SOGLIA ## Verifica se un numero è maggiore del valore di soglia -HEX2BIN = HEX.BINARIO ## Converte un numero esadecimale in binario -HEX2DEC = HEX.DECIMALE ## Converte un numero esadecimale in decimale -HEX2OCT = HEX.OCT ## Converte un numero esadecimale in ottale -IMABS = COMP.MODULO ## Restituisce il valore assoluto (modulo) di un numero complesso -IMAGINARY = COMP.IMMAGINARIO ## Restituisce il coefficiente immaginario di un numero complesso -IMARGUMENT = COMP.ARGOMENTO ## Restituisce l'argomento theta, un angolo espresso in radianti -IMCONJUGATE = COMP.CONIUGATO ## Restituisce il complesso coniugato del numero complesso -IMCOS = COMP.COS ## Restituisce il coseno di un numero complesso -IMDIV = COMP.DIV ## Restituisce il quoziente di due numeri complessi -IMEXP = COMP.EXP ## Restituisce il valore esponenziale di un numero complesso -IMLN = COMP.LN ## Restituisce il logaritmo naturale di un numero complesso -IMLOG10 = COMP.LOG10 ## Restituisce il logaritmo in base 10 di un numero complesso -IMLOG2 = COMP.LOG2 ## Restituisce un logaritmo in base 2 di un numero complesso -IMPOWER = COMP.POTENZA ## Restituisce il numero complesso elevato a una potenza intera -IMPRODUCT = COMP.PRODOTTO ## Restituisce il prodotto di numeri complessi compresi tra 2 e 29 -IMREAL = COMP.PARTE.REALE ## Restituisce il coefficiente reale di un numero complesso -IMSIN = COMP.SEN ## Restituisce il seno di un numero complesso -IMSQRT = COMP.RADQ ## Restituisce la radice quadrata di un numero complesso -IMSUB = COMP.DIFF ## Restituisce la differenza fra due numeri complessi -IMSUM = COMP.SOMMA ## Restituisce la somma di numeri complessi -OCT2BIN = OCT.BINARIO ## Converte un numero ottale in binario -OCT2DEC = OCT.DECIMALE ## Converte un numero ottale in decimale -OCT2HEX = OCT.HEX ## Converte un numero ottale in esadecimale - - -## -## Financial functions Funzioni finanziarie -## -ACCRINT = INT.MATURATO.PER ## Restituisce l'interesse maturato di un titolo che paga interessi periodici -ACCRINTM = INT.MATURATO.SCAD ## Restituisce l'interesse maturato di un titolo che paga interessi alla scadenza -AMORDEGRC = AMMORT.DEGR ## Restituisce l'ammortamento per ogni periodo contabile utilizzando un coefficiente di ammortamento -AMORLINC = AMMORT.PER ## Restituisce l'ammortamento per ogni periodo contabile -COUPDAYBS = GIORNI.CED.INIZ.LIQ ## Restituisce il numero dei giorni che vanno dall'inizio del periodo di durata della cedola alla data di liquidazione -COUPDAYS = GIORNI.CED ## Restituisce il numero dei giorni relativi al periodo della cedola che contiene la data di liquidazione -COUPDAYSNC = GIORNI.CED.NUOVA ## Restituisce il numero di giorni che vanno dalla data di liquidazione alla data della cedola successiva -COUPNCD = DATA.CED.SUCC ## Restituisce un numero che rappresenta la data della cedola successiva alla data di liquidazione -COUPNUM = NUM.CED ## Restituisce il numero di cedole pagabili fra la data di liquidazione e la data di scadenza -COUPPCD = DATA.CED.PREC ## Restituisce un numero che rappresenta la data della cedola precedente alla data di liquidazione -CUMIPMT = INT.CUMUL ## Restituisce l'interesse cumulativo pagato fra due periodi -CUMPRINC = CAP.CUM ## Restituisce il capitale cumulativo pagato per estinguere un debito fra due periodi -DB = DB ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a quote fisse decrescenti -DDB = AMMORT ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a doppie quote decrescenti o altri metodi specificati -DISC = TASSO.SCONTO ## Restituisce il tasso di sconto per un titolo -DOLLARDE = VALUTA.DEC ## Converte un prezzo valuta, espresso come frazione, in prezzo valuta, espresso come numero decimale -DOLLARFR = VALUTA.FRAZ ## Converte un prezzo valuta, espresso come numero decimale, in prezzo valuta, espresso come frazione -DURATION = DURATA ## Restituisce la durata annuale di un titolo con i pagamenti di interesse periodico -EFFECT = EFFETTIVO ## Restituisce l'effettivo tasso di interesse annuo -FV = VAL.FUT ## Restituisce il valore futuro di un investimento -FVSCHEDULE = VAL.FUT.CAPITALE ## Restituisce il valore futuro di un capitale iniziale dopo aver applicato una serie di tassi di interesse composti -INTRATE = TASSO.INT ## Restituisce il tasso di interesse per un titolo interamente investito -IPMT = INTERESSI ## Restituisce il valore degli interessi per un investimento relativo a un periodo specifico -IRR = TIR.COST ## Restituisce il tasso di rendimento interno per una serie di flussi di cassa -ISPMT = INTERESSE.RATA ## Calcola l'interesse di un investimento pagato durante un periodo specifico -MDURATION = DURATA.M ## Restituisce la durata Macauley modificata per un titolo con un valore presunto di € 100 -MIRR = TIR.VAR ## Restituisce il tasso di rendimento interno in cui i flussi di cassa positivi e negativi sono finanziati a tassi differenti -NOMINAL = NOMINALE ## Restituisce il tasso di interesse nominale annuale -NPER = NUM.RATE ## Restituisce un numero di periodi relativi a un investimento -NPV = VAN ## Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e sul tasso di sconto -ODDFPRICE = PREZZO.PRIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente il primo periodo di durata irregolare -ODDFYIELD = REND.PRIMO.IRR ## Restituisce il rendimento di un titolo avente il primo periodo di durata irregolare -ODDLPRICE = PREZZO.ULTIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente l'ultimo periodo di durata irregolare -ODDLYIELD = REND.ULTIMO.IRR ## Restituisce il rendimento di un titolo avente l'ultimo periodo di durata irregolare -PMT = RATA ## Restituisce il pagamento periodico di una rendita annua -PPMT = P.RATA ## Restituisce il pagamento sul capitale di un investimento per un dato periodo -PRICE = PREZZO ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga interessi periodici -PRICEDISC = PREZZO.SCONT ## Restituisce il prezzo di un titolo scontato dal valore nominale di € 100 -PRICEMAT = PREZZO.SCAD ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga gli interessi alla scadenza -PV = VA ## Restituisce il valore attuale di un investimento -RATE = TASSO ## Restituisce il tasso di interesse per un periodo di un'annualità -RECEIVED = RICEV.SCAD ## Restituisce l'ammontare ricevuto alla scadenza di un titolo interamente investito -SLN = AMMORT.COST ## Restituisce l'ammortamento a quote costanti di un bene per un singolo periodo -SYD = AMMORT.ANNUO ## Restituisce l'ammortamento a somma degli anni di un bene per un periodo specificato -TBILLEQ = BOT.EQUIV ## Restituisce il rendimento equivalente ad un'obbligazione per un Buono ordinario del Tesoro -TBILLPRICE = BOT.PREZZO ## Restituisce il prezzo di un Buono del Tesoro dal valore nominale di € 100 -TBILLYIELD = BOT.REND ## Restituisce il rendimento di un Buono del Tesoro -VDB = AMMORT.VAR ## Restituisce l'ammortamento di un bene per un periodo specificato o parziale utilizzando il metodo a doppie quote proporzionali ai valori residui -XIRR = TIR.X ## Restituisce il tasso di rendimento interno di un impiego di flussi di cassa -XNPV = VAN.X ## Restituisce il valore attuale netto di un impiego di flussi di cassa non necessariamente periodici -YIELD = REND ## Restituisce il rendimento di un titolo che frutta interessi periodici -YIELDDISC = REND.TITOLI.SCONT ## Restituisce il rendimento annuale di un titolo scontato, ad esempio un Buono del Tesoro -YIELDMAT = REND.SCAD ## Restituisce il rendimento annuo di un titolo che paga interessi alla scadenza - - -## -## Information functions Funzioni relative alle informazioni -## -CELL = CELLA ## Restituisce le informazioni sulla formattazione, la posizione o i contenuti di una cella -ERROR.TYPE = ERRORE.TIPO ## Restituisce un numero che corrisponde a un tipo di errore -INFO = INFO ## Restituisce le informazioni sull'ambiente operativo corrente -ISBLANK = VAL.VUOTO ## Restituisce VERO se il valore è vuoto -ISERR = VAL.ERR ## Restituisce VERO se il valore è un valore di errore qualsiasi tranne #N/D -ISERROR = VAL.ERRORE ## Restituisce VERO se il valore è un valore di errore qualsiasi -ISEVEN = VAL.PARI ## Restituisce VERO se il numero è pari -ISLOGICAL = VAL.LOGICO ## Restituisce VERO se il valore è un valore logico -ISNA = VAL.NON.DISP ## Restituisce VERO se il valore è un valore di errore #N/D -ISNONTEXT = VAL.NON.TESTO ## Restituisce VERO se il valore non è in formato testo -ISNUMBER = VAL.NUMERO ## Restituisce VERO se il valore è un numero -ISODD = VAL.DISPARI ## Restituisce VERO se il numero è dispari -ISREF = VAL.RIF ## Restituisce VERO se il valore è un riferimento -ISTEXT = VAL.TESTO ## Restituisce VERO se il valore è in formato testo -N = NUM ## Restituisce un valore convertito in numero -NA = NON.DISP ## Restituisce il valore di errore #N/D -TYPE = TIPO ## Restituisce un numero che indica il tipo di dati relativi a un valore - - -## -## Logical functions Funzioni logiche -## -AND = E ## Restituisce VERO se tutti gli argomenti sono VERO -FALSE = FALSO ## Restituisce il valore logico FALSO -IF = SE ## Specifica un test logico da eseguire -IFERROR = SE.ERRORE ## Restituisce un valore specificato se una formula fornisce un errore come risultato; in caso contrario, restituisce il risultato della formula -NOT = NON ## Inverte la logica degli argomenti -OR = O ## Restituisce VERO se un argomento qualsiasi è VERO -TRUE = VERO ## Restituisce il valore logico VERO - - -## -## Lookup and reference functions Funzioni di ricerca e di riferimento -## -ADDRESS = INDIRIZZO ## Restituisce un riferimento come testo in una singola cella di un foglio di lavoro -AREAS = AREE ## Restituisce il numero di aree in un riferimento -CHOOSE = SCEGLI ## Sceglie un valore da un elenco di valori -COLUMN = RIF.COLONNA ## Restituisce il numero di colonna di un riferimento -COLUMNS = COLONNE ## Restituisce il numero di colonne in un riferimento -HLOOKUP = CERCA.ORIZZ ## Effettua una ricerca nella riga superiore di una matrice e restituisce il valore della cella specificata -HYPERLINK = COLLEG.IPERTESTUALE ## Crea un collegamento che apre un documento memorizzato in un server di rete, una rete Intranet o Internet -INDEX = INDICE ## Utilizza un indice per scegliere un valore da un riferimento o da una matrice -INDIRECT = INDIRETTO ## Restituisce un riferimento specificato da un valore testo -LOOKUP = CERCA ## Ricerca i valori in un vettore o in una matrice -MATCH = CONFRONTA ## Ricerca i valori in un riferimento o in una matrice -OFFSET = SCARTO ## Restituisce uno scarto di riferimento da un riferimento dato -ROW = RIF.RIGA ## Restituisce il numero di riga di un riferimento -ROWS = RIGHE ## Restituisce il numero delle righe in un riferimento -RTD = DATITEMPOREALE ## Recupera dati in tempo reale da un programma che supporta l'automazione COM (automazione: Metodo per utilizzare gli oggetti di un'applicazione da un'altra applicazione o da un altro strumento di sviluppo. Precedentemente nota come automazione OLE, l'automazione è uno standard del settore e una caratteristica del modello COM (Component Object Model).) -TRANSPOSE = MATR.TRASPOSTA ## Restituisce la trasposizione di una matrice -VLOOKUP = CERCA.VERT ## Effettua una ricerca nella prima colonna di una matrice e si sposta attraverso la riga per restituire il valore di una cella - - -## -## Math and trigonometry functions Funzioni matematiche e trigonometriche -## -ABS = ASS ## Restituisce il valore assoluto di un numero. -ACOS = ARCCOS ## Restituisce l'arcocoseno di un numero -ACOSH = ARCCOSH ## Restituisce l'inverso del coseno iperbolico di un numero -ASIN = ARCSEN ## Restituisce l'arcoseno di un numero -ASINH = ARCSENH ## Restituisce l'inverso del seno iperbolico di un numero -ATAN = ARCTAN ## Restituisce l'arcotangente di un numero -ATAN2 = ARCTAN.2 ## Restituisce l'arcotangente delle coordinate x e y specificate -ATANH = ARCTANH ## Restituisce l'inverso della tangente iperbolica di un numero -CEILING = ARROTONDA.ECCESSO ## Arrotonda un numero per eccesso all'intero più vicino o al multiplo più vicino a peso -COMBIN = COMBINAZIONE ## Restituisce il numero di combinazioni possibili per un numero assegnato di elementi -COS = COS ## Restituisce il coseno dell'angolo specificato -COSH = COSH ## Restituisce il coseno iperbolico di un numero -DEGREES = GRADI ## Converte i radianti in gradi -EVEN = PARI ## Arrotonda il valore assoluto di un numero per eccesso al più vicino intero pari -EXP = ESP ## Restituisce il numero e elevato alla potenza di num -FACT = FATTORIALE ## Restituisce il fattoriale di un numero -FACTDOUBLE = FATT.DOPPIO ## Restituisce il fattoriale doppio di un numero -FLOOR = ARROTONDA.DIFETTO ## Arrotonda un numero per difetto al multiplo più vicino a zero -GCD = MCD ## Restituisce il massimo comune divisore -INT = INT ## Arrotonda un numero per difetto al numero intero più vicino -LCM = MCM ## Restituisce il minimo comune multiplo -LN = LN ## Restituisce il logaritmo naturale di un numero -LOG = LOG ## Restituisce il logaritmo di un numero in una specificata base -LOG10 = LOG10 ## Restituisce il logaritmo in base 10 di un numero -MDETERM = MATR.DETERM ## Restituisce il determinante di una matrice -MINVERSE = MATR.INVERSA ## Restituisce l'inverso di una matrice -MMULT = MATR.PRODOTTO ## Restituisce il prodotto di due matrici -MOD = RESTO ## Restituisce il resto della divisione -MROUND = ARROTONDA.MULTIPLO ## Restituisce un numero arrotondato al multiplo desiderato -MULTINOMIAL = MULTINOMIALE ## Restituisce il multinomiale di un insieme di numeri -ODD = DISPARI ## Arrotonda un numero per eccesso al più vicino intero dispari -PI = PI.GRECO ## Restituisce il valore di pi greco -POWER = POTENZA ## Restituisce il risultato di un numero elevato a potenza -PRODUCT = PRODOTTO ## Moltiplica i suoi argomenti -QUOTIENT = QUOZIENTE ## Restituisce la parte intera di una divisione -RADIANS = RADIANTI ## Converte i gradi in radianti -RAND = CASUALE ## Restituisce un numero casuale compreso tra 0 e 1 -RANDBETWEEN = CASUALE.TRA ## Restituisce un numero casuale compreso tra i numeri specificati -ROMAN = ROMANO ## Restituisce il numero come numero romano sotto forma di testo -ROUND = ARROTONDA ## Arrotonda il numero al numero di cifre specificato -ROUNDDOWN = ARROTONDA.PER.DIF ## Arrotonda il valore assoluto di un numero per difetto -ROUNDUP = ARROTONDA.PER.ECC ## Arrotonda il valore assoluto di un numero per eccesso -SERIESSUM = SOMMA.SERIE ## Restituisce la somma di una serie di potenze in base alla formula -SIGN = SEGNO ## Restituisce il segno di un numero -SIN = SEN ## Restituisce il seno di un dato angolo -SINH = SENH ## Restituisce il seno iperbolico di un numero -SQRT = RADQ ## Restituisce una radice quadrata -SQRTPI = RADQ.PI.GRECO ## Restituisce la radice quadrata di un numero (numero * pi greco) -SUBTOTAL = SUBTOTALE ## Restituisce un subtotale in un elenco o in un database -SUM = SOMMA ## Somma i suoi argomenti -SUMIF = SOMMA.SE ## Somma le celle specificate da un dato criterio -SUMIFS = SOMMA.PIÙ.SE ## Somma le celle in un intervallo che soddisfano più criteri -SUMPRODUCT = MATR.SOMMA.PRODOTTO ## Restituisce la somma dei prodotti dei componenti corrispondenti della matrice -SUMSQ = SOMMA.Q ## Restituisce la somma dei quadrati degli argomenti -SUMX2MY2 = SOMMA.DIFF.Q ## Restituisce la somma della differenza dei quadrati dei corrispondenti elementi in due matrici -SUMX2PY2 = SOMMA.SOMMA.Q ## Restituisce la somma della somma dei quadrati dei corrispondenti elementi in due matrici -SUMXMY2 = SOMMA.Q.DIFF ## Restituisce la somma dei quadrati delle differenze dei corrispondenti elementi in due matrici -TAN = TAN ## Restituisce la tangente di un numero -TANH = TANH ## Restituisce la tangente iperbolica di un numero -TRUNC = TRONCA ## Tronca la parte decimale di un numero - - -## -## Statistical functions Funzioni statistiche -## -AVEDEV = MEDIA.DEV ## Restituisce la media delle deviazioni assolute delle coordinate rispetto alla loro media -AVERAGE = MEDIA ## Restituisce la media degli argomenti -AVERAGEA = MEDIA.VALORI ## Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici -AVERAGEIF = MEDIA.SE ## Restituisce la media aritmetica di tutte le celle in un intervallo che soddisfano un determinato criterio -AVERAGEIFS = MEDIA.PIÙ.SE ## Restituisce la media aritmetica di tutte le celle che soddisfano più criteri -BETADIST = DISTRIB.BETA ## Restituisce la funzione di distribuzione cumulativa beta -BETAINV = INV.BETA ## Restituisce l'inverso della funzione di distribuzione cumulativa per una distribuzione beta specificata -BINOMDIST = DISTRIB.BINOM ## Restituisce la distribuzione binomiale per il termine individuale -CHIDIST = DISTRIB.CHI ## Restituisce la probabilità a una coda per la distribuzione del chi quadrato -CHIINV = INV.CHI ## Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato -CHITEST = TEST.CHI ## Restituisce il test per l'indipendenza -CONFIDENCE = CONFIDENZA ## Restituisce l'intervallo di confidenza per una popolazione -CORREL = CORRELAZIONE ## Restituisce il coefficiente di correlazione tra due insiemi di dati -COUNT = CONTA.NUMERI ## Conta la quantità di numeri nell'elenco di argomenti -COUNTA = CONTA.VALORI ## Conta il numero di valori nell'elenco di argomenti -COUNTBLANK = CONTA.VUOTE ## Conta il numero di celle vuote all'interno di un intervallo -COUNTIF = CONTA.SE ## Conta il numero di celle all'interno di un intervallo che soddisfa i criteri specificati -COUNTIFS = CONTA.PIÙ.SE ## Conta il numero di celle in un intervallo che soddisfano più criteri. -COVAR = COVARIANZA ## Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate -CRITBINOM = CRIT.BINOM ## Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio -DEVSQ = DEV.Q ## Restituisce la somma dei quadrati delle deviazioni -EXPONDIST = DISTRIB.EXP ## Restituisce la distribuzione esponenziale -FDIST = DISTRIB.F ## Restituisce la distribuzione di probabilità F -FINV = INV.F ## Restituisce l'inverso della distribuzione della probabilità F -FISHER = FISHER ## Restituisce la trasformazione di Fisher -FISHERINV = INV.FISHER ## Restituisce l'inverso della trasformazione di Fisher -FORECAST = PREVISIONE ## Restituisce i valori lungo una tendenza lineare -FREQUENCY = FREQUENZA ## Restituisce la distribuzione di frequenza come matrice verticale -FTEST = TEST.F ## Restituisce il risultato di un test F -GAMMADIST = DISTRIB.GAMMA ## Restituisce la distribuzione gamma -GAMMAINV = INV.GAMMA ## Restituisce l'inverso della distribuzione cumulativa gamma -GAMMALN = LN.GAMMA ## Restituisce il logaritmo naturale della funzione gamma, G(x) -GEOMEAN = MEDIA.GEOMETRICA ## Restituisce la media geometrica -GROWTH = CRESCITA ## Restituisce i valori lungo una linea di tendenza esponenziale -HARMEAN = MEDIA.ARMONICA ## Restituisce la media armonica -HYPGEOMDIST = DISTRIB.IPERGEOM ## Restituisce la distribuzione ipergeometrica -INTERCEPT = INTERCETTA ## Restituisce l'intercetta della retta di regressione lineare -KURT = CURTOSI ## Restituisce la curtosi di un insieme di dati -LARGE = GRANDE ## Restituisce il k-esimo valore più grande in un insieme di dati -LINEST = REGR.LIN ## Restituisce i parametri di una tendenza lineare -LOGEST = REGR.LOG ## Restituisce i parametri di una linea di tendenza esponenziale -LOGINV = INV.LOGNORM ## Restituisce l'inverso di una distribuzione lognormale -LOGNORMDIST = DISTRIB.LOGNORM ## Restituisce la distribuzione lognormale cumulativa -MAX = MAX ## Restituisce il valore massimo in un elenco di argomenti -MAXA = MAX.VALORI ## Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici -MEDIAN = MEDIANA ## Restituisce la mediana dei numeri specificati -MIN = MIN ## Restituisce il valore minimo in un elenco di argomenti -MINA = MIN.VALORI ## Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici -MODE = MODA ## Restituisce il valore più comune in un insieme di dati -NEGBINOMDIST = DISTRIB.BINOM.NEG ## Restituisce la distribuzione binomiale negativa -NORMDIST = DISTRIB.NORM ## Restituisce la distribuzione cumulativa normale -NORMINV = INV.NORM ## Restituisce l'inverso della distribuzione cumulativa normale standard -NORMSDIST = DISTRIB.NORM.ST ## Restituisce la distribuzione cumulativa normale standard -NORMSINV = INV.NORM.ST ## Restituisce l'inverso della distribuzione cumulativa normale -PEARSON = PEARSON ## Restituisce il coefficiente del momento di correlazione di Pearson -PERCENTILE = PERCENTILE ## Restituisce il k-esimo dato percentile di valori in un intervallo -PERCENTRANK = PERCENT.RANGO ## Restituisce il rango di un valore in un insieme di dati come percentuale -PERMUT = PERMUTAZIONE ## Restituisce il numero delle permutazioni per un determinato numero di oggetti -POISSON = POISSON ## Restituisce la distribuzione di Poisson -PROB = PROBABILITÀ ## Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti -QUARTILE = QUARTILE ## Restituisce il quartile di un insieme di dati -RANK = RANGO ## Restituisce il rango di un numero in un elenco di numeri -RSQ = RQ ## Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson -SKEW = ASIMMETRIA ## Restituisce il grado di asimmetria di una distribuzione -SLOPE = PENDENZA ## Restituisce la pendenza di una retta di regressione lineare -SMALL = PICCOLO ## Restituisce il k-esimo valore più piccolo in un insieme di dati -STANDARDIZE = NORMALIZZA ## Restituisce un valore normalizzato -STDEV = DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione -STDEVA = DEV.ST.VALORI ## Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici -STDEVP = DEV.ST.POP ## Calcola la deviazione standard sulla base di un'intera popolazione -STDEVPA = DEV.ST.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici -STEYX = ERR.STD.YX ## Restituisce l'errore standard del valore previsto per y per ogni valore x nella regressione -TDIST = DISTRIB.T ## Restituisce la distribuzione t di Student -TINV = INV.T ## Restituisce l'inversa della distribuzione t di Student -TREND = TENDENZA ## Restituisce i valori lungo una linea di tendenza lineare -TRIMMEAN = MEDIA.TRONCATA ## Restituisce la media della parte interna di un insieme di dati -TTEST = TEST.T ## Restituisce la probabilità associata ad un test t di Student -VAR = VAR ## Stima la varianza sulla base di un campione -VARA = VAR.VALORI ## Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici -VARP = VAR.POP ## Calcola la varianza sulla base dell'intera popolazione -VARPA = VAR.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici -WEIBULL = WEIBULL ## Restituisce la distribuzione di Weibull -ZTEST = TEST.Z ## Restituisce il valore di probabilità a una coda per un test z - - -## -## Text functions Funzioni di testo -## -ASC = ASC ## Modifica le lettere inglesi o il katakana a doppio byte all'interno di una stringa di caratteri in caratteri a singolo byte -BAHTTEXT = BAHTTESTO ## Converte un numero in testo, utilizzando il formato valuta ß (baht) -CHAR = CODICE.CARATT ## Restituisce il carattere specificato dal numero di codice -CLEAN = LIBERA ## Elimina dal testo tutti i caratteri che non è possibile stampare -CODE = CODICE ## Restituisce il codice numerico del primo carattere di una stringa di testo -CONCATENATE = CONCATENA ## Unisce diversi elementi di testo in un unico elemento di testo -DOLLAR = VALUTA ## Converte un numero in testo, utilizzando il formato valuta € (euro) -EXACT = IDENTICO ## Verifica se due valori di testo sono uguali -FIND = TROVA ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) -FINDB = TROVA.B ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) -FIXED = FISSO ## Formatta un numero come testo con un numero fisso di decimali -JIS = ORDINAMENTO.JIS ## Modifica le lettere inglesi o i caratteri katakana a byte singolo all'interno di una stringa di caratteri in caratteri a byte doppio. -LEFT = SINISTRA ## Restituisce il carattere più a sinistra di un valore di testo -LEFTB = SINISTRA.B ## Restituisce il carattere più a sinistra di un valore di testo -LEN = LUNGHEZZA ## Restituisce il numero di caratteri di una stringa di testo -LENB = LUNB ## Restituisce il numero di caratteri di una stringa di testo -LOWER = MINUSC ## Converte il testo in lettere minuscole -MID = MEDIA ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata -MIDB = MEDIA.B ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata -PHONETIC = FURIGANA ## Estrae i caratteri fonetici (furigana) da una stringa di testo. -PROPER = MAIUSC.INIZ ## Converte in maiuscolo la prima lettera di ogni parola di un valore di testo -REPLACE = RIMPIAZZA ## Sostituisce i caratteri all'interno di un testo -REPLACEB = SOSTITUISCI.B ## Sostituisce i caratteri all'interno di un testo -REPT = RIPETI ## Ripete un testo per un dato numero di volte -RIGHT = DESTRA ## Restituisce il carattere più a destra di un valore di testo -RIGHTB = DESTRA.B ## Restituisce il carattere più a destra di un valore di testo -SEARCH = RICERCA ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) -SEARCHB = CERCA.B ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) -SUBSTITUTE = SOSTITUISCI ## Sostituisce il nuovo testo al testo contenuto in una stringa -T = T ## Converte gli argomenti in testo -TEXT = TESTO ## Formatta un numero e lo converte in testo -TRIM = ANNULLA.SPAZI ## Elimina gli spazi dal testo -UPPER = MAIUSC ## Converte il testo in lettere maiuscole -VALUE = VALORE ## Converte un argomento di testo in numero +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funzioni di automazione e dei componenti aggiuntivi +## +GETPIVOTDATA = INFO.DATI.TAB.PIVOT ## Restituisce i dati memorizzati in un rapporto di tabella pivot + + +## +## Cube functions Funzioni cubo +## +CUBEKPIMEMBER = MEMBRO.KPI.CUBO ## Restituisce il nome, la proprietà e la misura di un indicatore di prestazioni chiave (KPI) e visualizza il nome e la proprietà nella cella. Un KPI è una misura quantificabile, ad esempio l'utile lordo mensile o il fatturato trimestrale dei dipendenti, utilizzata per il monitoraggio delle prestazioni di un'organizzazione. +CUBEMEMBER = MEMBRO.CUBO ## Restituisce un membro o una tupla in una gerarchia di cubi. Consente di verificare l'esistenza del membro o della tupla nel cubo. +CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO ## Restituisce il valore di una proprietà di un membro del cubo. Consente di verificare l'esistenza di un nome di membro all'interno del cubo e di restituire la proprietà specificata per tale membro. +CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO ## Restituisce l'n-esimo membro o il membro ordinato di un insieme. Consente di restituire uno o più elementi in un insieme, ad esempio l'agente di vendita migliore o i primi 10 studenti. +CUBESET = SET.CUBO ## Definisce un insieme di tuple o membri calcolati mediante l'invio di un'espressione di insieme al cubo sul server. In questo modo l'insieme viene creato e restituito a Microsoft Office Excel. +CUBESETCOUNT = CONTA.SET.CUBO ## Restituisce il numero di elementi di un insieme. +CUBEVALUE = VALORE.CUBO ## Restituisce un valore aggregato da un cubo. + + +## +## Database functions Funzioni di database +## +DAVERAGE = DB.MEDIA ## Restituisce la media di voci del database selezionate +DCOUNT = DB.CONTA.NUMERI ## Conta le celle di un database contenenti numeri +DCOUNTA = DB.CONTA.VALORI ## Conta le celle non vuote in un database +DGET = DB.VALORI ## Estrae da un database un singolo record che soddisfa i criteri specificati +DMAX = DB.MAX ## Restituisce il valore massimo dalle voci selezionate in un database +DMIN = DB.MIN ## Restituisce il valore minimo dalle voci di un database selezionate +DPRODUCT = DB.PRODOTTO ## Moltiplica i valori in un determinato campo di record che soddisfano i criteri del database +DSTDEV = DB.DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione di voci di un database selezionate +DSTDEVP = DB.DEV.ST.POP ## Calcola la deviazione standard sulla base di tutte le voci di un database selezionate +DSUM = DB.SOMMA ## Aggiunge i numeri nel campo colonna di record del database che soddisfa determinati criteri +DVAR = DB.VAR ## Restituisce una stima della varianza sulla base di un campione da voci di un database selezionate +DVARP = DB.VAR.POP ## Calcola la varianza sulla base di tutte le voci di un database selezionate + + +## +## Date and time functions Funzioni data e ora +## +DATE = DATA ## Restituisce il numero seriale di una determinata data +DATEVALUE = DATA.VALORE ## Converte una data sotto forma di testo in un numero seriale +DAY = GIORNO ## Converte un numero seriale in un giorno del mese +DAYS360 = GIORNO360 ## Calcola il numero di giorni compreso tra due date basandosi su un anno di 360 giorni +EDATE = DATA.MESE ## Restituisce il numero seriale della data che rappresenta il numero di mesi prima o dopo la data di inizio +EOMONTH = FINE.MESE ## Restituisce il numero seriale dell'ultimo giorno del mese, prima o dopo un determinato numero di mesi +HOUR = ORA ## Converte un numero seriale in un'ora +MINUTE = MINUTO ## Converte un numero seriale in un minuto +MONTH = MESE ## Converte un numero seriale in un mese +NETWORKDAYS = GIORNI.LAVORATIVI.TOT ## Restituisce il numero di tutti i giorni lavorativi compresi fra due date +NOW = ADESSO ## Restituisce il numero seriale della data e dell'ora corrente +SECOND = SECONDO ## Converte un numero seriale in un secondo +TIME = ORARIO ## Restituisce il numero seriale di una determinata ora +TIMEVALUE = ORARIO.VALORE ## Converte un orario in forma di testo in un numero seriale +TODAY = OGGI ## Restituisce il numero seriale relativo alla data odierna +WEEKDAY = GIORNO.SETTIMANA ## Converte un numero seriale in un giorno della settimana +WEEKNUM = NUM.SETTIMANA ## Converte un numero seriale in un numero che rappresenta la posizione numerica di una settimana nell'anno +WORKDAY = GIORNO.LAVORATIVO ## Restituisce il numero della data prima o dopo un determinato numero di giorni lavorativi +YEAR = ANNO ## Converte un numero seriale in un anno +YEARFRAC = FRAZIONE.ANNO ## Restituisce la frazione dell'anno che rappresenta il numero dei giorni compresi tra una data_ iniziale e una data_finale + + +## +## Engineering functions Funzioni ingegneristiche +## +BESSELI = BESSEL.I ## Restituisce la funzione di Bessel modificata In(x) +BESSELJ = BESSEL.J ## Restituisce la funzione di Bessel Jn(x) +BESSELK = BESSEL.K ## Restituisce la funzione di Bessel modificata Kn(x) +BESSELY = BESSEL.Y ## Restituisce la funzione di Bessel Yn(x) +BIN2DEC = BINARIO.DECIMALE ## Converte un numero binario in decimale +BIN2HEX = BINARIO.HEX ## Converte un numero binario in esadecimale +BIN2OCT = BINARIO.OCT ## Converte un numero binario in ottale +COMPLEX = COMPLESSO ## Converte i coefficienti reali e immaginari in numeri complessi +CONVERT = CONVERTI ## Converte un numero da un sistema di misura in un altro +DEC2BIN = DECIMALE.BINARIO ## Converte un numero decimale in binario +DEC2HEX = DECIMALE.HEX ## Converte un numero decimale in esadecimale +DEC2OCT = DECIMALE.OCT ## Converte un numero decimale in ottale +DELTA = DELTA ## Verifica se due valori sono uguali +ERF = FUNZ.ERRORE ## Restituisce la funzione di errore +ERFC = FUNZ.ERRORE.COMP ## Restituisce la funzione di errore complementare +GESTEP = SOGLIA ## Verifica se un numero è maggiore del valore di soglia +HEX2BIN = HEX.BINARIO ## Converte un numero esadecimale in binario +HEX2DEC = HEX.DECIMALE ## Converte un numero esadecimale in decimale +HEX2OCT = HEX.OCT ## Converte un numero esadecimale in ottale +IMABS = COMP.MODULO ## Restituisce il valore assoluto (modulo) di un numero complesso +IMAGINARY = COMP.IMMAGINARIO ## Restituisce il coefficiente immaginario di un numero complesso +IMARGUMENT = COMP.ARGOMENTO ## Restituisce l'argomento theta, un angolo espresso in radianti +IMCONJUGATE = COMP.CONIUGATO ## Restituisce il complesso coniugato del numero complesso +IMCOS = COMP.COS ## Restituisce il coseno di un numero complesso +IMDIV = COMP.DIV ## Restituisce il quoziente di due numeri complessi +IMEXP = COMP.EXP ## Restituisce il valore esponenziale di un numero complesso +IMLN = COMP.LN ## Restituisce il logaritmo naturale di un numero complesso +IMLOG10 = COMP.LOG10 ## Restituisce il logaritmo in base 10 di un numero complesso +IMLOG2 = COMP.LOG2 ## Restituisce un logaritmo in base 2 di un numero complesso +IMPOWER = COMP.POTENZA ## Restituisce il numero complesso elevato a una potenza intera +IMPRODUCT = COMP.PRODOTTO ## Restituisce il prodotto di numeri complessi compresi tra 2 e 29 +IMREAL = COMP.PARTE.REALE ## Restituisce il coefficiente reale di un numero complesso +IMSIN = COMP.SEN ## Restituisce il seno di un numero complesso +IMSQRT = COMP.RADQ ## Restituisce la radice quadrata di un numero complesso +IMSUB = COMP.DIFF ## Restituisce la differenza fra due numeri complessi +IMSUM = COMP.SOMMA ## Restituisce la somma di numeri complessi +OCT2BIN = OCT.BINARIO ## Converte un numero ottale in binario +OCT2DEC = OCT.DECIMALE ## Converte un numero ottale in decimale +OCT2HEX = OCT.HEX ## Converte un numero ottale in esadecimale + + +## +## Financial functions Funzioni finanziarie +## +ACCRINT = INT.MATURATO.PER ## Restituisce l'interesse maturato di un titolo che paga interessi periodici +ACCRINTM = INT.MATURATO.SCAD ## Restituisce l'interesse maturato di un titolo che paga interessi alla scadenza +AMORDEGRC = AMMORT.DEGR ## Restituisce l'ammortamento per ogni periodo contabile utilizzando un coefficiente di ammortamento +AMORLINC = AMMORT.PER ## Restituisce l'ammortamento per ogni periodo contabile +COUPDAYBS = GIORNI.CED.INIZ.LIQ ## Restituisce il numero dei giorni che vanno dall'inizio del periodo di durata della cedola alla data di liquidazione +COUPDAYS = GIORNI.CED ## Restituisce il numero dei giorni relativi al periodo della cedola che contiene la data di liquidazione +COUPDAYSNC = GIORNI.CED.NUOVA ## Restituisce il numero di giorni che vanno dalla data di liquidazione alla data della cedola successiva +COUPNCD = DATA.CED.SUCC ## Restituisce un numero che rappresenta la data della cedola successiva alla data di liquidazione +COUPNUM = NUM.CED ## Restituisce il numero di cedole pagabili fra la data di liquidazione e la data di scadenza +COUPPCD = DATA.CED.PREC ## Restituisce un numero che rappresenta la data della cedola precedente alla data di liquidazione +CUMIPMT = INT.CUMUL ## Restituisce l'interesse cumulativo pagato fra due periodi +CUMPRINC = CAP.CUM ## Restituisce il capitale cumulativo pagato per estinguere un debito fra due periodi +DB = DB ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a quote fisse decrescenti +DDB = AMMORT ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a doppie quote decrescenti o altri metodi specificati +DISC = TASSO.SCONTO ## Restituisce il tasso di sconto per un titolo +DOLLARDE = VALUTA.DEC ## Converte un prezzo valuta, espresso come frazione, in prezzo valuta, espresso come numero decimale +DOLLARFR = VALUTA.FRAZ ## Converte un prezzo valuta, espresso come numero decimale, in prezzo valuta, espresso come frazione +DURATION = DURATA ## Restituisce la durata annuale di un titolo con i pagamenti di interesse periodico +EFFECT = EFFETTIVO ## Restituisce l'effettivo tasso di interesse annuo +FV = VAL.FUT ## Restituisce il valore futuro di un investimento +FVSCHEDULE = VAL.FUT.CAPITALE ## Restituisce il valore futuro di un capitale iniziale dopo aver applicato una serie di tassi di interesse composti +INTRATE = TASSO.INT ## Restituisce il tasso di interesse per un titolo interamente investito +IPMT = INTERESSI ## Restituisce il valore degli interessi per un investimento relativo a un periodo specifico +IRR = TIR.COST ## Restituisce il tasso di rendimento interno per una serie di flussi di cassa +ISPMT = INTERESSE.RATA ## Calcola l'interesse di un investimento pagato durante un periodo specifico +MDURATION = DURATA.M ## Restituisce la durata Macauley modificata per un titolo con un valore presunto di € 100 +MIRR = TIR.VAR ## Restituisce il tasso di rendimento interno in cui i flussi di cassa positivi e negativi sono finanziati a tassi differenti +NOMINAL = NOMINALE ## Restituisce il tasso di interesse nominale annuale +NPER = NUM.RATE ## Restituisce un numero di periodi relativi a un investimento +NPV = VAN ## Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e sul tasso di sconto +ODDFPRICE = PREZZO.PRIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente il primo periodo di durata irregolare +ODDFYIELD = REND.PRIMO.IRR ## Restituisce il rendimento di un titolo avente il primo periodo di durata irregolare +ODDLPRICE = PREZZO.ULTIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente l'ultimo periodo di durata irregolare +ODDLYIELD = REND.ULTIMO.IRR ## Restituisce il rendimento di un titolo avente l'ultimo periodo di durata irregolare +PMT = RATA ## Restituisce il pagamento periodico di una rendita annua +PPMT = P.RATA ## Restituisce il pagamento sul capitale di un investimento per un dato periodo +PRICE = PREZZO ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga interessi periodici +PRICEDISC = PREZZO.SCONT ## Restituisce il prezzo di un titolo scontato dal valore nominale di € 100 +PRICEMAT = PREZZO.SCAD ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga gli interessi alla scadenza +PV = VA ## Restituisce il valore attuale di un investimento +RATE = TASSO ## Restituisce il tasso di interesse per un periodo di un'annualità +RECEIVED = RICEV.SCAD ## Restituisce l'ammontare ricevuto alla scadenza di un titolo interamente investito +SLN = AMMORT.COST ## Restituisce l'ammortamento a quote costanti di un bene per un singolo periodo +SYD = AMMORT.ANNUO ## Restituisce l'ammortamento a somma degli anni di un bene per un periodo specificato +TBILLEQ = BOT.EQUIV ## Restituisce il rendimento equivalente ad un'obbligazione per un Buono ordinario del Tesoro +TBILLPRICE = BOT.PREZZO ## Restituisce il prezzo di un Buono del Tesoro dal valore nominale di € 100 +TBILLYIELD = BOT.REND ## Restituisce il rendimento di un Buono del Tesoro +VDB = AMMORT.VAR ## Restituisce l'ammortamento di un bene per un periodo specificato o parziale utilizzando il metodo a doppie quote proporzionali ai valori residui +XIRR = TIR.X ## Restituisce il tasso di rendimento interno di un impiego di flussi di cassa +XNPV = VAN.X ## Restituisce il valore attuale netto di un impiego di flussi di cassa non necessariamente periodici +YIELD = REND ## Restituisce il rendimento di un titolo che frutta interessi periodici +YIELDDISC = REND.TITOLI.SCONT ## Restituisce il rendimento annuale di un titolo scontato, ad esempio un Buono del Tesoro +YIELDMAT = REND.SCAD ## Restituisce il rendimento annuo di un titolo che paga interessi alla scadenza + + +## +## Information functions Funzioni relative alle informazioni +## +CELL = CELLA ## Restituisce le informazioni sulla formattazione, la posizione o i contenuti di una cella +ERROR.TYPE = ERRORE.TIPO ## Restituisce un numero che corrisponde a un tipo di errore +INFO = INFO ## Restituisce le informazioni sull'ambiente operativo corrente +ISBLANK = VAL.VUOTO ## Restituisce VERO se il valore è vuoto +ISERR = VAL.ERR ## Restituisce VERO se il valore è un valore di errore qualsiasi tranne #N/D +ISERROR = VAL.ERRORE ## Restituisce VERO se il valore è un valore di errore qualsiasi +ISEVEN = VAL.PARI ## Restituisce VERO se il numero è pari +ISLOGICAL = VAL.LOGICO ## Restituisce VERO se il valore è un valore logico +ISNA = VAL.NON.DISP ## Restituisce VERO se il valore è un valore di errore #N/D +ISNONTEXT = VAL.NON.TESTO ## Restituisce VERO se il valore non è in formato testo +ISNUMBER = VAL.NUMERO ## Restituisce VERO se il valore è un numero +ISODD = VAL.DISPARI ## Restituisce VERO se il numero è dispari +ISREF = VAL.RIF ## Restituisce VERO se il valore è un riferimento +ISTEXT = VAL.TESTO ## Restituisce VERO se il valore è in formato testo +N = NUM ## Restituisce un valore convertito in numero +NA = NON.DISP ## Restituisce il valore di errore #N/D +TYPE = TIPO ## Restituisce un numero che indica il tipo di dati relativi a un valore + + +## +## Logical functions Funzioni logiche +## +AND = E ## Restituisce VERO se tutti gli argomenti sono VERO +FALSE = FALSO ## Restituisce il valore logico FALSO +IF = SE ## Specifica un test logico da eseguire +IFERROR = SE.ERRORE ## Restituisce un valore specificato se una formula fornisce un errore come risultato; in caso contrario, restituisce il risultato della formula +NOT = NON ## Inverte la logica degli argomenti +OR = O ## Restituisce VERO se un argomento qualsiasi è VERO +TRUE = VERO ## Restituisce il valore logico VERO + + +## +## Lookup and reference functions Funzioni di ricerca e di riferimento +## +ADDRESS = INDIRIZZO ## Restituisce un riferimento come testo in una singola cella di un foglio di lavoro +AREAS = AREE ## Restituisce il numero di aree in un riferimento +CHOOSE = SCEGLI ## Sceglie un valore da un elenco di valori +COLUMN = RIF.COLONNA ## Restituisce il numero di colonna di un riferimento +COLUMNS = COLONNE ## Restituisce il numero di colonne in un riferimento +HLOOKUP = CERCA.ORIZZ ## Effettua una ricerca nella riga superiore di una matrice e restituisce il valore della cella specificata +HYPERLINK = COLLEG.IPERTESTUALE ## Crea un collegamento che apre un documento memorizzato in un server di rete, una rete Intranet o Internet +INDEX = INDICE ## Utilizza un indice per scegliere un valore da un riferimento o da una matrice +INDIRECT = INDIRETTO ## Restituisce un riferimento specificato da un valore testo +LOOKUP = CERCA ## Ricerca i valori in un vettore o in una matrice +MATCH = CONFRONTA ## Ricerca i valori in un riferimento o in una matrice +OFFSET = SCARTO ## Restituisce uno scarto di riferimento da un riferimento dato +ROW = RIF.RIGA ## Restituisce il numero di riga di un riferimento +ROWS = RIGHE ## Restituisce il numero delle righe in un riferimento +RTD = DATITEMPOREALE ## Recupera dati in tempo reale da un programma che supporta l'automazione COM (automazione: Metodo per utilizzare gli oggetti di un'applicazione da un'altra applicazione o da un altro strumento di sviluppo. Precedentemente nota come automazione OLE, l'automazione è uno standard del settore e una caratteristica del modello COM (Component Object Model).) +TRANSPOSE = MATR.TRASPOSTA ## Restituisce la trasposizione di una matrice +VLOOKUP = CERCA.VERT ## Effettua una ricerca nella prima colonna di una matrice e si sposta attraverso la riga per restituire il valore di una cella + + +## +## Math and trigonometry functions Funzioni matematiche e trigonometriche +## +ABS = ASS ## Restituisce il valore assoluto di un numero. +ACOS = ARCCOS ## Restituisce l'arcocoseno di un numero +ACOSH = ARCCOSH ## Restituisce l'inverso del coseno iperbolico di un numero +ASIN = ARCSEN ## Restituisce l'arcoseno di un numero +ASINH = ARCSENH ## Restituisce l'inverso del seno iperbolico di un numero +ATAN = ARCTAN ## Restituisce l'arcotangente di un numero +ATAN2 = ARCTAN.2 ## Restituisce l'arcotangente delle coordinate x e y specificate +ATANH = ARCTANH ## Restituisce l'inverso della tangente iperbolica di un numero +CEILING = ARROTONDA.ECCESSO ## Arrotonda un numero per eccesso all'intero più vicino o al multiplo più vicino a peso +COMBIN = COMBINAZIONE ## Restituisce il numero di combinazioni possibili per un numero assegnato di elementi +COS = COS ## Restituisce il coseno dell'angolo specificato +COSH = COSH ## Restituisce il coseno iperbolico di un numero +DEGREES = GRADI ## Converte i radianti in gradi +EVEN = PARI ## Arrotonda il valore assoluto di un numero per eccesso al più vicino intero pari +EXP = ESP ## Restituisce il numero e elevato alla potenza di num +FACT = FATTORIALE ## Restituisce il fattoriale di un numero +FACTDOUBLE = FATT.DOPPIO ## Restituisce il fattoriale doppio di un numero +FLOOR = ARROTONDA.DIFETTO ## Arrotonda un numero per difetto al multiplo più vicino a zero +GCD = MCD ## Restituisce il massimo comune divisore +INT = INT ## Arrotonda un numero per difetto al numero intero più vicino +LCM = MCM ## Restituisce il minimo comune multiplo +LN = LN ## Restituisce il logaritmo naturale di un numero +LOG = LOG ## Restituisce il logaritmo di un numero in una specificata base +LOG10 = LOG10 ## Restituisce il logaritmo in base 10 di un numero +MDETERM = MATR.DETERM ## Restituisce il determinante di una matrice +MINVERSE = MATR.INVERSA ## Restituisce l'inverso di una matrice +MMULT = MATR.PRODOTTO ## Restituisce il prodotto di due matrici +MOD = RESTO ## Restituisce il resto della divisione +MROUND = ARROTONDA.MULTIPLO ## Restituisce un numero arrotondato al multiplo desiderato +MULTINOMIAL = MULTINOMIALE ## Restituisce il multinomiale di un insieme di numeri +ODD = DISPARI ## Arrotonda un numero per eccesso al più vicino intero dispari +PI = PI.GRECO ## Restituisce il valore di pi greco +POWER = POTENZA ## Restituisce il risultato di un numero elevato a potenza +PRODUCT = PRODOTTO ## Moltiplica i suoi argomenti +QUOTIENT = QUOZIENTE ## Restituisce la parte intera di una divisione +RADIANS = RADIANTI ## Converte i gradi in radianti +RAND = CASUALE ## Restituisce un numero casuale compreso tra 0 e 1 +RANDBETWEEN = CASUALE.TRA ## Restituisce un numero casuale compreso tra i numeri specificati +ROMAN = ROMANO ## Restituisce il numero come numero romano sotto forma di testo +ROUND = ARROTONDA ## Arrotonda il numero al numero di cifre specificato +ROUNDDOWN = ARROTONDA.PER.DIF ## Arrotonda il valore assoluto di un numero per difetto +ROUNDUP = ARROTONDA.PER.ECC ## Arrotonda il valore assoluto di un numero per eccesso +SERIESSUM = SOMMA.SERIE ## Restituisce la somma di una serie di potenze in base alla formula +SIGN = SEGNO ## Restituisce il segno di un numero +SIN = SEN ## Restituisce il seno di un dato angolo +SINH = SENH ## Restituisce il seno iperbolico di un numero +SQRT = RADQ ## Restituisce una radice quadrata +SQRTPI = RADQ.PI.GRECO ## Restituisce la radice quadrata di un numero (numero * pi greco) +SUBTOTAL = SUBTOTALE ## Restituisce un subtotale in un elenco o in un database +SUM = SOMMA ## Somma i suoi argomenti +SUMIF = SOMMA.SE ## Somma le celle specificate da un dato criterio +SUMIFS = SOMMA.PIÙ.SE ## Somma le celle in un intervallo che soddisfano più criteri +SUMPRODUCT = MATR.SOMMA.PRODOTTO ## Restituisce la somma dei prodotti dei componenti corrispondenti della matrice +SUMSQ = SOMMA.Q ## Restituisce la somma dei quadrati degli argomenti +SUMX2MY2 = SOMMA.DIFF.Q ## Restituisce la somma della differenza dei quadrati dei corrispondenti elementi in due matrici +SUMX2PY2 = SOMMA.SOMMA.Q ## Restituisce la somma della somma dei quadrati dei corrispondenti elementi in due matrici +SUMXMY2 = SOMMA.Q.DIFF ## Restituisce la somma dei quadrati delle differenze dei corrispondenti elementi in due matrici +TAN = TAN ## Restituisce la tangente di un numero +TANH = TANH ## Restituisce la tangente iperbolica di un numero +TRUNC = TRONCA ## Tronca la parte decimale di un numero + + +## +## Statistical functions Funzioni statistiche +## +AVEDEV = MEDIA.DEV ## Restituisce la media delle deviazioni assolute delle coordinate rispetto alla loro media +AVERAGE = MEDIA ## Restituisce la media degli argomenti +AVERAGEA = MEDIA.VALORI ## Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici +AVERAGEIF = MEDIA.SE ## Restituisce la media aritmetica di tutte le celle in un intervallo che soddisfano un determinato criterio +AVERAGEIFS = MEDIA.PIÙ.SE ## Restituisce la media aritmetica di tutte le celle che soddisfano più criteri +BETADIST = DISTRIB.BETA ## Restituisce la funzione di distribuzione cumulativa beta +BETAINV = INV.BETA ## Restituisce l'inverso della funzione di distribuzione cumulativa per una distribuzione beta specificata +BINOMDIST = DISTRIB.BINOM ## Restituisce la distribuzione binomiale per il termine individuale +CHIDIST = DISTRIB.CHI ## Restituisce la probabilità a una coda per la distribuzione del chi quadrato +CHIINV = INV.CHI ## Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato +CHITEST = TEST.CHI ## Restituisce il test per l'indipendenza +CONFIDENCE = CONFIDENZA ## Restituisce l'intervallo di confidenza per una popolazione +CORREL = CORRELAZIONE ## Restituisce il coefficiente di correlazione tra due insiemi di dati +COUNT = CONTA.NUMERI ## Conta la quantità di numeri nell'elenco di argomenti +COUNTA = CONTA.VALORI ## Conta il numero di valori nell'elenco di argomenti +COUNTBLANK = CONTA.VUOTE ## Conta il numero di celle vuote all'interno di un intervallo +COUNTIF = CONTA.SE ## Conta il numero di celle all'interno di un intervallo che soddisfa i criteri specificati +COUNTIFS = CONTA.PIÙ.SE ## Conta il numero di celle in un intervallo che soddisfano più criteri. +COVAR = COVARIANZA ## Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate +CRITBINOM = CRIT.BINOM ## Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio +DEVSQ = DEV.Q ## Restituisce la somma dei quadrati delle deviazioni +EXPONDIST = DISTRIB.EXP ## Restituisce la distribuzione esponenziale +FDIST = DISTRIB.F ## Restituisce la distribuzione di probabilità F +FINV = INV.F ## Restituisce l'inverso della distribuzione della probabilità F +FISHER = FISHER ## Restituisce la trasformazione di Fisher +FISHERINV = INV.FISHER ## Restituisce l'inverso della trasformazione di Fisher +FORECAST = PREVISIONE ## Restituisce i valori lungo una tendenza lineare +FREQUENCY = FREQUENZA ## Restituisce la distribuzione di frequenza come matrice verticale +FTEST = TEST.F ## Restituisce il risultato di un test F +GAMMADIST = DISTRIB.GAMMA ## Restituisce la distribuzione gamma +GAMMAINV = INV.GAMMA ## Restituisce l'inverso della distribuzione cumulativa gamma +GAMMALN = LN.GAMMA ## Restituisce il logaritmo naturale della funzione gamma, G(x) +GEOMEAN = MEDIA.GEOMETRICA ## Restituisce la media geometrica +GROWTH = CRESCITA ## Restituisce i valori lungo una linea di tendenza esponenziale +HARMEAN = MEDIA.ARMONICA ## Restituisce la media armonica +HYPGEOMDIST = DISTRIB.IPERGEOM ## Restituisce la distribuzione ipergeometrica +INTERCEPT = INTERCETTA ## Restituisce l'intercetta della retta di regressione lineare +KURT = CURTOSI ## Restituisce la curtosi di un insieme di dati +LARGE = GRANDE ## Restituisce il k-esimo valore più grande in un insieme di dati +LINEST = REGR.LIN ## Restituisce i parametri di una tendenza lineare +LOGEST = REGR.LOG ## Restituisce i parametri di una linea di tendenza esponenziale +LOGINV = INV.LOGNORM ## Restituisce l'inverso di una distribuzione lognormale +LOGNORMDIST = DISTRIB.LOGNORM ## Restituisce la distribuzione lognormale cumulativa +MAX = MAX ## Restituisce il valore massimo in un elenco di argomenti +MAXA = MAX.VALORI ## Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici +MEDIAN = MEDIANA ## Restituisce la mediana dei numeri specificati +MIN = MIN ## Restituisce il valore minimo in un elenco di argomenti +MINA = MIN.VALORI ## Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici +MODE = MODA ## Restituisce il valore più comune in un insieme di dati +NEGBINOMDIST = DISTRIB.BINOM.NEG ## Restituisce la distribuzione binomiale negativa +NORMDIST = DISTRIB.NORM ## Restituisce la distribuzione cumulativa normale +NORMINV = INV.NORM ## Restituisce l'inverso della distribuzione cumulativa normale standard +NORMSDIST = DISTRIB.NORM.ST ## Restituisce la distribuzione cumulativa normale standard +NORMSINV = INV.NORM.ST ## Restituisce l'inverso della distribuzione cumulativa normale +PEARSON = PEARSON ## Restituisce il coefficiente del momento di correlazione di Pearson +PERCENTILE = PERCENTILE ## Restituisce il k-esimo dato percentile di valori in un intervallo +PERCENTRANK = PERCENT.RANGO ## Restituisce il rango di un valore in un insieme di dati come percentuale +PERMUT = PERMUTAZIONE ## Restituisce il numero delle permutazioni per un determinato numero di oggetti +POISSON = POISSON ## Restituisce la distribuzione di Poisson +PROB = PROBABILITÀ ## Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti +QUARTILE = QUARTILE ## Restituisce il quartile di un insieme di dati +RANK = RANGO ## Restituisce il rango di un numero in un elenco di numeri +RSQ = RQ ## Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson +SKEW = ASIMMETRIA ## Restituisce il grado di asimmetria di una distribuzione +SLOPE = PENDENZA ## Restituisce la pendenza di una retta di regressione lineare +SMALL = PICCOLO ## Restituisce il k-esimo valore più piccolo in un insieme di dati +STANDARDIZE = NORMALIZZA ## Restituisce un valore normalizzato +STDEV = DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione +STDEVA = DEV.ST.VALORI ## Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici +STDEVP = DEV.ST.POP ## Calcola la deviazione standard sulla base di un'intera popolazione +STDEVPA = DEV.ST.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici +STEYX = ERR.STD.YX ## Restituisce l'errore standard del valore previsto per y per ogni valore x nella regressione +TDIST = DISTRIB.T ## Restituisce la distribuzione t di Student +TINV = INV.T ## Restituisce l'inversa della distribuzione t di Student +TREND = TENDENZA ## Restituisce i valori lungo una linea di tendenza lineare +TRIMMEAN = MEDIA.TRONCATA ## Restituisce la media della parte interna di un insieme di dati +TTEST = TEST.T ## Restituisce la probabilità associata ad un test t di Student +VAR = VAR ## Stima la varianza sulla base di un campione +VARA = VAR.VALORI ## Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici +VARP = VAR.POP ## Calcola la varianza sulla base dell'intera popolazione +VARPA = VAR.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici +WEIBULL = WEIBULL ## Restituisce la distribuzione di Weibull +ZTEST = TEST.Z ## Restituisce il valore di probabilità a una coda per un test z + + +## +## Text functions Funzioni di testo +## +ASC = ASC ## Modifica le lettere inglesi o il katakana a doppio byte all'interno di una stringa di caratteri in caratteri a singolo byte +BAHTTEXT = BAHTTESTO ## Converte un numero in testo, utilizzando il formato valuta ß (baht) +CHAR = CODICE.CARATT ## Restituisce il carattere specificato dal numero di codice +CLEAN = LIBERA ## Elimina dal testo tutti i caratteri che non è possibile stampare +CODE = CODICE ## Restituisce il codice numerico del primo carattere di una stringa di testo +CONCATENATE = CONCATENA ## Unisce diversi elementi di testo in un unico elemento di testo +DOLLAR = VALUTA ## Converte un numero in testo, utilizzando il formato valuta € (euro) +EXACT = IDENTICO ## Verifica se due valori di testo sono uguali +FIND = TROVA ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) +FINDB = TROVA.B ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) +FIXED = FISSO ## Formatta un numero come testo con un numero fisso di decimali +JIS = ORDINAMENTO.JIS ## Modifica le lettere inglesi o i caratteri katakana a byte singolo all'interno di una stringa di caratteri in caratteri a byte doppio. +LEFT = SINISTRA ## Restituisce il carattere più a sinistra di un valore di testo +LEFTB = SINISTRA.B ## Restituisce il carattere più a sinistra di un valore di testo +LEN = LUNGHEZZA ## Restituisce il numero di caratteri di una stringa di testo +LENB = LUNB ## Restituisce il numero di caratteri di una stringa di testo +LOWER = MINUSC ## Converte il testo in lettere minuscole +MID = MEDIA ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata +MIDB = MEDIA.B ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata +PHONETIC = FURIGANA ## Estrae i caratteri fonetici (furigana) da una stringa di testo. +PROPER = MAIUSC.INIZ ## Converte in maiuscolo la prima lettera di ogni parola di un valore di testo +REPLACE = RIMPIAZZA ## Sostituisce i caratteri all'interno di un testo +REPLACEB = SOSTITUISCI.B ## Sostituisce i caratteri all'interno di un testo +REPT = RIPETI ## Ripete un testo per un dato numero di volte +RIGHT = DESTRA ## Restituisce il carattere più a destra di un valore di testo +RIGHTB = DESTRA.B ## Restituisce il carattere più a destra di un valore di testo +SEARCH = RICERCA ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) +SEARCHB = CERCA.B ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) +SUBSTITUTE = SOSTITUISCI ## Sostituisce il nuovo testo al testo contenuto in una stringa +T = T ## Converte gli argomenti in testo +TEXT = TESTO ## Formatta un numero e lo converte in testo +TRIM = ANNULLA.SPAZI ## Elimina gli spazi dal testo +UPPER = MAIUSC ## Converte il testo in lettere maiuscole +VALUE = VALORE ## Converte un argomento di testo in numero diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/nl/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/nl/functions index 573600aca45..b6b8296ef04 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/nl/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/nl/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Automatiseringsfuncties en functies in invoegtoepassingen -## -GETPIVOTDATA = DRAAITABEL.OPHALEN ## Geeft gegevens uit een draaitabelrapport als resultaat - - -## -## Cube functions Kubusfuncties -## -CUBEKPIMEMBER = KUBUSKPILID ## Retourneert de naam, eigenschap en waarde van een KPI (prestatie-indicator) en geeft de naam en de eigenschap in de cel weer. Een KPI is een meetbare waarde, zoals de maandelijkse brutowinst of de omzet per kwartaal per werknemer, die wordt gebruikt om de prestaties van een organisatie te bewaken -CUBEMEMBER = KUBUSLID ## Retourneert een lid of tupel in een kubushiërarchie. Wordt gebruikt om te controleren of het lid of de tupel in de kubus aanwezig is -CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP ## Retourneert de waarde van een lideigenschap in de kubus. Wordt gebruikt om te controleren of de lidnaam in de kubus bestaat en retourneert de opgegeven eigenschap voor dit lid -CUBERANKEDMEMBER = KUBUSGERANGCHIKTLID ## Retourneert het zoveelste, gerangschikte lid in een set. Wordt gebruikt om een of meer elementen in een set te retourneren, zoals de tien beste verkopers of de tien beste studenten -CUBESET = KUBUSSET ## Definieert een berekende set leden of tupels door een ingestelde expressie naar de kubus op de server te sturen, alwaar de set wordt gemaakt en vervolgens wordt geretourneerd naar Microsoft Office Excel -CUBESETCOUNT = KUBUSSETAANTAL ## Retourneert het aantal onderdelen in een set -CUBEVALUE = KUBUSWAARDE ## Retourneert een samengestelde waarde van een kubus - - -## -## Database functions Databasefuncties -## -DAVERAGE = DBGEMIDDELDE ## Berekent de gemiddelde waarde in geselecteerde databasegegevens -DCOUNT = DBAANTAL ## Telt de cellen met getallen in een database -DCOUNTA = DBAANTALC ## Telt de niet-lege cellen in een database -DGET = DBLEZEN ## Retourneert één record dat voldoet aan de opgegeven criteria uit een database -DMAX = DBMAX ## Retourneert de maximumwaarde in de geselecteerde databasegegevens -DMIN = DBMIN ## Retourneert de minimumwaarde in de geselecteerde databasegegevens -DPRODUCT = DBPRODUCT ## Vermenigvuldigt de waarden in een bepaald veld van de records die voldoen aan de criteria in een database -DSTDEV = DBSTDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef uit geselecteerde databasegegevens -DSTDEVP = DBSTDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie van geselecteerde databasegegevens -DSUM = DBSOM ## Telt de getallen uit een kolom records in de database op die voldoen aan de criteria -DVAR = DBVAR ## Maakt een schatting van de variantie op basis van een steekproef uit geselecteerde databasegegevens -DVARP = DBVARP ## Berekent de variantie op basis van de volledige populatie van geselecteerde databasegegevens - - -## -## Date and time functions Datum- en tijdfuncties -## -DATE = DATUM ## Geeft als resultaat het seriële getal van een opgegeven datum -DATEVALUE = DATUMWAARDE ## Converteert een datum in de vorm van tekst naar een serieel getal -DAY = DAG ## Converteert een serieel getal naar een dag van de maand -DAYS360 = DAGEN360 ## Berekent het aantal dagen tussen twee datums op basis van een jaar met 360 dagen -EDATE = ZELFDE.DAG ## Geeft als resultaat het seriële getal van een datum die het opgegeven aantal maanden voor of na de begindatum ligt -EOMONTH = LAATSTE.DAG ## Geeft als resultaat het seriële getal van de laatste dag van de maand voor of na het opgegeven aantal maanden -HOUR = UUR ## Converteert een serieel getal naar uren -MINUTE = MINUUT ## Converteert een serieel naar getal minuten -MONTH = MAAND ## Converteert een serieel getal naar een maand -NETWORKDAYS = NETTO.WERKDAGEN ## Geeft als resultaat het aantal hele werkdagen tussen twee datums -NOW = NU ## Geeft als resultaat het seriële getal van de huidige datum en tijd -SECOND = SECONDE ## Converteert een serieel getal naar seconden -TIME = TIJD ## Geeft als resultaat het seriële getal van een bepaald tijdstip -TIMEVALUE = TIJDWAARDE ## Converteert de tijd in de vorm van tekst naar een serieel getal -TODAY = VANDAAG ## Geeft als resultaat het seriële getal van de huidige datum -WEEKDAY = WEEKDAG ## Converteert een serieel getal naar een weekdag -WEEKNUM = WEEKNUMMER ## Converteert een serieel getal naar een weeknummer -WORKDAY = WERKDAG ## Geeft als resultaat het seriële getal van de datum voor of na een bepaald aantal werkdagen -YEAR = JAAR ## Converteert een serieel getal naar een jaar -YEARFRAC = JAAR.DEEL ## Geeft als resultaat het gedeelte van het jaar, uitgedrukt in het aantal hele dagen tussen begindatum en einddatum - - -## -## Engineering functions Technische functies -## -BESSELI = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie In(x) -BESSELJ = BESSEL.J ## Geeft als resultaat de Bessel-functie Jn(x) -BESSELK = BESSEL.K ## Geeft als resultaat de gewijzigde Bessel-functie Kn(x) -BESSELY = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie Yn(x) -BIN2DEC = BIN.N.DEC ## Converteert een binair getal naar een decimaal getal -BIN2HEX = BIN.N.HEX ## Converteert een binair getal naar een hexadecimaal getal -BIN2OCT = BIN.N.OCT ## Converteert een binair getal naar een octaal getal -COMPLEX = COMPLEX ## Converteert reële en imaginaire coëfficiënten naar een complex getal -CONVERT = CONVERTEREN ## Converteert een getal in de ene maateenheid naar een getal in een andere maateenheid -DEC2BIN = DEC.N.BIN ## Converteert een decimaal getal naar een binair getal -DEC2HEX = DEC.N.HEX ## Converteert een decimaal getal naar een hexadecimaal getal -DEC2OCT = DEC.N.OCT ## Converteert een decimaal getal naar een octaal getal -DELTA = DELTA ## Test of twee waarden gelijk zijn -ERF = FOUTFUNCTIE ## Geeft als resultaat de foutfunctie -ERFC = FOUT.COMPLEMENT ## Geeft als resultaat de complementaire foutfunctie -GESTEP = GROTER.DAN ## Test of een getal groter is dan de drempelwaarde -HEX2BIN = HEX.N.BIN ## Converteert een hexadecimaal getal naar een binair getal -HEX2DEC = HEX.N.DEC ## Converteert een hexadecimaal getal naar een decimaal getal -HEX2OCT = HEX.N.OCT ## Converteert een hexadecimaal getal naar een octaal getal -IMABS = C.ABS ## Geeft als resultaat de absolute waarde (modulus) van een complex getal -IMAGINARY = C.IM.DEEL ## Geeft als resultaat de imaginaire coëfficiënt van een complex getal -IMARGUMENT = C.ARGUMENT ## Geeft als resultaat het argument thèta, een hoek uitgedrukt in radialen -IMCONJUGATE = C.TOEGEVOEGD ## Geeft als resultaat het complexe toegevoegde getal van een complex getal -IMCOS = C.COS ## Geeft als resultaat de cosinus van een complex getal -IMDIV = C.QUOTIENT ## Geeft als resultaat het quotiënt van twee complexe getallen -IMEXP = C.EXP ## Geeft als resultaat de exponent van een complex getal -IMLN = C.LN ## Geeft als resultaat de natuurlijke logaritme van een complex getal -IMLOG10 = C.LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een complex getal -IMLOG2 = C.LOG2 ## Geeft als resultaat de logaritme met grondtal 2 van een complex getal -IMPOWER = C.MACHT ## Geeft als resultaat een complex getal dat is verheven tot de macht van een geheel getal -IMPRODUCT = C.PRODUCT ## Geeft als resultaat het product van complexe getallen -IMREAL = C.REEEL.DEEL ## Geeft als resultaat de reële coëfficiënt van een complex getal -IMSIN = C.SIN ## Geeft als resultaat de sinus van een complex getal -IMSQRT = C.WORTEL ## Geeft als resultaat de vierkantswortel van een complex getal -IMSUB = C.VERSCHIL ## Geeft als resultaat het verschil tussen twee complexe getallen -IMSUM = C.SOM ## Geeft als resultaat de som van complexe getallen -OCT2BIN = OCT.N.BIN ## Converteert een octaal getal naar een binair getal -OCT2DEC = OCT.N.DEC ## Converteert een octaal getal naar een decimaal getal -OCT2HEX = OCT.N.HEX ## Converteert een octaal getal naar een hexadecimaal getal - - -## -## Financial functions Financiële functies -## -ACCRINT = SAMENG.RENTE ## Berekent de opgelopen rente voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -ACCRINTM = SAMENG.RENTE.V ## Berekent de opgelopen rente voor een waardepapier waarvan de rente op de vervaldatum wordt uitgekeerd -AMORDEGRC = AMORDEGRC ## Geeft als resultaat de afschrijving voor elke boekingsperiode door een afschrijvingscoëfficiënt toe te passen -AMORLINC = AMORLINC ## Berekent de afschrijving voor elke boekingsperiode -COUPDAYBS = COUP.DAGEN.BB ## Berekent het aantal dagen vanaf het begin van de coupontermijn tot de stortingsdatum -COUPDAYS = COUP.DAGEN ## Geeft als resultaat het aantal dagen in de coupontermijn waarin de stortingsdatum valt -COUPDAYSNC = COUP.DAGEN.VV ## Geeft als resultaat het aantal dagen vanaf de stortingsdatum tot de volgende couponvervaldatum -COUPNCD = COUP.DATUM.NB ## Geeft als resultaat de volgende coupondatum na de stortingsdatum -COUPNUM = COUP.AANTAL ## Geeft als resultaat het aantal coupons dat nog moet worden uitbetaald tussen de stortingsdatum en de vervaldatum -COUPPCD = COUP.DATUM.VB ## Geeft als resultaat de vorige couponvervaldatum vóór de stortingsdatum -CUMIPMT = CUM.RENTE ## Geeft als resultaat de cumulatieve rente die tussen twee termijnen is uitgekeerd -CUMPRINC = CUM.HOOFDSOM ## Geeft als resultaat de cumulatieve hoofdsom van een lening die tussen twee termijnen is terugbetaald -DB = DB ## Geeft als resultaat de afschrijving van activa voor een bepaalde periode met behulp van de 'fixed declining balance'-methode -DDB = DDB ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'double declining balance'-methode of een andere methode die u opgeeft -DISC = DISCONTO ## Geeft als resultaat het discontopercentage voor een waardepapier -DOLLARDE = EURO.DE ## Converteert een prijs in euro's, uitgedrukt in een breuk, naar een prijs in euro's, uitgedrukt in een decimaal getal -DOLLARFR = EURO.BR ## Converteert een prijs in euro's, uitgedrukt in een decimaal getal, naar een prijs in euro's, uitgedrukt in een breuk -DURATION = DUUR ## Geeft als resultaat de gewogen gemiddelde looptijd voor een waardepapier met periodieke rentebetalingen -EFFECT = EFFECT.RENTE ## Geeft als resultaat het effectieve jaarlijkse rentepercentage -FV = TW ## Geeft als resultaat de toekomstige waarde van een investering -FVSCHEDULE = TOEK.WAARDE2 ## Geeft als resultaat de toekomstige waarde van een bepaalde hoofdsom na het toepassen van een reeks samengestelde rentepercentages -INTRATE = RENTEPERCENTAGE ## Geeft als resultaat het rentepercentage voor een volgestort waardepapier -IPMT = IBET ## Geeft als resultaat de te betalen rente voor een investering over een bepaalde termijn -IRR = IR ## Geeft als resultaat de interne rentabiliteit voor een reeks cashflows -ISPMT = ISBET ## Geeft als resultaat de rente die is betaald tijdens een bepaalde termijn van een investering -MDURATION = AANG.DUUR ## Geeft als resultaat de aangepaste Macauley-looptijd voor een waardepapier, aangenomen dat de nominale waarde € 100 bedraagt -MIRR = GIR ## Geeft als resultaat de interne rentabiliteit voor een serie cashflows, waarbij voor betalingen een ander rentepercentage geldt dan voor inkomsten -NOMINAL = NOMINALE.RENTE ## Geeft als resultaat het nominale jaarlijkse rentepercentage -NPER = NPER ## Geeft als resultaat het aantal termijnen van een investering -NPV = NHW ## Geeft als resultaat de netto huidige waarde van een investering op basis van een reeks periodieke cashflows en een discontopercentage -ODDFPRICE = AFW.ET.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende eerste termijn -ODDFYIELD = AFW.ET.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende eerste termijn -ODDLPRICE = AFW.LT.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende laatste termijn -ODDLYIELD = AFW.LT.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende laatste termijn -PMT = BET ## Geeft als resultaat de periodieke betaling voor een annuïteit -PPMT = PBET ## Geeft als resultaat de afbetaling op de hoofdsom voor een bepaalde termijn -PRICE = PRIJS.NOM ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -PRICEDISC = PRIJS.DISCONTO ## Geeft als resultaat de prijs per € 100 nominale waarde voor een verdisconteerd waardepapier -PRICEMAT = PRIJS.VERVALDAG ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum -PV = HW ## Geeft als resultaat de huidige waarde van een investering -RATE = RENTE ## Geeft als resultaat het periodieke rentepercentage voor een annuïteit -RECEIVED = OPBRENGST ## Geeft als resultaat het bedrag dat op de vervaldatum wordt uitgekeerd voor een volgestort waardepapier -SLN = LIN.AFSCHR ## Geeft als resultaat de lineaire afschrijving van activa over één termijn -SYD = SYD ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'Sum-Of-Years-Digits'-methode -TBILLEQ = SCHATK.OBL ## Geeft als resultaat het rendement op schatkistpapier, dat op dezelfde manier wordt berekend als het rendement op obligaties -TBILLPRICE = SCHATK.PRIJS ## Bepaalt de prijs per € 100 nominale waarde voor schatkistpapier -TBILLYIELD = SCHATK.REND ## Berekent het rendement voor schatkistpapier -VDB = VDB ## Geeft als resultaat de afschrijving van activa over een gehele of gedeeltelijke termijn met behulp van de 'declining balance'-methode -XIRR = IR.SCHEMA ## Berekent de interne rentabiliteit voor een betalingsschema van cashflows -XNPV = NHW2 ## Berekent de huidige nettowaarde voor een betalingsschema van cashflows -YIELD = RENDEMENT ## Geeft als resultaat het rendement voor een waardepapier waarvan de rente periodiek wordt uitgekeerd -YIELDDISC = REND.DISCONTO ## Geeft als resultaat het jaarlijkse rendement voor een verdisconteerd waardepapier, bijvoorbeeld schatkistpapier -YIELDMAT = REND.VERVAL ## Geeft als resultaat het jaarlijkse rendement voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum - - -## -## Information functions Informatiefuncties -## -CELL = CEL ## Geeft als resultaat informatie over de opmaak, locatie of inhoud van een cel -ERROR.TYPE = TYPE.FOUT ## Geeft als resultaat een getal dat overeenkomt met een van de foutwaarden van Microsoft Excel -INFO = INFO ## Geeft als resultaat informatie over de huidige besturingsomgeving -ISBLANK = ISLEEG ## Geeft als resultaat WAAR als de waarde leeg is -ISERR = ISFOUT2 ## Geeft als resultaat WAAR als de waarde een foutwaarde is, met uitzondering van #N/B -ISERROR = ISFOUT ## Geeft als resultaat WAAR als de waarde een foutwaarde is -ISEVEN = IS.EVEN ## Geeft als resultaat WAAR als het getal even is -ISLOGICAL = ISLOGISCH ## Geeft als resultaat WAAR als de waarde een logische waarde is -ISNA = ISNB ## Geeft als resultaat WAAR als de waarde de foutwaarde #N/B is -ISNONTEXT = ISGEENTEKST ## Geeft als resultaat WAAR als de waarde geen tekst is -ISNUMBER = ISGETAL ## Geeft als resultaat WAAR als de waarde een getal is -ISODD = IS.ONEVEN ## Geeft als resultaat WAAR als het getal oneven is -ISREF = ISVERWIJZING ## Geeft als resultaat WAAR als de waarde een verwijzing is -ISTEXT = ISTEKST ## Geeft als resultaat WAAR als de waarde tekst is -N = N ## Geeft als resultaat een waarde die is geconverteerd naar een getal -NA = NB ## Geeft als resultaat de foutwaarde #N/B -TYPE = TYPE ## Geeft als resultaat een getal dat het gegevenstype van een waarde aangeeft - - -## -## Logical functions Logische functies -## -AND = EN ## Geeft als resultaat WAAR als alle argumenten WAAR zijn -FALSE = ONWAAR ## Geeft als resultaat de logische waarde ONWAAR -IF = ALS ## Geeft een logische test aan -IFERROR = ALS.FOUT ## Retourneert een waarde die u opgeeft als een formule een fout oplevert, anders wordt het resultaat van de formule geretourneerd -NOT = NIET ## Keert de logische waarde van het argument om -OR = OF ## Geeft als resultaat WAAR als minimaal een van de argumenten WAAR is -TRUE = WAAR ## Geeft als resultaat de logische waarde WAAR - - -## -## Lookup and reference functions Zoek- en verwijzingsfuncties -## -ADDRESS = ADRES ## Geeft als resultaat een verwijzing, in de vorm van tekst, naar één bepaalde cel in een werkblad -AREAS = BEREIKEN ## Geeft als resultaat het aantal bereiken in een verwijzing -CHOOSE = KIEZEN ## Kiest een waarde uit een lijst met waarden -COLUMN = KOLOM ## Geeft als resultaat het kolomnummer van een verwijzing -COLUMNS = KOLOMMEN ## Geeft als resultaat het aantal kolommen in een verwijzing -HLOOKUP = HORIZ.ZOEKEN ## Zoekt in de bovenste rij van een matrix naar een bepaalde waarde en geeft als resultaat de gevonden waarde in de opgegeven cel -HYPERLINK = HYPERLINK ## Maakt een snelkoppeling of een sprong waarmee een document wordt geopend dat is opgeslagen op een netwerkserver, een intranet of op internet -INDEX = INDEX ## Kiest met een index een waarde uit een verwijzing of een matrix -INDIRECT = INDIRECT ## Geeft als resultaat een verwijzing die wordt aangegeven met een tekstwaarde -LOOKUP = ZOEKEN ## Zoekt naar bepaalde waarden in een vector of een matrix -MATCH = VERGELIJKEN ## Zoekt naar bepaalde waarden in een verwijzing of een matrix -OFFSET = VERSCHUIVING ## Geeft als resultaat een nieuwe verwijzing die is verschoven ten opzichte van een bepaalde verwijzing -ROW = RIJ ## Geeft als resultaat het rijnummer van een verwijzing -ROWS = RIJEN ## Geeft als resultaat het aantal rijen in een verwijzing -RTD = RTG ## Haalt realtimegegevens op uit een programma dat COM-automatisering (automatisering: een methode waarmee de ene toepassing objecten van een andere toepassing of ontwikkelprogramma kan besturen. Automatisering werd vroeger OLE-automatisering genoemd. Automatisering is een industrienorm die deel uitmaakt van het Component Object Model (COM).) ondersteunt -TRANSPOSE = TRANSPONEREN ## Geeft als resultaat de getransponeerde van een matrix -VLOOKUP = VERT.ZOEKEN ## Zoekt in de meest linkse kolom van een matrix naar een bepaalde waarde en geeft als resultaat de waarde in de opgegeven cel - - -## -## Math and trigonometry functions Wiskundige en trigonometrische functies -## -ABS = ABS ## Geeft als resultaat de absolute waarde van een getal -ACOS = BOOGCOS ## Geeft als resultaat de boogcosinus van een getal -ACOSH = BOOGCOSH ## Geeft als resultaat de inverse cosinus hyperbolicus van een getal -ASIN = BOOGSIN ## Geeft als resultaat de boogsinus van een getal -ASINH = BOOGSINH ## Geeft als resultaat de inverse sinus hyperbolicus van een getal -ATAN = BOOGTAN ## Geeft als resultaat de boogtangens van een getal -ATAN2 = BOOGTAN2 ## Geeft als resultaat de boogtangens van de x- en y-coördinaten -ATANH = BOOGTANH ## Geeft als resultaat de inverse tangens hyperbolicus van een getal -CEILING = AFRONDEN.BOVEN ## Rondt de absolute waarde van een getal naar boven af op het dichtstbijzijnde gehele getal of het dichtstbijzijnde significante veelvoud -COMBIN = COMBINATIES ## Geeft als resultaat het aantal combinaties voor een bepaald aantal objecten -COS = COS ## Geeft als resultaat de cosinus van een getal -COSH = COSH ## Geeft als resultaat de cosinus hyperbolicus van een getal -DEGREES = GRADEN ## Converteert radialen naar graden -EVEN = EVEN ## Rondt het getal af op het dichtstbijzijnde gehele even getal -EXP = EXP ## Verheft e tot de macht van een bepaald getal -FACT = FACULTEIT ## Geeft als resultaat de faculteit van een getal -FACTDOUBLE = DUBBELE.FACULTEIT ## Geeft als resultaat de dubbele faculteit van een getal -FLOOR = AFRONDEN.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af -GCD = GGD ## Geeft als resultaat de grootste gemene deler -INT = INTEGER ## Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal -LCM = KGV ## Geeft als resultaat het kleinste gemene veelvoud -LN = LN ## Geeft als resultaat de natuurlijke logaritme van een getal -LOG = LOG ## Geeft als resultaat de logaritme met het opgegeven grondtal van een getal -LOG10 = LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een getal -MDETERM = DETERMINANTMAT ## Geeft als resultaat de determinant van een matrix -MINVERSE = INVERSEMAT ## Geeft als resultaat de inverse van een matrix -MMULT = PRODUCTMAT ## Geeft als resultaat het product van twee matrices -MOD = REST ## Geeft als resultaat het restgetal van een deling -MROUND = AFRONDEN.N.VEELVOUD ## Geeft als resultaat een getal afgerond op het gewenste veelvoud -MULTINOMIAL = MULTINOMIAAL ## Geeft als resultaat de multinomiaalcoëfficiënt van een reeks getallen -ODD = ONEVEN ## Rondt de absolute waarde van het getal naar boven af op het dichtstbijzijnde gehele oneven getal -PI = PI ## Geeft als resultaat de waarde van pi -POWER = MACHT ## Verheft een getal tot een macht -PRODUCT = PRODUCT ## Vermenigvuldigt de argumenten met elkaar -QUOTIENT = QUOTIENT ## Geeft als resultaat de uitkomst van een deling als geheel getal -RADIANS = RADIALEN ## Converteert graden naar radialen -RAND = ASELECT ## Geeft als resultaat een willekeurig getal tussen 0 en 1 -RANDBETWEEN = ASELECTTUSSEN ## Geeft een willekeurig getal tussen de getallen die u hebt opgegeven -ROMAN = ROMEINS ## Converteert een Arabisch getal naar een Romeins getal en geeft het resultaat weer in de vorm van tekst -ROUND = AFRONDEN ## Rondt een getal af op het opgegeven aantal decimalen -ROUNDDOWN = AFRONDEN.NAAR.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af -ROUNDUP = AFRONDEN.NAAR.BOVEN ## Rondt de absolute waarde van een getal naar boven af -SERIESSUM = SOM.MACHTREEKS ## Geeft als resultaat de som van een machtreeks die is gebaseerd op de formule -SIGN = POS.NEG ## Geeft als resultaat het teken van een getal -SIN = SIN ## Geeft als resultaat de sinus van de opgegeven hoek -SINH = SINH ## Geeft als resultaat de sinus hyperbolicus van een getal -SQRT = WORTEL ## Geeft als resultaat de positieve vierkantswortel van een getal -SQRTPI = WORTEL.PI ## Geeft als resultaat de vierkantswortel van (getal * pi) -SUBTOTAL = SUBTOTAAL ## Geeft als resultaat een subtotaal voor een bereik -SUM = SOM ## Telt de argumenten op -SUMIF = SOM.ALS ## Telt de getallen bij elkaar op die voldoen aan een bepaald criterium -SUMIFS = SOMMEN.ALS ## Telt de cellen in een bereik op die aan meerdere criteria voldoen -SUMPRODUCT = SOMPRODUCT ## Geeft als resultaat de som van de producten van de corresponderende matrixelementen -SUMSQ = KWADRATENSOM ## Geeft als resultaat de som van de kwadraten van de argumenten -SUMX2MY2 = SOM.X2MINY2 ## Geeft als resultaat de som van het verschil tussen de kwadraten van corresponderende waarden in twee matrices -SUMX2PY2 = SOM.X2PLUSY2 ## Geeft als resultaat de som van de kwadratensom van corresponderende waarden in twee matrices -SUMXMY2 = SOM.XMINY.2 ## Geeft als resultaat de som van de kwadraten van de verschillen tussen de corresponderende waarden in twee matrices -TAN = TAN ## Geeft als resultaat de tangens van een getal -TANH = TANH ## Geeft als resultaat de tangens hyperbolicus van een getal -TRUNC = GEHEEL ## Kapt een getal af tot een geheel getal - - -## -## Statistical functions Statistische functies -## -AVEDEV = GEM.DEVIATIE ## Geeft als resultaat het gemiddelde van de absolute deviaties van gegevenspunten ten opzichte van hun gemiddelde waarde -AVERAGE = GEMIDDELDE ## Geeft als resultaat het gemiddelde van de argumenten -AVERAGEA = GEMIDDELDEA ## Geeft als resultaat het gemiddelde van de argumenten, inclusief getallen, tekst en logische waarden -AVERAGEIF = GEMIDDELDE.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen in een bereik die voldoen aan de opgegeven criteria -AVERAGEIFS = GEMIDDELDEN.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen die aan meerdere criteria voldoen -BETADIST = BETA.VERD ## Geeft als resultaat de cumulatieve bèta-verdelingsfunctie -BETAINV = BETA.INV ## Geeft als resultaat de inverse van de cumulatieve verdelingsfunctie voor een gegeven bèta-verdeling -BINOMDIST = BINOMIALE.VERD ## Geeft als resultaat de binomiale verdeling -CHIDIST = CHI.KWADRAAT ## Geeft als resultaat de eenzijdige kans van de chi-kwadraatverdeling -CHIINV = CHI.KWADRAAT.INV ## Geeft als resultaat de inverse van een eenzijdige kans van de chi-kwadraatverdeling -CHITEST = CHI.TOETS ## Geeft als resultaat de onafhankelijkheidstoets -CONFIDENCE = BETROUWBAARHEID ## Geeft als resultaat het betrouwbaarheidsinterval van een gemiddelde waarde voor de elementen van een populatie -CORREL = CORRELATIE ## Geeft als resultaat de correlatiecoëfficiënt van twee gegevensverzamelingen -COUNT = AANTAL ## Telt het aantal getallen in de argumentenlijst -COUNTA = AANTALARG ## Telt het aantal waarden in de argumentenlijst -COUNTBLANK = AANTAL.LEGE.CELLEN ## Telt het aantal lege cellen in een bereik -COUNTIF = AANTAL.ALS ## Telt in een bereik het aantal cellen die voldoen aan een bepaald criterium -COUNTIFS = AANTALLEN.ALS ## Telt in een bereik het aantal cellen die voldoen aan meerdere criteria -COVAR = COVARIANTIE ## Geeft als resultaat de covariantie, het gemiddelde van de producten van de gepaarde deviaties -CRITBINOM = CRIT.BINOM ## Geeft als resultaat de kleinste waarde waarvoor de binomiale verdeling kleiner is dan of gelijk is aan het criterium -DEVSQ = DEV.KWAD ## Geeft als resultaat de som van de deviaties in het kwadraat -EXPONDIST = EXPON.VERD ## Geeft als resultaat de exponentiële verdeling -FDIST = F.VERDELING ## Geeft als resultaat de F-verdeling -FINV = F.INVERSE ## Geeft als resultaat de inverse van de F-verdeling -FISHER = FISHER ## Geeft als resultaat de Fisher-transformatie -FISHERINV = FISHER.INV ## Geeft als resultaat de inverse van de Fisher-transformatie -FORECAST = VOORSPELLEN ## Geeft als resultaat een waarde op basis van een lineaire trend -FREQUENCY = FREQUENTIE ## Geeft als resultaat een frequentieverdeling in de vorm van een verticale matrix -FTEST = F.TOETS ## Geeft als resultaat een F-toets -GAMMADIST = GAMMA.VERD ## Geeft als resultaat de gamma-verdeling -GAMMAINV = GAMMA.INV ## Geeft als resultaat de inverse van de cumulatieve gamma-verdeling -GAMMALN = GAMMA.LN ## Geeft als resultaat de natuurlijke logaritme van de gamma-functie, G(x) -GEOMEAN = MEETK.GEM ## Geeft als resultaat het meetkundige gemiddelde -GROWTH = GROEI ## Geeft als resultaat de waarden voor een exponentiële trend -HARMEAN = HARM.GEM ## Geeft als resultaat het harmonische gemiddelde -HYPGEOMDIST = HYPERGEO.VERD ## Geeft als resultaat de hypergeometrische verdeling -INTERCEPT = SNIJPUNT ## Geeft als resultaat het snijpunt van de lineaire regressielijn met de y-as -KURT = KURTOSIS ## Geeft als resultaat de kurtosis van een gegevensverzameling -LARGE = GROOTSTE ## Geeft als resultaat de op k-1 na grootste waarde in een gegevensverzameling -LINEST = LIJNSCH ## Geeft als resultaat de parameters van een lineaire trend -LOGEST = LOGSCH ## Geeft als resultaat de parameters van een exponentiële trend -LOGINV = LOG.NORM.INV ## Geeft als resultaat de inverse van de logaritmische normale verdeling -LOGNORMDIST = LOG.NORM.VERD ## Geeft als resultaat de cumulatieve logaritmische normale verdeling -MAX = MAX ## Geeft als resultaat de maximumwaarde in een lijst met argumenten -MAXA = MAXA ## Geeft als resultaat de maximumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden -MEDIAN = MEDIAAN ## Geeft als resultaat de mediaan van de opgegeven getallen -MIN = MIN ## Geeft als resultaat de minimumwaarde in een lijst met argumenten -MINA = MINA ## Geeft als resultaat de minimumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden -MODE = MODUS ## Geeft als resultaat de meest voorkomende waarde in een gegevensverzameling -NEGBINOMDIST = NEG.BINOM.VERD ## Geeft als resultaat de negatieve binomiaalverdeling -NORMDIST = NORM.VERD ## Geeft als resultaat de cumulatieve normale verdeling -NORMINV = NORM.INV ## Geeft als resultaat de inverse van de cumulatieve standaardnormale verdeling -NORMSDIST = STAND.NORM.VERD ## Geeft als resultaat de cumulatieve standaardnormale verdeling -NORMSINV = STAND.NORM.INV ## Geeft als resultaat de inverse van de cumulatieve normale verdeling -PEARSON = PEARSON ## Geeft als resultaat de correlatiecoëfficiënt van Pearson -PERCENTILE = PERCENTIEL ## Geeft als resultaat het k-de percentiel van waarden in een bereik -PERCENTRANK = PERCENT.RANG ## Geeft als resultaat de positie, in procenten uitgedrukt, van een waarde in de rangorde van een gegevensverzameling -PERMUT = PERMUTATIES ## Geeft als resultaat het aantal permutaties voor een gegeven aantal objecten -POISSON = POISSON ## Geeft als resultaat de Poisson-verdeling -PROB = KANS ## Geeft als resultaat de kans dat waarden zich tussen twee grenzen bevinden -QUARTILE = KWARTIEL ## Geeft als resultaat het kwartiel van een gegevensverzameling -RANK = RANG ## Geeft als resultaat het rangnummer van een getal in een lijst getallen -RSQ = R.KWADRAAT ## Geeft als resultaat het kwadraat van de Pearson-correlatiecoëfficiënt -SKEW = SCHEEFHEID ## Geeft als resultaat de mate van asymmetrie van een verdeling -SLOPE = RICHTING ## Geeft als resultaat de richtingscoëfficiënt van een lineaire regressielijn -SMALL = KLEINSTE ## Geeft als resultaat de op k-1 na kleinste waarde in een gegevensverzameling -STANDARDIZE = NORMALISEREN ## Geeft als resultaat een genormaliseerde waarde -STDEV = STDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef -STDEVA = STDEVA ## Maakt een schatting van de standaarddeviatie op basis van een steekproef, inclusief getallen, tekst en logische waarden -STDEVP = STDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie -STDEVPA = STDEVPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden -STEYX = STAND.FOUT.YX ## Geeft als resultaat de standaardfout in de voorspelde y-waarde voor elke x in een regressie -TDIST = T.VERD ## Geeft als resultaat de Student T-verdeling -TINV = T.INV ## Geeft als resultaat de inverse van de Student T-verdeling -TREND = TREND ## Geeft als resultaat de waarden voor een lineaire trend -TRIMMEAN = GETRIMD.GEM ## Geeft als resultaat het gemiddelde van waarden in een gegevensverzameling -TTEST = T.TOETS ## Geeft als resultaat de kans met behulp van de Student T-toets -VAR = VAR ## Maakt een schatting van de variantie op basis van een steekproef -VARA = VARA ## Maakt een schatting van de variantie op basis van een steekproef, inclusief getallen, tekst en logische waarden -VARP = VARP ## Berekent de variantie op basis van de volledige populatie -VARPA = VARPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden -WEIBULL = WEIBULL ## Geeft als resultaat de Weibull-verdeling -ZTEST = Z.TOETS ## Geeft als resultaat de eenzijdige kanswaarde van een Z-toets - - -## -## Text functions Tekstfuncties -## -ASC = ASC ## Wijzigt Nederlandse letters of katakanatekens over de volle breedte (dubbel-bytetekens) binnen een tekenreeks in tekens over de halve breedte (enkel-bytetekens) -BAHTTEXT = BAHT.TEKST ## Converteert een getal naar tekst met de valutanotatie ß (baht) -CHAR = TEKEN ## Geeft als resultaat het teken dat hoort bij de opgegeven code -CLEAN = WISSEN.CONTROL ## Verwijdert alle niet-afdrukbare tekens uit een tekst -CODE = CODE ## Geeft als resultaat de numerieke code voor het eerste teken in een tekenreeks -CONCATENATE = TEKST.SAMENVOEGEN ## Voegt verschillende tekstfragmenten samen tot één tekstfragment -DOLLAR = EURO ## Converteert een getal naar tekst met de valutanotatie € (euro) -EXACT = GELIJK ## Controleert of twee tekenreeksen identiek zijn -FIND = VIND.ALLES ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -FINDB = VIND.ALLES.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -FIXED = VAST ## Maakt een getal als tekst met een vast aantal decimalen op -JIS = JIS ## Wijzigt Nederlandse letters of katakanatekens over de halve breedte (enkel-bytetekens) binnen een tekenreeks in tekens over de volle breedte (dubbel-bytetekens) -LEFT = LINKS ## Geeft als resultaat de meest linkse tekens in een tekenreeks -LEFTB = LINKSB ## Geeft als resultaat de meest linkse tekens in een tekenreeks -LEN = LENGTE ## Geeft als resultaat het aantal tekens in een tekenreeks -LENB = LENGTEB ## Geeft als resultaat het aantal tekens in een tekenreeks -LOWER = KLEINE.LETTERS ## Zet tekst om in kleine letters -MID = MIDDEN ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft -MIDB = DEELB ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft -PHONETIC = FONETISCH ## Haalt de fonetische tekens (furigana) uit een tekenreeks op -PROPER = BEGINLETTERS ## Zet de eerste letter van elk woord in een tekst om in een hoofdletter -REPLACE = VERVANG ## Vervangt tekens binnen een tekst -REPLACEB = VERVANGENB ## Vervangt tekens binnen een tekst -REPT = HERHALING ## Herhaalt een tekst een aantal malen -RIGHT = RECHTS ## Geeft als resultaat de meest rechtse tekens in een tekenreeks -RIGHTB = RECHTSB ## Geeft als resultaat de meest rechtse tekens in een tekenreeks -SEARCH = VIND.SPEC ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -SEARCHB = VIND.SPEC.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) -SUBSTITUTE = SUBSTITUEREN ## Vervangt oude tekst door nieuwe tekst in een tekenreeks -T = T ## Converteert de argumenten naar tekst -TEXT = TEKST ## Maakt een getal op en converteert het getal naar tekst -TRIM = SPATIES.WISSEN ## Verwijdert de spaties uit een tekst -UPPER = HOOFDLETTERS ## Zet tekst om in hoofdletters -VALUE = WAARDE ## Converteert tekst naar een getal +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Automatiseringsfuncties en functies in invoegtoepassingen +## +GETPIVOTDATA = DRAAITABEL.OPHALEN ## Geeft gegevens uit een draaitabelrapport als resultaat + + +## +## Cube functions Kubusfuncties +## +CUBEKPIMEMBER = KUBUSKPILID ## Retourneert de naam, eigenschap en waarde van een KPI (prestatie-indicator) en geeft de naam en de eigenschap in de cel weer. Een KPI is een meetbare waarde, zoals de maandelijkse brutowinst of de omzet per kwartaal per werknemer, die wordt gebruikt om de prestaties van een organisatie te bewaken +CUBEMEMBER = KUBUSLID ## Retourneert een lid of tupel in een kubushiërarchie. Wordt gebruikt om te controleren of het lid of de tupel in de kubus aanwezig is +CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP ## Retourneert de waarde van een lideigenschap in de kubus. Wordt gebruikt om te controleren of de lidnaam in de kubus bestaat en retourneert de opgegeven eigenschap voor dit lid +CUBERANKEDMEMBER = KUBUSGERANGCHIKTLID ## Retourneert het zoveelste, gerangschikte lid in een set. Wordt gebruikt om een of meer elementen in een set te retourneren, zoals de tien beste verkopers of de tien beste studenten +CUBESET = KUBUSSET ## Definieert een berekende set leden of tupels door een ingestelde expressie naar de kubus op de server te sturen, alwaar de set wordt gemaakt en vervolgens wordt geretourneerd naar Microsoft Office Excel +CUBESETCOUNT = KUBUSSETAANTAL ## Retourneert het aantal onderdelen in een set +CUBEVALUE = KUBUSWAARDE ## Retourneert een samengestelde waarde van een kubus + + +## +## Database functions Databasefuncties +## +DAVERAGE = DBGEMIDDELDE ## Berekent de gemiddelde waarde in geselecteerde databasegegevens +DCOUNT = DBAANTAL ## Telt de cellen met getallen in een database +DCOUNTA = DBAANTALC ## Telt de niet-lege cellen in een database +DGET = DBLEZEN ## Retourneert één record dat voldoet aan de opgegeven criteria uit een database +DMAX = DBMAX ## Retourneert de maximumwaarde in de geselecteerde databasegegevens +DMIN = DBMIN ## Retourneert de minimumwaarde in de geselecteerde databasegegevens +DPRODUCT = DBPRODUCT ## Vermenigvuldigt de waarden in een bepaald veld van de records die voldoen aan de criteria in een database +DSTDEV = DBSTDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef uit geselecteerde databasegegevens +DSTDEVP = DBSTDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie van geselecteerde databasegegevens +DSUM = DBSOM ## Telt de getallen uit een kolom records in de database op die voldoen aan de criteria +DVAR = DBVAR ## Maakt een schatting van de variantie op basis van een steekproef uit geselecteerde databasegegevens +DVARP = DBVARP ## Berekent de variantie op basis van de volledige populatie van geselecteerde databasegegevens + + +## +## Date and time functions Datum- en tijdfuncties +## +DATE = DATUM ## Geeft als resultaat het seriële getal van een opgegeven datum +DATEVALUE = DATUMWAARDE ## Converteert een datum in de vorm van tekst naar een serieel getal +DAY = DAG ## Converteert een serieel getal naar een dag van de maand +DAYS360 = DAGEN360 ## Berekent het aantal dagen tussen twee datums op basis van een jaar met 360 dagen +EDATE = ZELFDE.DAG ## Geeft als resultaat het seriële getal van een datum die het opgegeven aantal maanden voor of na de begindatum ligt +EOMONTH = LAATSTE.DAG ## Geeft als resultaat het seriële getal van de laatste dag van de maand voor of na het opgegeven aantal maanden +HOUR = UUR ## Converteert een serieel getal naar uren +MINUTE = MINUUT ## Converteert een serieel naar getal minuten +MONTH = MAAND ## Converteert een serieel getal naar een maand +NETWORKDAYS = NETTO.WERKDAGEN ## Geeft als resultaat het aantal hele werkdagen tussen twee datums +NOW = NU ## Geeft als resultaat het seriële getal van de huidige datum en tijd +SECOND = SECONDE ## Converteert een serieel getal naar seconden +TIME = TIJD ## Geeft als resultaat het seriële getal van een bepaald tijdstip +TIMEVALUE = TIJDWAARDE ## Converteert de tijd in de vorm van tekst naar een serieel getal +TODAY = VANDAAG ## Geeft als resultaat het seriële getal van de huidige datum +WEEKDAY = WEEKDAG ## Converteert een serieel getal naar een weekdag +WEEKNUM = WEEKNUMMER ## Converteert een serieel getal naar een weeknummer +WORKDAY = WERKDAG ## Geeft als resultaat het seriële getal van de datum voor of na een bepaald aantal werkdagen +YEAR = JAAR ## Converteert een serieel getal naar een jaar +YEARFRAC = JAAR.DEEL ## Geeft als resultaat het gedeelte van het jaar, uitgedrukt in het aantal hele dagen tussen begindatum en einddatum + + +## +## Engineering functions Technische functies +## +BESSELI = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie In(x) +BESSELJ = BESSEL.J ## Geeft als resultaat de Bessel-functie Jn(x) +BESSELK = BESSEL.K ## Geeft als resultaat de gewijzigde Bessel-functie Kn(x) +BESSELY = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie Yn(x) +BIN2DEC = BIN.N.DEC ## Converteert een binair getal naar een decimaal getal +BIN2HEX = BIN.N.HEX ## Converteert een binair getal naar een hexadecimaal getal +BIN2OCT = BIN.N.OCT ## Converteert een binair getal naar een octaal getal +COMPLEX = COMPLEX ## Converteert reële en imaginaire coëfficiënten naar een complex getal +CONVERT = CONVERTEREN ## Converteert een getal in de ene maateenheid naar een getal in een andere maateenheid +DEC2BIN = DEC.N.BIN ## Converteert een decimaal getal naar een binair getal +DEC2HEX = DEC.N.HEX ## Converteert een decimaal getal naar een hexadecimaal getal +DEC2OCT = DEC.N.OCT ## Converteert een decimaal getal naar een octaal getal +DELTA = DELTA ## Test of twee waarden gelijk zijn +ERF = FOUTFUNCTIE ## Geeft als resultaat de foutfunctie +ERFC = FOUT.COMPLEMENT ## Geeft als resultaat de complementaire foutfunctie +GESTEP = GROTER.DAN ## Test of een getal groter is dan de drempelwaarde +HEX2BIN = HEX.N.BIN ## Converteert een hexadecimaal getal naar een binair getal +HEX2DEC = HEX.N.DEC ## Converteert een hexadecimaal getal naar een decimaal getal +HEX2OCT = HEX.N.OCT ## Converteert een hexadecimaal getal naar een octaal getal +IMABS = C.ABS ## Geeft als resultaat de absolute waarde (modulus) van een complex getal +IMAGINARY = C.IM.DEEL ## Geeft als resultaat de imaginaire coëfficiënt van een complex getal +IMARGUMENT = C.ARGUMENT ## Geeft als resultaat het argument thèta, een hoek uitgedrukt in radialen +IMCONJUGATE = C.TOEGEVOEGD ## Geeft als resultaat het complexe toegevoegde getal van een complex getal +IMCOS = C.COS ## Geeft als resultaat de cosinus van een complex getal +IMDIV = C.QUOTIENT ## Geeft als resultaat het quotiënt van twee complexe getallen +IMEXP = C.EXP ## Geeft als resultaat de exponent van een complex getal +IMLN = C.LN ## Geeft als resultaat de natuurlijke logaritme van een complex getal +IMLOG10 = C.LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een complex getal +IMLOG2 = C.LOG2 ## Geeft als resultaat de logaritme met grondtal 2 van een complex getal +IMPOWER = C.MACHT ## Geeft als resultaat een complex getal dat is verheven tot de macht van een geheel getal +IMPRODUCT = C.PRODUCT ## Geeft als resultaat het product van complexe getallen +IMREAL = C.REEEL.DEEL ## Geeft als resultaat de reële coëfficiënt van een complex getal +IMSIN = C.SIN ## Geeft als resultaat de sinus van een complex getal +IMSQRT = C.WORTEL ## Geeft als resultaat de vierkantswortel van een complex getal +IMSUB = C.VERSCHIL ## Geeft als resultaat het verschil tussen twee complexe getallen +IMSUM = C.SOM ## Geeft als resultaat de som van complexe getallen +OCT2BIN = OCT.N.BIN ## Converteert een octaal getal naar een binair getal +OCT2DEC = OCT.N.DEC ## Converteert een octaal getal naar een decimaal getal +OCT2HEX = OCT.N.HEX ## Converteert een octaal getal naar een hexadecimaal getal + + +## +## Financial functions Financiële functies +## +ACCRINT = SAMENG.RENTE ## Berekent de opgelopen rente voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +ACCRINTM = SAMENG.RENTE.V ## Berekent de opgelopen rente voor een waardepapier waarvan de rente op de vervaldatum wordt uitgekeerd +AMORDEGRC = AMORDEGRC ## Geeft als resultaat de afschrijving voor elke boekingsperiode door een afschrijvingscoëfficiënt toe te passen +AMORLINC = AMORLINC ## Berekent de afschrijving voor elke boekingsperiode +COUPDAYBS = COUP.DAGEN.BB ## Berekent het aantal dagen vanaf het begin van de coupontermijn tot de stortingsdatum +COUPDAYS = COUP.DAGEN ## Geeft als resultaat het aantal dagen in de coupontermijn waarin de stortingsdatum valt +COUPDAYSNC = COUP.DAGEN.VV ## Geeft als resultaat het aantal dagen vanaf de stortingsdatum tot de volgende couponvervaldatum +COUPNCD = COUP.DATUM.NB ## Geeft als resultaat de volgende coupondatum na de stortingsdatum +COUPNUM = COUP.AANTAL ## Geeft als resultaat het aantal coupons dat nog moet worden uitbetaald tussen de stortingsdatum en de vervaldatum +COUPPCD = COUP.DATUM.VB ## Geeft als resultaat de vorige couponvervaldatum vóór de stortingsdatum +CUMIPMT = CUM.RENTE ## Geeft als resultaat de cumulatieve rente die tussen twee termijnen is uitgekeerd +CUMPRINC = CUM.HOOFDSOM ## Geeft als resultaat de cumulatieve hoofdsom van een lening die tussen twee termijnen is terugbetaald +DB = DB ## Geeft als resultaat de afschrijving van activa voor een bepaalde periode met behulp van de 'fixed declining balance'-methode +DDB = DDB ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'double declining balance'-methode of een andere methode die u opgeeft +DISC = DISCONTO ## Geeft als resultaat het discontopercentage voor een waardepapier +DOLLARDE = EURO.DE ## Converteert een prijs in euro's, uitgedrukt in een breuk, naar een prijs in euro's, uitgedrukt in een decimaal getal +DOLLARFR = EURO.BR ## Converteert een prijs in euro's, uitgedrukt in een decimaal getal, naar een prijs in euro's, uitgedrukt in een breuk +DURATION = DUUR ## Geeft als resultaat de gewogen gemiddelde looptijd voor een waardepapier met periodieke rentebetalingen +EFFECT = EFFECT.RENTE ## Geeft als resultaat het effectieve jaarlijkse rentepercentage +FV = TW ## Geeft als resultaat de toekomstige waarde van een investering +FVSCHEDULE = TOEK.WAARDE2 ## Geeft als resultaat de toekomstige waarde van een bepaalde hoofdsom na het toepassen van een reeks samengestelde rentepercentages +INTRATE = RENTEPERCENTAGE ## Geeft als resultaat het rentepercentage voor een volgestort waardepapier +IPMT = IBET ## Geeft als resultaat de te betalen rente voor een investering over een bepaalde termijn +IRR = IR ## Geeft als resultaat de interne rentabiliteit voor een reeks cashflows +ISPMT = ISBET ## Geeft als resultaat de rente die is betaald tijdens een bepaalde termijn van een investering +MDURATION = AANG.DUUR ## Geeft als resultaat de aangepaste Macauley-looptijd voor een waardepapier, aangenomen dat de nominale waarde € 100 bedraagt +MIRR = GIR ## Geeft als resultaat de interne rentabiliteit voor een serie cashflows, waarbij voor betalingen een ander rentepercentage geldt dan voor inkomsten +NOMINAL = NOMINALE.RENTE ## Geeft als resultaat het nominale jaarlijkse rentepercentage +NPER = NPER ## Geeft als resultaat het aantal termijnen van een investering +NPV = NHW ## Geeft als resultaat de netto huidige waarde van een investering op basis van een reeks periodieke cashflows en een discontopercentage +ODDFPRICE = AFW.ET.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende eerste termijn +ODDFYIELD = AFW.ET.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende eerste termijn +ODDLPRICE = AFW.LT.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende laatste termijn +ODDLYIELD = AFW.LT.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende laatste termijn +PMT = BET ## Geeft als resultaat de periodieke betaling voor een annuïteit +PPMT = PBET ## Geeft als resultaat de afbetaling op de hoofdsom voor een bepaalde termijn +PRICE = PRIJS.NOM ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +PRICEDISC = PRIJS.DISCONTO ## Geeft als resultaat de prijs per € 100 nominale waarde voor een verdisconteerd waardepapier +PRICEMAT = PRIJS.VERVALDAG ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum +PV = HW ## Geeft als resultaat de huidige waarde van een investering +RATE = RENTE ## Geeft als resultaat het periodieke rentepercentage voor een annuïteit +RECEIVED = OPBRENGST ## Geeft als resultaat het bedrag dat op de vervaldatum wordt uitgekeerd voor een volgestort waardepapier +SLN = LIN.AFSCHR ## Geeft als resultaat de lineaire afschrijving van activa over één termijn +SYD = SYD ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'Sum-Of-Years-Digits'-methode +TBILLEQ = SCHATK.OBL ## Geeft als resultaat het rendement op schatkistpapier, dat op dezelfde manier wordt berekend als het rendement op obligaties +TBILLPRICE = SCHATK.PRIJS ## Bepaalt de prijs per € 100 nominale waarde voor schatkistpapier +TBILLYIELD = SCHATK.REND ## Berekent het rendement voor schatkistpapier +VDB = VDB ## Geeft als resultaat de afschrijving van activa over een gehele of gedeeltelijke termijn met behulp van de 'declining balance'-methode +XIRR = IR.SCHEMA ## Berekent de interne rentabiliteit voor een betalingsschema van cashflows +XNPV = NHW2 ## Berekent de huidige nettowaarde voor een betalingsschema van cashflows +YIELD = RENDEMENT ## Geeft als resultaat het rendement voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +YIELDDISC = REND.DISCONTO ## Geeft als resultaat het jaarlijkse rendement voor een verdisconteerd waardepapier, bijvoorbeeld schatkistpapier +YIELDMAT = REND.VERVAL ## Geeft als resultaat het jaarlijkse rendement voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum + + +## +## Information functions Informatiefuncties +## +CELL = CEL ## Geeft als resultaat informatie over de opmaak, locatie of inhoud van een cel +ERROR.TYPE = TYPE.FOUT ## Geeft als resultaat een getal dat overeenkomt met een van de foutwaarden van Microsoft Excel +INFO = INFO ## Geeft als resultaat informatie over de huidige besturingsomgeving +ISBLANK = ISLEEG ## Geeft als resultaat WAAR als de waarde leeg is +ISERR = ISFOUT2 ## Geeft als resultaat WAAR als de waarde een foutwaarde is, met uitzondering van #N/B +ISERROR = ISFOUT ## Geeft als resultaat WAAR als de waarde een foutwaarde is +ISEVEN = IS.EVEN ## Geeft als resultaat WAAR als het getal even is +ISLOGICAL = ISLOGISCH ## Geeft als resultaat WAAR als de waarde een logische waarde is +ISNA = ISNB ## Geeft als resultaat WAAR als de waarde de foutwaarde #N/B is +ISNONTEXT = ISGEENTEKST ## Geeft als resultaat WAAR als de waarde geen tekst is +ISNUMBER = ISGETAL ## Geeft als resultaat WAAR als de waarde een getal is +ISODD = IS.ONEVEN ## Geeft als resultaat WAAR als het getal oneven is +ISREF = ISVERWIJZING ## Geeft als resultaat WAAR als de waarde een verwijzing is +ISTEXT = ISTEKST ## Geeft als resultaat WAAR als de waarde tekst is +N = N ## Geeft als resultaat een waarde die is geconverteerd naar een getal +NA = NB ## Geeft als resultaat de foutwaarde #N/B +TYPE = TYPE ## Geeft als resultaat een getal dat het gegevenstype van een waarde aangeeft + + +## +## Logical functions Logische functies +## +AND = EN ## Geeft als resultaat WAAR als alle argumenten WAAR zijn +FALSE = ONWAAR ## Geeft als resultaat de logische waarde ONWAAR +IF = ALS ## Geeft een logische test aan +IFERROR = ALS.FOUT ## Retourneert een waarde die u opgeeft als een formule een fout oplevert, anders wordt het resultaat van de formule geretourneerd +NOT = NIET ## Keert de logische waarde van het argument om +OR = OF ## Geeft als resultaat WAAR als minimaal een van de argumenten WAAR is +TRUE = WAAR ## Geeft als resultaat de logische waarde WAAR + + +## +## Lookup and reference functions Zoek- en verwijzingsfuncties +## +ADDRESS = ADRES ## Geeft als resultaat een verwijzing, in de vorm van tekst, naar één bepaalde cel in een werkblad +AREAS = BEREIKEN ## Geeft als resultaat het aantal bereiken in een verwijzing +CHOOSE = KIEZEN ## Kiest een waarde uit een lijst met waarden +COLUMN = KOLOM ## Geeft als resultaat het kolomnummer van een verwijzing +COLUMNS = KOLOMMEN ## Geeft als resultaat het aantal kolommen in een verwijzing +HLOOKUP = HORIZ.ZOEKEN ## Zoekt in de bovenste rij van een matrix naar een bepaalde waarde en geeft als resultaat de gevonden waarde in de opgegeven cel +HYPERLINK = HYPERLINK ## Maakt een snelkoppeling of een sprong waarmee een document wordt geopend dat is opgeslagen op een netwerkserver, een intranet of op internet +INDEX = INDEX ## Kiest met een index een waarde uit een verwijzing of een matrix +INDIRECT = INDIRECT ## Geeft als resultaat een verwijzing die wordt aangegeven met een tekstwaarde +LOOKUP = ZOEKEN ## Zoekt naar bepaalde waarden in een vector of een matrix +MATCH = VERGELIJKEN ## Zoekt naar bepaalde waarden in een verwijzing of een matrix +OFFSET = VERSCHUIVING ## Geeft als resultaat een nieuwe verwijzing die is verschoven ten opzichte van een bepaalde verwijzing +ROW = RIJ ## Geeft als resultaat het rijnummer van een verwijzing +ROWS = RIJEN ## Geeft als resultaat het aantal rijen in een verwijzing +RTD = RTG ## Haalt realtimegegevens op uit een programma dat COM-automatisering (automatisering: een methode waarmee de ene toepassing objecten van een andere toepassing of ontwikkelprogramma kan besturen. Automatisering werd vroeger OLE-automatisering genoemd. Automatisering is een industrienorm die deel uitmaakt van het Component Object Model (COM).) ondersteunt +TRANSPOSE = TRANSPONEREN ## Geeft als resultaat de getransponeerde van een matrix +VLOOKUP = VERT.ZOEKEN ## Zoekt in de meest linkse kolom van een matrix naar een bepaalde waarde en geeft als resultaat de waarde in de opgegeven cel + + +## +## Math and trigonometry functions Wiskundige en trigonometrische functies +## +ABS = ABS ## Geeft als resultaat de absolute waarde van een getal +ACOS = BOOGCOS ## Geeft als resultaat de boogcosinus van een getal +ACOSH = BOOGCOSH ## Geeft als resultaat de inverse cosinus hyperbolicus van een getal +ASIN = BOOGSIN ## Geeft als resultaat de boogsinus van een getal +ASINH = BOOGSINH ## Geeft als resultaat de inverse sinus hyperbolicus van een getal +ATAN = BOOGTAN ## Geeft als resultaat de boogtangens van een getal +ATAN2 = BOOGTAN2 ## Geeft als resultaat de boogtangens van de x- en y-coördinaten +ATANH = BOOGTANH ## Geeft als resultaat de inverse tangens hyperbolicus van een getal +CEILING = AFRONDEN.BOVEN ## Rondt de absolute waarde van een getal naar boven af op het dichtstbijzijnde gehele getal of het dichtstbijzijnde significante veelvoud +COMBIN = COMBINATIES ## Geeft als resultaat het aantal combinaties voor een bepaald aantal objecten +COS = COS ## Geeft als resultaat de cosinus van een getal +COSH = COSH ## Geeft als resultaat de cosinus hyperbolicus van een getal +DEGREES = GRADEN ## Converteert radialen naar graden +EVEN = EVEN ## Rondt het getal af op het dichtstbijzijnde gehele even getal +EXP = EXP ## Verheft e tot de macht van een bepaald getal +FACT = FACULTEIT ## Geeft als resultaat de faculteit van een getal +FACTDOUBLE = DUBBELE.FACULTEIT ## Geeft als resultaat de dubbele faculteit van een getal +FLOOR = AFRONDEN.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af +GCD = GGD ## Geeft als resultaat de grootste gemene deler +INT = INTEGER ## Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal +LCM = KGV ## Geeft als resultaat het kleinste gemene veelvoud +LN = LN ## Geeft als resultaat de natuurlijke logaritme van een getal +LOG = LOG ## Geeft als resultaat de logaritme met het opgegeven grondtal van een getal +LOG10 = LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een getal +MDETERM = DETERMINANTMAT ## Geeft als resultaat de determinant van een matrix +MINVERSE = INVERSEMAT ## Geeft als resultaat de inverse van een matrix +MMULT = PRODUCTMAT ## Geeft als resultaat het product van twee matrices +MOD = REST ## Geeft als resultaat het restgetal van een deling +MROUND = AFRONDEN.N.VEELVOUD ## Geeft als resultaat een getal afgerond op het gewenste veelvoud +MULTINOMIAL = MULTINOMIAAL ## Geeft als resultaat de multinomiaalcoëfficiënt van een reeks getallen +ODD = ONEVEN ## Rondt de absolute waarde van het getal naar boven af op het dichtstbijzijnde gehele oneven getal +PI = PI ## Geeft als resultaat de waarde van pi +POWER = MACHT ## Verheft een getal tot een macht +PRODUCT = PRODUCT ## Vermenigvuldigt de argumenten met elkaar +QUOTIENT = QUOTIENT ## Geeft als resultaat de uitkomst van een deling als geheel getal +RADIANS = RADIALEN ## Converteert graden naar radialen +RAND = ASELECT ## Geeft als resultaat een willekeurig getal tussen 0 en 1 +RANDBETWEEN = ASELECTTUSSEN ## Geeft een willekeurig getal tussen de getallen die u hebt opgegeven +ROMAN = ROMEINS ## Converteert een Arabisch getal naar een Romeins getal en geeft het resultaat weer in de vorm van tekst +ROUND = AFRONDEN ## Rondt een getal af op het opgegeven aantal decimalen +ROUNDDOWN = AFRONDEN.NAAR.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af +ROUNDUP = AFRONDEN.NAAR.BOVEN ## Rondt de absolute waarde van een getal naar boven af +SERIESSUM = SOM.MACHTREEKS ## Geeft als resultaat de som van een machtreeks die is gebaseerd op de formule +SIGN = POS.NEG ## Geeft als resultaat het teken van een getal +SIN = SIN ## Geeft als resultaat de sinus van de opgegeven hoek +SINH = SINH ## Geeft als resultaat de sinus hyperbolicus van een getal +SQRT = WORTEL ## Geeft als resultaat de positieve vierkantswortel van een getal +SQRTPI = WORTEL.PI ## Geeft als resultaat de vierkantswortel van (getal * pi) +SUBTOTAL = SUBTOTAAL ## Geeft als resultaat een subtotaal voor een bereik +SUM = SOM ## Telt de argumenten op +SUMIF = SOM.ALS ## Telt de getallen bij elkaar op die voldoen aan een bepaald criterium +SUMIFS = SOMMEN.ALS ## Telt de cellen in een bereik op die aan meerdere criteria voldoen +SUMPRODUCT = SOMPRODUCT ## Geeft als resultaat de som van de producten van de corresponderende matrixelementen +SUMSQ = KWADRATENSOM ## Geeft als resultaat de som van de kwadraten van de argumenten +SUMX2MY2 = SOM.X2MINY2 ## Geeft als resultaat de som van het verschil tussen de kwadraten van corresponderende waarden in twee matrices +SUMX2PY2 = SOM.X2PLUSY2 ## Geeft als resultaat de som van de kwadratensom van corresponderende waarden in twee matrices +SUMXMY2 = SOM.XMINY.2 ## Geeft als resultaat de som van de kwadraten van de verschillen tussen de corresponderende waarden in twee matrices +TAN = TAN ## Geeft als resultaat de tangens van een getal +TANH = TANH ## Geeft als resultaat de tangens hyperbolicus van een getal +TRUNC = GEHEEL ## Kapt een getal af tot een geheel getal + + +## +## Statistical functions Statistische functies +## +AVEDEV = GEM.DEVIATIE ## Geeft als resultaat het gemiddelde van de absolute deviaties van gegevenspunten ten opzichte van hun gemiddelde waarde +AVERAGE = GEMIDDELDE ## Geeft als resultaat het gemiddelde van de argumenten +AVERAGEA = GEMIDDELDEA ## Geeft als resultaat het gemiddelde van de argumenten, inclusief getallen, tekst en logische waarden +AVERAGEIF = GEMIDDELDE.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen in een bereik die voldoen aan de opgegeven criteria +AVERAGEIFS = GEMIDDELDEN.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen die aan meerdere criteria voldoen +BETADIST = BETA.VERD ## Geeft als resultaat de cumulatieve bèta-verdelingsfunctie +BETAINV = BETA.INV ## Geeft als resultaat de inverse van de cumulatieve verdelingsfunctie voor een gegeven bèta-verdeling +BINOMDIST = BINOMIALE.VERD ## Geeft als resultaat de binomiale verdeling +CHIDIST = CHI.KWADRAAT ## Geeft als resultaat de eenzijdige kans van de chi-kwadraatverdeling +CHIINV = CHI.KWADRAAT.INV ## Geeft als resultaat de inverse van een eenzijdige kans van de chi-kwadraatverdeling +CHITEST = CHI.TOETS ## Geeft als resultaat de onafhankelijkheidstoets +CONFIDENCE = BETROUWBAARHEID ## Geeft als resultaat het betrouwbaarheidsinterval van een gemiddelde waarde voor de elementen van een populatie +CORREL = CORRELATIE ## Geeft als resultaat de correlatiecoëfficiënt van twee gegevensverzamelingen +COUNT = AANTAL ## Telt het aantal getallen in de argumentenlijst +COUNTA = AANTALARG ## Telt het aantal waarden in de argumentenlijst +COUNTBLANK = AANTAL.LEGE.CELLEN ## Telt het aantal lege cellen in een bereik +COUNTIF = AANTAL.ALS ## Telt in een bereik het aantal cellen die voldoen aan een bepaald criterium +COUNTIFS = AANTALLEN.ALS ## Telt in een bereik het aantal cellen die voldoen aan meerdere criteria +COVAR = COVARIANTIE ## Geeft als resultaat de covariantie, het gemiddelde van de producten van de gepaarde deviaties +CRITBINOM = CRIT.BINOM ## Geeft als resultaat de kleinste waarde waarvoor de binomiale verdeling kleiner is dan of gelijk is aan het criterium +DEVSQ = DEV.KWAD ## Geeft als resultaat de som van de deviaties in het kwadraat +EXPONDIST = EXPON.VERD ## Geeft als resultaat de exponentiële verdeling +FDIST = F.VERDELING ## Geeft als resultaat de F-verdeling +FINV = F.INVERSE ## Geeft als resultaat de inverse van de F-verdeling +FISHER = FISHER ## Geeft als resultaat de Fisher-transformatie +FISHERINV = FISHER.INV ## Geeft als resultaat de inverse van de Fisher-transformatie +FORECAST = VOORSPELLEN ## Geeft als resultaat een waarde op basis van een lineaire trend +FREQUENCY = FREQUENTIE ## Geeft als resultaat een frequentieverdeling in de vorm van een verticale matrix +FTEST = F.TOETS ## Geeft als resultaat een F-toets +GAMMADIST = GAMMA.VERD ## Geeft als resultaat de gamma-verdeling +GAMMAINV = GAMMA.INV ## Geeft als resultaat de inverse van de cumulatieve gamma-verdeling +GAMMALN = GAMMA.LN ## Geeft als resultaat de natuurlijke logaritme van de gamma-functie, G(x) +GEOMEAN = MEETK.GEM ## Geeft als resultaat het meetkundige gemiddelde +GROWTH = GROEI ## Geeft als resultaat de waarden voor een exponentiële trend +HARMEAN = HARM.GEM ## Geeft als resultaat het harmonische gemiddelde +HYPGEOMDIST = HYPERGEO.VERD ## Geeft als resultaat de hypergeometrische verdeling +INTERCEPT = SNIJPUNT ## Geeft als resultaat het snijpunt van de lineaire regressielijn met de y-as +KURT = KURTOSIS ## Geeft als resultaat de kurtosis van een gegevensverzameling +LARGE = GROOTSTE ## Geeft als resultaat de op k-1 na grootste waarde in een gegevensverzameling +LINEST = LIJNSCH ## Geeft als resultaat de parameters van een lineaire trend +LOGEST = LOGSCH ## Geeft als resultaat de parameters van een exponentiële trend +LOGINV = LOG.NORM.INV ## Geeft als resultaat de inverse van de logaritmische normale verdeling +LOGNORMDIST = LOG.NORM.VERD ## Geeft als resultaat de cumulatieve logaritmische normale verdeling +MAX = MAX ## Geeft als resultaat de maximumwaarde in een lijst met argumenten +MAXA = MAXA ## Geeft als resultaat de maximumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden +MEDIAN = MEDIAAN ## Geeft als resultaat de mediaan van de opgegeven getallen +MIN = MIN ## Geeft als resultaat de minimumwaarde in een lijst met argumenten +MINA = MINA ## Geeft als resultaat de minimumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden +MODE = MODUS ## Geeft als resultaat de meest voorkomende waarde in een gegevensverzameling +NEGBINOMDIST = NEG.BINOM.VERD ## Geeft als resultaat de negatieve binomiaalverdeling +NORMDIST = NORM.VERD ## Geeft als resultaat de cumulatieve normale verdeling +NORMINV = NORM.INV ## Geeft als resultaat de inverse van de cumulatieve standaardnormale verdeling +NORMSDIST = STAND.NORM.VERD ## Geeft als resultaat de cumulatieve standaardnormale verdeling +NORMSINV = STAND.NORM.INV ## Geeft als resultaat de inverse van de cumulatieve normale verdeling +PEARSON = PEARSON ## Geeft als resultaat de correlatiecoëfficiënt van Pearson +PERCENTILE = PERCENTIEL ## Geeft als resultaat het k-de percentiel van waarden in een bereik +PERCENTRANK = PERCENT.RANG ## Geeft als resultaat de positie, in procenten uitgedrukt, van een waarde in de rangorde van een gegevensverzameling +PERMUT = PERMUTATIES ## Geeft als resultaat het aantal permutaties voor een gegeven aantal objecten +POISSON = POISSON ## Geeft als resultaat de Poisson-verdeling +PROB = KANS ## Geeft als resultaat de kans dat waarden zich tussen twee grenzen bevinden +QUARTILE = KWARTIEL ## Geeft als resultaat het kwartiel van een gegevensverzameling +RANK = RANG ## Geeft als resultaat het rangnummer van een getal in een lijst getallen +RSQ = R.KWADRAAT ## Geeft als resultaat het kwadraat van de Pearson-correlatiecoëfficiënt +SKEW = SCHEEFHEID ## Geeft als resultaat de mate van asymmetrie van een verdeling +SLOPE = RICHTING ## Geeft als resultaat de richtingscoëfficiënt van een lineaire regressielijn +SMALL = KLEINSTE ## Geeft als resultaat de op k-1 na kleinste waarde in een gegevensverzameling +STANDARDIZE = NORMALISEREN ## Geeft als resultaat een genormaliseerde waarde +STDEV = STDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef +STDEVA = STDEVA ## Maakt een schatting van de standaarddeviatie op basis van een steekproef, inclusief getallen, tekst en logische waarden +STDEVP = STDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie +STDEVPA = STDEVPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden +STEYX = STAND.FOUT.YX ## Geeft als resultaat de standaardfout in de voorspelde y-waarde voor elke x in een regressie +TDIST = T.VERD ## Geeft als resultaat de Student T-verdeling +TINV = T.INV ## Geeft als resultaat de inverse van de Student T-verdeling +TREND = TREND ## Geeft als resultaat de waarden voor een lineaire trend +TRIMMEAN = GETRIMD.GEM ## Geeft als resultaat het gemiddelde van waarden in een gegevensverzameling +TTEST = T.TOETS ## Geeft als resultaat de kans met behulp van de Student T-toets +VAR = VAR ## Maakt een schatting van de variantie op basis van een steekproef +VARA = VARA ## Maakt een schatting van de variantie op basis van een steekproef, inclusief getallen, tekst en logische waarden +VARP = VARP ## Berekent de variantie op basis van de volledige populatie +VARPA = VARPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden +WEIBULL = WEIBULL ## Geeft als resultaat de Weibull-verdeling +ZTEST = Z.TOETS ## Geeft als resultaat de eenzijdige kanswaarde van een Z-toets + + +## +## Text functions Tekstfuncties +## +ASC = ASC ## Wijzigt Nederlandse letters of katakanatekens over de volle breedte (dubbel-bytetekens) binnen een tekenreeks in tekens over de halve breedte (enkel-bytetekens) +BAHTTEXT = BAHT.TEKST ## Converteert een getal naar tekst met de valutanotatie ß (baht) +CHAR = TEKEN ## Geeft als resultaat het teken dat hoort bij de opgegeven code +CLEAN = WISSEN.CONTROL ## Verwijdert alle niet-afdrukbare tekens uit een tekst +CODE = CODE ## Geeft als resultaat de numerieke code voor het eerste teken in een tekenreeks +CONCATENATE = TEKST.SAMENVOEGEN ## Voegt verschillende tekstfragmenten samen tot één tekstfragment +DOLLAR = EURO ## Converteert een getal naar tekst met de valutanotatie € (euro) +EXACT = GELIJK ## Controleert of twee tekenreeksen identiek zijn +FIND = VIND.ALLES ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +FINDB = VIND.ALLES.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +FIXED = VAST ## Maakt een getal als tekst met een vast aantal decimalen op +JIS = JIS ## Wijzigt Nederlandse letters of katakanatekens over de halve breedte (enkel-bytetekens) binnen een tekenreeks in tekens over de volle breedte (dubbel-bytetekens) +LEFT = LINKS ## Geeft als resultaat de meest linkse tekens in een tekenreeks +LEFTB = LINKSB ## Geeft als resultaat de meest linkse tekens in een tekenreeks +LEN = LENGTE ## Geeft als resultaat het aantal tekens in een tekenreeks +LENB = LENGTEB ## Geeft als resultaat het aantal tekens in een tekenreeks +LOWER = KLEINE.LETTERS ## Zet tekst om in kleine letters +MID = MIDDEN ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft +MIDB = DEELB ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft +PHONETIC = FONETISCH ## Haalt de fonetische tekens (furigana) uit een tekenreeks op +PROPER = BEGINLETTERS ## Zet de eerste letter van elk woord in een tekst om in een hoofdletter +REPLACE = VERVANG ## Vervangt tekens binnen een tekst +REPLACEB = VERVANGENB ## Vervangt tekens binnen een tekst +REPT = HERHALING ## Herhaalt een tekst een aantal malen +RIGHT = RECHTS ## Geeft als resultaat de meest rechtse tekens in een tekenreeks +RIGHTB = RECHTSB ## Geeft als resultaat de meest rechtse tekens in een tekenreeks +SEARCH = VIND.SPEC ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +SEARCHB = VIND.SPEC.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +SUBSTITUTE = SUBSTITUEREN ## Vervangt oude tekst door nieuwe tekst in een tekenreeks +T = T ## Converteert de argumenten naar tekst +TEXT = TEKST ## Maakt een getal op en converteert het getal naar tekst +TRIM = SPATIES.WISSEN ## Verwijdert de spaties uit een tekst +UPPER = HOOFDLETTERS ## Zet tekst om in hoofdletters +VALUE = WAARDE ## Converteert tekst naar een getal diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/no/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/no/functions index 10d0a20762e..57a80a7a406 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/no/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/no/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funksjonene Tillegg og Automatisering -## -GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data som er lagret i en pivottabellrapport - - -## -## Cube functions Kubefunksjoner -## -CUBEKPIMEMBER = KUBEKPIMEDLEM ## Returnerer navnet, egenskapen og målet for en viktig ytelsesindikator (KPI), og viser navnet og egenskapen i cellen. En KPI er en målbar enhet, for eksempel månedlig bruttoinntjening eller kvartalsvis inntjening per ansatt, og brukes til å overvåke ytelsen i en organisasjon. -CUBEMEMBER = KUBEMEDLEM ## Returnerer et medlem eller en tuppel i et kubehierarki. Brukes til å validere at medlemmet eller tuppelen finnes i kuben. -CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP ## Returnerer verdien til en medlemsegenskap i kuben. Brukes til å validere at et medlemsnavn finnes i kuben, og til å returnere den angitte egenskapen for dette medlemmet. -CUBERANKEDMEMBER = KUBERANGERTMEDLEM ## Returnerer det n-te, eller rangerte, medlemmet i et sett. Brukes til å returnere ett eller flere elementer i et sett, for eksempel de 10 beste studentene. -CUBESET = KUBESETT ## Definerer et beregnet sett av medlemmer eller tuppeler ved å sende et settuttrykk til kuben på serveren, noe som oppretter settet og deretter returnerer dette settet til Microsoft Office Excel. -CUBESETCOUNT = KUBESETTANTALL ## Returnerer antallet elementer i et sett. -CUBEVALUE = KUBEVERDI ## Returnerer en aggregert verdi fra en kube. - - -## -## Database functions Databasefunksjoner -## -DAVERAGE = DGJENNOMSNITT ## Returnerer gjennomsnittet av merkede databaseposter -DCOUNT = DANTALL ## Teller celler som inneholder tall i en database -DCOUNTA = DANTALLA ## Teller celler som ikke er tomme i en database -DGET = DHENT ## Trekker ut fra en database en post som oppfyller angitte vilkår -DMAX = DMAKS ## Returnerer maksimumsverdien fra merkede databaseposter -DMIN = DMIN ## Returnerer minimumsverdien fra merkede databaseposter -DPRODUCT = DPRODUKT ## Multipliserer verdiene i et bestemt felt med poster som oppfyller vilkårene i en database -DSTDEV = DSTDAV ## Estimerer standardavviket basert på et utvalg av merkede databaseposter -DSTDEVP = DSTAVP ## Beregner standardavviket basert på at merkede databaseposter utgjør hele populasjonen -DSUM = DSUMMER ## Legger til tallene i feltkolonnen med poster, i databasen som oppfyller vilkårene -DVAR = DVARIANS ## Estimerer variansen basert på et utvalg av merkede databaseposter -DVARP = DVARIANSP ## Beregner variansen basert på at merkede databaseposter utgjør hele populasjonen - - -## -## Date and time functions Dato- og tidsfunksjoner -## -DATE = DATO ## Returnerer serienummeret som svarer til en bestemt dato -DATEVALUE = DATOVERDI ## Konverterer en dato med tekstformat til et serienummer -DAY = DAG ## Konverterer et serienummer til en dag i måneden -DAYS360 = DAGER360 ## Beregner antall dager mellom to datoer basert på et år med 360 dager -EDATE = DAG.ETTER ## Returnerer serienummeret som svarer til datoen som er det indikerte antall måneder før eller etter startdatoen -EOMONTH = MÅNEDSSLUTT ## Returnerer serienummeret som svarer til siste dag i måneden, før eller etter et angitt antall måneder -HOUR = TIME ## Konverterer et serienummer til en time -MINUTE = MINUTT ## Konverterer et serienummer til et minutt -MONTH = MÅNED ## Konverterer et serienummer til en måned -NETWORKDAYS = NETT.ARBEIDSDAGER ## Returnerer antall hele arbeidsdager mellom to datoer -NOW = NÅ ## Returnerer serienummeret som svarer til gjeldende dato og klokkeslett -SECOND = SEKUND ## Konverterer et serienummer til et sekund -TIME = TID ## Returnerer serienummeret som svarer til et bestemt klokkeslett -TIMEVALUE = TIDSVERDI ## Konverterer et klokkeslett i tekstformat til et serienummer -TODAY = IDAG ## Returnerer serienummeret som svarer til dagens dato -WEEKDAY = UKEDAG ## Konverterer et serienummer til en ukedag -WEEKNUM = UKENR ## Konverterer et serienummer til et tall som representerer hvilket nummer uken har i et år -WORKDAY = ARBEIDSDAG ## Returnerer serienummeret som svarer til datoen før eller etter et angitt antall arbeidsdager -YEAR = ÅR ## Konverterer et serienummer til et år -YEARFRAC = ÅRDEL ## Returnerer brøkdelen for året, som svarer til antall hele dager mellom startdato og sluttdato - - -## -## Engineering functions Tekniske funksjoner -## -BESSELI = BESSELI ## Returnerer den endrede Bessel-funksjonen In(x) -BESSELJ = BESSELJ ## Returnerer Bessel-funksjonen Jn(x) -BESSELK = BESSELK ## Returnerer den endrede Bessel-funksjonen Kn(x) -BESSELY = BESSELY ## Returnerer Bessel-funksjonen Yn(x) -BIN2DEC = BINTILDES ## Konverterer et binært tall til et desimaltall -BIN2HEX = BINTILHEKS ## Konverterer et binært tall til et heksadesimaltall -BIN2OCT = BINTILOKT ## Konverterer et binært tall til et oktaltall -COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koeffisienter til et komplekst tall -CONVERT = KONVERTER ## Konverterer et tall fra ett målsystem til et annet -DEC2BIN = DESTILBIN ## Konverterer et desimaltall til et binærtall -DEC2HEX = DESTILHEKS ## Konverterer et heltall i 10-tallsystemet til et heksadesimalt tall -DEC2OCT = DESTILOKT ## Konverterer et heltall i 10-tallsystemet til et oktaltall -DELTA = DELTA ## Undersøker om to verdier er like -ERF = FEILF ## Returnerer feilfunksjonen -ERFC = FEILFK ## Returnerer den komplementære feilfunksjonen -GESTEP = GRENSEVERDI ## Tester om et tall er større enn en terskelverdi -HEX2BIN = HEKSTILBIN ## Konverterer et heksadesimaltall til et binært tall -HEX2DEC = HEKSTILDES ## Konverterer et heksadesimalt tall til et heltall i 10-tallsystemet -HEX2OCT = HEKSTILOKT ## Konverterer et heksadesimalt tall til et oktaltall -IMABS = IMABS ## Returnerer absoluttverdien (koeffisienten) til et komplekst tall -IMAGINARY = IMAGINÆR ## Returnerer den imaginære koeffisienten til et komplekst tall -IMARGUMENT = IMARGUMENT ## Returnerer argumentet theta, som er en vinkel uttrykt i radianer -IMCONJUGATE = IMKONJUGERT ## Returnerer den komplekse konjugaten til et komplekst tall -IMCOS = IMCOS ## Returnerer cosinus til et komplekst tall -IMDIV = IMDIV ## Returnerer kvotienten til to komplekse tall -IMEXP = IMEKSP ## Returnerer eksponenten til et komplekst tall -IMLN = IMLN ## Returnerer den naturlige logaritmen for et komplekst tall -IMLOG10 = IMLOG10 ## Returnerer logaritmen med grunntall 10 for et komplekst tall -IMLOG2 = IMLOG2 ## Returnerer logaritmen med grunntall 2 for et komplekst tall -IMPOWER = IMOPPHØY ## Returnerer et komplekst tall opphøyd til en heltallspotens -IMPRODUCT = IMPRODUKT ## Returnerer produktet av komplekse tall -IMREAL = IMREELL ## Returnerer den reelle koeffisienten til et komplekst tall -IMSIN = IMSIN ## Returnerer sinus til et komplekst tall -IMSQRT = IMROT ## Returnerer kvadratroten av et komplekst tall -IMSUB = IMSUB ## Returnerer differansen mellom to komplekse tall -IMSUM = IMSUMMER ## Returnerer summen av komplekse tall -OCT2BIN = OKTTILBIN ## Konverterer et oktaltall til et binært tall -OCT2DEC = OKTTILDES ## Konverterer et oktaltall til et desimaltall -OCT2HEX = OKTTILHEKS ## Konverterer et oktaltall til et heksadesimaltall - - -## -## Financial functions Økonomiske funksjoner -## -ACCRINT = PÅLØPT.PERIODISK.RENTE ## Returnerer påløpte renter for et verdipapir som betaler periodisk rente -ACCRINTM = PÅLØPT.FORFALLSRENTE ## Returnerer den påløpte renten for et verdipapir som betaler rente ved forfall -AMORDEGRC = AMORDEGRC ## Returnerer avskrivningen for hver regnskapsperiode ved hjelp av en avskrivingskoeffisient -AMORLINC = AMORLINC ## Returnerer avskrivingen for hver regnskapsperiode -COUPDAYBS = OBLIG.DAGER.FF ## Returnerer antall dager fra begynnelsen av den rentebærende perioden til innløsningsdatoen -COUPDAYS = OBLIG.DAGER ## Returnerer antall dager i den rentebærende perioden som inneholder innløsningsdatoen -COUPDAYSNC = OBLIG.DAGER.NF ## Returnerer antall dager fra betalingsdato til neste renteinnbetalingsdato -COUPNCD = OBLIG.DAGER.EF ## Returnerer obligasjonsdatoen som kommer etter oppgjørsdatoen -COUPNUM = OBLIG.ANTALL ## Returnerer antall obligasjoner som skal betales mellom oppgjørsdatoen og forfallsdatoen -COUPPCD = OBLIG.DAG.FORRIGE ## Returnerer obligasjonsdatoen som kommer før oppgjørsdatoen -CUMIPMT = SAMLET.RENTE ## Returnerer den kumulative renten som er betalt mellom to perioder -CUMPRINC = SAMLET.HOVEDSTOL ## Returnerer den kumulative hovedstolen som er betalt for et lån mellom to perioder -DB = DAVSKR ## Returnerer avskrivningen for et aktivum i en angitt periode, foretatt med fast degressiv avskrivning -DDB = DEGRAVS ## Returnerer avskrivningen for et aktivum for en gitt periode, ved hjelp av dobbel degressiv avskrivning eller en metode som du selv angir -DISC = DISKONTERT ## Returnerer diskonteringsraten for et verdipapir -DOLLARDE = DOLLARDE ## Konverterer en valutapris uttrykt som en brøk, til en valutapris uttrykt som et desimaltall -DOLLARFR = DOLLARBR ## Konverterer en valutapris uttrykt som et desimaltall, til en valutapris uttrykt som en brøk -DURATION = VARIGHET ## Returnerer årlig varighet for et verdipapir med renter som betales periodisk -EFFECT = EFFEKTIV.RENTE ## Returnerer den effektive årlige rentesatsen -FV = SLUTTVERDI ## Returnerer fremtidig verdi for en investering -FVSCHEDULE = SVPLAN ## Returnerer den fremtidige verdien av en inngående hovedstol etter å ha anvendt en serie med sammensatte rentesatser -INTRATE = RENTESATS ## Returnerer rentefoten av et fullfinansiert verdipapir -IPMT = RAVDRAG ## Returnerer betalte renter på en investering for en gitt periode -IRR = IR ## Returnerer internrenten for en serie kontantstrømmer -ISPMT = ER.AVDRAG ## Beregner renten som er betalt for en investering i løpet av en bestemt periode -MDURATION = MVARIGHET ## Returnerer Macauleys modifiserte varighet for et verdipapir med en antatt pålydende verdi på kr 100,00 -MIRR = MODIR ## Returnerer internrenten der positive og negative kontantstrømmer finansieres med forskjellige satser -NOMINAL = NOMINELL ## Returnerer årlig nominell rentesats -NPER = PERIODER ## Returnerer antall perioder for en investering -NPV = NNV ## Returnerer netto nåverdi for en investering, basert på en serie periodiske kontantstrømmer og en rentesats -ODDFPRICE = AVVIKFP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde første periode -ODDFYIELD = AVVIKFP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde første periode -ODDLPRICE = AVVIKSP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde siste periode -ODDLYIELD = AVVIKSP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde siste periode -PMT = AVDRAG ## Returnerer periodisk betaling for en annuitet -PPMT = AMORT ## Returnerer betalingen på hovedstolen for en investering i en gitt periode -PRICE = PRIS ## Returnerer prisen per pålydende kr 100 for et verdipapir som gir periodisk avkastning -PRICEDISC = PRIS.DISKONTERT ## Returnerer prisen per pålydende kr 100 for et diskontert verdipapir -PRICEMAT = PRIS.FORFALL ## Returnerer prisen per pålydende kr 100 av et verdipapir som betaler rente ved forfall -PV = NÅVERDI ## Returnerer nåverdien av en investering -RATE = RENTE ## Returnerer rentesatsen per periode for en annuitet -RECEIVED = MOTTATT.AVKAST ## Returnerer summen som mottas ved forfallsdato for et fullinvestert verdipapir -SLN = LINAVS ## Returnerer den lineære avskrivningen for et aktivum i én periode -SYD = ÅRSAVS ## Returnerer årsavskrivningen for et aktivum i en angitt periode -TBILLEQ = TBILLEKV ## Returnerer den obligasjonsekvivalente avkastningen for en statsobligasjon -TBILLPRICE = TBILLPRIS ## Returnerer prisen per pålydende kr 100 for en statsobligasjon -TBILLYIELD = TBILLAVKASTNING ## Returnerer avkastningen til en statsobligasjon -VDB = VERDIAVS ## Returnerer avskrivningen for et aktivum i en angitt periode eller delperiode, ved hjelp av degressiv avskrivning -XIRR = XIR ## Returnerer internrenten for en serie kontantstrømmer som ikke nødvendigvis er periodiske -XNPV = XNNV ## Returnerer netto nåverdi for en serie kontantstrømmer som ikke nødvendigvis er periodiske -YIELD = AVKAST ## Returnerer avkastningen på et verdipapir som betaler periodisk rente -YIELDDISC = AVKAST.DISKONTERT ## Returnerer årlig avkastning for et diskontert verdipapir, for eksempel en statskasseveksel -YIELDMAT = AVKAST.FORFALL ## Returnerer den årlige avkastningen for et verdipapir som betaler rente ved forfallsdato - - -## -## Information functions Informasjonsfunksjoner -## -CELL = CELLE ## Returnerer informasjon om formatering, plassering eller innholdet til en celle -ERROR.TYPE = FEIL.TYPE ## Returnerer et tall som svarer til en feiltype -INFO = INFO ## Returnerer informasjon om gjeldende operativmiljø -ISBLANK = ERTOM ## Returnerer SANN hvis verdien er tom -ISERR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst annen feilverdi enn #I/T -ISERROR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst feilverdi -ISEVEN = ERPARTALL ## Returnerer SANN hvis tallet er et partall -ISLOGICAL = ERLOGISK ## Returnerer SANN hvis verdien er en logisk verdi -ISNA = ERIT ## Returnerer SANN hvis verdien er feilverdien #I/T -ISNONTEXT = ERIKKETEKST ## Returnerer SANN hvis verdien ikke er tekst -ISNUMBER = ERTALL ## Returnerer SANN hvis verdien er et tall -ISODD = ERODDETALL ## Returnerer SANN hvis tallet er et oddetall -ISREF = ERREF ## Returnerer SANN hvis verdien er en referanse -ISTEXT = ERTEKST ## Returnerer SANN hvis verdien er tekst -N = N ## Returnerer en verdi som er konvertert til et tall -NA = IT ## Returnerer feilverdien #I/T -TYPE = VERDITYPE ## Returnerer et tall som indikerer datatypen til en verdi - - -## -## Logical functions Logiske funksjoner -## -AND = OG ## Returnerer SANN hvis alle argumentene er lik SANN -FALSE = USANN ## Returnerer den logiske verdien USANN -IF = HVIS ## Angir en logisk test som skal utføres -IFERROR = HVISFEIL ## Returnerer en verdi du angir hvis en formel evaluerer til en feil. Ellers returnerer den resultatet av formelen. -NOT = IKKE ## Reverserer logikken til argumentet -OR = ELLER ## Returnerer SANN hvis ett eller flere argumenter er lik SANN -TRUE = SANN ## Returnerer den logiske verdien SANN - - -## -## Lookup and reference functions Oppslag- og referansefunksjoner -## -ADDRESS = ADRESSE ## Returnerer en referanse som tekst til en enkelt celle i et regneark -AREAS = OMRÅDER ## Returnerer antall områder i en referanse -CHOOSE = VELG ## Velger en verdi fra en liste med verdier -COLUMN = KOLONNE ## Returnerer kolonnenummeret for en referanse -COLUMNS = KOLONNER ## Returnerer antall kolonner i en referanse -HLOOKUP = FINN.KOLONNE ## Leter i den øverste raden i en matrise og returnerer verdien for den angitte cellen -HYPERLINK = HYPERKOBLING ## Oppretter en snarvei eller et hopp som åpner et dokument som er lagret på en nettverksserver, et intranett eller Internett -INDEX = INDEKS ## Bruker en indeks til å velge en verdi fra en referanse eller matrise -INDIRECT = INDIREKTE ## Returnerer en referanse angitt av en tekstverdi -LOOKUP = SLÅ.OPP ## Slår opp verdier i en vektor eller matrise -MATCH = SAMMENLIGNE ## Slår opp verdier i en referanse eller matrise -OFFSET = FORSKYVNING ## Returnerer en referanseforskyvning fra en gitt referanse -ROW = RAD ## Returnerer radnummeret for en referanse -ROWS = RADER ## Returnerer antall rader i en referanse -RTD = RTD ## Henter sanntidsdata fra et program som støtter COM-automatisering (automatisering: En måte å arbeide på med programobjekter fra et annet program- eller utviklingsverktøy. Tidligere kalt OLE-automatisering. Automatisering er en bransjestandard og en funksjon i Component Object Model (COM).) -TRANSPOSE = TRANSPONER ## Returnerer transponeringen av en matrise -VLOOKUP = FINN.RAD ## Leter i den første kolonnen i en matrise og flytter bortover raden for å returnere verdien til en celle - - -## -## Math and trigonometry functions Matematikk- og trigonometrifunksjoner -## -ABS = ABS ## Returnerer absoluttverdien til et tall -ACOS = ARCCOS ## Returnerer arcus cosinus til et tall -ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus til et tall -ASIN = ARCSIN ## Returnerer arcus sinus til et tall -ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus til et tall -ATAN = ARCTAN ## Returnerer arcus tangens til et tall -ATAN2 = ARCTAN2 ## Returnerer arcus tangens fra x- og y-koordinater -ATANH = ARCTANH ## Returnerer den inverse hyperbolske tangens til et tall -CEILING = AVRUND.GJELDENDE.MULTIPLUM ## Runder av et tall til nærmeste heltall eller til nærmeste signifikante multiplum -COMBIN = KOMBINASJON ## Returnerer antall kombinasjoner for ett gitt antall objekter -COS = COS ## Returnerer cosinus til et tall -COSH = COSH ## Returnerer den hyperbolske cosinus til et tall -DEGREES = GRADER ## Konverterer radianer til grader -EVEN = AVRUND.TIL.PARTALL ## Runder av et tall oppover til nærmeste heltall som er et partall -EXP = EKSP ## Returnerer e opphøyd i en angitt potens -FACT = FAKULTET ## Returnerer fakultet til et tall -FACTDOUBLE = DOBBELFAKT ## Returnerer et talls doble fakultet -FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED ## Avrunder et tall nedover, mot null -GCD = SFF ## Returnerer høyeste felles divisor -INT = HELTALL ## Avrunder et tall nedover til nærmeste heltall -LCM = MFM ## Returnerer minste felles multiplum -LN = LN ## Returnerer den naturlige logaritmen til et tall -LOG = LOG ## Returnerer logaritmen for et tall til et angitt grunntall -LOG10 = LOG10 ## Returnerer logaritmen med grunntall 10 for et tall -MDETERM = MDETERM ## Returnerer matrisedeterminanten til en matrise -MINVERSE = MINVERS ## Returnerer den inverse matrisen til en matrise -MMULT = MMULT ## Returnerer matriseproduktet av to matriser -MOD = REST ## Returnerer resten fra en divisjon -MROUND = MRUND ## Returnerer et tall avrundet til det ønskede multiplum -MULTINOMIAL = MULTINOMINELL ## Returnerer det multinominelle for et sett med tall -ODD = AVRUND.TIL.ODDETALL ## Runder av et tall oppover til nærmeste heltall som er et oddetall -PI = PI ## Returnerer verdien av pi -POWER = OPPHØYD.I ## Returnerer resultatet av et tall opphøyd i en potens -PRODUCT = PRODUKT ## Multipliserer argumentene -QUOTIENT = KVOTIENT ## Returnerer heltallsdelen av en divisjon -RADIANS = RADIANER ## Konverterer grader til radianer -RAND = TILFELDIG ## Returnerer et tilfeldig tall mellom 0 og 1 -RANDBETWEEN = TILFELDIGMELLOM ## Returnerer et tilfeldig tall innenfor et angitt område -ROMAN = ROMERTALL ## Konverterer vanlige tall til romertall, som tekst -ROUND = AVRUND ## Avrunder et tall til et angitt antall sifre -ROUNDDOWN = AVRUND.NED ## Avrunder et tall nedover, mot null -ROUNDUP = AVRUND.OPP ## Runder av et tall oppover, bort fra null -SERIESSUM = SUMMER.REKKE ## Returnerer summen av en geometrisk rekke, basert på formelen -SIGN = FORTEGN ## Returnerer fortegnet for et tall -SIN = SIN ## Returnerer sinus til en gitt vinkel -SINH = SINH ## Returnerer den hyperbolske sinus til et tall -SQRT = ROT ## Returnerer en positiv kvadratrot -SQRTPI = ROTPI ## Returnerer kvadratroten av (tall * pi) -SUBTOTAL = DELSUM ## Returnerer en delsum i en liste eller database -SUM = SUMMER ## Legger sammen argumentene -SUMIF = SUMMERHVIS ## Legger sammen cellene angitt ved et gitt vilkår -SUMIFS = SUMMER.HVIS.SETT ## Legger sammen cellene i et område som oppfyller flere vilkår -SUMPRODUCT = SUMMERPRODUKT ## Returnerer summen av produktene av tilsvarende matrisekomponenter -SUMSQ = SUMMERKVADRAT ## Returnerer kvadratsummen av argumentene -SUMX2MY2 = SUMMERX2MY2 ## Returnerer summen av differansen av kvadratene for tilsvarende verdier i to matriser -SUMX2PY2 = SUMMERX2PY2 ## Returnerer summen av kvadratsummene for tilsvarende verdier i to matriser -SUMXMY2 = SUMMERXMY2 ## Returnerer summen av kvadratene av differansen for tilsvarende verdier i to matriser -TAN = TAN ## Returnerer tangens for et tall -TANH = TANH ## Returnerer den hyperbolske tangens for et tall -TRUNC = AVKORT ## Korter av et tall til et heltall - - -## -## Statistical functions Statistiske funksjoner -## -AVEDEV = GJENNOMSNITTSAVVIK ## Returnerer datapunktenes gjennomsnittlige absoluttavvik fra middelverdien -AVERAGE = GJENNOMSNITT ## Returnerer gjennomsnittet for argumentene -AVERAGEA = GJENNOMSNITTA ## Returnerer gjennomsnittet for argumentene, inkludert tall, tekst og logiske verdier -AVERAGEIF = GJENNOMSNITTHVIS ## Returnerer gjennomsnittet (aritmetisk gjennomsnitt) av alle cellene i et område som oppfyller et bestemt vilkår -AVERAGEIFS = GJENNOMSNITT.HVIS.SETT ## Returnerer gjennomsnittet (aritmetisk middelverdi) av alle celler som oppfyller flere vilkår. -BETADIST = BETA.FORDELING ## Returnerer den kumulative betafordelingsfunksjonen -BETAINV = INVERS.BETA.FORDELING ## Returnerer den inverse verdien til fordelingsfunksjonen for en angitt betafordeling -BINOMDIST = BINOM.FORDELING ## Returnerer den individuelle binomiske sannsynlighetsfordelingen -CHIDIST = KJI.FORDELING ## Returnerer den ensidige sannsynligheten for en kjikvadrert fordeling -CHIINV = INVERS.KJI.FORDELING ## Returnerer den inverse av den ensidige sannsynligheten for den kjikvadrerte fordelingen -CHITEST = KJI.TEST ## Utfører testen for uavhengighet -CONFIDENCE = KONFIDENS ## Returnerer konfidensintervallet til gjennomsnittet for en populasjon -CORREL = KORRELASJON ## Returnerer korrelasjonskoeffisienten mellom to datasett -COUNT = ANTALL ## Teller hvor mange tall som er i argumentlisten -COUNTA = ANTALLA ## Teller hvor mange verdier som er i argumentlisten -COUNTBLANK = TELLBLANKE ## Teller antall tomme celler i et område. -COUNTIF = ANTALL.HVIS ## Teller antall celler i et område som oppfyller gitte vilkår -COUNTIFS = ANTALL.HVIS.SETT ## Teller antallet ikke-tomme celler i et område som oppfyller flere vilkår -COVAR = KOVARIANS ## Returnerer kovariansen, gjennomsnittet av produktene av parvise avvik -CRITBINOM = GRENSE.BINOM ## Returnerer den minste verdien der den kumulative binomiske fordelingen er mindre enn eller lik en vilkårsverdi -DEVSQ = AVVIK.KVADRERT ## Returnerer summen av kvadrerte avvik -EXPONDIST = EKSP.FORDELING ## Returnerer eksponentialfordelingen -FDIST = FFORDELING ## Returnerer F-sannsynlighetsfordelingen -FINV = FFORDELING.INVERS ## Returnerer den inverse av den sannsynlige F-fordelingen -FISHER = FISHER ## Returnerer Fisher-transformasjonen -FISHERINV = FISHERINV ## Returnerer den inverse av Fisher-transformasjonen -FORECAST = PROGNOSE ## Returnerer en verdi langs en lineær trend -FREQUENCY = FREKVENS ## Returnerer en frekvensdistribusjon som en loddrett matrise -FTEST = FTEST ## Returnerer resultatet av en F-test -GAMMADIST = GAMMAFORDELING ## Returnerer gammafordelingen -GAMMAINV = GAMMAINV ## Returnerer den inverse av den gammakumulative fordelingen -GAMMALN = GAMMALN ## Returnerer den naturlige logaritmen til gammafunksjonen G(x) -GEOMEAN = GJENNOMSNITT.GEOMETRISK ## Returnerer den geometriske middelverdien -GROWTH = VEKST ## Returnerer verdier langs en eksponentiell trend -HARMEAN = GJENNOMSNITT.HARMONISK ## Returnerer den harmoniske middelverdien -HYPGEOMDIST = HYPGEOM.FORDELING ## Returnerer den hypergeometriske fordelingen -INTERCEPT = SKJÆRINGSPUNKT ## Returnerer skjæringspunktet til den lineære regresjonslinjen -KURT = KURT ## Returnerer kurtosen til et datasett -LARGE = N.STØRST ## Returnerer den n-te største verdien i et datasett -LINEST = RETTLINJE ## Returnerer parameterne til en lineær trend -LOGEST = KURVE ## Returnerer parameterne til en eksponentiell trend -LOGINV = LOGINV ## Returnerer den inverse lognormale fordelingen -LOGNORMDIST = LOGNORMFORD ## Returnerer den kumulative lognormale fordelingen -MAX = STØRST ## Returnerer maksimumsverdien i en argumentliste -MAXA = MAKSA ## Returnerer maksimumsverdien i en argumentliste, inkludert tall, tekst og logiske verdier -MEDIAN = MEDIAN ## Returnerer medianen til tallene som er gitt -MIN = MIN ## Returnerer minimumsverdien i en argumentliste -MINA = MINA ## Returnerer den minste verdien i en argumentliste, inkludert tall, tekst og logiske verdier -MODE = MODUS ## Returnerer den vanligste verdien i et datasett -NEGBINOMDIST = NEGBINOM.FORDELING ## Returnerer den negative binomiske fordelingen -NORMDIST = NORMALFORDELING ## Returnerer den kumulative normalfordelingen -NORMINV = NORMINV ## Returnerer den inverse kumulative normalfordelingen -NORMSDIST = NORMSFORDELING ## Returnerer standard kumulativ normalfordeling -NORMSINV = NORMSINV ## Returnerer den inverse av den den kumulative standard normalfordelingen -PEARSON = PEARSON ## Returnerer produktmomentkorrelasjonskoeffisienten, Pearson -PERCENTILE = PERSENTIL ## Returnerer den n-te persentil av verdiene i et område -PERCENTRANK = PROSENTDEL ## Returnerer prosentrangeringen av en verdi i et datasett -PERMUT = PERMUTER ## Returnerer antall permutasjoner for et gitt antall objekter -POISSON = POISSON ## Returnerer Poissons sannsynlighetsfordeling -PROB = SANNSYNLIG ## Returnerer sannsynligheten for at verdier i et område ligger mellom to grenser -QUARTILE = KVARTIL ## Returnerer kvartilen til et datasett -RANK = RANG ## Returnerer rangeringen av et tall, eller plassen tallet har i en rekke -RSQ = RKVADRAT ## Returnerer kvadratet av produktmomentkorrelasjonskoeffisienten (Pearsons r) -SKEW = SKJEVFORDELING ## Returnerer skjevheten i en fordeling -SLOPE = STIGNINGSTALL ## Returnerer stigningtallet for den lineære regresjonslinjen -SMALL = N.MINST ## Returnerer den n-te minste verdien i et datasett -STANDARDIZE = NORMALISER ## Returnerer en normalisert verdi -STDEV = STDAV ## Estimere standardavvik på grunnlag av et utvalg -STDEVA = STDAVVIKA ## Estimerer standardavvik basert på et utvalg, inkludert tall, tekst og logiske verdier -STDEVP = STDAVP ## Beregner standardavvik basert på hele populasjonen -STDEVPA = STDAVVIKPA ## Beregner standardavvik basert på hele populasjonen, inkludert tall, tekst og logiske verdier -STEYX = STANDARDFEIL ## Returnerer standardfeilen for den predikerte y-verdien for hver x i regresjonen -TDIST = TFORDELING ## Returnerer en Student t-fordeling -TINV = TINV ## Returnerer den inverse Student t-fordelingen -TREND = TREND ## Returnerer verdier langs en lineær trend -TRIMMEAN = TRIMMET.GJENNOMSNITT ## Returnerer den interne middelverdien til et datasett -TTEST = TTEST ## Returnerer sannsynligheten assosiert med en Student t-test -VAR = VARIANS ## Estimerer varians basert på et utvalg -VARA = VARIANSA ## Estimerer varians basert på et utvalg, inkludert tall, tekst og logiske verdier -VARP = VARIANSP ## Beregner varians basert på hele populasjonen -VARPA = VARIANSPA ## Beregner varians basert på hele populasjonen, inkludert tall, tekst og logiske verdier -WEIBULL = WEIBULL.FORDELING ## Returnerer Weibull-fordelingen -ZTEST = ZTEST ## Returnerer den ensidige sannsynlighetsverdien for en z-test - - -## -## Text functions Tekstfunksjoner -## -ASC = STIGENDE ## Endrer fullbreddes (dobbeltbyte) engelske bokstaver eller katakana i en tegnstreng, til halvbreddes (enkeltbyte) tegn -BAHTTEXT = BAHTTEKST ## Konverterer et tall til tekst, og bruker valutaformatet ß (baht) -CHAR = TEGNKODE ## Returnerer tegnet som svarer til kodenummeret -CLEAN = RENSK ## Fjerner alle tegn som ikke kan skrives ut, fra teksten -CODE = KODE ## Returnerer en numerisk kode for det første tegnet i en tekststreng -CONCATENATE = KJEDE.SAMMEN ## Slår sammen flere tekstelementer til ett tekstelement -DOLLAR = VALUTA ## Konverterer et tall til tekst, og bruker valutaformatet $ (dollar) -EXACT = EKSAKT ## Kontrollerer om to tekstverdier er like -FIND = FINN ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) -FINDB = FINNB ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) -FIXED = FASTSATT ## Formaterer et tall som tekst med et bestemt antall desimaler -JIS = JIS ## Endrer halvbreddes (enkeltbyte) engelske bokstaver eller katakana i en tegnstreng, til fullbreddes (dobbeltbyte) tegn -LEFT = VENSTRE ## Returnerer tegnene lengst til venstre i en tekstverdi -LEFTB = VENSTREB ## Returnerer tegnene lengst til venstre i en tekstverdi -LEN = LENGDE ## Returnerer antall tegn i en tekststreng -LENB = LENGDEB ## Returnerer antall tegn i en tekststreng -LOWER = SMÅ ## Konverterer tekst til små bokstaver -MID = DELTEKST ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir -MIDB = DELTEKSTB ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir -PHONETIC = FURIGANA ## Trekker ut fonetiske tegn (furigana) fra en tekststreng -PROPER = STOR.FORBOKSTAV ## Gir den første bokstaven i hvert ord i en tekstverdi stor forbokstav -REPLACE = ERSTATT ## Erstatter tegn i en tekst -REPLACEB = ERSTATTB ## Erstatter tegn i en tekst -REPT = GJENTA ## Gjentar tekst et gitt antall ganger -RIGHT = HØYRE ## Returnerer tegnene lengst til høyre i en tekstverdi -RIGHTB = HØYREB ## Returnerer tegnene lengst til høyre i en tekstverdi -SEARCH = SØK ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) -SEARCHB = SØKB ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) -SUBSTITUTE = BYTT.UT ## Bytter ut gammel tekst med ny tekst i en tekststreng -T = T ## Konverterer argumentene til tekst -TEXT = TEKST ## Formaterer et tall og konverterer det til tekst -TRIM = TRIMME ## Fjerner mellomrom fra tekst -UPPER = STORE ## Konverterer tekst til store bokstaver -VALUE = VERDI ## Konverterer et tekstargument til et tall +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funksjonene Tillegg og Automatisering +## +GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data som er lagret i en pivottabellrapport + + +## +## Cube functions Kubefunksjoner +## +CUBEKPIMEMBER = KUBEKPIMEDLEM ## Returnerer navnet, egenskapen og målet for en viktig ytelsesindikator (KPI), og viser navnet og egenskapen i cellen. En KPI er en målbar enhet, for eksempel månedlig bruttoinntjening eller kvartalsvis inntjening per ansatt, og brukes til å overvåke ytelsen i en organisasjon. +CUBEMEMBER = KUBEMEDLEM ## Returnerer et medlem eller en tuppel i et kubehierarki. Brukes til å validere at medlemmet eller tuppelen finnes i kuben. +CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP ## Returnerer verdien til en medlemsegenskap i kuben. Brukes til å validere at et medlemsnavn finnes i kuben, og til å returnere den angitte egenskapen for dette medlemmet. +CUBERANKEDMEMBER = KUBERANGERTMEDLEM ## Returnerer det n-te, eller rangerte, medlemmet i et sett. Brukes til å returnere ett eller flere elementer i et sett, for eksempel de 10 beste studentene. +CUBESET = KUBESETT ## Definerer et beregnet sett av medlemmer eller tuppeler ved å sende et settuttrykk til kuben på serveren, noe som oppretter settet og deretter returnerer dette settet til Microsoft Office Excel. +CUBESETCOUNT = KUBESETTANTALL ## Returnerer antallet elementer i et sett. +CUBEVALUE = KUBEVERDI ## Returnerer en aggregert verdi fra en kube. + + +## +## Database functions Databasefunksjoner +## +DAVERAGE = DGJENNOMSNITT ## Returnerer gjennomsnittet av merkede databaseposter +DCOUNT = DANTALL ## Teller celler som inneholder tall i en database +DCOUNTA = DANTALLA ## Teller celler som ikke er tomme i en database +DGET = DHENT ## Trekker ut fra en database en post som oppfyller angitte vilkår +DMAX = DMAKS ## Returnerer maksimumsverdien fra merkede databaseposter +DMIN = DMIN ## Returnerer minimumsverdien fra merkede databaseposter +DPRODUCT = DPRODUKT ## Multipliserer verdiene i et bestemt felt med poster som oppfyller vilkårene i en database +DSTDEV = DSTDAV ## Estimerer standardavviket basert på et utvalg av merkede databaseposter +DSTDEVP = DSTAVP ## Beregner standardavviket basert på at merkede databaseposter utgjør hele populasjonen +DSUM = DSUMMER ## Legger til tallene i feltkolonnen med poster, i databasen som oppfyller vilkårene +DVAR = DVARIANS ## Estimerer variansen basert på et utvalg av merkede databaseposter +DVARP = DVARIANSP ## Beregner variansen basert på at merkede databaseposter utgjør hele populasjonen + + +## +## Date and time functions Dato- og tidsfunksjoner +## +DATE = DATO ## Returnerer serienummeret som svarer til en bestemt dato +DATEVALUE = DATOVERDI ## Konverterer en dato med tekstformat til et serienummer +DAY = DAG ## Konverterer et serienummer til en dag i måneden +DAYS360 = DAGER360 ## Beregner antall dager mellom to datoer basert på et år med 360 dager +EDATE = DAG.ETTER ## Returnerer serienummeret som svarer til datoen som er det indikerte antall måneder før eller etter startdatoen +EOMONTH = MÅNEDSSLUTT ## Returnerer serienummeret som svarer til siste dag i måneden, før eller etter et angitt antall måneder +HOUR = TIME ## Konverterer et serienummer til en time +MINUTE = MINUTT ## Konverterer et serienummer til et minutt +MONTH = MÅNED ## Konverterer et serienummer til en måned +NETWORKDAYS = NETT.ARBEIDSDAGER ## Returnerer antall hele arbeidsdager mellom to datoer +NOW = NÅ ## Returnerer serienummeret som svarer til gjeldende dato og klokkeslett +SECOND = SEKUND ## Konverterer et serienummer til et sekund +TIME = TID ## Returnerer serienummeret som svarer til et bestemt klokkeslett +TIMEVALUE = TIDSVERDI ## Konverterer et klokkeslett i tekstformat til et serienummer +TODAY = IDAG ## Returnerer serienummeret som svarer til dagens dato +WEEKDAY = UKEDAG ## Konverterer et serienummer til en ukedag +WEEKNUM = UKENR ## Konverterer et serienummer til et tall som representerer hvilket nummer uken har i et år +WORKDAY = ARBEIDSDAG ## Returnerer serienummeret som svarer til datoen før eller etter et angitt antall arbeidsdager +YEAR = ÅR ## Konverterer et serienummer til et år +YEARFRAC = ÅRDEL ## Returnerer brøkdelen for året, som svarer til antall hele dager mellom startdato og sluttdato + + +## +## Engineering functions Tekniske funksjoner +## +BESSELI = BESSELI ## Returnerer den endrede Bessel-funksjonen In(x) +BESSELJ = BESSELJ ## Returnerer Bessel-funksjonen Jn(x) +BESSELK = BESSELK ## Returnerer den endrede Bessel-funksjonen Kn(x) +BESSELY = BESSELY ## Returnerer Bessel-funksjonen Yn(x) +BIN2DEC = BINTILDES ## Konverterer et binært tall til et desimaltall +BIN2HEX = BINTILHEKS ## Konverterer et binært tall til et heksadesimaltall +BIN2OCT = BINTILOKT ## Konverterer et binært tall til et oktaltall +COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koeffisienter til et komplekst tall +CONVERT = KONVERTER ## Konverterer et tall fra ett målsystem til et annet +DEC2BIN = DESTILBIN ## Konverterer et desimaltall til et binærtall +DEC2HEX = DESTILHEKS ## Konverterer et heltall i 10-tallsystemet til et heksadesimalt tall +DEC2OCT = DESTILOKT ## Konverterer et heltall i 10-tallsystemet til et oktaltall +DELTA = DELTA ## Undersøker om to verdier er like +ERF = FEILF ## Returnerer feilfunksjonen +ERFC = FEILFK ## Returnerer den komplementære feilfunksjonen +GESTEP = GRENSEVERDI ## Tester om et tall er større enn en terskelverdi +HEX2BIN = HEKSTILBIN ## Konverterer et heksadesimaltall til et binært tall +HEX2DEC = HEKSTILDES ## Konverterer et heksadesimalt tall til et heltall i 10-tallsystemet +HEX2OCT = HEKSTILOKT ## Konverterer et heksadesimalt tall til et oktaltall +IMABS = IMABS ## Returnerer absoluttverdien (koeffisienten) til et komplekst tall +IMAGINARY = IMAGINÆR ## Returnerer den imaginære koeffisienten til et komplekst tall +IMARGUMENT = IMARGUMENT ## Returnerer argumentet theta, som er en vinkel uttrykt i radianer +IMCONJUGATE = IMKONJUGERT ## Returnerer den komplekse konjugaten til et komplekst tall +IMCOS = IMCOS ## Returnerer cosinus til et komplekst tall +IMDIV = IMDIV ## Returnerer kvotienten til to komplekse tall +IMEXP = IMEKSP ## Returnerer eksponenten til et komplekst tall +IMLN = IMLN ## Returnerer den naturlige logaritmen for et komplekst tall +IMLOG10 = IMLOG10 ## Returnerer logaritmen med grunntall 10 for et komplekst tall +IMLOG2 = IMLOG2 ## Returnerer logaritmen med grunntall 2 for et komplekst tall +IMPOWER = IMOPPHØY ## Returnerer et komplekst tall opphøyd til en heltallspotens +IMPRODUCT = IMPRODUKT ## Returnerer produktet av komplekse tall +IMREAL = IMREELL ## Returnerer den reelle koeffisienten til et komplekst tall +IMSIN = IMSIN ## Returnerer sinus til et komplekst tall +IMSQRT = IMROT ## Returnerer kvadratroten av et komplekst tall +IMSUB = IMSUB ## Returnerer differansen mellom to komplekse tall +IMSUM = IMSUMMER ## Returnerer summen av komplekse tall +OCT2BIN = OKTTILBIN ## Konverterer et oktaltall til et binært tall +OCT2DEC = OKTTILDES ## Konverterer et oktaltall til et desimaltall +OCT2HEX = OKTTILHEKS ## Konverterer et oktaltall til et heksadesimaltall + + +## +## Financial functions Økonomiske funksjoner +## +ACCRINT = PÅLØPT.PERIODISK.RENTE ## Returnerer påløpte renter for et verdipapir som betaler periodisk rente +ACCRINTM = PÅLØPT.FORFALLSRENTE ## Returnerer den påløpte renten for et verdipapir som betaler rente ved forfall +AMORDEGRC = AMORDEGRC ## Returnerer avskrivningen for hver regnskapsperiode ved hjelp av en avskrivingskoeffisient +AMORLINC = AMORLINC ## Returnerer avskrivingen for hver regnskapsperiode +COUPDAYBS = OBLIG.DAGER.FF ## Returnerer antall dager fra begynnelsen av den rentebærende perioden til innløsningsdatoen +COUPDAYS = OBLIG.DAGER ## Returnerer antall dager i den rentebærende perioden som inneholder innløsningsdatoen +COUPDAYSNC = OBLIG.DAGER.NF ## Returnerer antall dager fra betalingsdato til neste renteinnbetalingsdato +COUPNCD = OBLIG.DAGER.EF ## Returnerer obligasjonsdatoen som kommer etter oppgjørsdatoen +COUPNUM = OBLIG.ANTALL ## Returnerer antall obligasjoner som skal betales mellom oppgjørsdatoen og forfallsdatoen +COUPPCD = OBLIG.DAG.FORRIGE ## Returnerer obligasjonsdatoen som kommer før oppgjørsdatoen +CUMIPMT = SAMLET.RENTE ## Returnerer den kumulative renten som er betalt mellom to perioder +CUMPRINC = SAMLET.HOVEDSTOL ## Returnerer den kumulative hovedstolen som er betalt for et lån mellom to perioder +DB = DAVSKR ## Returnerer avskrivningen for et aktivum i en angitt periode, foretatt med fast degressiv avskrivning +DDB = DEGRAVS ## Returnerer avskrivningen for et aktivum for en gitt periode, ved hjelp av dobbel degressiv avskrivning eller en metode som du selv angir +DISC = DISKONTERT ## Returnerer diskonteringsraten for et verdipapir +DOLLARDE = DOLLARDE ## Konverterer en valutapris uttrykt som en brøk, til en valutapris uttrykt som et desimaltall +DOLLARFR = DOLLARBR ## Konverterer en valutapris uttrykt som et desimaltall, til en valutapris uttrykt som en brøk +DURATION = VARIGHET ## Returnerer årlig varighet for et verdipapir med renter som betales periodisk +EFFECT = EFFEKTIV.RENTE ## Returnerer den effektive årlige rentesatsen +FV = SLUTTVERDI ## Returnerer fremtidig verdi for en investering +FVSCHEDULE = SVPLAN ## Returnerer den fremtidige verdien av en inngående hovedstol etter å ha anvendt en serie med sammensatte rentesatser +INTRATE = RENTESATS ## Returnerer rentefoten av et fullfinansiert verdipapir +IPMT = RAVDRAG ## Returnerer betalte renter på en investering for en gitt periode +IRR = IR ## Returnerer internrenten for en serie kontantstrømmer +ISPMT = ER.AVDRAG ## Beregner renten som er betalt for en investering i løpet av en bestemt periode +MDURATION = MVARIGHET ## Returnerer Macauleys modifiserte varighet for et verdipapir med en antatt pålydende verdi på kr 100,00 +MIRR = MODIR ## Returnerer internrenten der positive og negative kontantstrømmer finansieres med forskjellige satser +NOMINAL = NOMINELL ## Returnerer årlig nominell rentesats +NPER = PERIODER ## Returnerer antall perioder for en investering +NPV = NNV ## Returnerer netto nåverdi for en investering, basert på en serie periodiske kontantstrømmer og en rentesats +ODDFPRICE = AVVIKFP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde første periode +ODDFYIELD = AVVIKFP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde første periode +ODDLPRICE = AVVIKSP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde siste periode +ODDLYIELD = AVVIKSP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde siste periode +PMT = AVDRAG ## Returnerer periodisk betaling for en annuitet +PPMT = AMORT ## Returnerer betalingen på hovedstolen for en investering i en gitt periode +PRICE = PRIS ## Returnerer prisen per pålydende kr 100 for et verdipapir som gir periodisk avkastning +PRICEDISC = PRIS.DISKONTERT ## Returnerer prisen per pålydende kr 100 for et diskontert verdipapir +PRICEMAT = PRIS.FORFALL ## Returnerer prisen per pålydende kr 100 av et verdipapir som betaler rente ved forfall +PV = NÅVERDI ## Returnerer nåverdien av en investering +RATE = RENTE ## Returnerer rentesatsen per periode for en annuitet +RECEIVED = MOTTATT.AVKAST ## Returnerer summen som mottas ved forfallsdato for et fullinvestert verdipapir +SLN = LINAVS ## Returnerer den lineære avskrivningen for et aktivum i én periode +SYD = ÅRSAVS ## Returnerer årsavskrivningen for et aktivum i en angitt periode +TBILLEQ = TBILLEKV ## Returnerer den obligasjonsekvivalente avkastningen for en statsobligasjon +TBILLPRICE = TBILLPRIS ## Returnerer prisen per pålydende kr 100 for en statsobligasjon +TBILLYIELD = TBILLAVKASTNING ## Returnerer avkastningen til en statsobligasjon +VDB = VERDIAVS ## Returnerer avskrivningen for et aktivum i en angitt periode eller delperiode, ved hjelp av degressiv avskrivning +XIRR = XIR ## Returnerer internrenten for en serie kontantstrømmer som ikke nødvendigvis er periodiske +XNPV = XNNV ## Returnerer netto nåverdi for en serie kontantstrømmer som ikke nødvendigvis er periodiske +YIELD = AVKAST ## Returnerer avkastningen på et verdipapir som betaler periodisk rente +YIELDDISC = AVKAST.DISKONTERT ## Returnerer årlig avkastning for et diskontert verdipapir, for eksempel en statskasseveksel +YIELDMAT = AVKAST.FORFALL ## Returnerer den årlige avkastningen for et verdipapir som betaler rente ved forfallsdato + + +## +## Information functions Informasjonsfunksjoner +## +CELL = CELLE ## Returnerer informasjon om formatering, plassering eller innholdet til en celle +ERROR.TYPE = FEIL.TYPE ## Returnerer et tall som svarer til en feiltype +INFO = INFO ## Returnerer informasjon om gjeldende operativmiljø +ISBLANK = ERTOM ## Returnerer SANN hvis verdien er tom +ISERR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst annen feilverdi enn #I/T +ISERROR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst feilverdi +ISEVEN = ERPARTALL ## Returnerer SANN hvis tallet er et partall +ISLOGICAL = ERLOGISK ## Returnerer SANN hvis verdien er en logisk verdi +ISNA = ERIT ## Returnerer SANN hvis verdien er feilverdien #I/T +ISNONTEXT = ERIKKETEKST ## Returnerer SANN hvis verdien ikke er tekst +ISNUMBER = ERTALL ## Returnerer SANN hvis verdien er et tall +ISODD = ERODDETALL ## Returnerer SANN hvis tallet er et oddetall +ISREF = ERREF ## Returnerer SANN hvis verdien er en referanse +ISTEXT = ERTEKST ## Returnerer SANN hvis verdien er tekst +N = N ## Returnerer en verdi som er konvertert til et tall +NA = IT ## Returnerer feilverdien #I/T +TYPE = VERDITYPE ## Returnerer et tall som indikerer datatypen til en verdi + + +## +## Logical functions Logiske funksjoner +## +AND = OG ## Returnerer SANN hvis alle argumentene er lik SANN +FALSE = USANN ## Returnerer den logiske verdien USANN +IF = HVIS ## Angir en logisk test som skal utføres +IFERROR = HVISFEIL ## Returnerer en verdi du angir hvis en formel evaluerer til en feil. Ellers returnerer den resultatet av formelen. +NOT = IKKE ## Reverserer logikken til argumentet +OR = ELLER ## Returnerer SANN hvis ett eller flere argumenter er lik SANN +TRUE = SANN ## Returnerer den logiske verdien SANN + + +## +## Lookup and reference functions Oppslag- og referansefunksjoner +## +ADDRESS = ADRESSE ## Returnerer en referanse som tekst til en enkelt celle i et regneark +AREAS = OMRÅDER ## Returnerer antall områder i en referanse +CHOOSE = VELG ## Velger en verdi fra en liste med verdier +COLUMN = KOLONNE ## Returnerer kolonnenummeret for en referanse +COLUMNS = KOLONNER ## Returnerer antall kolonner i en referanse +HLOOKUP = FINN.KOLONNE ## Leter i den øverste raden i en matrise og returnerer verdien for den angitte cellen +HYPERLINK = HYPERKOBLING ## Oppretter en snarvei eller et hopp som åpner et dokument som er lagret på en nettverksserver, et intranett eller Internett +INDEX = INDEKS ## Bruker en indeks til å velge en verdi fra en referanse eller matrise +INDIRECT = INDIREKTE ## Returnerer en referanse angitt av en tekstverdi +LOOKUP = SLÅ.OPP ## Slår opp verdier i en vektor eller matrise +MATCH = SAMMENLIGNE ## Slår opp verdier i en referanse eller matrise +OFFSET = FORSKYVNING ## Returnerer en referanseforskyvning fra en gitt referanse +ROW = RAD ## Returnerer radnummeret for en referanse +ROWS = RADER ## Returnerer antall rader i en referanse +RTD = RTD ## Henter sanntidsdata fra et program som støtter COM-automatisering (automatisering: En måte å arbeide på med programobjekter fra et annet program- eller utviklingsverktøy. Tidligere kalt OLE-automatisering. Automatisering er en bransjestandard og en funksjon i Component Object Model (COM).) +TRANSPOSE = TRANSPONER ## Returnerer transponeringen av en matrise +VLOOKUP = FINN.RAD ## Leter i den første kolonnen i en matrise og flytter bortover raden for å returnere verdien til en celle + + +## +## Math and trigonometry functions Matematikk- og trigonometrifunksjoner +## +ABS = ABS ## Returnerer absoluttverdien til et tall +ACOS = ARCCOS ## Returnerer arcus cosinus til et tall +ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus til et tall +ASIN = ARCSIN ## Returnerer arcus sinus til et tall +ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus til et tall +ATAN = ARCTAN ## Returnerer arcus tangens til et tall +ATAN2 = ARCTAN2 ## Returnerer arcus tangens fra x- og y-koordinater +ATANH = ARCTANH ## Returnerer den inverse hyperbolske tangens til et tall +CEILING = AVRUND.GJELDENDE.MULTIPLUM ## Runder av et tall til nærmeste heltall eller til nærmeste signifikante multiplum +COMBIN = KOMBINASJON ## Returnerer antall kombinasjoner for ett gitt antall objekter +COS = COS ## Returnerer cosinus til et tall +COSH = COSH ## Returnerer den hyperbolske cosinus til et tall +DEGREES = GRADER ## Konverterer radianer til grader +EVEN = AVRUND.TIL.PARTALL ## Runder av et tall oppover til nærmeste heltall som er et partall +EXP = EKSP ## Returnerer e opphøyd i en angitt potens +FACT = FAKULTET ## Returnerer fakultet til et tall +FACTDOUBLE = DOBBELFAKT ## Returnerer et talls doble fakultet +FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED ## Avrunder et tall nedover, mot null +GCD = SFF ## Returnerer høyeste felles divisor +INT = HELTALL ## Avrunder et tall nedover til nærmeste heltall +LCM = MFM ## Returnerer minste felles multiplum +LN = LN ## Returnerer den naturlige logaritmen til et tall +LOG = LOG ## Returnerer logaritmen for et tall til et angitt grunntall +LOG10 = LOG10 ## Returnerer logaritmen med grunntall 10 for et tall +MDETERM = MDETERM ## Returnerer matrisedeterminanten til en matrise +MINVERSE = MINVERS ## Returnerer den inverse matrisen til en matrise +MMULT = MMULT ## Returnerer matriseproduktet av to matriser +MOD = REST ## Returnerer resten fra en divisjon +MROUND = MRUND ## Returnerer et tall avrundet til det ønskede multiplum +MULTINOMIAL = MULTINOMINELL ## Returnerer det multinominelle for et sett med tall +ODD = AVRUND.TIL.ODDETALL ## Runder av et tall oppover til nærmeste heltall som er et oddetall +PI = PI ## Returnerer verdien av pi +POWER = OPPHØYD.I ## Returnerer resultatet av et tall opphøyd i en potens +PRODUCT = PRODUKT ## Multipliserer argumentene +QUOTIENT = KVOTIENT ## Returnerer heltallsdelen av en divisjon +RADIANS = RADIANER ## Konverterer grader til radianer +RAND = TILFELDIG ## Returnerer et tilfeldig tall mellom 0 og 1 +RANDBETWEEN = TILFELDIGMELLOM ## Returnerer et tilfeldig tall innenfor et angitt område +ROMAN = ROMERTALL ## Konverterer vanlige tall til romertall, som tekst +ROUND = AVRUND ## Avrunder et tall til et angitt antall sifre +ROUNDDOWN = AVRUND.NED ## Avrunder et tall nedover, mot null +ROUNDUP = AVRUND.OPP ## Runder av et tall oppover, bort fra null +SERIESSUM = SUMMER.REKKE ## Returnerer summen av en geometrisk rekke, basert på formelen +SIGN = FORTEGN ## Returnerer fortegnet for et tall +SIN = SIN ## Returnerer sinus til en gitt vinkel +SINH = SINH ## Returnerer den hyperbolske sinus til et tall +SQRT = ROT ## Returnerer en positiv kvadratrot +SQRTPI = ROTPI ## Returnerer kvadratroten av (tall * pi) +SUBTOTAL = DELSUM ## Returnerer en delsum i en liste eller database +SUM = SUMMER ## Legger sammen argumentene +SUMIF = SUMMERHVIS ## Legger sammen cellene angitt ved et gitt vilkår +SUMIFS = SUMMER.HVIS.SETT ## Legger sammen cellene i et område som oppfyller flere vilkår +SUMPRODUCT = SUMMERPRODUKT ## Returnerer summen av produktene av tilsvarende matrisekomponenter +SUMSQ = SUMMERKVADRAT ## Returnerer kvadratsummen av argumentene +SUMX2MY2 = SUMMERX2MY2 ## Returnerer summen av differansen av kvadratene for tilsvarende verdier i to matriser +SUMX2PY2 = SUMMERX2PY2 ## Returnerer summen av kvadratsummene for tilsvarende verdier i to matriser +SUMXMY2 = SUMMERXMY2 ## Returnerer summen av kvadratene av differansen for tilsvarende verdier i to matriser +TAN = TAN ## Returnerer tangens for et tall +TANH = TANH ## Returnerer den hyperbolske tangens for et tall +TRUNC = AVKORT ## Korter av et tall til et heltall + + +## +## Statistical functions Statistiske funksjoner +## +AVEDEV = GJENNOMSNITTSAVVIK ## Returnerer datapunktenes gjennomsnittlige absoluttavvik fra middelverdien +AVERAGE = GJENNOMSNITT ## Returnerer gjennomsnittet for argumentene +AVERAGEA = GJENNOMSNITTA ## Returnerer gjennomsnittet for argumentene, inkludert tall, tekst og logiske verdier +AVERAGEIF = GJENNOMSNITTHVIS ## Returnerer gjennomsnittet (aritmetisk gjennomsnitt) av alle cellene i et område som oppfyller et bestemt vilkår +AVERAGEIFS = GJENNOMSNITT.HVIS.SETT ## Returnerer gjennomsnittet (aritmetisk middelverdi) av alle celler som oppfyller flere vilkår. +BETADIST = BETA.FORDELING ## Returnerer den kumulative betafordelingsfunksjonen +BETAINV = INVERS.BETA.FORDELING ## Returnerer den inverse verdien til fordelingsfunksjonen for en angitt betafordeling +BINOMDIST = BINOM.FORDELING ## Returnerer den individuelle binomiske sannsynlighetsfordelingen +CHIDIST = KJI.FORDELING ## Returnerer den ensidige sannsynligheten for en kjikvadrert fordeling +CHIINV = INVERS.KJI.FORDELING ## Returnerer den inverse av den ensidige sannsynligheten for den kjikvadrerte fordelingen +CHITEST = KJI.TEST ## Utfører testen for uavhengighet +CONFIDENCE = KONFIDENS ## Returnerer konfidensintervallet til gjennomsnittet for en populasjon +CORREL = KORRELASJON ## Returnerer korrelasjonskoeffisienten mellom to datasett +COUNT = ANTALL ## Teller hvor mange tall som er i argumentlisten +COUNTA = ANTALLA ## Teller hvor mange verdier som er i argumentlisten +COUNTBLANK = TELLBLANKE ## Teller antall tomme celler i et område. +COUNTIF = ANTALL.HVIS ## Teller antall celler i et område som oppfyller gitte vilkår +COUNTIFS = ANTALL.HVIS.SETT ## Teller antallet ikke-tomme celler i et område som oppfyller flere vilkår +COVAR = KOVARIANS ## Returnerer kovariansen, gjennomsnittet av produktene av parvise avvik +CRITBINOM = GRENSE.BINOM ## Returnerer den minste verdien der den kumulative binomiske fordelingen er mindre enn eller lik en vilkårsverdi +DEVSQ = AVVIK.KVADRERT ## Returnerer summen av kvadrerte avvik +EXPONDIST = EKSP.FORDELING ## Returnerer eksponentialfordelingen +FDIST = FFORDELING ## Returnerer F-sannsynlighetsfordelingen +FINV = FFORDELING.INVERS ## Returnerer den inverse av den sannsynlige F-fordelingen +FISHER = FISHER ## Returnerer Fisher-transformasjonen +FISHERINV = FISHERINV ## Returnerer den inverse av Fisher-transformasjonen +FORECAST = PROGNOSE ## Returnerer en verdi langs en lineær trend +FREQUENCY = FREKVENS ## Returnerer en frekvensdistribusjon som en loddrett matrise +FTEST = FTEST ## Returnerer resultatet av en F-test +GAMMADIST = GAMMAFORDELING ## Returnerer gammafordelingen +GAMMAINV = GAMMAINV ## Returnerer den inverse av den gammakumulative fordelingen +GAMMALN = GAMMALN ## Returnerer den naturlige logaritmen til gammafunksjonen G(x) +GEOMEAN = GJENNOMSNITT.GEOMETRISK ## Returnerer den geometriske middelverdien +GROWTH = VEKST ## Returnerer verdier langs en eksponentiell trend +HARMEAN = GJENNOMSNITT.HARMONISK ## Returnerer den harmoniske middelverdien +HYPGEOMDIST = HYPGEOM.FORDELING ## Returnerer den hypergeometriske fordelingen +INTERCEPT = SKJÆRINGSPUNKT ## Returnerer skjæringspunktet til den lineære regresjonslinjen +KURT = KURT ## Returnerer kurtosen til et datasett +LARGE = N.STØRST ## Returnerer den n-te største verdien i et datasett +LINEST = RETTLINJE ## Returnerer parameterne til en lineær trend +LOGEST = KURVE ## Returnerer parameterne til en eksponentiell trend +LOGINV = LOGINV ## Returnerer den inverse lognormale fordelingen +LOGNORMDIST = LOGNORMFORD ## Returnerer den kumulative lognormale fordelingen +MAX = STØRST ## Returnerer maksimumsverdien i en argumentliste +MAXA = MAKSA ## Returnerer maksimumsverdien i en argumentliste, inkludert tall, tekst og logiske verdier +MEDIAN = MEDIAN ## Returnerer medianen til tallene som er gitt +MIN = MIN ## Returnerer minimumsverdien i en argumentliste +MINA = MINA ## Returnerer den minste verdien i en argumentliste, inkludert tall, tekst og logiske verdier +MODE = MODUS ## Returnerer den vanligste verdien i et datasett +NEGBINOMDIST = NEGBINOM.FORDELING ## Returnerer den negative binomiske fordelingen +NORMDIST = NORMALFORDELING ## Returnerer den kumulative normalfordelingen +NORMINV = NORMINV ## Returnerer den inverse kumulative normalfordelingen +NORMSDIST = NORMSFORDELING ## Returnerer standard kumulativ normalfordeling +NORMSINV = NORMSINV ## Returnerer den inverse av den den kumulative standard normalfordelingen +PEARSON = PEARSON ## Returnerer produktmomentkorrelasjonskoeffisienten, Pearson +PERCENTILE = PERSENTIL ## Returnerer den n-te persentil av verdiene i et område +PERCENTRANK = PROSENTDEL ## Returnerer prosentrangeringen av en verdi i et datasett +PERMUT = PERMUTER ## Returnerer antall permutasjoner for et gitt antall objekter +POISSON = POISSON ## Returnerer Poissons sannsynlighetsfordeling +PROB = SANNSYNLIG ## Returnerer sannsynligheten for at verdier i et område ligger mellom to grenser +QUARTILE = KVARTIL ## Returnerer kvartilen til et datasett +RANK = RANG ## Returnerer rangeringen av et tall, eller plassen tallet har i en rekke +RSQ = RKVADRAT ## Returnerer kvadratet av produktmomentkorrelasjonskoeffisienten (Pearsons r) +SKEW = SKJEVFORDELING ## Returnerer skjevheten i en fordeling +SLOPE = STIGNINGSTALL ## Returnerer stigningtallet for den lineære regresjonslinjen +SMALL = N.MINST ## Returnerer den n-te minste verdien i et datasett +STANDARDIZE = NORMALISER ## Returnerer en normalisert verdi +STDEV = STDAV ## Estimere standardavvik på grunnlag av et utvalg +STDEVA = STDAVVIKA ## Estimerer standardavvik basert på et utvalg, inkludert tall, tekst og logiske verdier +STDEVP = STDAVP ## Beregner standardavvik basert på hele populasjonen +STDEVPA = STDAVVIKPA ## Beregner standardavvik basert på hele populasjonen, inkludert tall, tekst og logiske verdier +STEYX = STANDARDFEIL ## Returnerer standardfeilen for den predikerte y-verdien for hver x i regresjonen +TDIST = TFORDELING ## Returnerer en Student t-fordeling +TINV = TINV ## Returnerer den inverse Student t-fordelingen +TREND = TREND ## Returnerer verdier langs en lineær trend +TRIMMEAN = TRIMMET.GJENNOMSNITT ## Returnerer den interne middelverdien til et datasett +TTEST = TTEST ## Returnerer sannsynligheten assosiert med en Student t-test +VAR = VARIANS ## Estimerer varians basert på et utvalg +VARA = VARIANSA ## Estimerer varians basert på et utvalg, inkludert tall, tekst og logiske verdier +VARP = VARIANSP ## Beregner varians basert på hele populasjonen +VARPA = VARIANSPA ## Beregner varians basert på hele populasjonen, inkludert tall, tekst og logiske verdier +WEIBULL = WEIBULL.FORDELING ## Returnerer Weibull-fordelingen +ZTEST = ZTEST ## Returnerer den ensidige sannsynlighetsverdien for en z-test + + +## +## Text functions Tekstfunksjoner +## +ASC = STIGENDE ## Endrer fullbreddes (dobbeltbyte) engelske bokstaver eller katakana i en tegnstreng, til halvbreddes (enkeltbyte) tegn +BAHTTEXT = BAHTTEKST ## Konverterer et tall til tekst, og bruker valutaformatet ß (baht) +CHAR = TEGNKODE ## Returnerer tegnet som svarer til kodenummeret +CLEAN = RENSK ## Fjerner alle tegn som ikke kan skrives ut, fra teksten +CODE = KODE ## Returnerer en numerisk kode for det første tegnet i en tekststreng +CONCATENATE = KJEDE.SAMMEN ## Slår sammen flere tekstelementer til ett tekstelement +DOLLAR = VALUTA ## Konverterer et tall til tekst, og bruker valutaformatet $ (dollar) +EXACT = EKSAKT ## Kontrollerer om to tekstverdier er like +FIND = FINN ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) +FINDB = FINNB ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) +FIXED = FASTSATT ## Formaterer et tall som tekst med et bestemt antall desimaler +JIS = JIS ## Endrer halvbreddes (enkeltbyte) engelske bokstaver eller katakana i en tegnstreng, til fullbreddes (dobbeltbyte) tegn +LEFT = VENSTRE ## Returnerer tegnene lengst til venstre i en tekstverdi +LEFTB = VENSTREB ## Returnerer tegnene lengst til venstre i en tekstverdi +LEN = LENGDE ## Returnerer antall tegn i en tekststreng +LENB = LENGDEB ## Returnerer antall tegn i en tekststreng +LOWER = SMÅ ## Konverterer tekst til små bokstaver +MID = DELTEKST ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir +MIDB = DELTEKSTB ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir +PHONETIC = FURIGANA ## Trekker ut fonetiske tegn (furigana) fra en tekststreng +PROPER = STOR.FORBOKSTAV ## Gir den første bokstaven i hvert ord i en tekstverdi stor forbokstav +REPLACE = ERSTATT ## Erstatter tegn i en tekst +REPLACEB = ERSTATTB ## Erstatter tegn i en tekst +REPT = GJENTA ## Gjentar tekst et gitt antall ganger +RIGHT = HØYRE ## Returnerer tegnene lengst til høyre i en tekstverdi +RIGHTB = HØYREB ## Returnerer tegnene lengst til høyre i en tekstverdi +SEARCH = SØK ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) +SEARCHB = SØKB ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) +SUBSTITUTE = BYTT.UT ## Bytter ut gammel tekst med ny tekst i en tekststreng +T = T ## Konverterer argumentene til tekst +TEXT = TEKST ## Formaterer et tall og konverterer det til tekst +TRIM = TRIMME ## Fjerner mellomrom fra tekst +UPPER = STORE ## Konverterer tekst til store bokstaver +VALUE = VERDI ## Konverterer et tekstargument til et tall diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/pl/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/pl/functions index 1881a71e57f..2e5697973c1 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/pl/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/pl/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Funkcje dodatków i automatyzacji -## -GETPIVOTDATA = WEŹDANETABELI ## Zwraca dane przechowywane w raporcie tabeli przestawnej. - - -## -## Cube functions Funkcje modułów -## -CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU ## Zwraca nazwę, właściwość i miarę kluczowego wskaźnika wydajności (KPI) oraz wyświetla nazwę i właściwość w komórce. Wskaźnik KPI jest miarą ilościową, taką jak miesięczny zysk brutto lub kwartalna fluktuacja pracowników, używaną do monitorowania wydajności organizacji. -CUBEMEMBER = ELEMENT.MODUŁU ## Zwraca element lub krotkę z hierarchii modułu. Służy do sprawdzania, czy element lub krotka istnieje w module. -CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU ## Zwraca wartość właściwości elementu w module. Służy do sprawdzania, czy nazwa elementu istnieje w module, i zwracania określonej właściwości dla tego elementu. -CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU ## Zwraca n-ty (albo uszeregowany) element zestawu. Służy do zwracania elementu lub elementów zestawu, na przykład najlepszego sprzedawcy lub 10 najlepszych studentów. -CUBESET = ZESTAW.MODUŁÓW ## Definiuje obliczony zestaw elementów lub krotek, wysyłając wyrażenie zestawu do serwera modułu, który tworzy zestaw i zwraca go do programu Microsoft Office Excel. -CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU ## Zwraca liczbę elementów zestawu. -CUBEVALUE = WARTOŚĆ.MODUŁU ## Zwraca zagregowaną wartość z modułu. - - -## -## Database functions Funkcje baz danych -## -DAVERAGE = BD.ŚREDNIA ## Zwraca wartość średniej wybranych wpisów bazy danych. -DCOUNT = BD.ILE.REKORDÓW ## Zlicza komórki zawierające liczby w bazie danych. -DCOUNTA = BD.ILE.REKORDÓW.A ## Zlicza niepuste komórki w bazie danych. -DGET = BD.POLE ## Wyodrębnia z bazy danych jeden rekord spełniający określone kryteria. -DMAX = BD.MAX ## Zwraca wartość maksymalną z wybranych wpisów bazy danych. -DMIN = BD.MIN ## Zwraca wartość minimalną z wybranych wpisów bazy danych. -DPRODUCT = BD.ILOCZYN ## Mnoży wartości w konkretnym, spełniającym kryteria polu rekordów bazy danych. -DSTDEV = BD.ODCH.STANDARD ## Szacuje odchylenie standardowe na podstawie próbki z wybranych wpisów bazy danych. -DSTDEVP = BD.ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji wybranych wpisów bazy danych. -DSUM = BD.SUMA ## Dodaje liczby w kolumnie pól rekordów bazy danych, które spełniają kryteria. -DVAR = BD.WARIANCJA ## Szacuje wariancję na podstawie próbki z wybranych wpisów bazy danych. -DVARP = BD.WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji wybranych wpisów bazy danych. - - -## -## Date and time functions Funkcje dat, godzin i czasu -## -DATE = DATA ## Zwraca liczbę seryjną dla wybranej daty. -DATEVALUE = DATA.WARTOŚĆ ## Konwertuje datę w formie tekstu na liczbę seryjną. -DAY = DZIEŃ ## Konwertuje liczbę seryjną na dzień miesiąca. -DAYS360 = DNI.360 ## Oblicza liczbę dni między dwiema datami na podstawie roku 360-dniowego. -EDATE = UPŁDNI ## Zwraca liczbę seryjną daty jako wskazaną liczbę miesięcy przed określoną datą początkową lub po niej. -EOMONTH = EOMONTH ## Zwraca liczbę seryjną ostatniego dnia miesiąca przed określoną liczbą miesięcy lub po niej. -HOUR = GODZINA ## Konwertuje liczbę seryjną na godzinę. -MINUTE = MINUTA ## Konwertuje liczbę seryjną na minutę. -MONTH = MIESIĄC ## Konwertuje liczbę seryjną na miesiąc. -NETWORKDAYS = NETWORKDAYS ## Zwraca liczbę pełnych dni roboczych między dwiema datami. -NOW = TERAZ ## Zwraca liczbę seryjną bieżącej daty i godziny. -SECOND = SEKUNDA ## Konwertuje liczbę seryjną na sekundę. -TIME = CZAS ## Zwraca liczbę seryjną określonego czasu. -TIMEVALUE = CZAS.WARTOŚĆ ## Konwertuje czas w formie tekstu na liczbę seryjną. -TODAY = DZIŚ ## Zwraca liczbę seryjną dla daty bieżącej. -WEEKDAY = DZIEŃ.TYG ## Konwertuje liczbę seryjną na dzień tygodnia. -WEEKNUM = WEEKNUM ## Konwertuje liczbę seryjną na liczbę reprezentującą numer tygodnia w roku. -WORKDAY = WORKDAY ## Zwraca liczbę seryjną dla daty przed określoną liczbą dni roboczych lub po niej. -YEAR = ROK ## Konwertuje liczbę seryjną na rok. -YEARFRAC = YEARFRAC ## Zwraca część roku reprezentowaną przez pełną liczbę dni między datą początkową a datą końcową. - - -## -## Engineering functions Funkcje inżynierskie -## -BESSELI = BESSELI ## Zwraca wartość zmodyfikowanej funkcji Bessela In(x). -BESSELJ = BESSELJ ## Zwraca wartość funkcji Bessela Jn(x). -BESSELK = BESSELK ## Zwraca wartość zmodyfikowanej funkcji Bessela Kn(x). -BESSELY = BESSELY ## Zwraca wartość funkcji Bessela Yn(x). -BIN2DEC = BIN2DEC ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci dziesiętnej. -BIN2HEX = BIN2HEX ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci szesnastkowej. -BIN2OCT = BIN2OCT ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci ósemkowej. -COMPLEX = COMPLEX ## Konwertuje część rzeczywistą i urojoną na liczbę zespoloną. -CONVERT = CONVERT ## Konwertuje liczbę z jednego systemu miar na inny. -DEC2BIN = DEC2BIN ## Konwertuje liczbę w postaci dziesiętnej na postać dwójkową. -DEC2HEX = DEC2HEX ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci szesnastkowej. -DEC2OCT = DEC2OCT ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci ósemkowej. -DELTA = DELTA ## Sprawdza, czy dwie wartości są równe. -ERF = ERF ## Zwraca wartość funkcji błędu. -ERFC = ERFC ## Zwraca wartość komplementarnej funkcji błędu. -GESTEP = GESTEP ## Sprawdza, czy liczba jest większa niż wartość progowa. -HEX2BIN = HEX2BIN ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dwójkowej. -HEX2DEC = HEX2DEC ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dziesiętnej. -HEX2OCT = HEX2OCT ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci ósemkowej. -IMABS = IMABS ## Zwraca wartość bezwzględną (moduł) liczby zespolonej. -IMAGINARY = IMAGINARY ## Zwraca wartość części urojonej liczby zespolonej. -IMARGUMENT = IMARGUMENT ## Zwraca wartość argumentu liczby zespolonej, przy czym kąt wyrażony jest w radianach. -IMCONJUGATE = IMCONJUGATE ## Zwraca wartość liczby sprzężonej danej liczby zespolonej. -IMCOS = IMCOS ## Zwraca wartość cosinusa liczby zespolonej. -IMDIV = IMDIV ## Zwraca wartość ilorazu dwóch liczb zespolonych. -IMEXP = IMEXP ## Zwraca postać wykładniczą liczby zespolonej. -IMLN = IMLN ## Zwraca wartość logarytmu naturalnego liczby zespolonej. -IMLOG10 = IMLOG10 ## Zwraca wartość logarytmu dziesiętnego liczby zespolonej. -IMLOG2 = IMLOG2 ## Zwraca wartość logarytmu liczby zespolonej przy podstawie 2. -IMPOWER = IMPOWER ## Zwraca wartość liczby zespolonej podniesionej do potęgi całkowitej. -IMPRODUCT = IMPRODUCT ## Zwraca wartość iloczynu liczb zespolonych. -IMREAL = IMREAL ## Zwraca wartość części rzeczywistej liczby zespolonej. -IMSIN = IMSIN ## Zwraca wartość sinusa liczby zespolonej. -IMSQRT = IMSQRT ## Zwraca wartość pierwiastka kwadratowego z liczby zespolonej. -IMSUB = IMSUB ## Zwraca wartość różnicy dwóch liczb zespolonych. -IMSUM = IMSUM ## Zwraca wartość sumy liczb zespolonych. -OCT2BIN = OCT2BIN ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dwójkowej. -OCT2DEC = OCT2DEC ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dziesiętnej. -OCT2HEX = OCT2HEX ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci szesnastkowej. - - -## -## Financial functions Funkcje finansowe -## -ACCRINT = ACCRINT ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem okresowym. -ACCRINTM = ACCRINTM ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem w terminie wykupu. -AMORDEGRC = AMORDEGRC ## Zwraca amortyzację dla każdego okresu rozliczeniowego z wykorzystaniem współczynnika amortyzacji. -AMORLINC = AMORLINC ## Zwraca amortyzację dla każdego okresu rozliczeniowego. -COUPDAYBS = COUPDAYBS ## Zwraca liczbę dni od początku okresu dywidendy do dnia rozliczeniowego. -COUPDAYS = COUPDAYS ## Zwraca liczbę dni w okresie dywidendy, z uwzględnieniem dnia rozliczeniowego. -COUPDAYSNC = COUPDAYSNC ## Zwraca liczbę dni od dnia rozliczeniowego do daty następnego dnia dywidendy. -COUPNCD = COUPNCD ## Zwraca dzień następnej dywidendy po dniu rozliczeniowym. -COUPNUM = COUPNUM ## Zwraca liczbę dywidend płatnych między dniem rozliczeniowym a dniem wykupu. -COUPPCD = COUPPCD ## Zwraca dzień poprzedniej dywidendy przed dniem rozliczeniowym. -CUMIPMT = CUMIPMT ## Zwraca wartość procentu składanego płatnego między dwoma okresami. -CUMPRINC = CUMPRINC ## Zwraca wartość kapitału skumulowanego spłaty pożyczki między dwoma okresami. -DB = DB ## Zwraca amortyzację środka trwałego w danym okresie metodą degresywną z zastosowaniem stałej bazowej. -DDB = DDB ## Zwraca amortyzację środka trwałego za podany okres metodą degresywną z zastosowaniem podwójnej bazowej lub metodą określoną przez użytkownika. -DISC = DISC ## Zwraca wartość stopy dyskontowej papieru wartościowego. -DOLLARDE = DOLLARDE ## Konwertuje cenę w postaci ułamkowej na cenę wyrażoną w postaci dziesiętnej. -DOLLARFR = DOLLARFR ## Konwertuje cenę wyrażoną w postaci dziesiętnej na cenę wyrażoną w postaci ułamkowej. -DURATION = DURATION ## Zwraca wartość rocznego przychodu z papieru wartościowego o okresowych wypłatach oprocentowania. -EFFECT = EFFECT ## Zwraca wartość efektywnej rocznej stopy procentowej. -FV = FV ## Zwraca przyszłą wartość lokaty. -FVSCHEDULE = FVSCHEDULE ## Zwraca przyszłą wartość kapitału początkowego wraz z szeregiem procentów składanych. -INTRATE = INTRATE ## Zwraca wartość stopy procentowej papieru wartościowego całkowicie ulokowanego. -IPMT = IPMT ## Zwraca wysokość spłaty oprocentowania lokaty za dany okres. -IRR = IRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii przepływów gotówkowych. -ISPMT = ISPMT ## Oblicza wysokość spłaty oprocentowania za dany okres lokaty. -MDURATION = MDURATION ## Zwraca wartość zmodyfikowanego okresu Macauleya dla papieru wartościowego o założonej wartości nominalnej 100 zł. -MIRR = MIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla przypadku, gdy dodatnie i ujemne przepływy gotówkowe mają różne stopy. -NOMINAL = NOMINAL ## Zwraca wysokość nominalnej rocznej stopy procentowej. -NPER = NPER ## Zwraca liczbę okresów dla lokaty. -NPV = NPV ## Zwraca wartość bieżącą netto lokaty na podstawie szeregu okresowych przepływów gotówkowych i stopy dyskontowej. -ODDFPRICE = ODDFPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym pierwszym okresem. -ODDFYIELD = ODDFYIELD ## Zwraca rentowność papieru wartościowego z nietypowym pierwszym okresem. -ODDLPRICE = ODDLPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym ostatnim okresem. -ODDLYIELD = ODDLYIELD ## Zwraca rentowność papieru wartościowego z nietypowym ostatnim okresem. -PMT = PMT ## Zwraca wartość okresowej płatności raty rocznej. -PPMT = PPMT ## Zwraca wysokość spłaty kapitału w przypadku lokaty dla danego okresu. -PRICE = PRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem okresowym. -PRICEDISC = PRICEDISC ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego zdyskontowanego. -PRICEMAT = PRICEMAT ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem w terminie wykupu. -PV = PV ## Zwraca wartość bieżącą lokaty. -RATE = RATE ## Zwraca wysokość stopy procentowej w okresie raty rocznej. -RECEIVED = RECEIVED ## Zwraca wartość kapitału otrzymanego przy wykupie papieru wartościowego całkowicie ulokowanego. -SLN = SLN ## Zwraca amortyzację środka trwałego za jeden okres metodą liniową. -SYD = SYD ## Zwraca amortyzację środka trwałego za dany okres metodą sumy cyfr lat amortyzacji. -TBILLEQ = TBILLEQ ## Zwraca rentowność ekwiwalentu obligacji dla bonu skarbowego. -TBILLPRICE = TBILLPRICE ## Zwraca cenę za 100 zł wartości nominalnej bonu skarbowego. -TBILLYIELD = TBILLYIELD ## Zwraca rentowność bonu skarbowego. -VDB = VDB ## Oblicza amortyzację środka trwałego w danym okresie lub jego części metodą degresywną. -XIRR = XIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. -XNPV = XNPV ## Zwraca wartość bieżącą netto dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. -YIELD = YIELD ## Zwraca rentowność papieru wartościowego z oprocentowaniem okresowym. -YIELDDISC = YIELDDISC ## Zwraca roczną rentowność zdyskontowanego papieru wartościowego, na przykład bonu skarbowego. -YIELDMAT = YIELDMAT ## Zwraca roczną rentowność papieru wartościowego oprocentowanego przy wykupie. - - -## -## Information functions Funkcje informacyjne -## -CELL = KOMÓRKA ## Zwraca informacje o formacie, położeniu lub zawartości komórki. -ERROR.TYPE = NR.BŁĘDU ## Zwraca liczbę odpowiadającą typowi błędu. -INFO = INFO ## Zwraca informację o aktualnym środowisku pracy. -ISBLANK = CZY.PUSTA ## Zwraca wartość PRAWDA, jeśli wartość jest pusta. -ISERR = CZY.BŁ ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu, z wyjątkiem #N/D!. -ISERROR = CZY.BŁĄD ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu. -ISEVEN = ISEVEN ## Zwraca wartość PRAWDA, jeśli liczba jest parzysta. -ISLOGICAL = CZY.LOGICZNA ## Zwraca wartość PRAWDA, jeśli wartość jest wartością logiczną. -ISNA = CZY.BRAK ## Zwraca wartość PRAWDA, jeśli wartość jest wartością błędu #N/D!. -ISNONTEXT = CZY.NIE.TEKST ## Zwraca wartość PRAWDA, jeśli wartość nie jest tekstem. -ISNUMBER = CZY.LICZBA ## Zwraca wartość PRAWDA, jeśli wartość jest liczbą. -ISODD = ISODD ## Zwraca wartość PRAWDA, jeśli liczba jest nieparzysta. -ISREF = CZY.ADR ## Zwraca wartość PRAWDA, jeśli wartość jest odwołaniem. -ISTEXT = CZY.TEKST ## Zwraca wartość PRAWDA, jeśli wartość jest tekstem. -N = L ## Zwraca wartość przekonwertowaną na postać liczbową. -NA = BRAK ## Zwraca wartość błędu #N/D!. -TYPE = TYP ## Zwraca liczbę wskazującą typ danych wartości. - - -## -## Logical functions Funkcje logiczne -## -AND = ORAZ ## Zwraca wartość PRAWDA, jeśli wszystkie argumenty mają wartość PRAWDA. -FALSE = FAŁSZ ## Zwraca wartość logiczną FAŁSZ. -IF = JEŻELI ## Określa warunek logiczny do sprawdzenia. -IFERROR = JEŻELI.BŁĄD ## Zwraca określoną wartość, jeśli wynikiem obliczenia formuły jest błąd; w przeciwnym przypadku zwraca wynik formuły. -NOT = NIE ## Odwraca wartość logiczną argumentu. -OR = LUB ## Zwraca wartość PRAWDA, jeśli co najmniej jeden z argumentów ma wartość PRAWDA. -TRUE = PRAWDA ## Zwraca wartość logiczną PRAWDA. - - -## -## Lookup and reference functions Funkcje wyszukiwania i odwołań -## -ADDRESS = ADRES ## Zwraca odwołanie do jednej komórki w arkuszu jako wartość tekstową. -AREAS = OBSZARY ## Zwraca liczbę obszarów występujących w odwołaniu. -CHOOSE = WYBIERZ ## Wybiera wartość z listy wartości. -COLUMN = NR.KOLUMNY ## Zwraca numer kolumny z odwołania. -COLUMNS = LICZBA.KOLUMN ## Zwraca liczbę kolumn dla danego odwołania. -HLOOKUP = WYSZUKAJ.POZIOMO ## Przegląda górny wiersz tablicy i zwraca wartość wskazanej komórki. -HYPERLINK = HIPERŁĄCZE ## Tworzy skrót lub skok, który pozwala otwierać dokument przechowywany na serwerze sieciowym, w sieci intranet lub w Internecie. -INDEX = INDEKS ## Używa indeksu do wybierania wartości z odwołania lub tablicy. -INDIRECT = ADR.POŚR ## Zwraca odwołanie określone przez wartość tekstową. -LOOKUP = WYSZUKAJ ## Wyszukuje wartości w wektorze lub tablicy. -MATCH = PODAJ.POZYCJĘ ## Wyszukuje wartości w odwołaniu lub w tablicy. -OFFSET = PRZESUNIĘCIE ## Zwraca adres przesunięty od danego odwołania. -ROW = WIERSZ ## Zwraca numer wiersza odwołania. -ROWS = ILE.WIERSZY ## Zwraca liczbę wierszy dla danego odwołania. -RTD = RTD ## Pobiera dane w czasie rzeczywistym z programu obsługującego automatyzację COM (Automatyzacja: Sposób pracy z obiektami aplikacji pochodzącymi z innej aplikacji lub narzędzia projektowania. Nazywana wcześniej Automatyzacją OLE, Automatyzacja jest standardem przemysłowym i funkcją obiektowego modelu składników (COM, Component Object Model).). -TRANSPOSE = TRANSPONUJ ## Zwraca transponowaną tablicę. -VLOOKUP = WYSZUKAJ.PIONOWO ## Przeszukuje pierwszą kolumnę tablicy i przechodzi wzdłuż wiersza, aby zwrócić wartość komórki. - - -## -## Math and trigonometry functions Funkcje matematyczne i trygonometryczne -## -ABS = MODUŁ.LICZBY ## Zwraca wartość absolutną liczby. -ACOS = ACOS ## Zwraca arcus cosinus liczby. -ACOSH = ACOSH ## Zwraca arcus cosinus hiperboliczny liczby. -ASIN = ASIN ## Zwraca arcus sinus liczby. -ASINH = ASINH ## Zwraca arcus sinus hiperboliczny liczby. -ATAN = ATAN ## Zwraca arcus tangens liczby. -ATAN2 = ATAN2 ## Zwraca arcus tangens liczby na podstawie współrzędnych x i y. -ATANH = ATANH ## Zwraca arcus tangens hiperboliczny liczby. -CEILING = ZAOKR.W.GÓRĘ ## Zaokrągla liczbę do najbliższej liczby całkowitej lub do najbliższej wielokrotności dokładności. -COMBIN = KOMBINACJE ## Zwraca liczbę kombinacji dla danej liczby obiektów. -COS = COS ## Zwraca cosinus liczby. -COSH = COSH ## Zwraca cosinus hiperboliczny liczby. -DEGREES = STOPNIE ## Konwertuje radiany na stopnie. -EVEN = ZAOKR.DO.PARZ ## Zaokrągla liczbę w górę do najbliższej liczby parzystej. -EXP = EXP ## Zwraca wartość liczby e podniesionej do potęgi określonej przez podaną liczbę. -FACT = SILNIA ## Zwraca silnię liczby. -FACTDOUBLE = FACTDOUBLE ## Zwraca podwójną silnię liczby. -FLOOR = ZAOKR.W.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. -GCD = GCD ## Zwraca największy wspólny dzielnik. -INT = ZAOKR.DO.CAŁK ## Zaokrągla liczbę w dół do najbliższej liczby całkowitej. -LCM = LCM ## Zwraca najmniejszą wspólną wielokrotność. -LN = LN ## Zwraca logarytm naturalny podanej liczby. -LOG = LOG ## Zwraca logarytm danej liczby przy zadanej podstawie. -LOG10 = LOG10 ## Zwraca logarytm dziesiętny liczby. -MDETERM = WYZNACZNIK.MACIERZY ## Zwraca wyznacznik macierzy tablicy. -MINVERSE = MACIERZ.ODW ## Zwraca odwrotność macierzy tablicy. -MMULT = MACIERZ.ILOCZYN ## Zwraca iloczyn macierzy dwóch tablic. -MOD = MOD ## Zwraca resztę z dzielenia. -MROUND = MROUND ## Zwraca liczbę zaokrągloną do żądanej wielokrotności. -MULTINOMIAL = MULTINOMIAL ## Zwraca wielomian dla zbioru liczb. -ODD = ZAOKR.DO.NPARZ ## Zaokrągla liczbę w górę do najbliższej liczby nieparzystej. -PI = PI ## Zwraca wartość liczby Pi. -POWER = POTĘGA ## Zwraca liczbę podniesioną do potęgi. -PRODUCT = ILOCZYN ## Mnoży argumenty. -QUOTIENT = QUOTIENT ## Zwraca iloraz (całkowity). -RADIANS = RADIANY ## Konwertuje stopnie na radiany. -RAND = LOS ## Zwraca liczbę pseudolosową z zakresu od 0 do 1. -RANDBETWEEN = RANDBETWEEN ## Zwraca liczbę pseudolosową z zakresu określonego przez podane argumenty. -ROMAN = RZYMSKIE ## Konwertuje liczbę arabską na rzymską jako tekst. -ROUND = ZAOKR ## Zaokrągla liczbę do określonej liczby cyfr. -ROUNDDOWN = ZAOKR.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. -ROUNDUP = ZAOKR.GÓRA ## Zaokrągla liczbę w górę, w kierunku od zera. -SERIESSUM = SERIESSUM ## Zwraca sumę szeregu potęgowego na podstawie wzoru. -SIGN = ZNAK.LICZBY ## Zwraca znak liczby. -SIN = SIN ## Zwraca sinus danego kąta. -SINH = SINH ## Zwraca sinus hiperboliczny liczby. -SQRT = PIERWIASTEK ## Zwraca dodatni pierwiastek kwadratowy. -SQRTPI = SQRTPI ## Zwraca pierwiastek kwadratowy iloczynu (liczba * Pi). -SUBTOTAL = SUMY.POŚREDNIE ## Zwraca sumę częściową listy lub bazy danych. -SUM = SUMA ## Dodaje argumenty. -SUMIF = SUMA.JEŻELI ## Dodaje komórki określone przez podane kryterium. -SUMIFS = SUMA.WARUNKÓW ## Dodaje komórki w zakresie, które spełniają wiele kryteriów. -SUMPRODUCT = SUMA.ILOCZYNÓW ## Zwraca sumę iloczynów odpowiednich elementów tablicy. -SUMSQ = SUMA.KWADRATÓW ## Zwraca sumę kwadratów argumentów. -SUMX2MY2 = SUMA.X2.M.Y2 ## Zwraca sumę różnic kwadratów odpowiednich wartości w dwóch tablicach. -SUMX2PY2 = SUMA.X2.P.Y2 ## Zwraca sumę sum kwadratów odpowiednich wartości w dwóch tablicach. -SUMXMY2 = SUMA.XMY.2 ## Zwraca sumę kwadratów różnic odpowiednich wartości w dwóch tablicach. -TAN = TAN ## Zwraca tangens liczby. -TANH = TANH ## Zwraca tangens hiperboliczny liczby. -TRUNC = LICZBA.CAŁK ## Przycina liczbę do wartości całkowitej. - - -## -## Statistical functions Funkcje statystyczne -## -AVEDEV = ODCH.ŚREDNIE ## Zwraca średnią wartość odchyleń absolutnych punktów danych od ich wartości średniej. -AVERAGE = ŚREDNIA ## Zwraca wartość średnią argumentów. -AVERAGEA = ŚREDNIA.A ## Zwraca wartość średnią argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -AVERAGEIF = ŚREDNIA.JEŻELI ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek w zakresie, które spełniają podane kryteria. -AVERAGEIFS = ŚREDNIA.WARUNKÓW ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek, które spełniają jedno lub więcej kryteriów. -BETADIST = ROZKŁAD.BETA ## Zwraca skumulowaną funkcję gęstości prawdopodobieństwa beta. -BETAINV = ROZKŁAD.BETA.ODW ## Zwraca odwrotność skumulowanej funkcji gęstości prawdopodobieństwa beta. -BINOMDIST = ROZKŁAD.DWUM ## Zwraca pojedynczy składnik dwumianowego rozkładu prawdopodobieństwa. -CHIDIST = ROZKŁAD.CHI ## Zwraca wartość jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. -CHIINV = ROZKŁAD.CHI.ODW ## Zwraca odwrotność wartości jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. -CHITEST = TEST.CHI ## Zwraca test niezależności. -CONFIDENCE = UFNOŚĆ ## Zwraca interwał ufności dla średniej populacji. -CORREL = WSP.KORELACJI ## Zwraca współczynnik korelacji dwóch zbiorów danych. -COUNT = ILE.LICZB ## Zlicza liczby znajdujące się na liście argumentów. -COUNTA = ILE.NIEPUSTYCH ## Zlicza wartości znajdujące się na liście argumentów. -COUNTBLANK = LICZ.PUSTE ## Zwraca liczbę pustych komórek w pewnym zakresie. -COUNTIF = LICZ.JEŻELI ## Zlicza komórki wewnątrz zakresu, które spełniają podane kryteria. -COUNTIFS = LICZ.WARUNKI ## Zlicza komórki wewnątrz zakresu, które spełniają wiele kryteriów. -COVAR = KOWARIANCJA ## Zwraca kowariancję, czyli średnią wartość iloczynów odpowiednich odchyleń. -CRITBINOM = PRÓG.ROZKŁAD.DWUM ## Zwraca najmniejszą wartość, dla której skumulowany rozkład dwumianowy jest mniejszy niż wartość kryterium lub równy jej. -DEVSQ = ODCH.KWADRATOWE ## Zwraca sumę kwadratów odchyleń. -EXPONDIST = ROZKŁAD.EXP ## Zwraca rozkład wykładniczy. -FDIST = ROZKŁAD.F ## Zwraca rozkład prawdopodobieństwa F. -FINV = ROZKŁAD.F.ODW ## Zwraca odwrotność rozkładu prawdopodobieństwa F. -FISHER = ROZKŁAD.FISHER ## Zwraca transformację Fishera. -FISHERINV = ROZKŁAD.FISHER.ODW ## Zwraca odwrotność transformacji Fishera. -FORECAST = REGLINX ## Zwraca wartość trendu liniowego. -FREQUENCY = CZĘSTOŚĆ ## Zwraca rozkład częstotliwości jako tablicę pionową. -FTEST = TEST.F ## Zwraca wynik testu F. -GAMMADIST = ROZKŁAD.GAMMA ## Zwraca rozkład gamma. -GAMMAINV = ROZKŁAD.GAMMA.ODW ## Zwraca odwrotność skumulowanego rozkładu gamma. -GAMMALN = ROZKŁAD.LIN.GAMMA ## Zwraca logarytm naturalny funkcji gamma, Γ(x). -GEOMEAN = ŚREDNIA.GEOMETRYCZNA ## Zwraca średnią geometryczną. -GROWTH = REGEXPW ## Zwraca wartości trendu wykładniczego. -HARMEAN = ŚREDNIA.HARMONICZNA ## Zwraca średnią harmoniczną. -HYPGEOMDIST = ROZKŁAD.HIPERGEOM ## Zwraca rozkład hipergeometryczny. -INTERCEPT = ODCIĘTA ## Zwraca punkt przecięcia osi pionowej z linią regresji liniowej. -KURT = KURTOZA ## Zwraca kurtozę zbioru danych. -LARGE = MAX.K ## Zwraca k-tą największą wartość ze zbioru danych. -LINEST = REGLINP ## Zwraca parametry trendu liniowego. -LOGEST = REGEXPP ## Zwraca parametry trendu wykładniczego. -LOGINV = ROZKŁAD.LOG.ODW ## Zwraca odwrotność rozkładu logarytmu naturalnego. -LOGNORMDIST = ROZKŁAD.LOG ## Zwraca skumulowany rozkład logarytmu naturalnego. -MAX = MAX ## Zwraca maksymalną wartość listy argumentów. -MAXA = MAX.A ## Zwraca maksymalną wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -MEDIAN = MEDIANA ## Zwraca medianę podanych liczb. -MIN = MIN ## Zwraca minimalną wartość listy argumentów. -MINA = MIN.A ## Zwraca najmniejszą wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. -MODE = WYST.NAJCZĘŚCIEJ ## Zwraca wartość najczęściej występującą w zbiorze danych. -NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC ## Zwraca ujemny rozkład dwumianowy. -NORMDIST = ROZKŁAD.NORMALNY ## Zwraca rozkład normalny skumulowany. -NORMINV = ROZKŁAD.NORMALNY.ODW ## Zwraca odwrotność rozkładu normalnego skumulowanego. -NORMSDIST = ROZKŁAD.NORMALNY.S ## Zwraca standardowy rozkład normalny skumulowany. -NORMSINV = ROZKŁAD.NORMALNY.S.ODW ## Zwraca odwrotność standardowego rozkładu normalnego skumulowanego. -PEARSON = PEARSON ## Zwraca współczynnik korelacji momentu iloczynu Pearsona. -PERCENTILE = PERCENTYL ## Wyznacza k-ty percentyl wartości w zakresie. -PERCENTRANK = PROCENT.POZYCJA ## Zwraca procentową pozycję wartości w zbiorze danych. -PERMUT = PERMUTACJE ## Zwraca liczbę permutacji dla danej liczby obiektów. -POISSON = ROZKŁAD.POISSON ## Zwraca rozkład Poissona. -PROB = PRAWDPD ## Zwraca prawdopodobieństwo, że wartości w zakresie leżą pomiędzy dwiema granicami. -QUARTILE = KWARTYL ## Wyznacza kwartyl zbioru danych. -RANK = POZYCJA ## Zwraca pozycję liczby na liście liczb. -RSQ = R.KWADRAT ## Zwraca kwadrat współczynnika korelacji momentu iloczynu Pearsona. -SKEW = SKOŚNOŚĆ ## Zwraca skośność rozkładu. -SLOPE = NACHYLENIE ## Zwraca nachylenie linii regresji liniowej. -SMALL = MIN.K ## Zwraca k-tą najmniejszą wartość ze zbioru danych. -STANDARDIZE = NORMALIZUJ ## Zwraca wartość znormalizowaną. -STDEV = ODCH.STANDARDOWE ## Szacuje odchylenie standardowe na podstawie próbki. -STDEVA = ODCH.STANDARDOWE.A ## Szacuje odchylenie standardowe na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. -STDEVP = ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji. -STDEVPA = ODCH.STANDARD.POPUL.A ## Oblicza odchylenie standardowe na podstawie całej populacji, z uwzględnieniem liczb, teksów i wartości logicznych. -STEYX = REGBŁSTD ## Zwraca błąd standardowy przewidzianej wartości y dla każdej wartości x w regresji. -TDIST = ROZKŁAD.T ## Zwraca rozkład t-Studenta. -TINV = ROZKŁAD.T.ODW ## Zwraca odwrotność rozkładu t-Studenta. -TREND = REGLINW ## Zwraca wartości trendu liniowego. -TRIMMEAN = ŚREDNIA.WEWN ## Zwraca średnią wartość dla wnętrza zbioru danych. -TTEST = TEST.T ## Zwraca prawdopodobieństwo związane z testem t-Studenta. -VAR = WARIANCJA ## Szacuje wariancję na podstawie próbki. -VARA = WARIANCJA.A ## Szacuje wariancję na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. -VARP = WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji. -VARPA = WARIANCJA.POPUL.A ## Oblicza wariancję na podstawie całej populacji, z uwzględnieniem liczb, tekstów i wartości logicznych. -WEIBULL = ROZKŁAD.WEIBULL ## Zwraca rozkład Weibulla. -ZTEST = TEST.Z ## Zwraca wartość jednostronnego prawdopodobieństwa testu z. - - -## -## Text functions Funkcje tekstowe -## -ASC = ASC ## Zamienia litery angielskie lub katakana o pełnej szerokości (dwubajtowe) w ciągu znaków na znaki o szerokości połówkowej (jednobajtowe). -BAHTTEXT = BAHTTEXT ## Konwertuje liczbę na tekst, stosując format walutowy ß (baht). -CHAR = ZNAK ## Zwraca znak o podanym numerze kodu. -CLEAN = OCZYŚĆ ## Usuwa z tekstu wszystkie znaki, które nie mogą być drukowane. -CODE = KOD ## Zwraca kod numeryczny pierwszego znaku w ciągu tekstowym. -CONCATENATE = ZŁĄCZ.TEKSTY ## Łączy kilka oddzielnych tekstów w jeden tekst. -DOLLAR = KWOTA ## Konwertuje liczbę na tekst, stosując format walutowy $ (dolar). -EXACT = PORÓWNAJ ## Sprawdza identyczność dwóch wartości tekstowych. -FIND = ZNAJDŹ ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). -FINDB = ZNAJDŹB ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). -FIXED = ZAOKR.DO.TEKST ## Formatuje liczbę jako tekst przy stałej liczbie miejsc dziesiętnych. -JIS = JIS ## Zmienia litery angielskie lub katakana o szerokości połówkowej (jednobajtowe) w ciągu znaków na znaki o pełnej szerokości (dwubajtowe). -LEFT = LEWY ## Zwraca skrajne lewe znaki z wartości tekstowej. -LEFTB = LEWYB ## Zwraca skrajne lewe znaki z wartości tekstowej. -LEN = DŁ ## Zwraca liczbę znaków ciągu tekstowego. -LENB = DŁ.B ## Zwraca liczbę znaków ciągu tekstowego. -LOWER = LITERY.MAŁE ## Konwertuje wielkie litery tekstu na małe litery. -MID = FRAGMENT.TEKSTU ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. -MIDB = FRAGMENT.TEKSTU.B ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. -PHONETIC = PHONETIC ## Wybiera znaki fonetyczne (furigana) z ciągu tekstowego. -PROPER = Z.WIELKIEJ.LITERY ## Zastępuje pierwszą literę każdego wyrazu tekstu wielką literą. -REPLACE = ZASTĄP ## Zastępuje znaki w tekście. -REPLACEB = ZASTĄP.B ## Zastępuje znaki w tekście. -REPT = POWT ## Powiela tekst daną liczbę razy. -RIGHT = PRAWY ## Zwraca skrajne prawe znaki z wartości tekstowej. -RIGHTB = PRAWYB ## Zwraca skrajne prawe znaki z wartości tekstowej. -SEARCH = SZUKAJ.TEKST ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). -SEARCHB = SZUKAJ.TEKST.B ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). -SUBSTITUTE = PODSTAW ## Podstawia nowy tekst w miejsce poprzedniego tekstu w ciągu tekstowym. -T = T ## Konwertuje argumenty na tekst. -TEXT = TEKST ## Formatuje liczbę i konwertuje ją na tekst. -TRIM = USUŃ.ZBĘDNE.ODSTĘPY ## Usuwa spacje z tekstu. -UPPER = LITERY.WIELKIE ## Konwertuje znaki tekstu na wielkie litery. -VALUE = WARTOŚĆ ## Konwertuje argument tekstowy na liczbę. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funkcje dodatków i automatyzacji +## +GETPIVOTDATA = WEŹDANETABELI ## Zwraca dane przechowywane w raporcie tabeli przestawnej. + + +## +## Cube functions Funkcje modułów +## +CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU ## Zwraca nazwę, właściwość i miarę kluczowego wskaźnika wydajności (KPI) oraz wyświetla nazwę i właściwość w komórce. Wskaźnik KPI jest miarą ilościową, taką jak miesięczny zysk brutto lub kwartalna fluktuacja pracowników, używaną do monitorowania wydajności organizacji. +CUBEMEMBER = ELEMENT.MODUŁU ## Zwraca element lub krotkę z hierarchii modułu. Służy do sprawdzania, czy element lub krotka istnieje w module. +CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU ## Zwraca wartość właściwości elementu w module. Służy do sprawdzania, czy nazwa elementu istnieje w module, i zwracania określonej właściwości dla tego elementu. +CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU ## Zwraca n-ty (albo uszeregowany) element zestawu. Służy do zwracania elementu lub elementów zestawu, na przykład najlepszego sprzedawcy lub 10 najlepszych studentów. +CUBESET = ZESTAW.MODUŁÓW ## Definiuje obliczony zestaw elementów lub krotek, wysyłając wyrażenie zestawu do serwera modułu, który tworzy zestaw i zwraca go do programu Microsoft Office Excel. +CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU ## Zwraca liczbę elementów zestawu. +CUBEVALUE = WARTOŚĆ.MODUŁU ## Zwraca zagregowaną wartość z modułu. + + +## +## Database functions Funkcje baz danych +## +DAVERAGE = BD.ŚREDNIA ## Zwraca wartość średniej wybranych wpisów bazy danych. +DCOUNT = BD.ILE.REKORDÓW ## Zlicza komórki zawierające liczby w bazie danych. +DCOUNTA = BD.ILE.REKORDÓW.A ## Zlicza niepuste komórki w bazie danych. +DGET = BD.POLE ## Wyodrębnia z bazy danych jeden rekord spełniający określone kryteria. +DMAX = BD.MAX ## Zwraca wartość maksymalną z wybranych wpisów bazy danych. +DMIN = BD.MIN ## Zwraca wartość minimalną z wybranych wpisów bazy danych. +DPRODUCT = BD.ILOCZYN ## Mnoży wartości w konkretnym, spełniającym kryteria polu rekordów bazy danych. +DSTDEV = BD.ODCH.STANDARD ## Szacuje odchylenie standardowe na podstawie próbki z wybranych wpisów bazy danych. +DSTDEVP = BD.ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji wybranych wpisów bazy danych. +DSUM = BD.SUMA ## Dodaje liczby w kolumnie pól rekordów bazy danych, które spełniają kryteria. +DVAR = BD.WARIANCJA ## Szacuje wariancję na podstawie próbki z wybranych wpisów bazy danych. +DVARP = BD.WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji wybranych wpisów bazy danych. + + +## +## Date and time functions Funkcje dat, godzin i czasu +## +DATE = DATA ## Zwraca liczbę seryjną dla wybranej daty. +DATEVALUE = DATA.WARTOŚĆ ## Konwertuje datę w formie tekstu na liczbę seryjną. +DAY = DZIEŃ ## Konwertuje liczbę seryjną na dzień miesiąca. +DAYS360 = DNI.360 ## Oblicza liczbę dni między dwiema datami na podstawie roku 360-dniowego. +EDATE = UPŁDNI ## Zwraca liczbę seryjną daty jako wskazaną liczbę miesięcy przed określoną datą początkową lub po niej. +EOMONTH = EOMONTH ## Zwraca liczbę seryjną ostatniego dnia miesiąca przed określoną liczbą miesięcy lub po niej. +HOUR = GODZINA ## Konwertuje liczbę seryjną na godzinę. +MINUTE = MINUTA ## Konwertuje liczbę seryjną na minutę. +MONTH = MIESIĄC ## Konwertuje liczbę seryjną na miesiąc. +NETWORKDAYS = NETWORKDAYS ## Zwraca liczbę pełnych dni roboczych między dwiema datami. +NOW = TERAZ ## Zwraca liczbę seryjną bieżącej daty i godziny. +SECOND = SEKUNDA ## Konwertuje liczbę seryjną na sekundę. +TIME = CZAS ## Zwraca liczbę seryjną określonego czasu. +TIMEVALUE = CZAS.WARTOŚĆ ## Konwertuje czas w formie tekstu na liczbę seryjną. +TODAY = DZIŚ ## Zwraca liczbę seryjną dla daty bieżącej. +WEEKDAY = DZIEŃ.TYG ## Konwertuje liczbę seryjną na dzień tygodnia. +WEEKNUM = WEEKNUM ## Konwertuje liczbę seryjną na liczbę reprezentującą numer tygodnia w roku. +WORKDAY = WORKDAY ## Zwraca liczbę seryjną dla daty przed określoną liczbą dni roboczych lub po niej. +YEAR = ROK ## Konwertuje liczbę seryjną na rok. +YEARFRAC = YEARFRAC ## Zwraca część roku reprezentowaną przez pełną liczbę dni między datą początkową a datą końcową. + + +## +## Engineering functions Funkcje inżynierskie +## +BESSELI = BESSELI ## Zwraca wartość zmodyfikowanej funkcji Bessela In(x). +BESSELJ = BESSELJ ## Zwraca wartość funkcji Bessela Jn(x). +BESSELK = BESSELK ## Zwraca wartość zmodyfikowanej funkcji Bessela Kn(x). +BESSELY = BESSELY ## Zwraca wartość funkcji Bessela Yn(x). +BIN2DEC = BIN2DEC ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci dziesiętnej. +BIN2HEX = BIN2HEX ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci szesnastkowej. +BIN2OCT = BIN2OCT ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci ósemkowej. +COMPLEX = COMPLEX ## Konwertuje część rzeczywistą i urojoną na liczbę zespoloną. +CONVERT = CONVERT ## Konwertuje liczbę z jednego systemu miar na inny. +DEC2BIN = DEC2BIN ## Konwertuje liczbę w postaci dziesiętnej na postać dwójkową. +DEC2HEX = DEC2HEX ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci szesnastkowej. +DEC2OCT = DEC2OCT ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci ósemkowej. +DELTA = DELTA ## Sprawdza, czy dwie wartości są równe. +ERF = ERF ## Zwraca wartość funkcji błędu. +ERFC = ERFC ## Zwraca wartość komplementarnej funkcji błędu. +GESTEP = GESTEP ## Sprawdza, czy liczba jest większa niż wartość progowa. +HEX2BIN = HEX2BIN ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dwójkowej. +HEX2DEC = HEX2DEC ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dziesiętnej. +HEX2OCT = HEX2OCT ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci ósemkowej. +IMABS = IMABS ## Zwraca wartość bezwzględną (moduł) liczby zespolonej. +IMAGINARY = IMAGINARY ## Zwraca wartość części urojonej liczby zespolonej. +IMARGUMENT = IMARGUMENT ## Zwraca wartość argumentu liczby zespolonej, przy czym kąt wyrażony jest w radianach. +IMCONJUGATE = IMCONJUGATE ## Zwraca wartość liczby sprzężonej danej liczby zespolonej. +IMCOS = IMCOS ## Zwraca wartość cosinusa liczby zespolonej. +IMDIV = IMDIV ## Zwraca wartość ilorazu dwóch liczb zespolonych. +IMEXP = IMEXP ## Zwraca postać wykładniczą liczby zespolonej. +IMLN = IMLN ## Zwraca wartość logarytmu naturalnego liczby zespolonej. +IMLOG10 = IMLOG10 ## Zwraca wartość logarytmu dziesiętnego liczby zespolonej. +IMLOG2 = IMLOG2 ## Zwraca wartość logarytmu liczby zespolonej przy podstawie 2. +IMPOWER = IMPOWER ## Zwraca wartość liczby zespolonej podniesionej do potęgi całkowitej. +IMPRODUCT = IMPRODUCT ## Zwraca wartość iloczynu liczb zespolonych. +IMREAL = IMREAL ## Zwraca wartość części rzeczywistej liczby zespolonej. +IMSIN = IMSIN ## Zwraca wartość sinusa liczby zespolonej. +IMSQRT = IMSQRT ## Zwraca wartość pierwiastka kwadratowego z liczby zespolonej. +IMSUB = IMSUB ## Zwraca wartość różnicy dwóch liczb zespolonych. +IMSUM = IMSUM ## Zwraca wartość sumy liczb zespolonych. +OCT2BIN = OCT2BIN ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dwójkowej. +OCT2DEC = OCT2DEC ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dziesiętnej. +OCT2HEX = OCT2HEX ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci szesnastkowej. + + +## +## Financial functions Funkcje finansowe +## +ACCRINT = ACCRINT ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem okresowym. +ACCRINTM = ACCRINTM ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem w terminie wykupu. +AMORDEGRC = AMORDEGRC ## Zwraca amortyzację dla każdego okresu rozliczeniowego z wykorzystaniem współczynnika amortyzacji. +AMORLINC = AMORLINC ## Zwraca amortyzację dla każdego okresu rozliczeniowego. +COUPDAYBS = COUPDAYBS ## Zwraca liczbę dni od początku okresu dywidendy do dnia rozliczeniowego. +COUPDAYS = COUPDAYS ## Zwraca liczbę dni w okresie dywidendy, z uwzględnieniem dnia rozliczeniowego. +COUPDAYSNC = COUPDAYSNC ## Zwraca liczbę dni od dnia rozliczeniowego do daty następnego dnia dywidendy. +COUPNCD = COUPNCD ## Zwraca dzień następnej dywidendy po dniu rozliczeniowym. +COUPNUM = COUPNUM ## Zwraca liczbę dywidend płatnych między dniem rozliczeniowym a dniem wykupu. +COUPPCD = COUPPCD ## Zwraca dzień poprzedniej dywidendy przed dniem rozliczeniowym. +CUMIPMT = CUMIPMT ## Zwraca wartość procentu składanego płatnego między dwoma okresami. +CUMPRINC = CUMPRINC ## Zwraca wartość kapitału skumulowanego spłaty pożyczki między dwoma okresami. +DB = DB ## Zwraca amortyzację środka trwałego w danym okresie metodą degresywną z zastosowaniem stałej bazowej. +DDB = DDB ## Zwraca amortyzację środka trwałego za podany okres metodą degresywną z zastosowaniem podwójnej bazowej lub metodą określoną przez użytkownika. +DISC = DISC ## Zwraca wartość stopy dyskontowej papieru wartościowego. +DOLLARDE = DOLLARDE ## Konwertuje cenę w postaci ułamkowej na cenę wyrażoną w postaci dziesiętnej. +DOLLARFR = DOLLARFR ## Konwertuje cenę wyrażoną w postaci dziesiętnej na cenę wyrażoną w postaci ułamkowej. +DURATION = DURATION ## Zwraca wartość rocznego przychodu z papieru wartościowego o okresowych wypłatach oprocentowania. +EFFECT = EFFECT ## Zwraca wartość efektywnej rocznej stopy procentowej. +FV = FV ## Zwraca przyszłą wartość lokaty. +FVSCHEDULE = FVSCHEDULE ## Zwraca przyszłą wartość kapitału początkowego wraz z szeregiem procentów składanych. +INTRATE = INTRATE ## Zwraca wartość stopy procentowej papieru wartościowego całkowicie ulokowanego. +IPMT = IPMT ## Zwraca wysokość spłaty oprocentowania lokaty za dany okres. +IRR = IRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii przepływów gotówkowych. +ISPMT = ISPMT ## Oblicza wysokość spłaty oprocentowania za dany okres lokaty. +MDURATION = MDURATION ## Zwraca wartość zmodyfikowanego okresu Macauleya dla papieru wartościowego o założonej wartości nominalnej 100 zł. +MIRR = MIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla przypadku, gdy dodatnie i ujemne przepływy gotówkowe mają różne stopy. +NOMINAL = NOMINAL ## Zwraca wysokość nominalnej rocznej stopy procentowej. +NPER = NPER ## Zwraca liczbę okresów dla lokaty. +NPV = NPV ## Zwraca wartość bieżącą netto lokaty na podstawie szeregu okresowych przepływów gotówkowych i stopy dyskontowej. +ODDFPRICE = ODDFPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym pierwszym okresem. +ODDFYIELD = ODDFYIELD ## Zwraca rentowność papieru wartościowego z nietypowym pierwszym okresem. +ODDLPRICE = ODDLPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym ostatnim okresem. +ODDLYIELD = ODDLYIELD ## Zwraca rentowność papieru wartościowego z nietypowym ostatnim okresem. +PMT = PMT ## Zwraca wartość okresowej płatności raty rocznej. +PPMT = PPMT ## Zwraca wysokość spłaty kapitału w przypadku lokaty dla danego okresu. +PRICE = PRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem okresowym. +PRICEDISC = PRICEDISC ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego zdyskontowanego. +PRICEMAT = PRICEMAT ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem w terminie wykupu. +PV = PV ## Zwraca wartość bieżącą lokaty. +RATE = RATE ## Zwraca wysokość stopy procentowej w okresie raty rocznej. +RECEIVED = RECEIVED ## Zwraca wartość kapitału otrzymanego przy wykupie papieru wartościowego całkowicie ulokowanego. +SLN = SLN ## Zwraca amortyzację środka trwałego za jeden okres metodą liniową. +SYD = SYD ## Zwraca amortyzację środka trwałego za dany okres metodą sumy cyfr lat amortyzacji. +TBILLEQ = TBILLEQ ## Zwraca rentowność ekwiwalentu obligacji dla bonu skarbowego. +TBILLPRICE = TBILLPRICE ## Zwraca cenę za 100 zł wartości nominalnej bonu skarbowego. +TBILLYIELD = TBILLYIELD ## Zwraca rentowność bonu skarbowego. +VDB = VDB ## Oblicza amortyzację środka trwałego w danym okresie lub jego części metodą degresywną. +XIRR = XIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. +XNPV = XNPV ## Zwraca wartość bieżącą netto dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. +YIELD = YIELD ## Zwraca rentowność papieru wartościowego z oprocentowaniem okresowym. +YIELDDISC = YIELDDISC ## Zwraca roczną rentowność zdyskontowanego papieru wartościowego, na przykład bonu skarbowego. +YIELDMAT = YIELDMAT ## Zwraca roczną rentowność papieru wartościowego oprocentowanego przy wykupie. + + +## +## Information functions Funkcje informacyjne +## +CELL = KOMÓRKA ## Zwraca informacje o formacie, położeniu lub zawartości komórki. +ERROR.TYPE = NR.BŁĘDU ## Zwraca liczbę odpowiadającą typowi błędu. +INFO = INFO ## Zwraca informację o aktualnym środowisku pracy. +ISBLANK = CZY.PUSTA ## Zwraca wartość PRAWDA, jeśli wartość jest pusta. +ISERR = CZY.BŁ ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu, z wyjątkiem #N/D!. +ISERROR = CZY.BŁĄD ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu. +ISEVEN = ISEVEN ## Zwraca wartość PRAWDA, jeśli liczba jest parzysta. +ISLOGICAL = CZY.LOGICZNA ## Zwraca wartość PRAWDA, jeśli wartość jest wartością logiczną. +ISNA = CZY.BRAK ## Zwraca wartość PRAWDA, jeśli wartość jest wartością błędu #N/D!. +ISNONTEXT = CZY.NIE.TEKST ## Zwraca wartość PRAWDA, jeśli wartość nie jest tekstem. +ISNUMBER = CZY.LICZBA ## Zwraca wartość PRAWDA, jeśli wartość jest liczbą. +ISODD = ISODD ## Zwraca wartość PRAWDA, jeśli liczba jest nieparzysta. +ISREF = CZY.ADR ## Zwraca wartość PRAWDA, jeśli wartość jest odwołaniem. +ISTEXT = CZY.TEKST ## Zwraca wartość PRAWDA, jeśli wartość jest tekstem. +N = L ## Zwraca wartość przekonwertowaną na postać liczbową. +NA = BRAK ## Zwraca wartość błędu #N/D!. +TYPE = TYP ## Zwraca liczbę wskazującą typ danych wartości. + + +## +## Logical functions Funkcje logiczne +## +AND = ORAZ ## Zwraca wartość PRAWDA, jeśli wszystkie argumenty mają wartość PRAWDA. +FALSE = FAŁSZ ## Zwraca wartość logiczną FAŁSZ. +IF = JEŻELI ## Określa warunek logiczny do sprawdzenia. +IFERROR = JEŻELI.BŁĄD ## Zwraca określoną wartość, jeśli wynikiem obliczenia formuły jest błąd; w przeciwnym przypadku zwraca wynik formuły. +NOT = NIE ## Odwraca wartość logiczną argumentu. +OR = LUB ## Zwraca wartość PRAWDA, jeśli co najmniej jeden z argumentów ma wartość PRAWDA. +TRUE = PRAWDA ## Zwraca wartość logiczną PRAWDA. + + +## +## Lookup and reference functions Funkcje wyszukiwania i odwołań +## +ADDRESS = ADRES ## Zwraca odwołanie do jednej komórki w arkuszu jako wartość tekstową. +AREAS = OBSZARY ## Zwraca liczbę obszarów występujących w odwołaniu. +CHOOSE = WYBIERZ ## Wybiera wartość z listy wartości. +COLUMN = NR.KOLUMNY ## Zwraca numer kolumny z odwołania. +COLUMNS = LICZBA.KOLUMN ## Zwraca liczbę kolumn dla danego odwołania. +HLOOKUP = WYSZUKAJ.POZIOMO ## Przegląda górny wiersz tablicy i zwraca wartość wskazanej komórki. +HYPERLINK = HIPERŁĄCZE ## Tworzy skrót lub skok, który pozwala otwierać dokument przechowywany na serwerze sieciowym, w sieci intranet lub w Internecie. +INDEX = INDEKS ## Używa indeksu do wybierania wartości z odwołania lub tablicy. +INDIRECT = ADR.POŚR ## Zwraca odwołanie określone przez wartość tekstową. +LOOKUP = WYSZUKAJ ## Wyszukuje wartości w wektorze lub tablicy. +MATCH = PODAJ.POZYCJĘ ## Wyszukuje wartości w odwołaniu lub w tablicy. +OFFSET = PRZESUNIĘCIE ## Zwraca adres przesunięty od danego odwołania. +ROW = WIERSZ ## Zwraca numer wiersza odwołania. +ROWS = ILE.WIERSZY ## Zwraca liczbę wierszy dla danego odwołania. +RTD = RTD ## Pobiera dane w czasie rzeczywistym z programu obsługującego automatyzację COM (Automatyzacja: Sposób pracy z obiektami aplikacji pochodzącymi z innej aplikacji lub narzędzia projektowania. Nazywana wcześniej Automatyzacją OLE, Automatyzacja jest standardem przemysłowym i funkcją obiektowego modelu składników (COM, Component Object Model).). +TRANSPOSE = TRANSPONUJ ## Zwraca transponowaną tablicę. +VLOOKUP = WYSZUKAJ.PIONOWO ## Przeszukuje pierwszą kolumnę tablicy i przechodzi wzdłuż wiersza, aby zwrócić wartość komórki. + + +## +## Math and trigonometry functions Funkcje matematyczne i trygonometryczne +## +ABS = MODUŁ.LICZBY ## Zwraca wartość absolutną liczby. +ACOS = ACOS ## Zwraca arcus cosinus liczby. +ACOSH = ACOSH ## Zwraca arcus cosinus hiperboliczny liczby. +ASIN = ASIN ## Zwraca arcus sinus liczby. +ASINH = ASINH ## Zwraca arcus sinus hiperboliczny liczby. +ATAN = ATAN ## Zwraca arcus tangens liczby. +ATAN2 = ATAN2 ## Zwraca arcus tangens liczby na podstawie współrzędnych x i y. +ATANH = ATANH ## Zwraca arcus tangens hiperboliczny liczby. +CEILING = ZAOKR.W.GÓRĘ ## Zaokrągla liczbę do najbliższej liczby całkowitej lub do najbliższej wielokrotności dokładności. +COMBIN = KOMBINACJE ## Zwraca liczbę kombinacji dla danej liczby obiektów. +COS = COS ## Zwraca cosinus liczby. +COSH = COSH ## Zwraca cosinus hiperboliczny liczby. +DEGREES = STOPNIE ## Konwertuje radiany na stopnie. +EVEN = ZAOKR.DO.PARZ ## Zaokrągla liczbę w górę do najbliższej liczby parzystej. +EXP = EXP ## Zwraca wartość liczby e podniesionej do potęgi określonej przez podaną liczbę. +FACT = SILNIA ## Zwraca silnię liczby. +FACTDOUBLE = FACTDOUBLE ## Zwraca podwójną silnię liczby. +FLOOR = ZAOKR.W.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. +GCD = GCD ## Zwraca największy wspólny dzielnik. +INT = ZAOKR.DO.CAŁK ## Zaokrągla liczbę w dół do najbliższej liczby całkowitej. +LCM = LCM ## Zwraca najmniejszą wspólną wielokrotność. +LN = LN ## Zwraca logarytm naturalny podanej liczby. +LOG = LOG ## Zwraca logarytm danej liczby przy zadanej podstawie. +LOG10 = LOG10 ## Zwraca logarytm dziesiętny liczby. +MDETERM = WYZNACZNIK.MACIERZY ## Zwraca wyznacznik macierzy tablicy. +MINVERSE = MACIERZ.ODW ## Zwraca odwrotność macierzy tablicy. +MMULT = MACIERZ.ILOCZYN ## Zwraca iloczyn macierzy dwóch tablic. +MOD = MOD ## Zwraca resztę z dzielenia. +MROUND = MROUND ## Zwraca liczbę zaokrągloną do żądanej wielokrotności. +MULTINOMIAL = MULTINOMIAL ## Zwraca wielomian dla zbioru liczb. +ODD = ZAOKR.DO.NPARZ ## Zaokrągla liczbę w górę do najbliższej liczby nieparzystej. +PI = PI ## Zwraca wartość liczby Pi. +POWER = POTĘGA ## Zwraca liczbę podniesioną do potęgi. +PRODUCT = ILOCZYN ## Mnoży argumenty. +QUOTIENT = QUOTIENT ## Zwraca iloraz (całkowity). +RADIANS = RADIANY ## Konwertuje stopnie na radiany. +RAND = LOS ## Zwraca liczbę pseudolosową z zakresu od 0 do 1. +RANDBETWEEN = RANDBETWEEN ## Zwraca liczbę pseudolosową z zakresu określonego przez podane argumenty. +ROMAN = RZYMSKIE ## Konwertuje liczbę arabską na rzymską jako tekst. +ROUND = ZAOKR ## Zaokrągla liczbę do określonej liczby cyfr. +ROUNDDOWN = ZAOKR.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. +ROUNDUP = ZAOKR.GÓRA ## Zaokrągla liczbę w górę, w kierunku od zera. +SERIESSUM = SERIESSUM ## Zwraca sumę szeregu potęgowego na podstawie wzoru. +SIGN = ZNAK.LICZBY ## Zwraca znak liczby. +SIN = SIN ## Zwraca sinus danego kąta. +SINH = SINH ## Zwraca sinus hiperboliczny liczby. +SQRT = PIERWIASTEK ## Zwraca dodatni pierwiastek kwadratowy. +SQRTPI = SQRTPI ## Zwraca pierwiastek kwadratowy iloczynu (liczba * Pi). +SUBTOTAL = SUMY.POŚREDNIE ## Zwraca sumę częściową listy lub bazy danych. +SUM = SUMA ## Dodaje argumenty. +SUMIF = SUMA.JEŻELI ## Dodaje komórki określone przez podane kryterium. +SUMIFS = SUMA.WARUNKÓW ## Dodaje komórki w zakresie, które spełniają wiele kryteriów. +SUMPRODUCT = SUMA.ILOCZYNÓW ## Zwraca sumę iloczynów odpowiednich elementów tablicy. +SUMSQ = SUMA.KWADRATÓW ## Zwraca sumę kwadratów argumentów. +SUMX2MY2 = SUMA.X2.M.Y2 ## Zwraca sumę różnic kwadratów odpowiednich wartości w dwóch tablicach. +SUMX2PY2 = SUMA.X2.P.Y2 ## Zwraca sumę sum kwadratów odpowiednich wartości w dwóch tablicach. +SUMXMY2 = SUMA.XMY.2 ## Zwraca sumę kwadratów różnic odpowiednich wartości w dwóch tablicach. +TAN = TAN ## Zwraca tangens liczby. +TANH = TANH ## Zwraca tangens hiperboliczny liczby. +TRUNC = LICZBA.CAŁK ## Przycina liczbę do wartości całkowitej. + + +## +## Statistical functions Funkcje statystyczne +## +AVEDEV = ODCH.ŚREDNIE ## Zwraca średnią wartość odchyleń absolutnych punktów danych od ich wartości średniej. +AVERAGE = ŚREDNIA ## Zwraca wartość średnią argumentów. +AVERAGEA = ŚREDNIA.A ## Zwraca wartość średnią argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +AVERAGEIF = ŚREDNIA.JEŻELI ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek w zakresie, które spełniają podane kryteria. +AVERAGEIFS = ŚREDNIA.WARUNKÓW ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek, które spełniają jedno lub więcej kryteriów. +BETADIST = ROZKŁAD.BETA ## Zwraca skumulowaną funkcję gęstości prawdopodobieństwa beta. +BETAINV = ROZKŁAD.BETA.ODW ## Zwraca odwrotność skumulowanej funkcji gęstości prawdopodobieństwa beta. +BINOMDIST = ROZKŁAD.DWUM ## Zwraca pojedynczy składnik dwumianowego rozkładu prawdopodobieństwa. +CHIDIST = ROZKŁAD.CHI ## Zwraca wartość jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. +CHIINV = ROZKŁAD.CHI.ODW ## Zwraca odwrotność wartości jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. +CHITEST = TEST.CHI ## Zwraca test niezależności. +CONFIDENCE = UFNOŚĆ ## Zwraca interwał ufności dla średniej populacji. +CORREL = WSP.KORELACJI ## Zwraca współczynnik korelacji dwóch zbiorów danych. +COUNT = ILE.LICZB ## Zlicza liczby znajdujące się na liście argumentów. +COUNTA = ILE.NIEPUSTYCH ## Zlicza wartości znajdujące się na liście argumentów. +COUNTBLANK = LICZ.PUSTE ## Zwraca liczbę pustych komórek w pewnym zakresie. +COUNTIF = LICZ.JEŻELI ## Zlicza komórki wewnątrz zakresu, które spełniają podane kryteria. +COUNTIFS = LICZ.WARUNKI ## Zlicza komórki wewnątrz zakresu, które spełniają wiele kryteriów. +COVAR = KOWARIANCJA ## Zwraca kowariancję, czyli średnią wartość iloczynów odpowiednich odchyleń. +CRITBINOM = PRÓG.ROZKŁAD.DWUM ## Zwraca najmniejszą wartość, dla której skumulowany rozkład dwumianowy jest mniejszy niż wartość kryterium lub równy jej. +DEVSQ = ODCH.KWADRATOWE ## Zwraca sumę kwadratów odchyleń. +EXPONDIST = ROZKŁAD.EXP ## Zwraca rozkład wykładniczy. +FDIST = ROZKŁAD.F ## Zwraca rozkład prawdopodobieństwa F. +FINV = ROZKŁAD.F.ODW ## Zwraca odwrotność rozkładu prawdopodobieństwa F. +FISHER = ROZKŁAD.FISHER ## Zwraca transformację Fishera. +FISHERINV = ROZKŁAD.FISHER.ODW ## Zwraca odwrotność transformacji Fishera. +FORECAST = REGLINX ## Zwraca wartość trendu liniowego. +FREQUENCY = CZĘSTOŚĆ ## Zwraca rozkład częstotliwości jako tablicę pionową. +FTEST = TEST.F ## Zwraca wynik testu F. +GAMMADIST = ROZKŁAD.GAMMA ## Zwraca rozkład gamma. +GAMMAINV = ROZKŁAD.GAMMA.ODW ## Zwraca odwrotność skumulowanego rozkładu gamma. +GAMMALN = ROZKŁAD.LIN.GAMMA ## Zwraca logarytm naturalny funkcji gamma, Γ(x). +GEOMEAN = ŚREDNIA.GEOMETRYCZNA ## Zwraca średnią geometryczną. +GROWTH = REGEXPW ## Zwraca wartości trendu wykładniczego. +HARMEAN = ŚREDNIA.HARMONICZNA ## Zwraca średnią harmoniczną. +HYPGEOMDIST = ROZKŁAD.HIPERGEOM ## Zwraca rozkład hipergeometryczny. +INTERCEPT = ODCIĘTA ## Zwraca punkt przecięcia osi pionowej z linią regresji liniowej. +KURT = KURTOZA ## Zwraca kurtozę zbioru danych. +LARGE = MAX.K ## Zwraca k-tą największą wartość ze zbioru danych. +LINEST = REGLINP ## Zwraca parametry trendu liniowego. +LOGEST = REGEXPP ## Zwraca parametry trendu wykładniczego. +LOGINV = ROZKŁAD.LOG.ODW ## Zwraca odwrotność rozkładu logarytmu naturalnego. +LOGNORMDIST = ROZKŁAD.LOG ## Zwraca skumulowany rozkład logarytmu naturalnego. +MAX = MAX ## Zwraca maksymalną wartość listy argumentów. +MAXA = MAX.A ## Zwraca maksymalną wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +MEDIAN = MEDIANA ## Zwraca medianę podanych liczb. +MIN = MIN ## Zwraca minimalną wartość listy argumentów. +MINA = MIN.A ## Zwraca najmniejszą wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +MODE = WYST.NAJCZĘŚCIEJ ## Zwraca wartość najczęściej występującą w zbiorze danych. +NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC ## Zwraca ujemny rozkład dwumianowy. +NORMDIST = ROZKŁAD.NORMALNY ## Zwraca rozkład normalny skumulowany. +NORMINV = ROZKŁAD.NORMALNY.ODW ## Zwraca odwrotność rozkładu normalnego skumulowanego. +NORMSDIST = ROZKŁAD.NORMALNY.S ## Zwraca standardowy rozkład normalny skumulowany. +NORMSINV = ROZKŁAD.NORMALNY.S.ODW ## Zwraca odwrotność standardowego rozkładu normalnego skumulowanego. +PEARSON = PEARSON ## Zwraca współczynnik korelacji momentu iloczynu Pearsona. +PERCENTILE = PERCENTYL ## Wyznacza k-ty percentyl wartości w zakresie. +PERCENTRANK = PROCENT.POZYCJA ## Zwraca procentową pozycję wartości w zbiorze danych. +PERMUT = PERMUTACJE ## Zwraca liczbę permutacji dla danej liczby obiektów. +POISSON = ROZKŁAD.POISSON ## Zwraca rozkład Poissona. +PROB = PRAWDPD ## Zwraca prawdopodobieństwo, że wartości w zakresie leżą pomiędzy dwiema granicami. +QUARTILE = KWARTYL ## Wyznacza kwartyl zbioru danych. +RANK = POZYCJA ## Zwraca pozycję liczby na liście liczb. +RSQ = R.KWADRAT ## Zwraca kwadrat współczynnika korelacji momentu iloczynu Pearsona. +SKEW = SKOŚNOŚĆ ## Zwraca skośność rozkładu. +SLOPE = NACHYLENIE ## Zwraca nachylenie linii regresji liniowej. +SMALL = MIN.K ## Zwraca k-tą najmniejszą wartość ze zbioru danych. +STANDARDIZE = NORMALIZUJ ## Zwraca wartość znormalizowaną. +STDEV = ODCH.STANDARDOWE ## Szacuje odchylenie standardowe na podstawie próbki. +STDEVA = ODCH.STANDARDOWE.A ## Szacuje odchylenie standardowe na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. +STDEVP = ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji. +STDEVPA = ODCH.STANDARD.POPUL.A ## Oblicza odchylenie standardowe na podstawie całej populacji, z uwzględnieniem liczb, teksów i wartości logicznych. +STEYX = REGBŁSTD ## Zwraca błąd standardowy przewidzianej wartości y dla każdej wartości x w regresji. +TDIST = ROZKŁAD.T ## Zwraca rozkład t-Studenta. +TINV = ROZKŁAD.T.ODW ## Zwraca odwrotność rozkładu t-Studenta. +TREND = REGLINW ## Zwraca wartości trendu liniowego. +TRIMMEAN = ŚREDNIA.WEWN ## Zwraca średnią wartość dla wnętrza zbioru danych. +TTEST = TEST.T ## Zwraca prawdopodobieństwo związane z testem t-Studenta. +VAR = WARIANCJA ## Szacuje wariancję na podstawie próbki. +VARA = WARIANCJA.A ## Szacuje wariancję na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. +VARP = WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji. +VARPA = WARIANCJA.POPUL.A ## Oblicza wariancję na podstawie całej populacji, z uwzględnieniem liczb, tekstów i wartości logicznych. +WEIBULL = ROZKŁAD.WEIBULL ## Zwraca rozkład Weibulla. +ZTEST = TEST.Z ## Zwraca wartość jednostronnego prawdopodobieństwa testu z. + + +## +## Text functions Funkcje tekstowe +## +ASC = ASC ## Zamienia litery angielskie lub katakana o pełnej szerokości (dwubajtowe) w ciągu znaków na znaki o szerokości połówkowej (jednobajtowe). +BAHTTEXT = BAHTTEXT ## Konwertuje liczbę na tekst, stosując format walutowy ß (baht). +CHAR = ZNAK ## Zwraca znak o podanym numerze kodu. +CLEAN = OCZYŚĆ ## Usuwa z tekstu wszystkie znaki, które nie mogą być drukowane. +CODE = KOD ## Zwraca kod numeryczny pierwszego znaku w ciągu tekstowym. +CONCATENATE = ZŁĄCZ.TEKSTY ## Łączy kilka oddzielnych tekstów w jeden tekst. +DOLLAR = KWOTA ## Konwertuje liczbę na tekst, stosując format walutowy $ (dolar). +EXACT = PORÓWNAJ ## Sprawdza identyczność dwóch wartości tekstowych. +FIND = ZNAJDŹ ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). +FINDB = ZNAJDŹB ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). +FIXED = ZAOKR.DO.TEKST ## Formatuje liczbę jako tekst przy stałej liczbie miejsc dziesiętnych. +JIS = JIS ## Zmienia litery angielskie lub katakana o szerokości połówkowej (jednobajtowe) w ciągu znaków na znaki o pełnej szerokości (dwubajtowe). +LEFT = LEWY ## Zwraca skrajne lewe znaki z wartości tekstowej. +LEFTB = LEWYB ## Zwraca skrajne lewe znaki z wartości tekstowej. +LEN = DŁ ## Zwraca liczbę znaków ciągu tekstowego. +LENB = DŁ.B ## Zwraca liczbę znaków ciągu tekstowego. +LOWER = LITERY.MAŁE ## Konwertuje wielkie litery tekstu na małe litery. +MID = FRAGMENT.TEKSTU ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. +MIDB = FRAGMENT.TEKSTU.B ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. +PHONETIC = PHONETIC ## Wybiera znaki fonetyczne (furigana) z ciągu tekstowego. +PROPER = Z.WIELKIEJ.LITERY ## Zastępuje pierwszą literę każdego wyrazu tekstu wielką literą. +REPLACE = ZASTĄP ## Zastępuje znaki w tekście. +REPLACEB = ZASTĄP.B ## Zastępuje znaki w tekście. +REPT = POWT ## Powiela tekst daną liczbę razy. +RIGHT = PRAWY ## Zwraca skrajne prawe znaki z wartości tekstowej. +RIGHTB = PRAWYB ## Zwraca skrajne prawe znaki z wartości tekstowej. +SEARCH = SZUKAJ.TEKST ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). +SEARCHB = SZUKAJ.TEKST.B ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). +SUBSTITUTE = PODSTAW ## Podstawia nowy tekst w miejsce poprzedniego tekstu w ciągu tekstowym. +T = T ## Konwertuje argumenty na tekst. +TEXT = TEKST ## Formatuje liczbę i konwertuje ją na tekst. +TRIM = USUŃ.ZBĘDNE.ODSTĘPY ## Usuwa spacje z tekstu. +UPPER = LITERY.WIELKIE ## Konwertuje znaki tekstu na wielkie litery. +VALUE = WARTOŚĆ ## Konwertuje argument tekstowy na liczbę. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/ru/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/ru/functions index 5ff6d4fbfe9..324c3df2a81 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/ru/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/ru/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from information provided by web-junior (http://www.web-junior.net/) -## -## - - -## -## Add-in and Automation functions Функции надстроек и автоматизации -## -GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы. - - -## -## Cube functions Функции Куб -## -CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации. -CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе. -CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента. -CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов. -CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel. -CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества. -CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба. - - -## -## Database functions Функции для работы с базами данных -## -DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных. -DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных. -DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных. -DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию. -DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных. -DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных. -DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию. -DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных. -DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных -DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию. -DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных -DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных - - -## -## Date and time functions Функции даты и времени -## -DATE = ДАТА ## Возвращает заданную дату в числовом формате. -DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат. -DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца. -DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года. -EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты. -EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев. -HOUR = ЧАС ## Преобразует дату в числовом формате в часы. -MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты. -MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы. -NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами. -NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате. -SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды. -TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате. -TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат. -TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате. -WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели. -WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата. -WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней. -YEAR = ГОД ## Преобразует дату в числовом формате в год. -YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами. - - -## -## Engineering functions Инженерные функции -## -BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x). -BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x). -BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x). -BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x). -BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное. -BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное. -BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное. -COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число. -CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую. -DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное. -DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное. -DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное. -DELTA = ДЕЛЬТА ## Проверяет равенство двух значений. -ERF = ФОШ ## Возвращает функцию ошибки. -ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки. -GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения. -HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное. -HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное. -HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное. -IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа. -IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа. -IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах. -IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число. -IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа. -IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел. -IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа. -IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа. -IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа. -IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа. -IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень. -IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел. -IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа. -IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа. -IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа. -IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел. -IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел. -OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное. -OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное. -OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное. - - -## -## Financial functions Финансовые функции -## -ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов. -ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения. -AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации. -AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода. -COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения. -COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения. -COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона. -COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения. -COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу. -COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения. -CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами. -CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами. -DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка. -DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод. -DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг. -DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом. -DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби. -DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам. -EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки. -FV = БС ## Возвращает будущую стоимость инвестиции. -FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов. -INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг. -IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период. -IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств. -ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции. -MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей. -MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки. -NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку. -NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада. -NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования. -ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом. -ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом. -ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом. -ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом. -PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета. -PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период. -PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов. -PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка. -PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения. -PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции. -RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период. -RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг. -SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период. -SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел. -TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку. -TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека. -TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку. -VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса. -XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер. -XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими. -YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов. -YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки). -YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения. - - -## -## Information functions Информационные функции -## -CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки. -ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки. -INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде. -ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку. -ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д. -ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки. -ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом. -ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение. -ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д. -ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом. -ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число. -ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом. -ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой. -ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом. -N = Ч ## Возвращает значение, преобразованное в число. -NA = НД ## Возвращает значение ошибки #Н/Д. -TYPE = ТИП ## Возвращает число, обозначающее тип данных значения. - - -## -## Logical functions Логические функции -## -AND = И ## Renvoie VRAI si tous ses arguments sont VRAI. -FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ. -IF = ЕСЛИ ## Выполняет проверку условия. -IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления. -NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное. -OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. -TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА. - - -## -## Lookup and reference functions Функции ссылки и поиска -## -ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста. -AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке. -CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу. -COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка. -COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке. -HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки -HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете. -INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива. -INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением. -LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве. -MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве. -OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки. -ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой. -ROWS = ЧСТРОК ## Возвращает количество строк в ссылке. -RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).). -TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив. -VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце. - - -## -## Math and trigonometry functions Математические и тригонометрические функции -## -ABS = ABS ## Возвращает модуль (абсолютную величину) числа. -ACOS = ACOS ## Возвращает арккосинус числа. -ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа. -ASIN = ASIN ## Возвращает арксинус числа. -ASINH = ASINH ## Возвращает гиперболический арксинус числа. -ATAN = ATAN ## Возвращает арктангенс числа. -ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y. -ATANH = ATANH ## Возвращает гиперболический арктангенс числа. -CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению. -COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов. -COS = COS ## Возвращает косинус числа. -COSH = COSH ## Возвращает гиперболический косинус числа. -DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы. -EVEN = ЧЁТН ## Округляет число до ближайшего четного целого. -EXP = EXP ## Возвращает число e, возведенное в указанную степень. -FACT = ФАКТР ## Возвращает факториал числа. -FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа. -FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. -GCD = НОД ## Возвращает наибольший общий делитель. -INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого. -LCM = НОК ## Возвращает наименьшее общее кратное. -LN = LN ## Возвращает натуральный логарифм числа. -LOG = LOG ## Возвращает логарифм числа по заданному основанию. -LOG10 = LOG10 ## Возвращает десятичный логарифм числа. -MDETERM = МОПРЕД ## Возвращает определитель матрицы массива. -MINVERSE = МОБР ## Возвращает обратную матрицу массива. -MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов. -MOD = ОСТАТ ## Возвращает остаток от деления. -MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью. -MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел. -ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого. -PI = ПИ ## Возвращает число пи. -POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень. -PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов. -QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении. -RADIANS = РАДИАНЫ ## Преобразует градусы в радианы. -RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1. -RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами. -ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста. -ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов. -ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. -ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения. -SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле. -SIGN = ЗНАК ## Возвращает знак числа. -SIN = SIN ## Возвращает синус заданного угла. -SINH = SINH ## Возвращает гиперболический синус числа. -SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня. -SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ). -SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных. -SUM = СУММ ## Суммирует аргументы. -SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию. -SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям. -SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов. -SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов. -SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах. -SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов. -SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах. -TAN = TAN ## Возвращает тангенс числа. -TANH = TANH ## Возвращает гиперболический тангенс числа. -TRUNC = ОТБР ## Отбрасывает дробную часть числа. - - -## -## Statistical functions Статистические функции -## -AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего. -AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов. -AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения. -AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию. -AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям. -BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения. -BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения. -BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения. -CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат. -CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат. -CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость. -CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности. -CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных. -COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов. -COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов. -COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне -COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию -COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям. -COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений -CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию. -DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений. -EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение. -FDIST = FРАСП ## Возвращает F-распределение вероятности. -FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности. -FISHER = ФИШЕР ## Возвращает преобразование Фишера. -FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера. -FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда. -FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива. -FTEST = ФТЕСТ ## Возвращает результат F-теста. -GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение. -GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение. -GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x). -GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое. -GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом. -HARMEAN = СРГАРМ ## Возвращает среднее гармоническое. -HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение. -INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии. -KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных. -LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных. -LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда. -LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда. -LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение. -LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение. -MAX = МАКС ## Возвращает наибольшее значение в списке аргументов. -MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения. -MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел. -MIN = МИН ## Возвращает наименьшее значение в списке аргументов. -MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения. -MODE = МОДА ## Возвращает значение моды множества данных. -NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение. -NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения. -NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение. -NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение. -NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения. -PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона. -PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона. -PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных. -PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов. -POISSON = ПУАССОН ## Возвращает распределение Пуассона. -PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов. -QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных. -RANK = РАНГ ## Возвращает ранг числа в списке чисел. -RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона. -SKEW = СКОС ## Возвращает асимметрию распределения. -SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии. -SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных. -STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение. -STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке. -STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения. -STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности. -STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения. -STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии. -TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента. -TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента. -TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом. -TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных. -TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента. -VAR = ДИСП ## Оценивает дисперсию по выборке. -VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения. -VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности. -VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения. -WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла. -ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста. - - -## -## Text functions Текстовые функции -## -ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые). -BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ). -CHAR = СИМВОЛ ## Возвращает знак с заданным кодом. -CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста. -CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке. -CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один. -DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат. -EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений. -FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). -FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). -FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков. -JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые). -LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения. -LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения. -LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке. -LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке. -LOWER = СТРОЧН ## Преобразует все буквы текста в строчные. -MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. -MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. -PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки. -PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную. -REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте. -REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте. -REPT = ПОВТОР ## Повторяет текст заданное число раз. -RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки. -RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки. -SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра). -SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра). -SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым. -T = Т ## Преобразует аргументы в текст. -TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст. -TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы. -UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные. -VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from information provided by web-junior (http://www.web-junior.net/) +## +## + + +## +## Add-in and Automation functions Функции надстроек и автоматизации +## +GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы. + + +## +## Cube functions Функции Куб +## +CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации. +CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе. +CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента. +CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов. +CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel. +CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества. +CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба. + + +## +## Database functions Функции для работы с базами данных +## +DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных. +DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных. +DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных. +DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию. +DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных. +DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных. +DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию. +DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных. +DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных +DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию. +DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных +DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных + + +## +## Date and time functions Функции даты и времени +## +DATE = ДАТА ## Возвращает заданную дату в числовом формате. +DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат. +DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца. +DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года. +EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты. +EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев. +HOUR = ЧАС ## Преобразует дату в числовом формате в часы. +MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты. +MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы. +NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами. +NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате. +SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды. +TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате. +TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат. +TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате. +WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели. +WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата. +WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней. +YEAR = ГОД ## Преобразует дату в числовом формате в год. +YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами. + + +## +## Engineering functions Инженерные функции +## +BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x). +BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x). +BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x). +BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x). +BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное. +BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное. +BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное. +COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число. +CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую. +DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное. +DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное. +DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное. +DELTA = ДЕЛЬТА ## Проверяет равенство двух значений. +ERF = ФОШ ## Возвращает функцию ошибки. +ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки. +GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения. +HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное. +HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное. +HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное. +IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа. +IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа. +IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах. +IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число. +IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа. +IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел. +IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа. +IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа. +IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа. +IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа. +IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень. +IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел. +IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа. +IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа. +IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа. +IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел. +IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел. +OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное. +OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное. +OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное. + + +## +## Financial functions Финансовые функции +## +ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов. +ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения. +AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации. +AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода. +COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения. +COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения. +COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона. +COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения. +COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу. +COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения. +CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами. +CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами. +DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка. +DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод. +DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг. +DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом. +DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби. +DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам. +EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки. +FV = БС ## Возвращает будущую стоимость инвестиции. +FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов. +INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг. +IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период. +IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств. +ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции. +MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей. +MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки. +NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку. +NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада. +NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования. +ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом. +ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом. +ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом. +ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом. +PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета. +PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период. +PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов. +PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка. +PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения. +PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции. +RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период. +RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг. +SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период. +SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел. +TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку. +TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека. +TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку. +VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса. +XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер. +XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими. +YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов. +YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки). +YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения. + + +## +## Information functions Информационные функции +## +CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки. +ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки. +INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде. +ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку. +ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д. +ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки. +ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом. +ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение. +ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д. +ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом. +ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число. +ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом. +ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой. +ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом. +N = Ч ## Возвращает значение, преобразованное в число. +NA = НД ## Возвращает значение ошибки #Н/Д. +TYPE = ТИП ## Возвращает число, обозначающее тип данных значения. + + +## +## Logical functions Логические функции +## +AND = И ## Renvoie VRAI si tous ses arguments sont VRAI. +FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ. +IF = ЕСЛИ ## Выполняет проверку условия. +IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления. +NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное. +OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. +TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА. + + +## +## Lookup and reference functions Функции ссылки и поиска +## +ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста. +AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке. +CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу. +COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка. +COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке. +HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки +HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете. +INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива. +INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением. +LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве. +MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве. +OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки. +ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой. +ROWS = ЧСТРОК ## Возвращает количество строк в ссылке. +RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).). +TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив. +VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце. + + +## +## Math and trigonometry functions Математические и тригонометрические функции +## +ABS = ABS ## Возвращает модуль (абсолютную величину) числа. +ACOS = ACOS ## Возвращает арккосинус числа. +ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа. +ASIN = ASIN ## Возвращает арксинус числа. +ASINH = ASINH ## Возвращает гиперболический арксинус числа. +ATAN = ATAN ## Возвращает арктангенс числа. +ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y. +ATANH = ATANH ## Возвращает гиперболический арктангенс числа. +CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению. +COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов. +COS = COS ## Возвращает косинус числа. +COSH = COSH ## Возвращает гиперболический косинус числа. +DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы. +EVEN = ЧЁТН ## Округляет число до ближайшего четного целого. +EXP = EXP ## Возвращает число e, возведенное в указанную степень. +FACT = ФАКТР ## Возвращает факториал числа. +FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа. +FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. +GCD = НОД ## Возвращает наибольший общий делитель. +INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого. +LCM = НОК ## Возвращает наименьшее общее кратное. +LN = LN ## Возвращает натуральный логарифм числа. +LOG = LOG ## Возвращает логарифм числа по заданному основанию. +LOG10 = LOG10 ## Возвращает десятичный логарифм числа. +MDETERM = МОПРЕД ## Возвращает определитель матрицы массива. +MINVERSE = МОБР ## Возвращает обратную матрицу массива. +MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов. +MOD = ОСТАТ ## Возвращает остаток от деления. +MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью. +MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел. +ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого. +PI = ПИ ## Возвращает число пи. +POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень. +PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов. +QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении. +RADIANS = РАДИАНЫ ## Преобразует градусы в радианы. +RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1. +RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами. +ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста. +ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов. +ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. +ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения. +SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле. +SIGN = ЗНАК ## Возвращает знак числа. +SIN = SIN ## Возвращает синус заданного угла. +SINH = SINH ## Возвращает гиперболический синус числа. +SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня. +SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ). +SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных. +SUM = СУММ ## Суммирует аргументы. +SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию. +SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям. +SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов. +SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов. +SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах. +SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов. +SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах. +TAN = TAN ## Возвращает тангенс числа. +TANH = TANH ## Возвращает гиперболический тангенс числа. +TRUNC = ОТБР ## Отбрасывает дробную часть числа. + + +## +## Statistical functions Статистические функции +## +AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего. +AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов. +AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения. +AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию. +AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям. +BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения. +BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения. +BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения. +CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат. +CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат. +CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость. +CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности. +CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных. +COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов. +COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов. +COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне +COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию +COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям. +COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений +CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию. +DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений. +EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение. +FDIST = FРАСП ## Возвращает F-распределение вероятности. +FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности. +FISHER = ФИШЕР ## Возвращает преобразование Фишера. +FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера. +FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда. +FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива. +FTEST = ФТЕСТ ## Возвращает результат F-теста. +GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение. +GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение. +GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x). +GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое. +GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом. +HARMEAN = СРГАРМ ## Возвращает среднее гармоническое. +HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение. +INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии. +KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных. +LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных. +LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда. +LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда. +LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение. +LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение. +MAX = МАКС ## Возвращает наибольшее значение в списке аргументов. +MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения. +MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел. +MIN = МИН ## Возвращает наименьшее значение в списке аргументов. +MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения. +MODE = МОДА ## Возвращает значение моды множества данных. +NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение. +NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения. +NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение. +NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение. +NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения. +PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона. +PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона. +PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных. +PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов. +POISSON = ПУАССОН ## Возвращает распределение Пуассона. +PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов. +QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных. +RANK = РАНГ ## Возвращает ранг числа в списке чисел. +RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона. +SKEW = СКОС ## Возвращает асимметрию распределения. +SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии. +SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных. +STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение. +STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке. +STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения. +STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности. +STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения. +STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии. +TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента. +TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента. +TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом. +TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных. +TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента. +VAR = ДИСП ## Оценивает дисперсию по выборке. +VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения. +VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности. +VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения. +WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла. +ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста. + + +## +## Text functions Текстовые функции +## +ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые). +BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ). +CHAR = СИМВОЛ ## Возвращает знак с заданным кодом. +CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста. +CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке. +CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один. +DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат. +EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений. +FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). +FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). +FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков. +JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые). +LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения. +LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения. +LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке. +LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке. +LOWER = СТРОЧН ## Преобразует все буквы текста в строчные. +MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. +MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. +PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки. +PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную. +REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте. +REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте. +REPT = ПОВТОР ## Повторяет текст заданное число раз. +RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки. +RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки. +SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра). +SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра). +SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым. +T = Т ## Преобразует аргументы в текст. +TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст. +TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы. +UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные. +VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число. diff --git a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/tr/functions b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/tr/functions index 45d7df1fecc..79645214714 100644 --- a/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/tr/functions +++ b/htdocs/includes/phpoffice/phpexcel/Classes/PHPExcel/locale/tr/functions @@ -1,438 +1,438 @@ -## -## PHPExcel -## -## Copyright (c) 2006 - 2013 PHPExcel -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library 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 -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## @category PHPExcel -## @package PHPExcel_Calculation -## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) -## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL -## @version ##VERSION##, ##DATE## -## -## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ -## -## - - -## -## Add-in and Automation functions Eklenti ve Otomasyon fonksiyonları -## -GETPIVOTDATA = ÖZETVERİAL ## Bir Özet Tablo raporunda saklanan verileri verir. - - -## -## Cube functions Küp işlevleri -## -CUBEKPIMEMBER = KÜPKPIÜYE ## Kilit performans göstergesi (KPI-Key Performance Indicator) adını, özelliğini ve ölçüsünü verir ve hücredeki ad ve özelliği gösterir. KPI, bir kurumun performansını izlemek için kullanılan aylık brüt kâr ya da üç aylık çalışan giriş çıkışları gibi ölçülebilen bir birimdir. -CUBEMEMBER = KÜPÜYE ## Bir küp hiyerarşisinde bir üyeyi veya kaydı verir. Üye veya kaydın küpte varolduğunu doğrulamak için kullanılır. -CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ ## Bir küpte bir üyenin özelliğinin değerini verir. Küp içinde üye adının varlığını doğrulamak ve bu üyenin belli özelliklerini getirmek için kullanılır. -CUBERANKEDMEMBER = KÜPÜYESIRASI ## Bir küme içindeki üyenin derecesini veya kaçıncı olduğunu verir. En iyi satış elemanı, veya en iyi on öğrenci gibi bir kümedeki bir veya daha fazla öğeyi getirmek için kullanılır. -CUBESET = KÜPKÜME ## Kümeyi oluşturan ve ardından bu kümeyi Microsoft Office Excel'e getiren sunucudaki küpe küme ifadelerini göndererek hesaplanan üye veya kayıt kümesini tanımlar. -CUBESETCOUNT = KÜPKÜMESAY ## Bir kümedeki öğelerin sayısını getirir. -CUBEVALUE = KÜPDEĞER ## Bir küpten toplam değeri getirir. - - -## -## Database functions Veritabanı işlevleri -## -DAVERAGE = VSEÇORT ## Seçili veritabanı girdilerinin ortalamasını verir. -DCOUNT = VSEÇSAY ## Veritabanında sayı içeren hücre sayısını hesaplar. -DCOUNTA = VSEÇSAYDOLU ## Veritabanındaki boş olmayan hücreleri sayar. -DGET = VAL ## Veritabanından, belirtilen ölçütlerle eşleşen tek bir rapor çıkarır. -DMAX = VSEÇMAK ## Seçili veritabanı girişlerinin en yüksek değerini verir. -DMIN = VSEÇMİN ## Seçili veritabanı girişlerinin en düşük değerini verir. -DPRODUCT = VSEÇÇARP ## Kayıtların belli bir alanında bulunan, bir veritabanındaki ölçütlerle eşleşen değerleri çarpar. -DSTDEV = VSEÇSTDSAPMA ## Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak, standart sapmayı tahmin eder. -DSTDEVP = VSEÇSTDSAPMAS ## Standart sapmayı, seçili veritabanı girişlerinin tüm popülasyonunu esas alarak hesaplar. -DSUM = VSEÇTOPLA ## Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları toplar. -DVAR = VSEÇVAR ## Seçili veritabanı girişlerinden oluşan bir örneği esas alarak farkı tahmin eder. -DVARP = VSEÇVARS ## Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak farkı hesaplar. - - -## -## Date and time functions Tarih ve saat işlevleri -## -DATE = TARİH ## Belirli bir tarihin seri numarasını verir. -DATEVALUE = TARİHSAYISI ## Metin biçimindeki bir tarihi seri numarasına dönüştürür. -DAY = GÜN ## Seri numarasını, ayın bir gününe dönüştürür. -DAYS360 = GÜN360 ## İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak hesaplar. -EDATE = SERİTARİH ## Başlangıç tarihinden itibaren, belirtilen ay sayısından önce veya sonraki tarihin seri numarasını verir. -EOMONTH = SERİAY ## Belirtilen sayıda ay önce veya sonraki ayın son gününün seri numarasını verir. -HOUR = SAAT ## Bir seri numarasını saate dönüştürür. -MINUTE = DAKİKA ## Bir seri numarasını dakikaya dönüştürür. -MONTH = AY ## Bir seri numarasını aya dönüştürür. -NETWORKDAYS = TAMİŞGÜNÜ ## İki tarih arasındaki tam çalışma günlerinin sayısını verir. -NOW = ŞİMDİ ## Geçerli tarihin ve saatin seri numarasını verir. -SECOND = SANİYE ## Bir seri numarasını saniyeye dönüştürür. -TIME = ZAMAN ## Belirli bir zamanın seri numarasını verir. -TIMEVALUE = ZAMANSAYISI ## Metin biçimindeki zamanı seri numarasına dönüştürür. -TODAY = BUGÜN ## Bugünün tarihini seri numarasına dönüştürür. -WEEKDAY = HAFTANINGÜNÜ ## Bir seri numarasını, haftanın gününe dönüştürür. -WEEKNUM = HAFTASAY ## Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal olarak gösteren sayıya dönüştürür. -WORKDAY = İŞGÜNÜ ## Belirtilen sayıda çalışma günü öncesinin ya da sonrasının tarihinin seri numarasını verir. -YEAR = YIL ## Bir seri numarasını yıla dönüştürür. -YEARFRAC = YILORAN ## Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri gösteren yıl kesrini verir. - - -## -## Engineering functions Mühendislik işlevleri -## -BESSELI = BESSELI ## Değiştirilmiş Bessel fonksiyonu In(x)'i verir. -BESSELJ = BESSELJ ## Bessel fonksiyonu Jn(x)'i verir. -BESSELK = BESSELK ## Değiştirilmiş Bessel fonksiyonu Kn(x)'i verir. -BESSELY = BESSELY ## Bessel fonksiyonu Yn(x)'i verir. -BIN2DEC = BIN2DEC ## İkili bir sayıyı, ondalık sayıya dönüştürür. -BIN2HEX = BIN2HEX ## İkili bir sayıyı, onaltılıya dönüştürür. -BIN2OCT = BIN2OCT ## İkili bir sayıyı, sekizliye dönüştürür. -COMPLEX = KARMAŞIK ## Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür. -CONVERT = ÇEVİR ## Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine dönüştürür. -DEC2BIN = DEC2BIN ## Ondalık bir sayıyı, ikiliye dönüştürür. -DEC2HEX = DEC2HEX ## Ondalık bir sayıyı, onaltılıya dönüştürür. -DEC2OCT = DEC2OCT ## Ondalık bir sayıyı sekizliğe dönüştürür. -DELTA = DELTA ## İki değerin eşit olup olmadığını sınar. -ERF = HATAİŞLEV ## Hata işlevini verir. -ERFC = TÜMHATAİŞLEV ## Tümleyici hata işlevini verir. -GESTEP = BESINIR ## Bir sayının eşik değerinden büyük olup olmadığını sınar. -HEX2BIN = HEX2BIN ## Onaltılı bir sayıyı ikiliye dönüştürür. -HEX2DEC = HEX2DEC ## Onaltılı bir sayıyı ondalığa dönüştürür. -HEX2OCT = HEX2OCT ## Onaltılı bir sayıyı sekizliğe dönüştürür. -IMABS = SANMUTLAK ## Karmaşık bir sayının mutlak değerini (modül) verir. -IMAGINARY = SANAL ## Karmaşık bir sayının sanal katsayısını verir. -IMARGUMENT = SANBAĞ_DEĞİŞKEN ## Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini verir. -IMCONJUGATE = SANEŞLENEK ## Karmaşık bir sayının karmaşık eşleniğini verir. -IMCOS = SANCOS ## Karmaşık bir sayının kosinüsünü verir. -IMDIV = SANBÖL ## İki karmaşık sayının bölümünü verir. -IMEXP = SANÜS ## Karmaşık bir sayının üssünü verir. -IMLN = SANLN ## Karmaşık bir sayının doğal logaritmasını verir. -IMLOG10 = SANLOG10 ## Karmaşık bir sayının, 10 tabanında logaritmasını verir. -IMLOG2 = SANLOG2 ## Karmaşık bir sayının 2 tabanında logaritmasını verir. -IMPOWER = SANÜSSÜ ## Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak verir. -IMPRODUCT = SANÇARP ## Karmaşık sayıların çarpımını verir. -IMREAL = SANGERÇEK ## Karmaşık bir sayının, gerçek katsayısını verir. -IMSIN = SANSIN ## Karmaşık bir sayının sinüsünü verir. -IMSQRT = SANKAREKÖK ## Karmaşık bir sayının karekökünü verir. -IMSUB = SANÇIKAR ## İki karmaşık sayının farkını verir. -IMSUM = SANTOPLA ## Karmaşık sayıların toplamını verir. -OCT2BIN = OCT2BIN ## Sekizli bir sayıyı ikiliye dönüştürür. -OCT2DEC = OCT2DEC ## Sekizli bir sayıyı ondalığa dönüştürür. -OCT2HEX = OCT2HEX ## Sekizli bir sayıyı onaltılıya dönüştürür. - - -## -## Financial functions Finansal fonksiyonlar -## -ACCRINT = GERÇEKFAİZ ## Dönemsel faiz ödeyen hisse senedine ilişkin tahakkuk eden faizi getirir. -ACCRINTM = GERÇEKFAİZV ## Vadesinde ödeme yapan bir tahvilin tahakkuk etmiş faizini verir. -AMORDEGRC = AMORDEGRC ## Yıpranma katsayısı kullanarak her hesap döneminin değer kaybını verir. -AMORLINC = AMORLINC ## Her hesap dönemi içindeki yıpranmayı verir. -COUPDAYBS = KUPONGÜNBD ## Kupon süresinin başlangıcından alış tarihine kadar olan süredeki gün sayısını verir. -COUPDAYS = KUPONGÜN ## Kupon süresindeki, gün sayısını, alış tarihini de içermek üzere, verir. -COUPDAYSNC = KUPONGÜNDSK ## Alış tarihinden bir sonraki kupon tarihine kadar olan gün sayısını verir. -COUPNCD = KUPONGÜNSKT ## Alış tarihinden bir sonraki kupon tarihini verir. -COUPNUM = KUPONSAYI ## Alış tarihiyle vade tarihi arasında ödenecek kuponların sayısını verir. -COUPPCD = KUPONGÜNÖKT ## Alış tarihinden bir önceki kupon tarihini verir. -CUMIPMT = AİÇVERİMORANI ## İki dönem arasında ödenen kümülatif faizi verir. -CUMPRINC = ANA_PARA_ÖDEMESİ ## İki dönem arasında bir borç üzerine ödenen birikimli temeli verir. -DB = AZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, sabit azalan bakiye yöntemini kullanarak verir. -DDB = ÇİFTAZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, çift azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak verir. -DISC = İNDİRİM ## Bir tahvilin indirim oranını verir. -DOLLARDE = LİRAON ## Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak tanımlanmış lira fiyatına dönüştürür. -DOLLARFR = LİRAKES ## Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak tanımlanmış lira fiyatına dönüştürür. -DURATION = SÜRE ## Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık süresini verir. -EFFECT = ETKİN ## Efektif yıllık faiz oranını verir. -FV = ANBD ## Bir yatırımın gelecekteki değerini verir. -FVSCHEDULE = GDPROGRAM ## Bir seri birleşik faiz oranı uyguladıktan sonra, bir başlangıçtaki anaparanın gelecekteki değerini verir. -INTRATE = FAİZORANI ## Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir. -IPMT = FAİZTUTARI ## Bir yatırımın verilen bir süre için faiz ödemesini verir. -IRR = İÇ_VERİM_ORANI ## Bir para akışı serisi için, iç verim oranını verir. -ISPMT = ISPMT ## Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar. -MDURATION = MSÜRE ## Varsayılan par değeri 10.000.000 lira olan bir tahvil için Macauley değiştirilmiş süreyi verir. -MIRR = D_İÇ_VERİM_ORANI ## Pozitif ve negatif para akışlarının farklı oranlarda finanse edildiği durumlarda, iç verim oranını verir. -NOMINAL = NOMİNAL ## Yıllık nominal faiz oranını verir. -NPER = DÖNEM_SAYISI ## Bir yatırımın dönem sayısını verir. -NPV = NBD ## Bir yatırımın bugünkü net değerini, bir dönemsel para akışları serisine ve bir indirim oranına bağlı olarak verir. -ODDFPRICE = TEKYDEĞER ## Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000 lirada bir verir. -ODDFYIELD = TEKYÖDEME ## Tek bir ilk dönemi olan bir tahvilin ödemesini verir. -ODDLPRICE = TEKSDEĞER ## Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000 lirada bir verir. -ODDLYIELD = TEKSÖDEME ## Tek bir son dönemi olan bir tahvilin ödemesini verir. -PMT = DEVRESEL_ÖDEME ## Bir yıllık dönemsel ödemeyi verir. -PPMT = ANA_PARA_ÖDEMESİ ## Verilen bir süre için, bir yatırımın anaparasına dayanan ödemeyi verir. -PRICE = DEĞER ## Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık değer başına verir. -PRICEDISC = DEĞERİND ## İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal değer başına verir. -PRICEMAT = DEĞERVADE ## Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000 nominal değer başına verir. -PV = BD ## Bir yatırımın bugünkü değerini verir. -RATE = FAİZ_ORANI ## Bir yıllık dönem başına düşen faiz oranını verir. -RECEIVED = GETİRİ ## Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan miktarı verir. -SLN = DA ## Bir malın bir dönem içindeki doğrusal yıpranmasını verir. -SYD = YAT ## Bir malın belirli bir dönem için olan amortismanını verir. -TBILLEQ = HTAHEŞ ## Bir Hazine bonosunun bono eşdeğeri ödemesini verir. -TBILLPRICE = HTAHDEĞER ## Bir Hazine bonosunun değerini, 10.000.000 liralık nominal değer başına verir. -TBILLYIELD = HTAHÖDEME ## Bir Hazine bonosunun ödemesini verir. -VDB = DAB ## Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem için, bir azalan bakiye yöntemi kullanarak verir. -XIRR = AİÇVERİMORANI ## Dönemsel olması gerekmeyen bir para akışları programı için, iç verim oranını verir. -XNPV = ANBD ## Dönemsel olması gerekmeyen bir para akışları programı için, bugünkü net değeri verir. -YIELD = ÖDEME ## Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir. -YIELDDISC = ÖDEMEİND ## İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir Hazine bonosunun. -YIELDMAT = ÖDEMEVADE ## Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini verir. - - -## -## Information functions Bilgi fonksiyonları -## -CELL = HÜCRE ## Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında bilgi verir. -ERROR.TYPE = HATA.TİPİ ## Bir hata türüne ilişkin sayıları verir. -INFO = BİLGİ ## Geçerli işletim ortamı hakkında bilgi verir. -ISBLANK = EBOŞSA ## Değer boşsa, DOĞRU verir. -ISERR = EHATA ## Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir. -ISERROR = EHATALIYSA ## Değer, herhangi bir hata değeriyse, DOĞRU verir. -ISEVEN = ÇİFTTİR ## Sayı çiftse, DOĞRU verir. -ISLOGICAL = EMANTIKSALSA ## Değer, mantıksal bir değerse, DOĞRU verir. -ISNA = EYOKSA ## Değer, #YOK hata değeriyse, DOĞRU verir. -ISNONTEXT = EMETİNDEĞİLSE ## Değer, metin değilse, DOĞRU verir. -ISNUMBER = ESAYIYSA ## Değer, bir sayıysa, DOĞRU verir. -ISODD = TEKTİR ## Sayı tekse, DOĞRU verir. -ISREF = EREFSE ## Değer bir başvuruysa, DOĞRU verir. -ISTEXT = EMETİNSE ## Değer bir metinse DOĞRU verir. -N = N ## Sayıya dönüştürülmüş bir değer verir. -NA = YOKSAY ## #YOK hata değerini verir. -TYPE = TİP ## Bir değerin veri türünü belirten bir sayı verir. - - -## -## Logical functions Mantıksal fonksiyonlar -## -AND = VE ## Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir. -FALSE = YANLIŞ ## YANLIŞ mantıksal değerini verir. -IF = EĞER ## Gerçekleştirilecek bir mantıksal sınama belirtir. -IFERROR = EĞERHATA ## Formül hatalıysa belirttiğiniz değeri verir; bunun dışındaki durumlarda formülün sonucunu verir. -NOT = DEĞİL ## Bağımsız değişkeninin mantığını tersine çevirir. -OR = YADA ## Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir. -TRUE = DOĞRU ## DOĞRU mantıksal değerini verir. - - -## -## Lookup and reference functions Arama ve Başvuru fonksiyonları -## -ADDRESS = ADRES ## Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin olarak verir. -AREAS = ALANSAY ## Renvoie le nombre de zones dans une référence. -CHOOSE = ELEMAN ## Değerler listesinden bir değer seçer. -COLUMN = SÜTUN ## Bir başvurunun sütun sayısını verir. -COLUMNS = SÜTUNSAY ## Bir başvurudaki sütunların sayısını verir. -HLOOKUP = YATAYARA ## Bir dizinin en üst satırına bakar ve belirtilen hücrenin değerini verir. -HYPERLINK = KÖPRÜ ## Bir ağ sunucusunda, bir intranette ya da Internet'te depolanan bir belgeyi açan bir kısayol ya da atlama oluşturur. -INDEX = İNDİS ## Başvurudan veya diziden bir değer seçmek için, bir dizin kullanır. -INDIRECT = DOLAYLI ## Metin değeriyle belirtilen bir başvuru verir. -LOOKUP = ARA ## Bir vektördeki veya dizideki değerleri arar. -MATCH = KAÇINCI ## Bir başvurudaki veya dizideki değerleri arar. -OFFSET = KAYDIR ## Verilen bir başvurudan, bir başvuru kaydırmayı verir. -ROW = SATIR ## Bir başvurunun satır sayısını verir. -ROWS = SATIRSAY ## Bir başvurudaki satırların sayısını verir. -RTD = RTD ## COM otomasyonunu destekleyen programdan gerçek zaman verileri alır. -TRANSPOSE = DEVRİK_DÖNÜŞÜM ## Bir dizinin devrik dönüşümünü verir. -VLOOKUP = DÜŞEYARA ## Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek için satır boyunca hareket eder. - - -## -## Math and trigonometry functions Matematik ve trigonometri fonksiyonları -## -ABS = MUTLAK ## Bir sayının mutlak değerini verir. -ACOS = ACOS ## Bir sayının ark kosinüsünü verir. -ACOSH = ACOSH ## Bir sayının ters hiperbolik kosinüsünü verir. -ASIN = ASİN ## Bir sayının ark sinüsünü verir. -ASINH = ASİNH ## Bir sayının ters hiperbolik sinüsünü verir. -ATAN = ATAN ## Bir sayının ark tanjantını verir. -ATAN2 = ATAN2 ## Ark tanjantı, x- ve y- koordinatlarından verir. -ATANH = ATANH ## Bir sayının ters hiperbolik tanjantını verir. -CEILING = TAVANAYUVARLA ## Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar. -COMBIN = KOMBİNASYON ## Verilen sayıda öğenin kombinasyon sayısını verir. -COS = COS ## Bir sayının kosinüsünü verir. -COSH = COSH ## Bir sayının hiperbolik kosinüsünü verir. -DEGREES = DERECE ## Radyanları dereceye dönüştürür. -EVEN = ÇİFT ## Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar. -EXP = ÜS ## e'yi, verilen bir sayının üssüne yükseltilmiş olarak verir. -FACT = ÇARPINIM ## Bir sayının faktörünü verir. -FACTDOUBLE = ÇİFTFAKTÖR ## Bir sayının çift çarpınımını verir. -FLOOR = TABANAYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. -GCD = OBEB ## En büyük ortak böleni verir. -INT = TAMSAYI ## Bir sayıyı aşağıya doğru en yakın tamsayıya yuvarlar. -LCM = OKEK ## En küçük ortak katı verir. -LN = LN ## Bir sayının doğal logaritmasını verir. -LOG = LOG ## Bir sayının, belirtilen bir tabandaki logaritmasını verir. -LOG10 = LOG10 ## Bir sayının 10 tabanında logaritmasını verir. -MDETERM = DETERMİNANT ## Bir dizinin dizey determinantını verir. -MINVERSE = DİZEY_TERS ## Bir dizinin dizey tersini verir. -MMULT = DÇARP ## İki dizinin dizey çarpımını verir. -MOD = MODÜLO ## Bölmeden kalanı verir. -MROUND = KYUVARLA ## İstenen kata yuvarlanmış bir sayı verir. -MULTINOMIAL = ÇOKTERİMLİ ## Bir sayılar kümesinin çok terimlisini verir. -ODD = TEK ## Bir sayıyı en yakın daha büyük tek sayıya yuvarlar. -PI = Pİ ## Pi değerini verir. -POWER = KUVVET ## Bir üsse yükseltilmiş sayının sonucunu verir. -PRODUCT = ÇARPIM ## Bağımsız değişkenlerini çarpar. -QUOTIENT = BÖLÜM ## Bir bölme işleminin tamsayı kısmını verir. -RADIANS = RADYAN ## Dereceleri radyanlara dönüştürür. -RAND = S_SAYI_ÜRET ## 0 ile 1 arasında rastgele bir sayı verir. -RANDBETWEEN = RASTGELEARALIK ## Belirttiğiniz sayılar arasında rastgele bir sayı verir. -ROMAN = ROMEN ## Bir normal rakamı, metin olarak, romen rakamına çevirir. -ROUND = YUVARLA ## Bir sayıyı, belirtilen basamak sayısına yuvarlar. -ROUNDDOWN = AŞAĞIYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. -ROUNDUP = YUKARIYUVARLA ## Bir sayıyı daha büyük sayıya, sıfırdan ıraksayarak yuvarlar. -SERIESSUM = SERİTOPLA ## Bir üs serisinin toplamını, formüle bağlı olarak verir. -SIGN = İŞARET ## Bir sayının işaretini verir. -SIN = SİN ## Verilen bir açının sinüsünü verir. -SINH = SİNH ## Bir sayının hiperbolik sinüsünü verir. -SQRT = KAREKÖK ## Pozitif bir karekök verir. -SQRTPI = KAREKÖKPİ ## (* Pi sayısının) kare kökünü verir. -SUBTOTAL = ALTTOPLAM ## Bir listedeki ya da veritabanındaki bir alt toplamı verir. -SUM = TOPLA ## Bağımsız değişkenlerini toplar. -SUMIF = ETOPLA ## Verilen ölçütle belirlenen hücreleri toplar. -SUMIFS = SUMIFS ## Bir aralıktaki, birden fazla ölçüte uyan hücreleri ekler. -SUMPRODUCT = TOPLA.ÇARPIM ## İlişkili dizi bileşenlerinin çarpımlarının toplamını verir. -SUMSQ = TOPKARE ## Bağımsız değişkenlerin karelerinin toplamını verir. -SUMX2MY2 = TOPX2EY2 ## İki dizideki ilişkili değerlerin farkının toplamını verir. -SUMX2PY2 = TOPX2AY2 ## İki dizideki ilişkili değerlerin karelerinin toplamının toplamını verir. -SUMXMY2 = TOPXEY2 ## İki dizideki ilişkili değerlerin farklarının karelerinin toplamını verir. -TAN = TAN ## Bir sayının tanjantını verir. -TANH = TANH ## Bir sayının hiperbolik tanjantını verir. -TRUNC = NSAT ## Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını atar. - - -## -## Statistical functions İstatistiksel fonksiyonlar -## -AVEDEV = ORTSAP ## Veri noktalarının ortalamalarından mutlak sapmalarının ortalamasını verir. -AVERAGE = ORTALAMA ## Bağımsız değişkenlerinin ortalamasını verir. -AVERAGEA = ORTALAMAA ## Bağımsız değişkenlerinin, sayılar, metin ve mantıksal değerleri içermek üzere ortalamasını verir. -AVERAGEIF = EĞERORTALAMA ## Verili ölçütü karşılayan bir aralıktaki bütün hücrelerin ortalamasını (aritmetik ortalama) hesaplar. -AVERAGEIFS = EĞERLERORTALAMA ## Birden çok ölçüte uyan tüm hücrelerin ortalamasını (aritmetik ortalama) hesaplar. -BETADIST = BETADAĞ ## Beta birikimli dağılım fonksiyonunu verir. -BETAINV = BETATERS ## Belirli bir beta dağılımı için birikimli dağılım fonksiyonunun tersini verir. -BINOMDIST = BİNOMDAĞ ## Tek terimli binom dağılımı olasılığını verir. -CHIDIST = KİKAREDAĞ ## Kikare dağılımın tek kuyruklu olasılığını verir. -CHIINV = KİKARETERS ## Kikare dağılımın kuyruklu olasılığının tersini verir. -CHITEST = KİKARETEST ## Bağımsızlık sınamalarını verir. -CONFIDENCE = GÜVENİRLİK ## Bir popülasyon ortalaması için güvenirlik aralığını verir. -CORREL = KORELASYON ## İki veri kümesi arasındaki bağlantı katsayısını verir. -COUNT = BAĞ_DEĞ_SAY ## Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu sayar. -COUNTA = BAĞ_DEĞ_DOLU_SAY ## Bağımsız değişkenler listesinde kaç tane değer bulunduğunu sayar. -COUNTBLANK = BOŞLUKSAY ## Aralıktaki boş hücre sayısını hesaplar. -COUNTIF = EĞERSAY ## Verilen ölçütlere uyan bir aralık içindeki hücreleri sayar. -COUNTIFS = ÇOKEĞERSAY ## Birden çok ölçüte uyan bir aralık içindeki hücreleri sayar. -COVAR = KOVARYANS ## Eşleştirilmiş sapmaların ortalaması olan kovaryansı verir. -CRITBINOM = KRİTİKBİNOM ## Birikimli binom dağılımının bir ölçüt değerinden küçük veya ölçüt değerine eşit olduğu en küçük değeri verir. -DEVSQ = SAPKARE ## Sapmaların karelerinin toplamını verir. -EXPONDIST = ÜSTELDAĞ ## Üstel dağılımı verir. -FDIST = FDAĞ ## F olasılık dağılımını verir. -FINV = FTERS ## F olasılık dağılımının tersini verir. -FISHER = FISHER ## Fisher dönüşümünü verir. -FISHERINV = FISHERTERS ## Fisher dönüşümünün tersini verir. -FORECAST = TAHMİN ## Bir doğrusal eğilim boyunca bir değer verir. -FREQUENCY = SIKLIK ## Bir sıklık dağılımını, dikey bir dizi olarak verir. -FTEST = FTEST ## Bir F-test'in sonucunu verir. -GAMMADIST = GAMADAĞ ## Gama dağılımını verir. -GAMMAINV = GAMATERS ## Gama kümülatif dağılımının tersini verir. -GAMMALN = GAMALN ## Gama fonksiyonunun (?(x)) doğal logaritmasını verir. -GEOMEAN = GEOORT ## Geometrik ortayı verir. -GROWTH = BÜYÜME ## Üstel bir eğilim boyunca değerler verir. -HARMEAN = HARORT ## Harmonik ortayı verir. -HYPGEOMDIST = HİPERGEOMDAĞ ## Hipergeometrik dağılımı verir. -INTERCEPT = KESMENOKTASI ## Doğrusal çakıştırma çizgisinin kesişme noktasını verir. -KURT = BASIKLIK ## Bir veri kümesinin basıklığını verir. -LARGE = BÜYÜK ## Bir veri kümesinde k. en büyük değeri verir. -LINEST = DOT ## Doğrusal bir eğilimin parametrelerini verir. -LOGEST = LOT ## Üstel bir eğilimin parametrelerini verir. -LOGINV = LOGTERS ## Bir lognormal dağılımının tersini verir. -LOGNORMDIST = LOGNORMDAĞ ## Birikimli lognormal dağılımını verir. -MAX = MAK ## Bir bağımsız değişkenler listesindeki en büyük değeri verir. -MAXA = MAKA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri içermek üzere, en büyük değeri verir. -MEDIAN = ORTANCA ## Belirtilen sayıların orta değerini verir. -MIN = MİN ## Bir bağımsız değişkenler listesindeki en küçük değeri verir. -MINA = MİNA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri de içermek üzere, en küçük değeri verir. -MODE = ENÇOK_OLAN ## Bir veri kümesindeki en sık rastlanan değeri verir. -NEGBINOMDIST = NEGBİNOMDAĞ ## Negatif binom dağılımını verir. -NORMDIST = NORMDAĞ ## Normal birikimli dağılımı verir. -NORMINV = NORMTERS ## Normal kümülatif dağılımın tersini verir. -NORMSDIST = NORMSDAĞ ## Standart normal birikimli dağılımı verir. -NORMSINV = NORMSTERS ## Standart normal birikimli dağılımın tersini verir. -PEARSON = PEARSON ## Pearson çarpım moment korelasyon katsayısını verir. -PERCENTILE = YÜZDEBİRLİK ## Bir aralık içerisinde bulunan değerlerin k. frekans toplamını verir. -PERCENTRANK = YÜZDERANK ## Bir veri kümesindeki bir değerin yüzde mertebesini verir. -PERMUT = PERMÜTASYON ## Verilen sayıda nesne için permütasyon sayısını verir. -POISSON = POISSON ## Poisson dağılımını verir. -PROB = OLASILIK ## Bir aralıktaki değerlerin iki sınır arasında olması olasılığını verir. -QUARTILE = DÖRTTEBİRLİK ## Bir veri kümesinin dörtte birliğini verir. -RANK = RANK ## Bir sayılar listesinde bir sayının mertebesini verir. -RSQ = RKARE ## Pearson çarpım moment korelasyon katsayısının karesini verir. -SKEW = ÇARPIKLIK ## Bir dağılımın çarpıklığını verir. -SLOPE = EĞİM ## Doğrusal çakışma çizgisinin eğimini verir. -SMALL = KÜÇÜK ## Bir veri kümesinde k. en küçük değeri verir. -STANDARDIZE = STANDARTLAŞTIRMA ## Normalleştirilmiş bir değer verir. -STDEV = STDSAPMA ## Bir örneğe dayanarak standart sapmayı tahmin eder. -STDEVA = STDSAPMAA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. -STDEVP = STDSAPMAS ## Standart sapmayı, tüm popülasyona bağlı olarak hesaplar. -STDEVPA = STDSAPMASA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. -STEYX = STHYX ## Regresyondaki her x için tahmini y değerinin standart hatasını verir. -TDIST = TDAĞ ## T-dağılımını verir. -TINV = TTERS ## T-dağılımının tersini verir. -TREND = EĞİLİM ## Doğrusal bir eğilim boyunca değerler verir. -TRIMMEAN = KIRPORTALAMA ## Bir veri kümesinin içinin ortalamasını verir. -TTEST = TTEST ## T-test'le ilişkilendirilmiş olasılığı verir. -VAR = VAR ## Varyansı, bir örneğe bağlı olarak tahmin eder. -VARA = VARA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. -VARP = VARS ## Varyansı, tüm popülasyona dayanarak hesaplar. -VARPA = VARSA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. -WEIBULL = WEIBULL ## Weibull dağılımını hesaplar. -ZTEST = ZTEST ## Z-testinin tek kuyruklu olasılık değerini hesaplar. - - -## -## Text functions Metin fonksiyonları -## -ASC = ASC ## Bir karakter dizesindeki çift enli (iki bayt) İngilizce harfleri veya katakanayı yarım enli (tek bayt) karakterlerle değiştirir. -BAHTTEXT = BAHTTEXT ## Sayıyı, ß (baht) para birimi biçimini kullanarak metne dönüştürür. -CHAR = DAMGA ## Kod sayısıyla belirtilen karakteri verir. -CLEAN = TEMİZ ## Metindeki bütün yazdırılamaz karakterleri kaldırır. -CODE = KOD ## Bir metin dizesindeki ilk karakter için sayısal bir kod verir. -CONCATENATE = BİRLEŞTİR ## Pek çok metin öğesini bir metin öğesi olarak birleştirir. -DOLLAR = LİRA ## Bir sayıyı YTL (yeni Türk lirası) para birimi biçimini kullanarak metne dönüştürür. -EXACT = ÖZDEŞ ## İki metin değerinin özdeş olup olmadığını anlamak için, değerleri denetler. -FIND = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). -FINDB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). -FIXED = SAYIDÜZENLE ## Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir. -JIS = JIS ## Bir karakter dizesindeki tek enli (tek bayt) İngilizce harfleri veya katakanayı çift enli (iki bayt) karakterlerle değiştirir. -LEFT = SOL ## Bir metin değerinden en soldaki karakterleri verir. -LEFTB = SOLB ## Bir metin değerinden en soldaki karakterleri verir. -LEN = UZUNLUK ## Bir metin dizesindeki karakter sayısını verir. -LENB = UZUNLUKB ## Bir metin dizesindeki karakter sayısını verir. -LOWER = KÜÇÜKHARF ## Metni küçük harfe çevirir. -MID = ORTA ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. -MIDB = ORTAB ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. -PHONETIC = SES ## Metin dizesinden ses (furigana) karakterlerini ayıklar. -PROPER = YAZIM.DÜZENİ ## Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe çevirir. -REPLACE = DEĞİŞTİR ## Metnin içindeki karakterleri değiştirir. -REPLACEB = DEĞİŞTİRB ## Metnin içindeki karakterleri değiştirir. -REPT = YİNELE ## Metni belirtilen sayıda yineler. -RIGHT = SAĞ ## Bir metin değerinden en sağdaki karakterleri verir. -RIGHTB = SAĞB ## Bir metin değerinden en sağdaki karakterleri verir. -SEARCH = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). -SEARCHB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). -SUBSTITUTE = YERİNEKOY ## Bir metin dizesinde, eski metnin yerine yeni metin koyar. -T = M ## Bağımsız değerlerini metne dönüştürür. -TEXT = METNEÇEVİR ## Bir sayıyı biçimlendirir ve metne dönüştürür. -TRIM = KIRP ## Metindeki boşlukları kaldırır. -UPPER = BÜYÜKHARF ## Metni büyük harfe çevirir. -VALUE = SAYIYAÇEVİR ## Bir metin bağımsız değişkenini sayıya dönüştürür. +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library 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 +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Eklenti ve Otomasyon fonksiyonları +## +GETPIVOTDATA = ÖZETVERİAL ## Bir Özet Tablo raporunda saklanan verileri verir. + + +## +## Cube functions Küp işlevleri +## +CUBEKPIMEMBER = KÜPKPIÜYE ## Kilit performans göstergesi (KPI-Key Performance Indicator) adını, özelliğini ve ölçüsünü verir ve hücredeki ad ve özelliği gösterir. KPI, bir kurumun performansını izlemek için kullanılan aylık brüt kâr ya da üç aylık çalışan giriş çıkışları gibi ölçülebilen bir birimdir. +CUBEMEMBER = KÜPÜYE ## Bir küp hiyerarşisinde bir üyeyi veya kaydı verir. Üye veya kaydın küpte varolduğunu doğrulamak için kullanılır. +CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ ## Bir küpte bir üyenin özelliğinin değerini verir. Küp içinde üye adının varlığını doğrulamak ve bu üyenin belli özelliklerini getirmek için kullanılır. +CUBERANKEDMEMBER = KÜPÜYESIRASI ## Bir küme içindeki üyenin derecesini veya kaçıncı olduğunu verir. En iyi satış elemanı, veya en iyi on öğrenci gibi bir kümedeki bir veya daha fazla öğeyi getirmek için kullanılır. +CUBESET = KÜPKÜME ## Kümeyi oluşturan ve ardından bu kümeyi Microsoft Office Excel'e getiren sunucudaki küpe küme ifadelerini göndererek hesaplanan üye veya kayıt kümesini tanımlar. +CUBESETCOUNT = KÜPKÜMESAY ## Bir kümedeki öğelerin sayısını getirir. +CUBEVALUE = KÜPDEĞER ## Bir küpten toplam değeri getirir. + + +## +## Database functions Veritabanı işlevleri +## +DAVERAGE = VSEÇORT ## Seçili veritabanı girdilerinin ortalamasını verir. +DCOUNT = VSEÇSAY ## Veritabanında sayı içeren hücre sayısını hesaplar. +DCOUNTA = VSEÇSAYDOLU ## Veritabanındaki boş olmayan hücreleri sayar. +DGET = VAL ## Veritabanından, belirtilen ölçütlerle eşleşen tek bir rapor çıkarır. +DMAX = VSEÇMAK ## Seçili veritabanı girişlerinin en yüksek değerini verir. +DMIN = VSEÇMİN ## Seçili veritabanı girişlerinin en düşük değerini verir. +DPRODUCT = VSEÇÇARP ## Kayıtların belli bir alanında bulunan, bir veritabanındaki ölçütlerle eşleşen değerleri çarpar. +DSTDEV = VSEÇSTDSAPMA ## Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak, standart sapmayı tahmin eder. +DSTDEVP = VSEÇSTDSAPMAS ## Standart sapmayı, seçili veritabanı girişlerinin tüm popülasyonunu esas alarak hesaplar. +DSUM = VSEÇTOPLA ## Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları toplar. +DVAR = VSEÇVAR ## Seçili veritabanı girişlerinden oluşan bir örneği esas alarak farkı tahmin eder. +DVARP = VSEÇVARS ## Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak farkı hesaplar. + + +## +## Date and time functions Tarih ve saat işlevleri +## +DATE = TARİH ## Belirli bir tarihin seri numarasını verir. +DATEVALUE = TARİHSAYISI ## Metin biçimindeki bir tarihi seri numarasına dönüştürür. +DAY = GÜN ## Seri numarasını, ayın bir gününe dönüştürür. +DAYS360 = GÜN360 ## İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak hesaplar. +EDATE = SERİTARİH ## Başlangıç tarihinden itibaren, belirtilen ay sayısından önce veya sonraki tarihin seri numarasını verir. +EOMONTH = SERİAY ## Belirtilen sayıda ay önce veya sonraki ayın son gününün seri numarasını verir. +HOUR = SAAT ## Bir seri numarasını saate dönüştürür. +MINUTE = DAKİKA ## Bir seri numarasını dakikaya dönüştürür. +MONTH = AY ## Bir seri numarasını aya dönüştürür. +NETWORKDAYS = TAMİŞGÜNÜ ## İki tarih arasındaki tam çalışma günlerinin sayısını verir. +NOW = ŞİMDİ ## Geçerli tarihin ve saatin seri numarasını verir. +SECOND = SANİYE ## Bir seri numarasını saniyeye dönüştürür. +TIME = ZAMAN ## Belirli bir zamanın seri numarasını verir. +TIMEVALUE = ZAMANSAYISI ## Metin biçimindeki zamanı seri numarasına dönüştürür. +TODAY = BUGÜN ## Bugünün tarihini seri numarasına dönüştürür. +WEEKDAY = HAFTANINGÜNÜ ## Bir seri numarasını, haftanın gününe dönüştürür. +WEEKNUM = HAFTASAY ## Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal olarak gösteren sayıya dönüştürür. +WORKDAY = İŞGÜNÜ ## Belirtilen sayıda çalışma günü öncesinin ya da sonrasının tarihinin seri numarasını verir. +YEAR = YIL ## Bir seri numarasını yıla dönüştürür. +YEARFRAC = YILORAN ## Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri gösteren yıl kesrini verir. + + +## +## Engineering functions Mühendislik işlevleri +## +BESSELI = BESSELI ## Değiştirilmiş Bessel fonksiyonu In(x)'i verir. +BESSELJ = BESSELJ ## Bessel fonksiyonu Jn(x)'i verir. +BESSELK = BESSELK ## Değiştirilmiş Bessel fonksiyonu Kn(x)'i verir. +BESSELY = BESSELY ## Bessel fonksiyonu Yn(x)'i verir. +BIN2DEC = BIN2DEC ## İkili bir sayıyı, ondalık sayıya dönüştürür. +BIN2HEX = BIN2HEX ## İkili bir sayıyı, onaltılıya dönüştürür. +BIN2OCT = BIN2OCT ## İkili bir sayıyı, sekizliye dönüştürür. +COMPLEX = KARMAŞIK ## Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür. +CONVERT = ÇEVİR ## Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine dönüştürür. +DEC2BIN = DEC2BIN ## Ondalık bir sayıyı, ikiliye dönüştürür. +DEC2HEX = DEC2HEX ## Ondalık bir sayıyı, onaltılıya dönüştürür. +DEC2OCT = DEC2OCT ## Ondalık bir sayıyı sekizliğe dönüştürür. +DELTA = DELTA ## İki değerin eşit olup olmadığını sınar. +ERF = HATAİŞLEV ## Hata işlevini verir. +ERFC = TÜMHATAİŞLEV ## Tümleyici hata işlevini verir. +GESTEP = BESINIR ## Bir sayının eşik değerinden büyük olup olmadığını sınar. +HEX2BIN = HEX2BIN ## Onaltılı bir sayıyı ikiliye dönüştürür. +HEX2DEC = HEX2DEC ## Onaltılı bir sayıyı ondalığa dönüştürür. +HEX2OCT = HEX2OCT ## Onaltılı bir sayıyı sekizliğe dönüştürür. +IMABS = SANMUTLAK ## Karmaşık bir sayının mutlak değerini (modül) verir. +IMAGINARY = SANAL ## Karmaşık bir sayının sanal katsayısını verir. +IMARGUMENT = SANBAĞ_DEĞİŞKEN ## Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini verir. +IMCONJUGATE = SANEŞLENEK ## Karmaşık bir sayının karmaşık eşleniğini verir. +IMCOS = SANCOS ## Karmaşık bir sayının kosinüsünü verir. +IMDIV = SANBÖL ## İki karmaşık sayının bölümünü verir. +IMEXP = SANÜS ## Karmaşık bir sayının üssünü verir. +IMLN = SANLN ## Karmaşık bir sayının doğal logaritmasını verir. +IMLOG10 = SANLOG10 ## Karmaşık bir sayının, 10 tabanında logaritmasını verir. +IMLOG2 = SANLOG2 ## Karmaşık bir sayının 2 tabanında logaritmasını verir. +IMPOWER = SANÜSSÜ ## Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak verir. +IMPRODUCT = SANÇARP ## Karmaşık sayıların çarpımını verir. +IMREAL = SANGERÇEK ## Karmaşık bir sayının, gerçek katsayısını verir. +IMSIN = SANSIN ## Karmaşık bir sayının sinüsünü verir. +IMSQRT = SANKAREKÖK ## Karmaşık bir sayının karekökünü verir. +IMSUB = SANÇIKAR ## İki karmaşık sayının farkını verir. +IMSUM = SANTOPLA ## Karmaşık sayıların toplamını verir. +OCT2BIN = OCT2BIN ## Sekizli bir sayıyı ikiliye dönüştürür. +OCT2DEC = OCT2DEC ## Sekizli bir sayıyı ondalığa dönüştürür. +OCT2HEX = OCT2HEX ## Sekizli bir sayıyı onaltılıya dönüştürür. + + +## +## Financial functions Finansal fonksiyonlar +## +ACCRINT = GERÇEKFAİZ ## Dönemsel faiz ödeyen hisse senedine ilişkin tahakkuk eden faizi getirir. +ACCRINTM = GERÇEKFAİZV ## Vadesinde ödeme yapan bir tahvilin tahakkuk etmiş faizini verir. +AMORDEGRC = AMORDEGRC ## Yıpranma katsayısı kullanarak her hesap döneminin değer kaybını verir. +AMORLINC = AMORLINC ## Her hesap dönemi içindeki yıpranmayı verir. +COUPDAYBS = KUPONGÜNBD ## Kupon süresinin başlangıcından alış tarihine kadar olan süredeki gün sayısını verir. +COUPDAYS = KUPONGÜN ## Kupon süresindeki, gün sayısını, alış tarihini de içermek üzere, verir. +COUPDAYSNC = KUPONGÜNDSK ## Alış tarihinden bir sonraki kupon tarihine kadar olan gün sayısını verir. +COUPNCD = KUPONGÜNSKT ## Alış tarihinden bir sonraki kupon tarihini verir. +COUPNUM = KUPONSAYI ## Alış tarihiyle vade tarihi arasında ödenecek kuponların sayısını verir. +COUPPCD = KUPONGÜNÖKT ## Alış tarihinden bir önceki kupon tarihini verir. +CUMIPMT = AİÇVERİMORANI ## İki dönem arasında ödenen kümülatif faizi verir. +CUMPRINC = ANA_PARA_ÖDEMESİ ## İki dönem arasında bir borç üzerine ödenen birikimli temeli verir. +DB = AZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, sabit azalan bakiye yöntemini kullanarak verir. +DDB = ÇİFTAZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, çift azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak verir. +DISC = İNDİRİM ## Bir tahvilin indirim oranını verir. +DOLLARDE = LİRAON ## Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak tanımlanmış lira fiyatına dönüştürür. +DOLLARFR = LİRAKES ## Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak tanımlanmış lira fiyatına dönüştürür. +DURATION = SÜRE ## Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık süresini verir. +EFFECT = ETKİN ## Efektif yıllık faiz oranını verir. +FV = ANBD ## Bir yatırımın gelecekteki değerini verir. +FVSCHEDULE = GDPROGRAM ## Bir seri birleşik faiz oranı uyguladıktan sonra, bir başlangıçtaki anaparanın gelecekteki değerini verir. +INTRATE = FAİZORANI ## Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir. +IPMT = FAİZTUTARI ## Bir yatırımın verilen bir süre için faiz ödemesini verir. +IRR = İÇ_VERİM_ORANI ## Bir para akışı serisi için, iç verim oranını verir. +ISPMT = ISPMT ## Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar. +MDURATION = MSÜRE ## Varsayılan par değeri 10.000.000 lira olan bir tahvil için Macauley değiştirilmiş süreyi verir. +MIRR = D_İÇ_VERİM_ORANI ## Pozitif ve negatif para akışlarının farklı oranlarda finanse edildiği durumlarda, iç verim oranını verir. +NOMINAL = NOMİNAL ## Yıllık nominal faiz oranını verir. +NPER = DÖNEM_SAYISI ## Bir yatırımın dönem sayısını verir. +NPV = NBD ## Bir yatırımın bugünkü net değerini, bir dönemsel para akışları serisine ve bir indirim oranına bağlı olarak verir. +ODDFPRICE = TEKYDEĞER ## Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000 lirada bir verir. +ODDFYIELD = TEKYÖDEME ## Tek bir ilk dönemi olan bir tahvilin ödemesini verir. +ODDLPRICE = TEKSDEĞER ## Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000 lirada bir verir. +ODDLYIELD = TEKSÖDEME ## Tek bir son dönemi olan bir tahvilin ödemesini verir. +PMT = DEVRESEL_ÖDEME ## Bir yıllık dönemsel ödemeyi verir. +PPMT = ANA_PARA_ÖDEMESİ ## Verilen bir süre için, bir yatırımın anaparasına dayanan ödemeyi verir. +PRICE = DEĞER ## Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık değer başına verir. +PRICEDISC = DEĞERİND ## İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal değer başına verir. +PRICEMAT = DEĞERVADE ## Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000 nominal değer başına verir. +PV = BD ## Bir yatırımın bugünkü değerini verir. +RATE = FAİZ_ORANI ## Bir yıllık dönem başına düşen faiz oranını verir. +RECEIVED = GETİRİ ## Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan miktarı verir. +SLN = DA ## Bir malın bir dönem içindeki doğrusal yıpranmasını verir. +SYD = YAT ## Bir malın belirli bir dönem için olan amortismanını verir. +TBILLEQ = HTAHEŞ ## Bir Hazine bonosunun bono eşdeğeri ödemesini verir. +TBILLPRICE = HTAHDEĞER ## Bir Hazine bonosunun değerini, 10.000.000 liralık nominal değer başına verir. +TBILLYIELD = HTAHÖDEME ## Bir Hazine bonosunun ödemesini verir. +VDB = DAB ## Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem için, bir azalan bakiye yöntemi kullanarak verir. +XIRR = AİÇVERİMORANI ## Dönemsel olması gerekmeyen bir para akışları programı için, iç verim oranını verir. +XNPV = ANBD ## Dönemsel olması gerekmeyen bir para akışları programı için, bugünkü net değeri verir. +YIELD = ÖDEME ## Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir. +YIELDDISC = ÖDEMEİND ## İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir Hazine bonosunun. +YIELDMAT = ÖDEMEVADE ## Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini verir. + + +## +## Information functions Bilgi fonksiyonları +## +CELL = HÜCRE ## Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında bilgi verir. +ERROR.TYPE = HATA.TİPİ ## Bir hata türüne ilişkin sayıları verir. +INFO = BİLGİ ## Geçerli işletim ortamı hakkında bilgi verir. +ISBLANK = EBOŞSA ## Değer boşsa, DOĞRU verir. +ISERR = EHATA ## Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir. +ISERROR = EHATALIYSA ## Değer, herhangi bir hata değeriyse, DOĞRU verir. +ISEVEN = ÇİFTTİR ## Sayı çiftse, DOĞRU verir. +ISLOGICAL = EMANTIKSALSA ## Değer, mantıksal bir değerse, DOĞRU verir. +ISNA = EYOKSA ## Değer, #YOK hata değeriyse, DOĞRU verir. +ISNONTEXT = EMETİNDEĞİLSE ## Değer, metin değilse, DOĞRU verir. +ISNUMBER = ESAYIYSA ## Değer, bir sayıysa, DOĞRU verir. +ISODD = TEKTİR ## Sayı tekse, DOĞRU verir. +ISREF = EREFSE ## Değer bir başvuruysa, DOĞRU verir. +ISTEXT = EMETİNSE ## Değer bir metinse DOĞRU verir. +N = N ## Sayıya dönüştürülmüş bir değer verir. +NA = YOKSAY ## #YOK hata değerini verir. +TYPE = TİP ## Bir değerin veri türünü belirten bir sayı verir. + + +## +## Logical functions Mantıksal fonksiyonlar +## +AND = VE ## Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir. +FALSE = YANLIŞ ## YANLIŞ mantıksal değerini verir. +IF = EĞER ## Gerçekleştirilecek bir mantıksal sınama belirtir. +IFERROR = EĞERHATA ## Formül hatalıysa belirttiğiniz değeri verir; bunun dışındaki durumlarda formülün sonucunu verir. +NOT = DEĞİL ## Bağımsız değişkeninin mantığını tersine çevirir. +OR = YADA ## Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir. +TRUE = DOĞRU ## DOĞRU mantıksal değerini verir. + + +## +## Lookup and reference functions Arama ve Başvuru fonksiyonları +## +ADDRESS = ADRES ## Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin olarak verir. +AREAS = ALANSAY ## Renvoie le nombre de zones dans une référence. +CHOOSE = ELEMAN ## Değerler listesinden bir değer seçer. +COLUMN = SÜTUN ## Bir başvurunun sütun sayısını verir. +COLUMNS = SÜTUNSAY ## Bir başvurudaki sütunların sayısını verir. +HLOOKUP = YATAYARA ## Bir dizinin en üst satırına bakar ve belirtilen hücrenin değerini verir. +HYPERLINK = KÖPRÜ ## Bir ağ sunucusunda, bir intranette ya da Internet'te depolanan bir belgeyi açan bir kısayol ya da atlama oluşturur. +INDEX = İNDİS ## Başvurudan veya diziden bir değer seçmek için, bir dizin kullanır. +INDIRECT = DOLAYLI ## Metin değeriyle belirtilen bir başvuru verir. +LOOKUP = ARA ## Bir vektördeki veya dizideki değerleri arar. +MATCH = KAÇINCI ## Bir başvurudaki veya dizideki değerleri arar. +OFFSET = KAYDIR ## Verilen bir başvurudan, bir başvuru kaydırmayı verir. +ROW = SATIR ## Bir başvurunun satır sayısını verir. +ROWS = SATIRSAY ## Bir başvurudaki satırların sayısını verir. +RTD = RTD ## COM otomasyonunu destekleyen programdan gerçek zaman verileri alır. +TRANSPOSE = DEVRİK_DÖNÜŞÜM ## Bir dizinin devrik dönüşümünü verir. +VLOOKUP = DÜŞEYARA ## Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek için satır boyunca hareket eder. + + +## +## Math and trigonometry functions Matematik ve trigonometri fonksiyonları +## +ABS = MUTLAK ## Bir sayının mutlak değerini verir. +ACOS = ACOS ## Bir sayının ark kosinüsünü verir. +ACOSH = ACOSH ## Bir sayının ters hiperbolik kosinüsünü verir. +ASIN = ASİN ## Bir sayının ark sinüsünü verir. +ASINH = ASİNH ## Bir sayının ters hiperbolik sinüsünü verir. +ATAN = ATAN ## Bir sayının ark tanjantını verir. +ATAN2 = ATAN2 ## Ark tanjantı, x- ve y- koordinatlarından verir. +ATANH = ATANH ## Bir sayının ters hiperbolik tanjantını verir. +CEILING = TAVANAYUVARLA ## Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar. +COMBIN = KOMBİNASYON ## Verilen sayıda öğenin kombinasyon sayısını verir. +COS = COS ## Bir sayının kosinüsünü verir. +COSH = COSH ## Bir sayının hiperbolik kosinüsünü verir. +DEGREES = DERECE ## Radyanları dereceye dönüştürür. +EVEN = ÇİFT ## Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar. +EXP = ÜS ## e'yi, verilen bir sayının üssüne yükseltilmiş olarak verir. +FACT = ÇARPINIM ## Bir sayının faktörünü verir. +FACTDOUBLE = ÇİFTFAKTÖR ## Bir sayının çift çarpınımını verir. +FLOOR = TABANAYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. +GCD = OBEB ## En büyük ortak böleni verir. +INT = TAMSAYI ## Bir sayıyı aşağıya doğru en yakın tamsayıya yuvarlar. +LCM = OKEK ## En küçük ortak katı verir. +LN = LN ## Bir sayının doğal logaritmasını verir. +LOG = LOG ## Bir sayının, belirtilen bir tabandaki logaritmasını verir. +LOG10 = LOG10 ## Bir sayının 10 tabanında logaritmasını verir. +MDETERM = DETERMİNANT ## Bir dizinin dizey determinantını verir. +MINVERSE = DİZEY_TERS ## Bir dizinin dizey tersini verir. +MMULT = DÇARP ## İki dizinin dizey çarpımını verir. +MOD = MODÜLO ## Bölmeden kalanı verir. +MROUND = KYUVARLA ## İstenen kata yuvarlanmış bir sayı verir. +MULTINOMIAL = ÇOKTERİMLİ ## Bir sayılar kümesinin çok terimlisini verir. +ODD = TEK ## Bir sayıyı en yakın daha büyük tek sayıya yuvarlar. +PI = Pİ ## Pi değerini verir. +POWER = KUVVET ## Bir üsse yükseltilmiş sayının sonucunu verir. +PRODUCT = ÇARPIM ## Bağımsız değişkenlerini çarpar. +QUOTIENT = BÖLÜM ## Bir bölme işleminin tamsayı kısmını verir. +RADIANS = RADYAN ## Dereceleri radyanlara dönüştürür. +RAND = S_SAYI_ÜRET ## 0 ile 1 arasında rastgele bir sayı verir. +RANDBETWEEN = RASTGELEARALIK ## Belirttiğiniz sayılar arasında rastgele bir sayı verir. +ROMAN = ROMEN ## Bir normal rakamı, metin olarak, romen rakamına çevirir. +ROUND = YUVARLA ## Bir sayıyı, belirtilen basamak sayısına yuvarlar. +ROUNDDOWN = AŞAĞIYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. +ROUNDUP = YUKARIYUVARLA ## Bir sayıyı daha büyük sayıya, sıfırdan ıraksayarak yuvarlar. +SERIESSUM = SERİTOPLA ## Bir üs serisinin toplamını, formüle bağlı olarak verir. +SIGN = İŞARET ## Bir sayının işaretini verir. +SIN = SİN ## Verilen bir açının sinüsünü verir. +SINH = SİNH ## Bir sayının hiperbolik sinüsünü verir. +SQRT = KAREKÖK ## Pozitif bir karekök verir. +SQRTPI = KAREKÖKPİ ## (* Pi sayısının) kare kökünü verir. +SUBTOTAL = ALTTOPLAM ## Bir listedeki ya da veritabanındaki bir alt toplamı verir. +SUM = TOPLA ## Bağımsız değişkenlerini toplar. +SUMIF = ETOPLA ## Verilen ölçütle belirlenen hücreleri toplar. +SUMIFS = SUMIFS ## Bir aralıktaki, birden fazla ölçüte uyan hücreleri ekler. +SUMPRODUCT = TOPLA.ÇARPIM ## İlişkili dizi bileşenlerinin çarpımlarının toplamını verir. +SUMSQ = TOPKARE ## Bağımsız değişkenlerin karelerinin toplamını verir. +SUMX2MY2 = TOPX2EY2 ## İki dizideki ilişkili değerlerin farkının toplamını verir. +SUMX2PY2 = TOPX2AY2 ## İki dizideki ilişkili değerlerin karelerinin toplamının toplamını verir. +SUMXMY2 = TOPXEY2 ## İki dizideki ilişkili değerlerin farklarının karelerinin toplamını verir. +TAN = TAN ## Bir sayının tanjantını verir. +TANH = TANH ## Bir sayının hiperbolik tanjantını verir. +TRUNC = NSAT ## Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını atar. + + +## +## Statistical functions İstatistiksel fonksiyonlar +## +AVEDEV = ORTSAP ## Veri noktalarının ortalamalarından mutlak sapmalarının ortalamasını verir. +AVERAGE = ORTALAMA ## Bağımsız değişkenlerinin ortalamasını verir. +AVERAGEA = ORTALAMAA ## Bağımsız değişkenlerinin, sayılar, metin ve mantıksal değerleri içermek üzere ortalamasını verir. +AVERAGEIF = EĞERORTALAMA ## Verili ölçütü karşılayan bir aralıktaki bütün hücrelerin ortalamasını (aritmetik ortalama) hesaplar. +AVERAGEIFS = EĞERLERORTALAMA ## Birden çok ölçüte uyan tüm hücrelerin ortalamasını (aritmetik ortalama) hesaplar. +BETADIST = BETADAĞ ## Beta birikimli dağılım fonksiyonunu verir. +BETAINV = BETATERS ## Belirli bir beta dağılımı için birikimli dağılım fonksiyonunun tersini verir. +BINOMDIST = BİNOMDAĞ ## Tek terimli binom dağılımı olasılığını verir. +CHIDIST = KİKAREDAĞ ## Kikare dağılımın tek kuyruklu olasılığını verir. +CHIINV = KİKARETERS ## Kikare dağılımın kuyruklu olasılığının tersini verir. +CHITEST = KİKARETEST ## Bağımsızlık sınamalarını verir. +CONFIDENCE = GÜVENİRLİK ## Bir popülasyon ortalaması için güvenirlik aralığını verir. +CORREL = KORELASYON ## İki veri kümesi arasındaki bağlantı katsayısını verir. +COUNT = BAĞ_DEĞ_SAY ## Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu sayar. +COUNTA = BAĞ_DEĞ_DOLU_SAY ## Bağımsız değişkenler listesinde kaç tane değer bulunduğunu sayar. +COUNTBLANK = BOŞLUKSAY ## Aralıktaki boş hücre sayısını hesaplar. +COUNTIF = EĞERSAY ## Verilen ölçütlere uyan bir aralık içindeki hücreleri sayar. +COUNTIFS = ÇOKEĞERSAY ## Birden çok ölçüte uyan bir aralık içindeki hücreleri sayar. +COVAR = KOVARYANS ## Eşleştirilmiş sapmaların ortalaması olan kovaryansı verir. +CRITBINOM = KRİTİKBİNOM ## Birikimli binom dağılımının bir ölçüt değerinden küçük veya ölçüt değerine eşit olduğu en küçük değeri verir. +DEVSQ = SAPKARE ## Sapmaların karelerinin toplamını verir. +EXPONDIST = ÜSTELDAĞ ## Üstel dağılımı verir. +FDIST = FDAĞ ## F olasılık dağılımını verir. +FINV = FTERS ## F olasılık dağılımının tersini verir. +FISHER = FISHER ## Fisher dönüşümünü verir. +FISHERINV = FISHERTERS ## Fisher dönüşümünün tersini verir. +FORECAST = TAHMİN ## Bir doğrusal eğilim boyunca bir değer verir. +FREQUENCY = SIKLIK ## Bir sıklık dağılımını, dikey bir dizi olarak verir. +FTEST = FTEST ## Bir F-test'in sonucunu verir. +GAMMADIST = GAMADAĞ ## Gama dağılımını verir. +GAMMAINV = GAMATERS ## Gama kümülatif dağılımının tersini verir. +GAMMALN = GAMALN ## Gama fonksiyonunun (?(x)) doğal logaritmasını verir. +GEOMEAN = GEOORT ## Geometrik ortayı verir. +GROWTH = BÜYÜME ## Üstel bir eğilim boyunca değerler verir. +HARMEAN = HARORT ## Harmonik ortayı verir. +HYPGEOMDIST = HİPERGEOMDAĞ ## Hipergeometrik dağılımı verir. +INTERCEPT = KESMENOKTASI ## Doğrusal çakıştırma çizgisinin kesişme noktasını verir. +KURT = BASIKLIK ## Bir veri kümesinin basıklığını verir. +LARGE = BÜYÜK ## Bir veri kümesinde k. en büyük değeri verir. +LINEST = DOT ## Doğrusal bir eğilimin parametrelerini verir. +LOGEST = LOT ## Üstel bir eğilimin parametrelerini verir. +LOGINV = LOGTERS ## Bir lognormal dağılımının tersini verir. +LOGNORMDIST = LOGNORMDAĞ ## Birikimli lognormal dağılımını verir. +MAX = MAK ## Bir bağımsız değişkenler listesindeki en büyük değeri verir. +MAXA = MAKA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri içermek üzere, en büyük değeri verir. +MEDIAN = ORTANCA ## Belirtilen sayıların orta değerini verir. +MIN = MİN ## Bir bağımsız değişkenler listesindeki en küçük değeri verir. +MINA = MİNA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri de içermek üzere, en küçük değeri verir. +MODE = ENÇOK_OLAN ## Bir veri kümesindeki en sık rastlanan değeri verir. +NEGBINOMDIST = NEGBİNOMDAĞ ## Negatif binom dağılımını verir. +NORMDIST = NORMDAĞ ## Normal birikimli dağılımı verir. +NORMINV = NORMTERS ## Normal kümülatif dağılımın tersini verir. +NORMSDIST = NORMSDAĞ ## Standart normal birikimli dağılımı verir. +NORMSINV = NORMSTERS ## Standart normal birikimli dağılımın tersini verir. +PEARSON = PEARSON ## Pearson çarpım moment korelasyon katsayısını verir. +PERCENTILE = YÜZDEBİRLİK ## Bir aralık içerisinde bulunan değerlerin k. frekans toplamını verir. +PERCENTRANK = YÜZDERANK ## Bir veri kümesindeki bir değerin yüzde mertebesini verir. +PERMUT = PERMÜTASYON ## Verilen sayıda nesne için permütasyon sayısını verir. +POISSON = POISSON ## Poisson dağılımını verir. +PROB = OLASILIK ## Bir aralıktaki değerlerin iki sınır arasında olması olasılığını verir. +QUARTILE = DÖRTTEBİRLİK ## Bir veri kümesinin dörtte birliğini verir. +RANK = RANK ## Bir sayılar listesinde bir sayının mertebesini verir. +RSQ = RKARE ## Pearson çarpım moment korelasyon katsayısının karesini verir. +SKEW = ÇARPIKLIK ## Bir dağılımın çarpıklığını verir. +SLOPE = EĞİM ## Doğrusal çakışma çizgisinin eğimini verir. +SMALL = KÜÇÜK ## Bir veri kümesinde k. en küçük değeri verir. +STANDARDIZE = STANDARTLAŞTIRMA ## Normalleştirilmiş bir değer verir. +STDEV = STDSAPMA ## Bir örneğe dayanarak standart sapmayı tahmin eder. +STDEVA = STDSAPMAA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. +STDEVP = STDSAPMAS ## Standart sapmayı, tüm popülasyona bağlı olarak hesaplar. +STDEVPA = STDSAPMASA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. +STEYX = STHYX ## Regresyondaki her x için tahmini y değerinin standart hatasını verir. +TDIST = TDAĞ ## T-dağılımını verir. +TINV = TTERS ## T-dağılımının tersini verir. +TREND = EĞİLİM ## Doğrusal bir eğilim boyunca değerler verir. +TRIMMEAN = KIRPORTALAMA ## Bir veri kümesinin içinin ortalamasını verir. +TTEST = TTEST ## T-test'le ilişkilendirilmiş olasılığı verir. +VAR = VAR ## Varyansı, bir örneğe bağlı olarak tahmin eder. +VARA = VARA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. +VARP = VARS ## Varyansı, tüm popülasyona dayanarak hesaplar. +VARPA = VARSA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. +WEIBULL = WEIBULL ## Weibull dağılımını hesaplar. +ZTEST = ZTEST ## Z-testinin tek kuyruklu olasılık değerini hesaplar. + + +## +## Text functions Metin fonksiyonları +## +ASC = ASC ## Bir karakter dizesindeki çift enli (iki bayt) İngilizce harfleri veya katakanayı yarım enli (tek bayt) karakterlerle değiştirir. +BAHTTEXT = BAHTTEXT ## Sayıyı, ß (baht) para birimi biçimini kullanarak metne dönüştürür. +CHAR = DAMGA ## Kod sayısıyla belirtilen karakteri verir. +CLEAN = TEMİZ ## Metindeki bütün yazdırılamaz karakterleri kaldırır. +CODE = KOD ## Bir metin dizesindeki ilk karakter için sayısal bir kod verir. +CONCATENATE = BİRLEŞTİR ## Pek çok metin öğesini bir metin öğesi olarak birleştirir. +DOLLAR = LİRA ## Bir sayıyı YTL (yeni Türk lirası) para birimi biçimini kullanarak metne dönüştürür. +EXACT = ÖZDEŞ ## İki metin değerinin özdeş olup olmadığını anlamak için, değerleri denetler. +FIND = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). +FINDB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). +FIXED = SAYIDÜZENLE ## Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir. +JIS = JIS ## Bir karakter dizesindeki tek enli (tek bayt) İngilizce harfleri veya katakanayı çift enli (iki bayt) karakterlerle değiştirir. +LEFT = SOL ## Bir metin değerinden en soldaki karakterleri verir. +LEFTB = SOLB ## Bir metin değerinden en soldaki karakterleri verir. +LEN = UZUNLUK ## Bir metin dizesindeki karakter sayısını verir. +LENB = UZUNLUKB ## Bir metin dizesindeki karakter sayısını verir. +LOWER = KÜÇÜKHARF ## Metni küçük harfe çevirir. +MID = ORTA ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. +MIDB = ORTAB ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. +PHONETIC = SES ## Metin dizesinden ses (furigana) karakterlerini ayıklar. +PROPER = YAZIM.DÜZENİ ## Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe çevirir. +REPLACE = DEĞİŞTİR ## Metnin içindeki karakterleri değiştirir. +REPLACEB = DEĞİŞTİRB ## Metnin içindeki karakterleri değiştirir. +REPT = YİNELE ## Metni belirtilen sayıda yineler. +RIGHT = SAĞ ## Bir metin değerinden en sağdaki karakterleri verir. +RIGHTB = SAĞB ## Bir metin değerinden en sağdaki karakterleri verir. +SEARCH = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). +SEARCHB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). +SUBSTITUTE = YERİNEKOY ## Bir metin dizesinde, eski metnin yerine yeni metin koyar. +T = M ## Bağımsız değerlerini metne dönüştürür. +TEXT = METNEÇEVİR ## Bir sayıyı biçimlendirir ve metne dönüştürür. +TRIM = KIRP ## Metindeki boşlukları kaldırır. +UPPER = BÜYÜKHARF ## Metni büyük harfe çevirir. +VALUE = SAYIYAÇEVİR ## Bir metin bağımsız değişkenini sayıya dönüştürür. From 443c5a490aa8d05e1a93ad24b0179e71c187f77b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 8 Apr 2016 15:36:24 +0200 Subject: [PATCH 114/380] Update ckeditor to 4.5.8 --- COPYRIGHT | 2 +- htdocs/includes/ckeditor/ckeditor/CHANGES.md | 30 +- htdocs/includes/ckeditor/ckeditor/LICENSE.md | 4 +- .../ckeditor/ckeditor/adapters/jquery.js | 2 +- htdocs/includes/ckeditor/ckeditor/bower.json | 10 +- .../ckeditor/ckeditor/build-config.js | 9 +- htdocs/includes/ckeditor/ckeditor/ckeditor.js | 2121 +++++++++-------- .../includes/ckeditor/ckeditor/composer.json | 2 +- .../includes/ckeditor/ckeditor/contents.css | 7 +- htdocs/includes/ckeditor/ckeditor/lang/af.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ar.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/bg.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/bn.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/bs.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ca.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/cs.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/cy.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/da.js | 4 +- .../includes/ckeditor/ckeditor/lang/de-ch.js | 5 + htdocs/includes/ckeditor/ckeditor/lang/de.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/el.js | 4 +- .../includes/ckeditor/ckeditor/lang/en-au.js | 4 +- .../includes/ckeditor/ckeditor/lang/en-ca.js | 4 +- .../includes/ckeditor/ckeditor/lang/en-gb.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/en.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/eo.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/es.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/et.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/eu.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/fa.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/fi.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/fo.js | 4 +- .../includes/ckeditor/ckeditor/lang/fr-ca.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/fr.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/gl.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/gu.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/he.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/hi.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/hr.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/hu.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/id.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/is.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/it.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ja.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ka.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/km.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ko.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ku.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/lt.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/lv.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/mk.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/mn.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ms.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/nb.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/nl.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/no.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/pl.js | 4 +- .../includes/ckeditor/ckeditor/lang/pt-br.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/pt.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ro.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ru.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/si.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/sk.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/sl.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/sq.js | 4 +- .../ckeditor/ckeditor/lang/sr-latn.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/sr.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/sv.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/th.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/tr.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/tt.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/ug.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/uk.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/vi.js | 4 +- .../includes/ckeditor/ckeditor/lang/zh-cn.js | 4 +- htdocs/includes/ckeditor/ckeditor/lang/zh.js | 4 +- .../includes/ckeditor/ckeditor/package.json | 26 + .../plugins/a11yhelp/dialogs/a11yhelp.js | 2 +- .../dialogs/lang/_translationstatus.txt | 2 +- .../plugins/a11yhelp/dialogs/lang/af.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ar.js | 2 +- .../plugins/a11yhelp/dialogs/lang/bg.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ca.js | 2 +- .../plugins/a11yhelp/dialogs/lang/cs.js | 2 +- .../plugins/a11yhelp/dialogs/lang/cy.js | 2 +- .../plugins/a11yhelp/dialogs/lang/da.js | 2 +- .../plugins/a11yhelp/dialogs/lang/de-ch.js | 12 + .../plugins/a11yhelp/dialogs/lang/de.js | 2 +- .../plugins/a11yhelp/dialogs/lang/el.js | 2 +- .../plugins/a11yhelp/dialogs/lang/en-gb.js | 2 +- .../plugins/a11yhelp/dialogs/lang/en.js | 2 +- .../plugins/a11yhelp/dialogs/lang/eo.js | 2 +- .../plugins/a11yhelp/dialogs/lang/es.js | 2 +- .../plugins/a11yhelp/dialogs/lang/et.js | 2 +- .../plugins/a11yhelp/dialogs/lang/eu.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fa.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fi.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fo.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 2 +- .../plugins/a11yhelp/dialogs/lang/fr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/gl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/gu.js | 2 +- .../plugins/a11yhelp/dialogs/lang/he.js | 2 +- .../plugins/a11yhelp/dialogs/lang/hi.js | 2 +- .../plugins/a11yhelp/dialogs/lang/hr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/hu.js | 2 +- .../plugins/a11yhelp/dialogs/lang/id.js | 2 +- .../plugins/a11yhelp/dialogs/lang/it.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ja.js | 2 +- .../plugins/a11yhelp/dialogs/lang/km.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ko.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ku.js | 2 +- .../plugins/a11yhelp/dialogs/lang/lt.js | 2 +- .../plugins/a11yhelp/dialogs/lang/lv.js | 2 +- .../plugins/a11yhelp/dialogs/lang/mk.js | 14 +- .../plugins/a11yhelp/dialogs/lang/mn.js | 2 +- .../plugins/a11yhelp/dialogs/lang/nb.js | 2 +- .../plugins/a11yhelp/dialogs/lang/nl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/no.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pt-br.js | 2 +- .../plugins/a11yhelp/dialogs/lang/pt.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ro.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ru.js | 2 +- .../plugins/a11yhelp/dialogs/lang/si.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sk.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sl.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sq.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/sv.js | 2 +- .../plugins/a11yhelp/dialogs/lang/th.js | 2 +- .../plugins/a11yhelp/dialogs/lang/tr.js | 2 +- .../plugins/a11yhelp/dialogs/lang/tt.js | 2 +- .../plugins/a11yhelp/dialogs/lang/ug.js | 2 +- .../plugins/a11yhelp/dialogs/lang/uk.js | 2 +- .../plugins/a11yhelp/dialogs/lang/vi.js | 2 +- .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 2 +- .../plugins/a11yhelp/dialogs/lang/zh.js | 2 +- .../ckeditor/plugins/about/dialogs/about.js | 2 +- .../plugins/clipboard/dialogs/paste.js | 2 +- .../colordialog/dialogs/colordialog.js | 2 +- .../plugins/dialog/dialogDefinition.js | 2 +- .../ckeditor/plugins/find/dialogs/find.js | 2 +- .../ckeditor/plugins/flash/dialogs/flash.js | 2 +- .../ckeditor/plugins/forms/dialogs/button.js | 2 +- .../plugins/forms/dialogs/checkbox.js | 2 +- .../ckeditor/plugins/forms/dialogs/form.js | 2 +- .../plugins/forms/dialogs/hiddenfield.js | 2 +- .../ckeditor/plugins/forms/dialogs/radio.js | 2 +- .../ckeditor/plugins/forms/dialogs/select.js | 2 +- .../plugins/forms/dialogs/textarea.js | 2 +- .../plugins/forms/dialogs/textfield.js | 2 +- .../ckeditor/ckeditor/plugins/icons.png | Bin 20634 -> 16152 bytes .../ckeditor/ckeditor/plugins/icons_hidpi.png | Bin 67753 -> 56750 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 2 +- .../ckeditor/plugins/image/dialogs/image.js | 2 +- .../ckeditor/plugins/link/dialogs/anchor.js | 2 +- .../ckeditor/plugins/link/dialogs/link.js | 2 +- .../plugins/liststyle/dialogs/liststyle.js | 2 +- .../plugins/pastefromword/filter/default.js | 2 +- .../ckeditor/plugins/scayt/CHANGELOG.md | 6 +- .../ckeditor/plugins/smiley/dialogs/smiley.js | 2 +- .../dialogs/lang/_translationstatus.txt | 2 +- .../plugins/specialchar/dialogs/lang/af.js | 2 +- .../plugins/specialchar/dialogs/lang/ar.js | 2 +- .../plugins/specialchar/dialogs/lang/bg.js | 2 +- .../plugins/specialchar/dialogs/lang/ca.js | 2 +- .../plugins/specialchar/dialogs/lang/cs.js | 2 +- .../plugins/specialchar/dialogs/lang/cy.js | 2 +- .../plugins/specialchar/dialogs/lang/da.js | 2 +- .../plugins/specialchar/dialogs/lang/de-ch.js | 13 + .../plugins/specialchar/dialogs/lang/de.js | 2 +- .../plugins/specialchar/dialogs/lang/el.js | 2 +- .../plugins/specialchar/dialogs/lang/en-gb.js | 2 +- .../plugins/specialchar/dialogs/lang/en.js | 2 +- .../plugins/specialchar/dialogs/lang/eo.js | 2 +- .../plugins/specialchar/dialogs/lang/es.js | 2 +- .../plugins/specialchar/dialogs/lang/et.js | 2 +- .../plugins/specialchar/dialogs/lang/eu.js | 2 +- .../plugins/specialchar/dialogs/lang/fa.js | 2 +- .../plugins/specialchar/dialogs/lang/fi.js | 2 +- .../plugins/specialchar/dialogs/lang/fr-ca.js | 2 +- .../plugins/specialchar/dialogs/lang/fr.js | 2 +- .../plugins/specialchar/dialogs/lang/gl.js | 2 +- .../plugins/specialchar/dialogs/lang/he.js | 2 +- .../plugins/specialchar/dialogs/lang/hr.js | 2 +- .../plugins/specialchar/dialogs/lang/hu.js | 2 +- .../plugins/specialchar/dialogs/lang/id.js | 2 +- .../plugins/specialchar/dialogs/lang/it.js | 2 +- .../plugins/specialchar/dialogs/lang/ja.js | 2 +- .../plugins/specialchar/dialogs/lang/km.js | 2 +- .../plugins/specialchar/dialogs/lang/ko.js | 2 +- .../plugins/specialchar/dialogs/lang/ku.js | 2 +- .../plugins/specialchar/dialogs/lang/lt.js | 2 +- .../plugins/specialchar/dialogs/lang/lv.js | 2 +- .../plugins/specialchar/dialogs/lang/nb.js | 2 +- .../plugins/specialchar/dialogs/lang/nl.js | 2 +- .../plugins/specialchar/dialogs/lang/no.js | 2 +- .../plugins/specialchar/dialogs/lang/pl.js | 2 +- .../plugins/specialchar/dialogs/lang/pt-br.js | 2 +- .../plugins/specialchar/dialogs/lang/pt.js | 2 +- .../plugins/specialchar/dialogs/lang/ru.js | 2 +- .../plugins/specialchar/dialogs/lang/si.js | 2 +- .../plugins/specialchar/dialogs/lang/sk.js | 2 +- .../plugins/specialchar/dialogs/lang/sl.js | 2 +- .../plugins/specialchar/dialogs/lang/sq.js | 2 +- .../plugins/specialchar/dialogs/lang/sv.js | 2 +- .../plugins/specialchar/dialogs/lang/th.js | 2 +- .../plugins/specialchar/dialogs/lang/tr.js | 2 +- .../plugins/specialchar/dialogs/lang/tt.js | 2 +- .../plugins/specialchar/dialogs/lang/ug.js | 2 +- .../plugins/specialchar/dialogs/lang/uk.js | 2 +- .../plugins/specialchar/dialogs/lang/vi.js | 2 +- .../plugins/specialchar/dialogs/lang/zh-cn.js | 2 +- .../plugins/specialchar/dialogs/lang/zh.js | 2 +- .../specialchar/dialogs/specialchar.js | 2 +- .../ckeditor/plugins/table/dialogs/table.js | 36 +- .../plugins/tabletools/dialogs/tableCell.js | 2 +- .../plugins/templates/dialogs/templates.css | 2 +- .../plugins/templates/dialogs/templates.js | 2 +- .../plugins/templates/templates/default.js | 2 +- .../ckeditor/ckeditor/samples/css/samples.css | 2 +- .../ckeditor/ckeditor/samples/index.html | 4 +- .../ckeditor/ckeditor/samples/js/sample.js | 4 +- .../ckeditor/ckeditor/samples/js/sf.js | 2 +- .../ckeditor/ckeditor/samples/old/ajax.html | 4 +- .../ckeditor/ckeditor/samples/old/api.html | 4 +- .../ckeditor/samples/old/appendto.html | 4 +- .../old/assets/outputxhtml/outputxhtml.css | 2 +- .../samples/old/assets/posteddata.php | 4 +- .../old/assets/uilanguages/languages.js | 8 +- .../ckeditor/samples/old/datafiltering.html | 4 +- .../samples/old/dialog/assets/my_dialog.js | 4 +- .../ckeditor/samples/old/dialog/dialog.html | 4 +- .../ckeditor/samples/old/divreplace.html | 4 +- .../samples/old/enterkey/enterkey.html | 4 +- .../old/htmlwriter/outputforflash.html | 4 +- .../samples/old/htmlwriter/outputhtml.html | 4 +- .../ckeditor/ckeditor/samples/old/index.html | 10 +- .../ckeditor/samples/old/inlineall.html | 4 +- .../ckeditor/samples/old/inlinebycode.html | 4 +- .../ckeditor/samples/old/inlinetextarea.html | 4 +- .../ckeditor/ckeditor/samples/old/jquery.html | 4 +- .../samples/old/magicline/magicline.html | 4 +- .../ckeditor/samples/old/readonly.html | 4 +- .../ckeditor/samples/old/replacebyclass.html | 4 +- .../ckeditor/samples/old/replacebycode.html | 4 +- .../ckeditor/ckeditor/samples/old/sample.css | 2 +- .../ckeditor/ckeditor/samples/old/sample.js | 4 +- .../samples/old/sample_posteddata.php | 2 +- .../ckeditor/samples/old/tabindex.html | 4 +- .../ckeditor/samples/old/toolbar/toolbar.html | 4 +- .../ckeditor/samples/old/uicolor.html | 4 +- .../ckeditor/samples/old/uilanguages.html | 4 +- .../samples/old/wysiwygarea/fullpage.html | 4 +- .../ckeditor/samples/old/xhtmlstyle.html | 4 +- .../samples/toolbarconfigurator/index.html | 4 +- .../ckeditor/ckeditor/skins/moono/dialog.css | 2 +- .../ckeditor/skins/moono/dialog_ie.css | 2 +- .../ckeditor/skins/moono/dialog_ie7.css | 2 +- .../ckeditor/skins/moono/dialog_ie8.css | 2 +- .../ckeditor/skins/moono/dialog_iequirks.css | 2 +- .../ckeditor/ckeditor/skins/moono/editor.css | 4 +- .../ckeditor/skins/moono/editor_gecko.css | 4 +- .../ckeditor/skins/moono/editor_ie.css | 4 +- .../ckeditor/skins/moono/editor_ie7.css | 4 +- .../ckeditor/skins/moono/editor_ie8.css | 4 +- .../ckeditor/skins/moono/editor_iequirks.css | 4 +- .../ckeditor/ckeditor/skins/moono/icons.png | Bin 20634 -> 16152 bytes .../ckeditor/skins/moono/icons_hidpi.png | Bin 67753 -> 56750 bytes .../ckeditor/ckeditor/skins/moono/readme.md | 2 +- htdocs/includes/ckeditor/ckeditor/styles.js | 4 +- 273 files changed, 1557 insertions(+), 1466 deletions(-) create mode 100644 htdocs/includes/ckeditor/ckeditor/lang/de-ch.js create mode 100644 htdocs/includes/ckeditor/ckeditor/package.json create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js create mode 100644 htdocs/includes/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js diff --git a/COPYRIGHT b/COPYRIGHT index 6c2dab9444a..406b936becc 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -14,7 +14,7 @@ Component Version License GPL Compatible PHP libraries: AdoDb-Date 0.36 Modified BSD License Yes Date convertion (not into rpm package) ChromePHP 4.1.0 Apache Software License 2.0 Yes Return server log to chrome browser console -CKEditor 4.5.6 LGPL-2.1+ Yes Editor WYSIWYG +CKEditor 4.5.8 LGPL-2.1+ Yes Editor WYSIWYG EvalMath 1.0 BSD Yes Safe math expressions evaluation Escpos-php MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers FPDI 1.5.2 Apache Software License 2.0 Yes PDF templates management diff --git a/htdocs/includes/ckeditor/ckeditor/CHANGES.md b/htdocs/includes/ckeditor/ckeditor/CHANGES.md index ff1cb9fdfa6..f751de99327 100644 --- a/htdocs/includes/ckeditor/ckeditor/CHANGES.md +++ b/htdocs/includes/ckeditor/ckeditor/CHANGES.md @@ -1,6 +1,34 @@ CKEditor 4 Changelog ==================== +## CKEditor 4.5.8 + +New Features: + +* [#12440](http://dev.ckeditor.com/ticket/12440): Added the [`config.colorButton_enableAutomatic`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_enableAutomatic) option to allow hiding the "Automatic" option in the [color picker](http://ckeditor.com/addon/colorbutton). + +Fixed Issues: + +* [#10448](http://dev.ckeditor.com/ticket/10448): Fixed: Lack of scrollbar in the [right-to-left text direction](http://ckeditor.com/addon/bidi). +* [#12707](http://dev.ckeditor.com/ticket/12707): Fixed: The order of table elements does not comply with the HTML specification. +* [#13756](http://dev.ckeditor.com/ticket/13756): [Edge] Fixed: Context menus are cut-off. + +## CKEditor 4.5.7 + +New Features: + +* [#14327](http://dev.ckeditor.com/ticket/14327): Added Swiss German localization. Thanks to [Miro Grenda](https://twitter.com/mirogrenda)! + +Fixed Issues: + +* [#13816](http://dev.ckeditor.com/ticket/13816): Introduced a new strategy for Filling Character handling to avoid changes in DOM. This fixes the following issues: + * [#12727](http://dev.ckeditor.com/ticket/12727): [Blink] `IndexSizeError` when using the [Div Editing Area](http://ckeditor.com/addon/divarea) and [Content Templates](http://ckeditor.com/addon/templates) plugins. + * [#13377](http://dev.ckeditor.com/ticket/13377): [Widget](http://ckeditor.com/addon/widget) plugin issue when typing in Korean. + * [#13389](http://dev.ckeditor.com/ticket/13389): [Blink] [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) fails when the cursor is next to an `


    ` tag. + * [#13513](http://dev.ckeditor.com/ticket/13513): [Blink, WebKit] [Div Editing Area](http://ckeditor.com/addon/divarea) and [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) throw an error when an image is the only data in the editor. +* [#13884](http://dev.ckeditor.com/ticket/13884): [Firefox] Fixed: Copying and pasting a table results in just the first cell being pasted. +* [#14234](http://dev.ckeditor.com/ticket/14234): Fixed: URL input field is not marked as required in the [Media Embed](http://ckeditor.com/addon/embed) dialog. + ## CKEditor 4.5.6 New Features: @@ -82,7 +110,7 @@ Other Changes: New Features: -* [#13501](http://dev.ckeditor.com/ticket/13501): Added the [`config.fileTools_defaultFileName`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fileTools_defaultFileName) option to allow setting a default filen ame for paste uploads. +* [#13501](http://dev.ckeditor.com/ticket/13501): Added the [`config.fileTools_defaultFileName`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fileTools_defaultFileName) option to allow setting a default file name for paste uploads. * [#13603](http://dev.ckeditor.com/ticket/13603): Added support for uploading dropped BMP images. Fixed Issues: diff --git a/htdocs/includes/ckeditor/ckeditor/LICENSE.md b/htdocs/includes/ckeditor/ckeditor/LICENSE.md index 5e1e06d354b..55be53afa12 100644 --- a/htdocs/includes/ckeditor/ckeditor/LICENSE.md +++ b/htdocs/includes/ckeditor/ckeditor/LICENSE.md @@ -2,7 +2,7 @@ Software License Agreement ========================== CKEditor - The text editor for Internet - http://ckeditor.com -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. Licensed under the terms of any of the following licenses at your choice: @@ -37,7 +37,7 @@ done by developers outside of CKSource with their express permission. The following libraries are included in CKEditor under the MIT license (see Appendix D): -* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2015, CKSource - Frederico Knabben. +* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2016, CKSource - Frederico Knabben. * PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. * CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke and others. diff --git a/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js b/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js index 1d5337cad60..9a99b650f87 100644 --- a/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js +++ b/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js @@ -1,5 +1,5 @@ /* - Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ (function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a}, diff --git a/htdocs/includes/ckeditor/ckeditor/bower.json b/htdocs/includes/ckeditor/ckeditor/bower.json index 24abbe71c47..1adf76eff5f 100644 --- a/htdocs/includes/ckeditor/ckeditor/bower.json +++ b/htdocs/includes/ckeditor/ckeditor/bower.json @@ -2,7 +2,9 @@ "name": "ckeditor", "description": "JavaScript WYSIWYG web text editor.", "keywords": [ "ckeditor", "fckeditor", "editor", "wysiwyg", "html", "richtext", "text", "javascript" ], - "authors": "CKSource - Frederico Knabben (http://cksource.com)", - "license": "http://ckeditor.com/about/license", - "homepage": "http://ckeditor.com" -} \ No newline at end of file + "authors": "CKSource (http://cksource.com/)", + "license": "For licensing, see LICENSE.md or http://ckeditor.com/license.", + "homepage": "http://ckeditor.com", + "main": "./ckeditor.js", + "moduleType": "globals" +} diff --git a/htdocs/includes/ckeditor/ckeditor/build-config.js b/htdocs/includes/ckeditor/ckeditor/build-config.js index e79fa261ea3..26859b96e8e 100644 --- a/htdocs/includes/ckeditor/ckeditor/build-config.js +++ b/htdocs/includes/ckeditor/ckeditor/build-config.js @@ -1,5 +1,5 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +/** + * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ @@ -13,10 +13,10 @@ * (1) http://ckeditor.com/builder * Visit online builder to build CKEditor from scratch. * - * (2) http://ckeditor.com/builder/e6b8a045f8f984a69463975ca3e6524a + * (2) http://ckeditor.com/builder/9112f95de78a7f2c3576c61a29c8fc5b * Visit online builder to build CKEditor, starting with the same setup as before. * - * (3) http://ckeditor.com/builder/download/e6b8a045f8f984a69463975ca3e6524a + * (3) http://ckeditor.com/builder/download/9112f95de78a7f2c3576c61a29c8fc5b * Straight download link to the latest version of CKEditor (Optimized) with the same setup as before. * * NOTE: @@ -121,6 +121,7 @@ var CKBUILDER_CONFIG = { 'cy' : 1, 'da' : 1, 'de' : 1, + 'de-ch' : 1, 'el' : 1, 'en' : 1, 'en-au' : 1, diff --git a/htdocs/includes/ckeditor/ckeditor/ckeditor.js b/htdocs/includes/ckeditor/ckeditor/ckeditor.js index 02b69d1a00c..b9bcf477a12 100644 --- a/htdocs/includes/ckeditor/ckeditor/ckeditor.js +++ b/htdocs/includes/ckeditor/ckeditor/ckeditor.js @@ -1,1083 +1,1084 @@ /* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ -(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,d={timestamp:"FB9E",version:"4.5.6",revision:"91e81fe",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var b=window.CKEDITOR_BASEPATH||"";if(!b)for(var c=document.getElementsByTagName("script"),d=0;df.getListenerIndex(d)){f=f.listeners;g||(g=this);isNaN(l)&&(l=10);var z=this;q.fn=d;q.priority=l;for(var A=f.length-1;0<=A;A--)if(f[A].priority<=l)return f.splice(A+1,0,q),{removeListener:t};f.unshift(q)}return{removeListener:t}}, -once:function(){var a=Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},g=0,h=function(){g=1};return function(l,q,t){var f=d(this)[l];l=a;var z=g;a=g=0;if(f){var A=f.listeners;if(A.length)for(var A=A.slice(0),u,C=0;Cdocument.documentMode),mobile:-1c||b.quirks);b.gecko&&(d=a.match(/rv:([\d\.]+)/))&&(d=d[1].split("."),c=1E4*d[0]+100*(d[1]||0)+1*(d[2]||0));b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1])); -b.webkit&&(c=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=c;b.isCompatible=!(b.ie&&7>c)&&!(b.gecko&&4E4>c)&&!(b.webkit&&534>c);b.hidpi=2<=window.devicePixelRatio;b.needsBrFiller=b.gecko||b.webkit||b.ie&&10c;b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.webkit?"webkit":"unknown");b.quirks&&(b.cssClass+=" cke_browser_quirks");b.ie&&(b.cssClass+=" cke_browser_ie"+(b.quirks?"6 cke_browser_iequirks":b.version));b.air&&(b.cssClass+=" cke_browser_air"); -b.iOS&&(b.cssClass+=" cke_browser_ios");b.hidpi&&(b.cssClass+=" cke_hidpi");return b}()); -"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if("basic_ready"!=CKEDITOR.status)CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a= -CKEDITOR.loadFullCore,d=CKEDITOR.loadFullCoreTimeout;a&&(CKEDITOR.status="basic_ready",a&&a._load?a():d&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*d))})})();CKEDITOR.status="basic_loaded"}();"use strict";CKEDITOR.VERBOSITY_WARN=1;CKEDITOR.VERBOSITY_ERROR=2;CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR;CKEDITOR.warn=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:a,additionalData:d})}; -CKEDITOR.error=function(a,d){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log",{type:"error",errorCode:a,additionalData:d})}; -CKEDITOR.on("log",function(a){if(window.console&&window.console.log){var d=console[a.data.type]?a.data.type:"log",b=a.data.errorCode;if(a=a.data.additionalData)console[d]("[CKEDITOR] Error code: "+b+".",a);else console[d]("[CKEDITOR] Error code: "+b+".");console[d]("[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+b)}},null,null,999);CKEDITOR.dom={}; -(function(){var a=[],d=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,e=/|\s) /g, -function(a,f){return f+"\x26nbsp;"}).replace(/ (?=<)/g,"\x26nbsp;")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var a="e",f=0;8>f;f++)a+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return a},override:function(a,f){var b=f(a);b.prototype=a.prototype;return b},setTimeout:function(a,f,b,c,l){l||(l=window);b||(b=l);return l.setTimeout(function(){c?a.apply(b,[].concat(c)):a.apply(b)}, -f||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(f){return f.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(f){return f.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(f){return f.replace(a,"")}}(),indexOf:function(a,f){if("function"==typeof f)for(var b=0,c=a.length;bb;b++)a[b]=("0"+parseInt(a[b],10).toString(16)).slice(-2); -return"#"+a.join("")})},parseCssText:function(a,b,c){var l={};c&&(c=new CKEDITOR.dom.element("span"),c.setAttribute("style",a),a=CKEDITOR.tools.convertRgbToHex(c.getAttribute("style")||""));if(!a||";"==a)return l;a.replace(/"/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,d){b&&(c=c.toLowerCase(),"font-family"==c&&(d=d.toLowerCase().replace(/["']/g,"").replace(/\s*,\s*/g,",")),d=CKEDITOR.tools.trim(d));l[c]=d});return l},writeCssText:function(a,b){var c,l=[];for(c in a)l.push(c+ -":"+a[c]);b&&l.sort();return l.join("; ")},objectCompare:function(a,b,c){var l;if(!a&&!b)return!0;if(!a||!b)return!1;for(l in a)if(a[l]!=b[l])return!1;if(!c)for(l in b)if(a[l]!=b[l])return!1;return!0},objectKeys:function(a){var b=[],c;for(c in a)b.push(c);return b},convertArrayToObject:function(a,b){var c={};1==arguments.length&&(b=!0);for(var l=0,d=a.length;lc;c++)a.push(Math.floor(256*Math.random())); -for(c=0;cCKEDITOR.env.version&&(this.type==CKEDITOR.NODE_ELEMENT||this.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)&&c(e);return e},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$,a.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$, -a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$,this.$);return a},getAddress:function(a){for(var d=[],b=this.getDocument().$.documentElement,c=this.$;c&&c!=b;){var e=c.parentNode;e&&d.unshift(this.getIndex.call({$:c},a));c=e}return d},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(a){function d(a,b){var c=b?a.nextSibling:a.previousSibling;return c&&c.nodeType==CKEDITOR.NODE_TEXT?c.nodeValue? -c:d(c,b):null}var b=this.$,c=-1,e;if(!this.$.parentNode||a&&b.nodeType==CKEDITOR.NODE_TEXT&&!b.nodeValue&&!d(b)&&!d(b,!0))return-1;do if(!a||b==this.$||b.nodeType!=CKEDITOR.NODE_TEXT||!e&&b.nodeValue)c++,e=b.nodeType==CKEDITOR.NODE_TEXT;while(b=b.previousSibling);return c},getNextSourceNode:function(a,d,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getFirst&&this.getFirst();var e;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getNext()}for(;!a&& -(e=(e||this).getParent());){if(b&&!1===b(e,!0))return null;a=e.getNext()}return!a||b&&!1===b(a)?null:d&&d!=a.type?a.getNextSourceNode(!1,d,b):a},getPreviousSourceNode:function(a,d,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getLast&&this.getLast();var e;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getPrevious()}for(;!a&&(e=(e||this).getParent());){if(b&&!1===b(e,!0))return null;a=e.getPrevious()}return!a||b&&!1===b(a)?null:d&&a.type!= -d?a.getPreviousSourceNode(!1,d,b):a},getPrevious:function(a){var d=this.$,b;do b=(d=d.previousSibling)&&10!=d.nodeType&&new CKEDITOR.dom.node(d);while(b&&a&&!a(b));return b},getNext:function(a){var d=this.$,b;do b=(d=d.nextSibling)&&new CKEDITOR.dom.node(d);while(b&&a&&!a(b));return b},getParent:function(a){var d=this.$.parentNode;return d&&(d.nodeType==CKEDITOR.NODE_ELEMENT||a&&d.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(d):null},getParents:function(a){var d=this,b=[];do b[a? -"push":"unshift"](d);while(d=d.getParent());return b},getCommonAncestor:function(a){if(a.equals(this))return this;if(a.contains&&a.contains(this))return a;var d=this.contains?this:this.getParent();do if(d.contains(a))return d;while(d=d.getParent());return null},getPosition:function(a){var d=this.$,b=a.$;if(d.compareDocumentPosition)return d.compareDocumentPosition(b);if(d==b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(d.contains){if(d.contains(b))return CKEDITOR.POSITION_CONTAINS+ -CKEDITOR.POSITION_PRECEDING;if(b.contains(d))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in d)return 0>d.sourceIndex||0>b.sourceIndex?CKEDITOR.POSITION_DISCONNECTED:d.sourceIndex=document.documentMode||!d||(a=d+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0]; -return a=a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*]*?>)|^/i,'$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+ -CKEDITOR.tools.fixDomain+")();\x3c/script\x3e"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");a||(a=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(a,!0),this.setCustomData("html5ShivFrag",a));return a}});CKEDITOR.dom.nodeList=function(a){this.$=a}; -CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){return 0>a||a>=this.$.length?null:(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,d){"string"==typeof a&&(a=(d?d.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.element.get=function(a){return(a="string"==typeof a?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node; -CKEDITOR.dom.element.createFromHtml=function(a,d){var b=new CKEDITOR.dom.element("div",d);b.setHtml(a);return b.getFirst().remove()};CKEDITOR.dom.element.setMarker=function(a,d,b,c){var e=d.getCustomData("list_marker_id")||d.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),g=d.getCustomData("list_marker_names")||d.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=d;g[b]=1;return d.setCustomData(b,c)}; -CKEDITOR.dom.element.clearAllMarkers=function(a){for(var d in a)CKEDITOR.dom.element.clearMarkers(a,a[d],1)};CKEDITOR.dom.element.clearMarkers=function(a,d,b){var c=d.getCustomData("list_marker_names"),e=d.getCustomData("list_marker_id"),g;for(g in c)d.removeCustomData(g);d.removeCustomData("list_marker_names");b&&(d.removeCustomData("list_marker_id"),delete a[e])}; -(function(){function a(a,b){return-1<(" "+a+" ").replace(g," ").indexOf(" "+b+" ")}function d(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),b=!1);return function(){b||a.removeAttribute("id")}}function b(a,b){return"#"+a.$.id+" "+b.split(/,\s*/).join(", #"+a.$.id+" ")}function c(a){for(var b=0,c=0,f=h[a].length;cCKEDITOR.env.version? -this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&&a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a,b){var c=new CKEDITOR.dom.range(this.getDocument());c.setStartAfter(this);c.setEndAfter(a);var f=c.extractContents(!1,b||!1);c.insertNode(this.remove()); -f.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)&16)}:function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$):b!=a.$&&b.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/, -"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(f){this.$.innerHTML= -"";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML=a;for(b=b.getChildren();b.count();)this.append(b.getItem(0));return a}}:function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(b){this.$[a?"textContent":"innerText"]=b}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a= -"className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":return a=this.$.getAttribute(a,2),0!==a&&0===this.$.tabIndex&&(a=null),a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"): -null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag, -getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]||0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&8>=document.documentMode){var b=this.$.scopeName;"HTML"!= -b&&(a=b.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if("object"==typeof arguments[0])return!!arguments[0][a]; -for(var b=0;bCKEDITOR.env.version&&this.is("a")){var c=this.getParent(); -c.type==CKEDITOR.NODE_ELEMENT&&(c=c.clone(),c.setHtml(b),b=c.getHtml(),c.setHtml(a),a=c.getHtml())}return b==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&"hidden"!=this.getComputedStyle("visibility"),b,c;a&&CKEDITOR.env.webkit&&(b=this.getWindow(),!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement)&&(a=(new CKEDITOR.dom.element(c)).isVisible()));return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return!1;for(var a=this.getChildren(), -b=0,c=a.count();bCKEDITOR.env.version?function(b){return"name"==b?!!this.$.name:a.call(this,b)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$;a=a.$;if(c!=a){var f;if(b)for(;f=c.lastChild;)a.insertBefore(c.removeChild(f),a.firstChild);else for(;f=c.firstChild;)a.appendChild(c.removeChild(f))}},mergeSiblings:function(){function a(b,c,f){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var d=[];c.data("cke-bookmark")||c.isEmptyInlineRemoveable();)if(d.push(c), -c=f?c.getNext():c.getPrevious(),!c||c.type!=CKEDITOR.NODE_ELEMENT)return;if(b.isIdentical(c)){for(var l=f?b.getLast():b.getFirst();d.length;)d.shift().move(b,!f);c.moveChildren(b,!f);c.remove();l&&l.type==CKEDITOR.NODE_ELEMENT&&l.mergeSiblings()}}}return function(b){if(!1===b||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a"))a(this,this.getNext(),!0),a(this,this.getPrevious())}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a, -b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(b,c){"class"==b?this.$.className=c:"style"==b?this.$.style.cssText=c:"tabindex"==b?this.$.tabIndex=c:"checked"==b?this.$.checked=c:"contenteditable"==b?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if("src"==b&&c.match(/^http:\/\//))try{a.apply(this,arguments)}catch(f){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b, -a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){"class"==a?a="className":"tabindex"==a?a="tabIndex":"contenteditable"==a&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;bCKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable", -"on");for(var a,b=this.getElementsByTag("*"),c=0,f=b.count();cu||0u?u:d);c&&(0>e||0e?e:f,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",!0);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+ +(function(){window.CKEDITOR&&window.CKEDITOR.dom||(window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,e={timestamp:"G2VD",version:"4.5.8 (Full)",revision:"c1fc9a9",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var c=window.CKEDITOR_BASEPATH||"";if(!c)for(var b=document.getElementsByTagName("script"),e=0;eg.getListenerIndex(d)){g=g.listeners;e||(e=this);isNaN(f)&&(f=10);var n=this;h.fn=d;h.priority=f;for(var t=g.length-1;0<=t;t--)if(g[t].priority<=f)return g.splice(t+1,0,h),{removeListener:k};g.unshift(h)}return{removeListener:k}},once:function(){var a=Array.prototype.slice.call(arguments),b=a[1];a[1]=function(a){a.removeListener();return b.apply(this, +arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,b=function(){a=1},l=0,m=function(){l=1};return function(f,h,k){var g=e(this)[f];f=a;var n=l;a=l=0;if(g){var t=g.listeners;if(t.length)for(var t=t.slice(0),u,r=0;rdocument.documentMode),mobile:-1c||b.quirks);b.gecko&&(e=a.match(/rv:([\d\.]+)/))&&(e=e[1].split("."),c=1E4*e[0]+100*(e[1]||0)+1*(e[2]||0));b.air&&(c=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));b.webkit&&(c=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));b.version=c;b.isCompatible=!(b.ie&&7>c)&&!(b.gecko&&4E4>c)&&!(b.webkit&& +534>c);b.hidpi=2<=window.devicePixelRatio;b.needsBrFiller=b.gecko||b.webkit||b.ie&&10c;b.cssClass="cke_browser_"+(b.ie?"ie":b.gecko?"gecko":b.webkit?"webkit":"unknown");b.quirks&&(b.cssClass+=" cke_browser_quirks");b.ie&&(b.cssClass+=" cke_browser_ie"+(b.quirks?"6 cke_browser_iequirks":b.version));b.air&&(b.cssClass+=" cke_browser_air");b.iOS&&(b.cssClass+=" cke_browser_ios");b.hidpi&&(b.cssClass+=" cke_hidpi");return b}()),"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR); +CKEDITOR.loadFullCore=function(){if("basic_ready"!=CKEDITOR.status)CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a=CKEDITOR.loadFullCore,e=CKEDITOR.loadFullCoreTimeout;a&&(CKEDITOR.status= +"basic_ready",a&&a._load?a():e&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},1E3*e))})})();CKEDITOR.status="basic_loaded"}(),"use strict",CKEDITOR.VERBOSITY_WARN=1,CKEDITOR.VERBOSITY_ERROR=2,CKEDITOR.verbosity=CKEDITOR.VERBOSITY_WARN|CKEDITOR.VERBOSITY_ERROR,CKEDITOR.warn=function(a,e){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_WARN&&CKEDITOR.fire("log",{type:"warn",errorCode:a,additionalData:e})},CKEDITOR.error=function(a,e){CKEDITOR.verbosity&CKEDITOR.VERBOSITY_ERROR&&CKEDITOR.fire("log", +{type:"error",errorCode:a,additionalData:e})},CKEDITOR.on("log",function(a){if(window.console&&window.console.log){var e=console[a.data.type]?a.data.type:"log",b=a.data.errorCode;if(a=a.data.additionalData)console[e]("[CKEDITOR] Error code: "+b+".",a);else console[e]("[CKEDITOR] Error code: "+b+".");console[e]("[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-"+b)}},null,null,999),CKEDITOR.dom={},function(){var a=[],e=CKEDITOR.env.gecko?"-moz-": +CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,d=/|\s) /g,function(a,g){return g+"\x26nbsp;"}).replace(/ (?=<)/g, +"\x26nbsp;")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},getUniqueId:function(){for(var a="e",g=0;8>g;g++)a+=Math.floor(65536*(1+Math.random())).toString(16).substring(1);return a},override:function(a,g){var b=g(a);b.prototype=a.prototype;return b},setTimeout:function(a,g,b,f,c){c||(c=window);b||(b=c);return c.setTimeout(function(){f?a.apply(b,[].concat(f)):a.apply(b)},g||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g; +return function(g){return g.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(g){return g.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(g){return g.replace(a,"")}}(),indexOf:function(a,g){if("function"==typeof g)for(var b=0,f=a.length;bb;b++)a[b]=("0"+parseInt(a[b],10).toString(16)).slice(-2);return"#"+a.join("")})},parseCssText:function(a, +g,b){var f={};b&&(b=new CKEDITOR.dom.element("span"),b.setAttribute("style",a),a=CKEDITOR.tools.convertRgbToHex(b.getAttribute("style")||""));if(!a||";"==a)return f;a.replace(/"/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,b,c){g&&(b=b.toLowerCase(),"font-family"==b&&(c=c.toLowerCase().replace(/["']/g,"").replace(/\s*,\s*/g,",")),c=CKEDITOR.tools.trim(c));f[b]=c});return f},writeCssText:function(a,g){var b,f=[];for(b in a)f.push(b+":"+a[b]);g&&f.sort();return f.join("; ")}, +objectCompare:function(a,g,b){var f;if(!a&&!g)return!0;if(!a||!g)return!1;for(f in a)if(a[f]!=g[f])return!1;if(!b)for(f in g)if(a[f]!=g[f])return!1;return!0},objectKeys:function(a){var g=[],b;for(b in a)g.push(b);return g},convertArrayToObject:function(a,g){var b={};1==arguments.length&&(g=!0);for(var f=0,c=a.length;fb;b++)a.push(Math.floor(256*Math.random()));for(b=0;bCKEDITOR.env.version&&(this.type==CKEDITOR.NODE_ELEMENT||this.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)&&c(d);return d},hasPrevious:function(){return!!this.$.previousSibling}, +hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$,a.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$,a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$,this.$);return a},getAddress:function(a){for(var e=[],b=this.getDocument().$.documentElement,c=this.$;c&&c!=b;){var d=c.parentNode;d&&e.unshift(this.getIndex.call({$:c},a));c=d}return e},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument|| +this.$.parentNode.ownerDocument)},getIndex:function(a){function e(a,f){var c=f?a.nextSibling:a.previousSibling;return c&&c.nodeType==CKEDITOR.NODE_TEXT?b(c)?e(c,f):c:null}function b(a){return!a.nodeValue||a.nodeValue==CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE}var c=this.$,d=-1,l;if(!this.$.parentNode||a&&c.nodeType==CKEDITOR.NODE_TEXT&&b(c)&&!e(c)&&!e(c,!0))return-1;do a&&c!=this.$&&c.nodeType==CKEDITOR.NODE_TEXT&&(l||b(c))||(d++,l=c.nodeType==CKEDITOR.NODE_TEXT);while(c=c.previousSibling);return d}, +getNextSourceNode:function(a,e,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getFirst&&this.getFirst();var d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getNext()}for(;!a&&(d=(d||this).getParent());){if(b&&!1===b(d,!0))return null;a=d.getNext()}return!a||b&&!1===b(a)?null:e&&e!=a.type?a.getNextSourceNode(!1,e,b):a},getPreviousSourceNode:function(a,e,b){if(b&&!b.call){var c=b;b=function(a){return!a.equals(c)}}a=!a&&this.getLast&&this.getLast(); +var d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&!1===b(this,!0))return null;a=this.getPrevious()}for(;!a&&(d=(d||this).getParent());){if(b&&!1===b(d,!0))return null;a=d.getPrevious()}return!a||b&&!1===b(a)?null:e&&a.type!=e?a.getPreviousSourceNode(!1,e,b):a},getPrevious:function(a){var e=this.$,b;do b=(e=e.previousSibling)&&10!=e.nodeType&&new CKEDITOR.dom.node(e);while(b&&a&&!a(b));return b},getNext:function(a){var e=this.$,b;do b=(e=e.nextSibling)&&new CKEDITOR.dom.node(e);while(b&&a&&!a(b)); +return b},getParent:function(a){var e=this.$.parentNode;return e&&(e.nodeType==CKEDITOR.NODE_ELEMENT||a&&e.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(e):null},getParents:function(a){var e=this,b=[];do b[a?"push":"unshift"](e);while(e=e.getParent());return b},getCommonAncestor:function(a){if(a.equals(this))return this;if(a.contains&&a.contains(this))return a;var e=this.contains?this:this.getParent();do if(e.contains(a))return e;while(e=e.getParent());return null},getPosition:function(a){var e= +this.$,b=a.$;if(e.compareDocumentPosition)return e.compareDocumentPosition(b);if(e==b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(e.contains){if(e.contains(b))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(b.contains(e))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in e)return 0>e.sourceIndex||0>b.sourceIndex?CKEDITOR.POSITION_DISCONNECTED:e.sourceIndex=document.documentMode||!e||(a=e+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a=a?new CKEDITOR.dom.element(a): +this.getDocumentElement().append(new CKEDITOR.dom.element("head"),!0)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*]*?>)|^/i,'$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e('+CKEDITOR.tools.fixDomain+ +")();\x3c/script\x3e"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");a||(a=this.$.createDocumentFragment(),CKEDITOR.tools.enableHtml5Elements(a,!0),this.setCustomData("html5ShivFrag",a));return a}}),CKEDITOR.dom.nodeList=function(a){this.$=a},CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length}, +getItem:function(a){return 0>a||a>=this.$.length?null:(a=this.$[a])?new CKEDITOR.dom.node(a):null}},CKEDITOR.dom.element=function(a,e){"string"==typeof a&&(a=(e?e.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)},CKEDITOR.dom.element.get=function(a){return(a="string"==typeof a?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))},CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node,CKEDITOR.dom.element.createFromHtml=function(a,e){var b= +new CKEDITOR.dom.element("div",e);b.setHtml(a);return b.getFirst().remove()},CKEDITOR.dom.element.setMarker=function(a,e,b,c){var d=e.getCustomData("list_marker_id")||e.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),l=e.getCustomData("list_marker_names")||e.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[d]=e;l[b]=1;return e.setCustomData(b,c)},CKEDITOR.dom.element.clearAllMarkers=function(a){for(var e in a)CKEDITOR.dom.element.clearMarkers(a, +a[e],1)},CKEDITOR.dom.element.clearMarkers=function(a,e,b){var c=e.getCustomData("list_marker_names"),d=e.getCustomData("list_marker_id"),l;for(l in c)e.removeCustomData(l);e.removeCustomData("list_marker_names");b&&(e.removeCustomData("list_marker_id"),delete a[d])},function(){function a(a,b){return-1<(" "+a+" ").replace(l," ").indexOf(" "+b+" ")}function e(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber(),b=!1);return function(){b||a.removeAttribute("id")}}function b(a,b){return"#"+ +a.$.id+" "+b.split(/,\s*/).join(", #"+a.$.id+" ")}function c(a){for(var b=0,c=0,g=m[a].length;cCKEDITOR.env.version?this.$.text+=a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();a&& +a.is&&a.is("br")||(a=this.getDocument().createElement("br"),CKEDITOR.env.gecko&&a.setAttribute("type","_moz"),this.append(a))}},breakParent:function(a,b){var c=new CKEDITOR.dom.range(this.getDocument());c.setStartAfter(this);c.setEndAfter(a);var g=c.extractContents(!1,b||!1);c.insertNode(this.remove());g.insertAfterNode(this)},contains:document.compareDocumentPosition?function(a){return!!(this.$.compareDocumentPosition(a.$)&16)}:function(a){var b=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?b.contains(a.getParent().$): +b!=a.$&&b.contains(a.$)},focus:function(){function a(){try{this.$.focus()}catch(b){}}return function(b){b?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({}, +this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&9>CKEDITOR.env.version?function(a){try{var b=this.$;if(this.getParent())return b.innerHTML=a;var c=this.getDocument()._getHtml5ShivFrag();c.appendChild(b);b.innerHTML=a;c.removeChild(b);return a}catch(g){this.$.innerHTML="";b=new CKEDITOR.dom.element("body",this.getDocument());b.$.innerHTML=a;for(b=b.getChildren();b.count();)this.append(b.getItem(0));return a}}: +function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");a.innerHTML="x";a=a.textContent;return function(b){this.$[a?"textContent":"innerText"]=b}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":return a=this.$.getAttribute(a, +2),0!==a&&0===this.$.tabIndex&&(a=null),a;case "checked":return a=this.$.attributes.getNamedItem(a),(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)}, +getComputedStyle:document.defaultView&&document.defaultView.getComputedStyle?function(a){var b=this.getWindow().$.getComputedStyle(this.$,null);return b?b.getPropertyValue(a):""}:function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:function(){var a=this.$.tabIndex;return 0!==a||CKEDITOR.dtd.$tabIndex[this.getName()]|| +0===parseInt(this.getAttribute("tabindex"),10)?a:-1},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&8>=document.documentMode){var b=this.$.scopeName;"HTML"!=b&&(a=b.toLowerCase()+":"+a)}this.getName=function(){return a};return this.getName()},getValue:function(){return this.$.value}, +getFirst:function(a){var b=this.$.firstChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getNext(a));return b},getLast:function(a){var b=this.$.lastChild;(b=b&&new CKEDITOR.dom.node(b))&&a&&!a(b)&&(b=b.getPrevious(a));return b},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if("object"==typeof arguments[0])return!!arguments[0][a];for(var b=0;bCKEDITOR.env.version&&this.is("a")){var c=this.getParent();c.type==CKEDITOR.NODE_ELEMENT&&(c=c.clone(),c.setHtml(b),b=c.getHtml(),c.setHtml(a),a=c.getHtml())}return b== +a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&"hidden"!=this.getComputedStyle("visibility"),b,c;a&&CKEDITOR.env.webkit&&(b=this.getWindow(),!b.equals(CKEDITOR.document.getWindow())&&(c=b.$.frameElement)&&(a=(new CKEDITOR.dom.element(c)).isVisible()));return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return!1;for(var a=this.getChildren(),b=0,c=a.count();bCKEDITOR.env.version?function(b){return"name"==b?!!this.$.name:a.call(this,b)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(), +hide:function(){this.setStyle("display","none")},moveChildren:function(a,b){var c=this.$;a=a.$;if(c!=a){var g;if(b)for(;g=c.lastChild;)a.insertBefore(c.removeChild(g),a.firstChild);else for(;g=c.firstChild;)a.appendChild(c.removeChild(g))}},mergeSiblings:function(){function a(b,c,g){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var f=[];c.data("cke-bookmark")||c.isEmptyInlineRemoveable();)if(f.push(c),c=g?c.getNext():c.getPrevious(),!c||c.type!=CKEDITOR.NODE_ELEMENT)return;if(b.isIdentical(c)){for(var d= +g?b.getLast():b.getFirst();f.length;)f.shift().move(b,!g);c.moveChildren(b,!g);c.remove();d&&d.type==CKEDITOR.NODE_ELEMENT&&d.mergeSiblings()}}}return function(b){if(!1===b||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a"))a(this,this.getNext(),!0),a(this,this.getPrevious())}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var a=function(a,b){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(b, +c){"class"==b?this.$.className=c:"style"==b?this.$.style.cssText=c:"tabindex"==b?this.$.tabIndex=c:"checked"==b?this.$.checked=c:"contenteditable"==b?a.call(this,"contentEditable",c):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if("src"==b&&c.match(/^http:\/\//))try{a.apply(this,arguments)}catch(g){}else a.apply(this,arguments);return this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value= +a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){"class"==a?a="className":"tabindex"==a?a="tabIndex":"contenteditable"==a&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;bCKEDITOR.env.version?(a=Math.round(100*a),this.setStyle("filter",100<=a?"":"progid:DXImageTransform.Microsoft.Alpha(opacity\x3d"+a+")")):this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable","on");for(var a, +b=this.getElementsByTag("*"),c=0,g=b.count();cl||0l?l:d);c&&(0>e||0e?e:g,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",!0);c&&this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+ "_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",!0);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off"),this.removeClass(b+"_on"),this.removeClass(b+"_disabled"),c&&this.removeAttribute("aria-pressed"),c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},copyAttributes:function(a, -b){var c=this.$.attributes;b=b||{};for(var f=0;f=n.getChildCount()?(n=n.getChild(r-1),B=!0):n=n.getChild(r):q=B=!0;p.type==CKEDITOR.NODE_TEXT?k?M=!0:p.split(D):0fa)for(;W;)W=m(W,O,!0);O=K}k||h()}}function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(), -c=CKEDITOR.dom.walker.bookmark(!0),d=CKEDITOR.dom.walker.bogus();return function(e){return c(e)||b(e)?!0:d(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(g)?!1:!0}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?!0:!a&&h(d)||d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function e(a){return function(){var b;return this[a? -"getPreviousNode":"getNextNode"](function(a){!b&&t(a)&&(b=a);return q(a)&&!(h(a)&&a.equals(b))})}}var g={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},h=CKEDITOR.dom.walker.bogus(),l=/^[\t\r\n ]*(?: |\xa0)$/,q=CKEDITOR.dom.walker.editable(),t=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer); -a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer),this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,2,b,!1,"undefined"==typeof a?!0:a);return b},deleteContents:function(a){this.collapsed|| -d(this,0,null,a)},extractContents:function(a,b){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,1,c,a,"undefined"==typeof b?!0:b);return c},createBookmark:function(a){var b,c,d,e,m=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("\x26nbsp;");a&&(d="cke_bm_"+CKEDITOR.tools.getNextNumber(),b.setAttribute("id",d+(m?"C":"S")));m||(c=b.clone(),c.setHtml("\x26nbsp;"),a&&c.setAttribute("id",d+"E"),e=this.clone(), -e.collapse(),e.insertNode(c));e=this.clone();e.collapse(!0);e.insertNode(b);c?(this.setStartAfter(b),this.setEndBefore(c)):this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(m?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:m}},createBookmark2:function(){function a(c){var f=c.container,d=c.offset,e;e=f;var g=d;e=e.type!=CKEDITOR.NODE_ELEMENT||0===g||g==e.getChildCount()?0:e.getChild(g-1).type==CKEDITOR.NODE_TEXT&&e.getChild(g).type==CKEDITOR.NODE_TEXT;e&&(f=f.getChild(d- -1),d=f.getLength());f.type==CKEDITOR.NODE_ELEMENT&&1c)a=a.getChild(c);else if(1>e)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}if(b.type==CKEDITOR.NODE_ELEMENT)if(e= -b.getChildCount(),e>d)b=b.getChild(d).getPreviousSourceNode(!0);else if(1>e)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent(): -c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&a.is("span")&&a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&b.is&&b.is("span")&&b.data("cke-bookmark")&& -this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a||e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength())d=c.getIndex()+1,c=c.getParent();else{var m=c.split(d),d=c.getIndex()+1,c=c.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(m,this.endOffset-this.startOffset):c.equals(this.endContainer)&&(this.endOffset+=1)}else d=c.getIndex(),c=c.getParent();this.setStart(c,d);if(e){this.collapse(!0); -return}}c=this.endContainer;d=this.endOffset;b||e||!c||c.type!=CKEDITOR.NODE_TEXT||(d?(d>=c.getLength()||c.split(d),d=c.getIndex()+1):d=c.getIndex(),c=c.getParent(),this.setEnd(c,d))},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var m=function(a,b){var c=new CKEDITOR.dom.range(h);c.setStart(a,b);c.setEndAt(h,CKEDITOR.POSITION_BEFORE_END); -var c=new CKEDITOR.dom.walker(c),f;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};f=c.next();){if(f.type!=CKEDITOR.NODE_TEXT)return!1;F=f!=a?f.getText():f.substring(b);if(d.test(F))return!1}return!0};if(this.collapsed)break;var g=this.getCommonAncestor(),h=this.root,l,x,k,p,n,D=!1,r,F;r=this.startContainer;var B=this.startOffset;r.type==CKEDITOR.NODE_TEXT?(B&&(r=!CKEDITOR.tools.trim(r.substring(0,B)).length&&r,D=!!r),r&&((p=r.getPrevious())||(k=r.getParent()))): -(B&&(p=r.getChild(B-1)||r.getLast()),p||(k=r));for(k=c(k);k||p;){if(k&&!p){!n&&k.equals(g)&&(n=!0);if(e?k.isBlockBoundary():!h.contains(k))break;D&&"inline"==k.getComputedStyle("display")||(D=!1,n?l=k:this.setStartBefore(k));p=k.getPrevious()}for(;p;)if(r=!1,p.type==CKEDITOR.NODE_COMMENT)p=p.getPrevious();else{if(p.type==CKEDITOR.NODE_TEXT)F=p.getText(),d.test(F)&&(p=null),r=/[\s\ufeff]$/.test(F);else if((p.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||b&&p.is("br"))&&!p.data("cke-bookmark"))if(D&&CKEDITOR.dtd.$removeEmpty[p.getName()]){F= -p.getText();if(d.test(F))p=null;else for(var B=p.$.getElementsByTagName("*"),t=0,q;q=B[t++];)if(!CKEDITOR.dtd.$removeEmpty[q.nodeName.toLowerCase()]){p=null;break}p&&(r=!!F.length)}else p=null;r&&(D?n?l=k:k&&this.setStartBefore(k):D=!0);if(p){r=p.getPrevious();if(!k&&!r){k=p;p=null;break}p=r}else k=null}k&&(k=c(k.getParent()))}r=this.endContainer;B=this.endOffset;k=p=null;n=D=!1;r.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(r.substring(B)).length?D=!0:(D=!r.getLength(),B==r.getLength()?(p=r.getNext())|| -(k=r.getParent()):m(r,B)&&(k=r.getParent())):(p=r.getChild(B))||(k=r);for(;k||p;){if(k&&!p){!n&&k.equals(g)&&(n=!0);if(e?k.isBlockBoundary():!h.contains(k))break;D&&"inline"==k.getComputedStyle("display")||(D=!1,n?x=k:k&&this.setEndAfter(k));p=k.getNext()}for(;p;){r=!1;if(p.type==CKEDITOR.NODE_TEXT)F=p.getText(),m(p,0)||(p=null),r=/^[\s\ufeff]/.test(F);else if(p.type==CKEDITOR.NODE_ELEMENT){if((0=e.getLength()?d.setStartAfter(e):(d.setStartBefore(e),l= -0):d.setStartBefore(e));m&&m.type==CKEDITOR.NODE_TEXT&&(h?h>=m.getLength()?d.setEndAfter(m):(d.setEndAfter(m),x=0):d.setEndBefore(m));var d=new CKEDITOR.dom.walker(d),k=CKEDITOR.dom.walker.bookmark();d.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var p;d.guard=function(b,d){if(k(b))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||d&&b.equals(p)||!1===c&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&& -b.hasAttribute("contenteditable"))return!1;d||b.type!=CKEDITOR.NODE_ELEMENT||(p=b);return!0};l&&(e=d[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(e,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);x&&(d.reset(),(d=d[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(d,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!l&&!x)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var b=this.startContainer,c=b.getChild(this.startOffset); -c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&& -(c=b.getIndex(),b=b.getParent());this._setStartContainer(b);this.startOffset=c;this.endContainer||(this._setEndContainer(b),this.endOffset=c);a(this)},setEnd:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex()+1,b=b.getParent());this._setEndContainer(b);this.endOffset=c;this.startContainer||(this._setStartContainer(b),this.startOffset=c);a(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(), -a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setStart(b,b.getLength()):this.setStart(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(b)}a(this)}, -setEndAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setEnd(b,b.getLength()):this.setEnd(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(b)}a(this)},fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d); -d.trim();this.insertNode(d);var e=d.getBogus();e&&e.remove();d.appendBogus();this.moveToBookmark(c);return d},splitBlock:function(a,b){var c=new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=c.block,m=d.block,g=null;if(!c.blockLimit.equals(d.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),m=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),m||(m=this.fixBlock(!1,a)));c=e&&this.checkStartOfBlock(); -d=m&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(m)&&(d?(g=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(m,CKEDITOR.POSITION_AFTER_END),m=null):c?(g=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(m=this.splitElement(e,b||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:m,wasStartOfBlock:c,wasEndOfBlock:d,elementPath:g}},splitElement:function(a,b){if(!this.collapsed)return null; -this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var c=this.extractContents(!1,b||!1),d=a.clone(!1,b||!1);c.appendTo(d);d.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(d){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||d.is("table")&&a.is("caption")?!1:!0}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!1);return function(b){for(var c=this.createBookmark(), -d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,g;e&&!e.equals(d.root)&&!e.getFirst(a(e));)g=e.getParent(),this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=g;this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?"setStartAt": -"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.ltrim(a.substring(0,c)),l.test(a)&&this.trim(0,1));this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START); -a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=this.endContainer,c=this.endOffset;CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.rtrim(a.substring(c)),l.test(a)&&this.trim(1,0));this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a, -b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if("false"==b.getAttribute("contentEditable")&&!b.data("cke-editable"))return 0; -if(b.is("html")||"true"==b.getAttribute("contentEditable")&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var c=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&l.test(a.getText())? -this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),c=1;else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a), -this.setEndAfter(a),!0;var d=a,e=c,m=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(!1)&&(m=d[b?"getLast":"getFirst"](t));e||m||(m=d[b?"getPrevious":"getNext"](t));a=m}return!!c},moveToClosestEditablePosition:function(a,b){var c,d=0,e,m,g=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(c=new CKEDITOR.dom.range(this.root),c.moveToPosition(a,g[b?0:1])):c=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))d=1;else if(e=c[b?"getNextEditableNode":"getPreviousEditableNode"]())d=1,(m=e.type== -CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")?(c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&m&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(c.setEnd(e,0),c.collapse()):c.moveToPosition(e,g[b?1:0]);d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a, -!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(!1,!0),c=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)|| -a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:e(),getPreviousEditableNode:e(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),b,c,d,e=this.clone();e.optimize();(d=e.startContainer.type==CKEDITOR.NODE_TEXT)?(c=e.startContainer.getText(),b=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)): -e.insertNode(a);a.scrollIntoView();d&&(e.startContainer.setText(c),b.remove());a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2; -CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;"use strict"; -(function(){function a(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function d(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function b(a,c,e,g){a:{null==g&&(g=d(e));for(var h;h=g.shift();)if(h.getDtd().p){g={element:h,remaining:g};break a}g=null}if(!g)return 0;if((h=CKEDITOR.filter.instances[g.element.data("cke-filter")])&&!h.check(c))return b(a, -c,e,g.remaining);c=new CKEDITOR.dom.range(g.element);c.selectNodeContents(g.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=h;a._.nestedEditable={element:g.element,container:e,remaining:g.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var e=/^[\r\n\t ]+$/,g=CKEDITOR.dom.walker.bookmark(!1,!0),h=CKEDITOR.dom.walker.whitespaces(!0), -l=function(a){return g(a)&&h(a)},q={dd:1,dt:1,li:1};a.prototype={getNextParagraph:function(a){var d,h,A,u,C;a=a||"p";if(this._.nestedEditable){if(d=this._.nestedEditable.iterator.getNextParagraph(a))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,d;this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(a);this._.nestedEditable= -null}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var m=this.range.clone();h=m.startPath();var y=m.endPath(),E=!m.collapsed&&c(m,h.block),v=!m.collapsed&&c(m,y.block,1);m.shrink(CKEDITOR.SHRINK_ELEMENT,!0);E&&m.setStartAt(h.block,CKEDITOR.POSITION_BEFORE_END);v&&m.setEndAt(y.block,CKEDITOR.POSITION_AFTER_START);h=m.endContainer.hasAscendant("pre",!0)||m.startContainer.hasAscendant("pre",!0);m.enlarge(this.forceBrBreak&&!h||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS); -m.collapsed||(h=new CKEDITOR.dom.walker(m.clone()),y=CKEDITOR.dom.walker.bookmark(!0,!0),h.evaluator=y,this._.nextNode=h.next(),h=new CKEDITOR.dom.walker(m.clone()),h.evaluator=y,h=h.previous(),this._.lastNode=h.getNextSourceNode(!0,null,m.root),this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(y=this.range.clone(),y.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),y.checkEndOfBlock()&& -(y=new CKEDITOR.dom.elementPath(y.endContainer,y.root),this._.lastNode=(y.block||y.blockLimit).getNextSourceNode(!0))),this._.lastNode&&m.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=m.document.createText(""),this._.lastNode.insertAfter(h)),m=null);this._.started=1;h=m}y=this._.nextNode;m=this._.lastNode;for(this._.nextNode=null;y;){var E=0,v=y.hasAscendant("pre"),x=y.type!=CKEDITOR.NODE_ELEMENT,k=0;if(x)y.type==CKEDITOR.NODE_TEXT&&e.test(y.getText())&&(x=0);else{var p=y.getName(); -if(CKEDITOR.dtd.$block[p]&&"false"==y.getAttribute("contenteditable")){d=y;b(this,a,d);break}else if(y.isBlockBoundary(this.forceBrBreak&&!v&&{br:1})){if("br"==p)x=1;else if(!h&&!y.getChildCount()&&"hr"!=p){d=y;A=y.equals(m);break}h&&(h.setEndAt(y,CKEDITOR.POSITION_BEFORE_START),"br"!=p&&(this._.nextNode=y));E=1}else{if(y.getFirst()){h||(h=this.range.clone(),h.setStartAt(y,CKEDITOR.POSITION_BEFORE_START));y=y.getFirst();continue}x=1}}x&&!h&&(h=this.range.clone(),h.setStartAt(y,CKEDITOR.POSITION_BEFORE_START)); -A=(!E||x)&&y.equals(m);if(h&&!E)for(;!y.getNext(l)&&!A;){p=y.getParent();if(p.isBlockBoundary(this.forceBrBreak&&!v&&{br:1})){E=1;x=0;A||p.equals(m);h.setEndAt(p,CKEDITOR.POSITION_BEFORE_END);break}y=p;x=1;A=y.equals(m);k=1}x&&h.setEndAt(y,CKEDITOR.POSITION_AFTER_END);y=this._getNextSourceNode(y,k,m);if((A=!y)||E&&h)break}if(!d){if(!h)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;d=new CKEDITOR.dom.elementPath(h.startContainer,h.root);y=d.blockLimit;E={div:1,th:1,td:1}; -d=d.block;!d&&y&&!this.enforceRealBlocks&&E[y.getName()]&&h.checkStartOfBlock()&&h.checkEndOfBlock()&&!y.equals(h.root)?d=y:!d||this.enforceRealBlocks&&d.is(q)?(d=this.range.document.createElement(a),h.extractContents().appendTo(d),d.trim(),h.insertNode(d),u=C=!0):"li"!=d.getName()?h.checkStartOfBlock()&&h.checkEndOfBlock()||(d=d.clone(!1),h.extractContents().appendTo(d),d.trim(),C=h.splitBlock(),u=!C.wasStartOfBlock,C=!C.wasEndOfBlock,h.insertNode(d)):A||(this._.nextNode=d.equals(m)?null:this._getNextSourceNode(h.getBoundaryNodes().endNode, -1,m))}u&&(u=d.getPrevious())&&u.type==CKEDITOR.NODE_ELEMENT&&("br"==u.getName()?u.remove():u.getLast()&&"br"==u.getLast().$.nodeName.toLowerCase()&&u.getLast().remove());C&&(u=d.getLast())&&u.type==CKEDITOR.NODE_ELEMENT&&"br"==u.getName()&&(!CKEDITOR.env.needsBrFiller||u.getPrevious(g)||u.getNext(g))&&u.remove();this._.nextNode||(this._.nextNode=A||d.equals(m)||!m?null:this._getNextSourceNode(d,1,m));return d},_getNextSourceNode:function(a,b,c){function d(a){return!(a.equals(c)||a.equals(e))}var e= -this.range.root;for(a=a.getNextSourceNode(b,null,d);!g(a);)a=a.getNextSourceNode(b,null,d);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})(); -CKEDITOR.command=function(a,d){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&a.focus();return!1===this.fire("exec")?!0:!1!==d.exec.call(this,a,b)};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return!0;if(this.context&&!b.isContextFor(this.context)||!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&this.disable();return!1===this.fire("refresh", -{editor:a,path:b})?!0:d.refresh&&!1!==d.refresh.apply(this,arguments)};var b;this.checkAllowed=function(c){return c||"boolean"!=typeof b?b=a.activeFilter.checkFeature(this):b};CKEDITOR.tools.extend(this,d,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!d.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)}; -CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=a;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF? -this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3; -CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"),extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]}; -(function(){function a(a,b,c,d,e){var k,p;a=[];for(k in b){p=b[k];p="boolean"==typeof p?{}:"function"==typeof p?{match:p}:L(p);"$"!=k.charAt(0)&&(p.elements=k);c&&(p.featureName=c.toLowerCase());var n=p;n.elements=h(n.elements,/\s+/)||null;n.propertiesOnly=n.propertiesOnly||!0===n.elements;var r=/\s*,\s*/,m=void 0;for(m in S){n[m]=h(n[m],r)||null;var G=n,f=w[m],x=h(n[w[m]],r),g=n[m],D=[],F=!0,J=void 0;x?F=!1:x={};for(J in g)"!"==J.charAt(0)&&(J=J.slice(1),D.push(J),x[J]=!0,F=!1);for(;J=D.pop();)g[J]= -g["!"+J],delete g["!"+J];G[f]=(F?!1:x)||null}n.match=n.match||null;d.push(p);a.push(p)}b=e.elements;e=e.generic;var l;c=0;for(d=a.length;c=--l&&(g&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),f(b))},A=function(b,c){a[b]=1;var e=d[b];delete d[b];for(var f=0;fCKEDITOR.env.version?f.$.onreadystatechange=function(){if("loaded"==f.$.readyState||"complete"==f.$.readyState)f.$.onreadystatechange=null,A(b,!0)}:(f.$.onload=function(){setTimeout(function(){A(b,!0)},0)},f.$.onerror=function(){A(b,!1)}));f.appendTo(CKEDITOR.document.getHead())}}};g&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var C=0;C=C.getChildCount()?(C=C.getChild(A-1),G=!0):C=C.getChild(A):I=G=!0;y.type==CKEDITOR.NODE_TEXT?v?H=!0:y.split(x):0U)for(;W;)W=f(W,O,!0);O=Y}v||l()}}function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!0), +d=CKEDITOR.dom.walker.bogus();return function(e){return c(e)||b(e)?!0:d(e)&&!a?a=!0:e.type==CKEDITOR.NODE_TEXT&&(e.hasAscendant("pre")||CKEDITOR.tools.trim(e.getText()).length)||e.type==CKEDITOR.NODE_ELEMENT&&!e.is(l)?!1:!0}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?!0:!a&&m(d)||d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function d(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&& +k(a)&&(b=a);return h(a)&&!(m(a)&&a.equals(b))})}}var l={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},m=CKEDITOR.dom.walker.bogus(),f=/^[\t\r\n ]*(?: |\xa0)$/,h=CKEDITOR.dom.walker.editable(),k=CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype={clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset; +a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){a?(this._setEndContainer(this.startContainer),this.endOffset=this.startOffset):(this._setStartContainer(this.endContainer),this.startOffset=this.endOffset);this.collapsed=!0},cloneContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,2,b,!1,"undefined"==typeof a?!0:a);return b},deleteContents:function(a){this.collapsed||e(this,0,null, +a)},extractContents:function(a,b){var c=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,c,a,"undefined"==typeof b?!0:b);return c},createBookmark:function(a){var b,c,d,e,f=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("\x26nbsp;");a&&(d="cke_bm_"+CKEDITOR.tools.getNextNumber(),b.setAttribute("id",d+(f?"C":"S")));f||(c=b.clone(),c.setHtml("\x26nbsp;"),a&&c.setAttribute("id",d+"E"),e=this.clone(),e.collapse(), +e.insertNode(c));e=this.clone();e.collapse(!0);e.insertNode(b);c?(this.setStartAfter(b),this.setEndBefore(c)):this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(f?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:f}},createBookmark2:function(){function a(b){var g=b.container,d=b.offset,e;e=g;var f=d;e=e.type!=CKEDITOR.NODE_ELEMENT||0===f||f==e.getChildCount()?0:e.getChild(f-1).type==CKEDITOR.NODE_TEXT&&e.getChild(f).type==CKEDITOR.NODE_TEXT;e&&(g=g.getChild(d-1),d=g.getLength()); +if(g.type==CKEDITOR.NODE_ELEMENT&&0=a.offset&&(a.offset=d.getIndex(),a.container=d.getParent()))}}var c=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT,!0);return function(c){var d=this.collapsed,e={container:this.startContainer,offset:this.startOffset},f={container:this.endContainer,offset:this.endOffset};c&&(a(e),b(e,this.root),d||(a(f),b(f,this.root)));return{start:e.container.getAddress(c),end:d?null:f.container.getAddress(c),startOffset:e.offset, +endOffset:f.offset,normalized:c,collapsed:d,is2:!0}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized);a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):this.collapse(!0)}else b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode,a=c?this.document.getById(a.endNode):a.endNode,this.setStartBefore(b),b.remove(),a?(this.setEndBefore(a),a.remove()):this.collapse(!0)},getBoundaryNodes:function(){var a= +this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT)if(e=a.getChildCount(),e>c)a=a.getChild(c);else if(1>e)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}if(b.type==CKEDITOR.NODE_ELEMENT)if(e=b.getChildCount(),e>d)b=b.getChild(d).getPreviousSourceNode(!0);else if(1>e)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}a.getPosition(b)& +CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset; +a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&a.is("span")&&a.data("cke-bookmark")&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&b.is&&b.is("span")&&b.data("cke-bookmark")&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a||e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength())d= +c.getIndex()+1,c=c.getParent();else{var f=c.split(d),d=c.getIndex()+1,c=c.getParent();this.startContainer.equals(this.endContainer)?this.setEnd(f,this.endOffset-this.startOffset):c.equals(this.endContainer)&&(this.endOffset+=1)}else d=c.getIndex(),c=c.getParent();this.setStart(c,d);if(e){this.collapse(!0);return}}c=this.endContainer;d=this.endOffset;b||e||!c||c.type!=CKEDITOR.NODE_TEXT||(d?(d>=c.getLength()||c.split(d),d=c.getIndex()+1):d=c.getIndex(),c=c.getParent(),this.setEnd(c,d))},enlarge:function(a, +b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=new RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:var f=function(a,b){var c=new CKEDITOR.dom.range(l);c.setStart(a,b);c.setEndAt(l,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),g;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};g=c.next();){if(g.type!=CKEDITOR.NODE_TEXT)return!1;D=g!=a?g.getText(): +g.substring(b);if(d.test(D))return!1}return!0};if(this.collapsed)break;var k=this.getCommonAncestor(),l=this.root,h,m,v,y,C,x=!1,A,D;A=this.startContainer;var G=this.startOffset;A.type==CKEDITOR.NODE_TEXT?(G&&(A=!CKEDITOR.tools.trim(A.substring(0,G)).length&&A,x=!!A),A&&((y=A.getPrevious())||(v=A.getParent()))):(G&&(y=A.getChild(G-1)||A.getLast()),y||(v=A));for(v=c(v);v||y;){if(v&&!y){!C&&v.equals(k)&&(C=!0);if(e?v.isBlockBoundary():!l.contains(v))break;x&&"inline"==v.getComputedStyle("display")|| +(x=!1,C?h=v:this.setStartBefore(v));y=v.getPrevious()}for(;y;)if(A=!1,y.type==CKEDITOR.NODE_COMMENT)y=y.getPrevious();else{if(y.type==CKEDITOR.NODE_TEXT)D=y.getText(),d.test(D)&&(y=null),A=/[\s\ufeff]$/.test(D);else if((y.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||b&&y.is("br"))&&!y.data("cke-bookmark"))if(x&&CKEDITOR.dtd.$removeEmpty[y.getName()]){D=y.getText();if(d.test(D))y=null;else for(var G=y.$.getElementsByTagName("*"),E=0,I;I=G[E++];)if(!CKEDITOR.dtd.$removeEmpty[I.nodeName.toLowerCase()]){y= +null;break}y&&(A=!!D.length)}else y=null;A&&(x?C?h=v:v&&this.setStartBefore(v):x=!0);if(y){A=y.getPrevious();if(!v&&!A){v=y;y=null;break}y=A}else v=null}v&&(v=c(v.getParent()))}A=this.endContainer;G=this.endOffset;v=y=null;C=x=!1;A.type==CKEDITOR.NODE_TEXT?CKEDITOR.tools.trim(A.substring(G)).length?x=!0:(x=!A.getLength(),G==A.getLength()?(y=A.getNext())||(v=A.getParent()):f(A,G)&&(v=A.getParent())):(y=A.getChild(G))||(v=A);for(;v||y;){if(v&&!y){!C&&v.equals(k)&&(C=!0);if(e?v.isBlockBoundary():!l.contains(v))break; +x&&"inline"==v.getComputedStyle("display")||(x=!1,C?m=v:v&&this.setEndAfter(v));y=v.getNext()}for(;y;){A=!1;if(y.type==CKEDITOR.NODE_TEXT)D=y.getText(),f(y,0)||(y=null),A=/^[\s\ufeff]/.test(D);else if(y.type==CKEDITOR.NODE_ELEMENT){if((0=e.getLength()?d.setStartAfter(e):(d.setStartBefore(e),h=0):d.setStartBefore(e));f&&f.type==CKEDITOR.NODE_TEXT&&(l?l>=f.getLength()?d.setEndAfter(f):(d.setEndAfter(f),m=0):d.setEndBefore(f));var d=new CKEDITOR.dom.walker(d),v=CKEDITOR.dom.walker.bookmark(); +d.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var y;d.guard=function(b,d){if(v(b))return!0;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||d&&b.equals(y)||!1===c&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return!1;d||b.type!=CKEDITOR.NODE_ELEMENT||(y=b);return!0};h&&(e=d[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(e,b?CKEDITOR.POSITION_AFTER_START: +CKEDITOR.POSITION_BEFORE_START);m&&(d.reset(),(d=d[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(d,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END));return!(!h&&!m)}},insertNode:function(a){this.optimizeBookmark();this.trim(!1,!0);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a, +b);this.collapse(!0)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(b,c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex(),b=b.getParent());this._setStartContainer(b);this.startOffset=c;this.endContainer||(this._setEndContainer(b),this.endOffset=c);a(this)},setEnd:function(b, +c){b.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[b.getName()]&&(c=b.getIndex()+1,b=b.getParent());this._setEndContainer(b);this.endOffset=c;this.startContainer||(this._setStartContainer(b),this.startOffset=c);a(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(b, +c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setStart(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setStart(b,b.getLength()):this.setStart(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(b)}a(this)},setEndAt:function(b,c){switch(c){case CKEDITOR.POSITION_AFTER_START:this.setEnd(b,0);break;case CKEDITOR.POSITION_BEFORE_END:b.type==CKEDITOR.NODE_TEXT?this.setEnd(b, +b.getLength()):this.setEnd(b,b.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(b);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(b)}a(this)},fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();this.insertNode(d);var e=d.getBogus();e&&e.remove();d.appendBogus();this.moveToBookmark(c);return d},splitBlock:function(a,b){var c= +new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root),e=c.block,f=d.block,k=null;if(!c.blockLimit.equals(d.blockLimit))return null;"br"!=a&&(e||(e=this.fixBlock(!0,a),f=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block),f||(f=this.fixBlock(!1,a)));c=e&&this.checkStartOfBlock();d=f&&this.checkEndOfBlock();this.deleteContents();e&&e.equals(f)&&(d?(k=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(f, +CKEDITOR.POSITION_AFTER_END),f=null):c?(k=new CKEDITOR.dom.elementPath(this.startContainer,this.root),this.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e=null):(f=this.splitElement(e,b||!1),e.is("ul","ol")||e.appendBogus()));return{previousBlock:e,nextBlock:f,wasStartOfBlock:c,wasEndOfBlock:d,elementPath:k}},splitElement:function(a,b){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var c=this.extractContents(!1,b||!1),d=a.clone(!1,b||!1);c.appendTo(d);d.insertAfter(a); +this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(g){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable()||g.is("table")&&a.is("caption")?!1:!0}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(!1);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,f;e&&!e.equals(d.root)&&!e.getFirst(a(e));)f=e.getParent(),this[b?"setEndAt": +"setStartAt"](e,CKEDITOR.POSITION_AFTER_END),e.remove(1),e=f;this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?"setStartAt":"setEndAt"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d? +"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var a=this.startContainer,c=this.startOffset;CKEDITOR.env.ie&&c&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.ltrim(a.substring(0,c)),f.test(a)&&this.trim(0,1));this.trim();a=new CKEDITOR.dom.elementPath(this.startContainer,this.root);c=this.clone();c.collapse(!0);c.setStartAt(a.block||a.blockLimit,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkBackward()},checkEndOfBlock:function(){var a=this.endContainer, +c=this.endOffset;CKEDITOR.env.ie&&a.type==CKEDITOR.NODE_TEXT&&(a=CKEDITOR.tools.rtrim(a.substring(c)),f.test(a)&&this.trim(1,0));this.trim();a=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(!1);c.setEndAt(a.block||a.blockLimit,CKEDITOR.POSITION_BEFORE_END);a=new CKEDITOR.dom.walker(c);a.evaluator=b();return a.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d); +c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if("false"==b.getAttribute("contentEditable")&&!b.data("cke-editable"))return 0;if(b.is("html")||"true"==b.getAttribute("contentEditable")&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1} +return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(!1))return this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START),!0;for(var c=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&f.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END: +CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable())this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START),c=1;else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if("false"==a.getAttribute("contenteditable")&&a.is(CKEDITOR.dtd.$block))return this.setStartBefore(a),this.setEndAfter(a),!0;var d=a,e=c,l=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(!1)&& +(l=d[b?"getLast":"getFirst"](k));e||l||(l=d[b?"getPrevious":"getNext"](k));a=l}return!!c},moveToClosestEditablePosition:function(a,b){var c,d=0,e,f,k=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];a?(c=new CKEDITOR.dom.range(this.root),c.moveToPosition(a,k[b?0:1])):c=this.clone();if(a&&!a.is(CKEDITOR.dtd.$block))d=1;else if(e=c[b?"getNextEditableNode":"getPreviousEditableNode"]())d=1,(f=e.type==CKEDITOR.NODE_ELEMENT)&&e.is(CKEDITOR.dtd.$block)&&"false"==e.getAttribute("contenteditable")? +(c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START),c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)):!CKEDITOR.env.needsBrFiller&&f&&e.is(CKEDITOR.dom.walker.validEmptyBlockContainers)?(c.setEnd(e,0),c.collapse()):c.moveToPosition(e,k[b?1:0]);d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,!0)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!= +CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(!1,!0),c=CKEDITOR.dom.walker.whitespaces(!0);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;return this.collapsed|| +a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:d(),getPreviousEditableNode:d(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e",this.document),b,c,d,e=this.clone();e.optimize();(d=e.startContainer.type==CKEDITOR.NODE_TEXT)?(c=e.startContainer.getText(),b=e.startContainer.split(e.startOffset),a.insertAfter(e.startContainer)):e.insertNode(a);a.scrollIntoView();d&&(e.startContainer.setText(c),b.remove()); +a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a}}}(),CKEDITOR.POSITION_AFTER_START=1,CKEDITOR.POSITION_BEFORE_END=2,CKEDITOR.POSITION_BEFORE_START=3,CKEDITOR.POSITION_AFTER_END=4,CKEDITOR.ENLARGE_ELEMENT=1,CKEDITOR.ENLARGE_BLOCK_CONTENTS=2,CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3,CKEDITOR.ENLARGE_INLINE=4,CKEDITOR.START=1,CKEDITOR.END=2,CKEDITOR.SHRINK_ELEMENT=1,CKEDITOR.SHRINK_TEXT=2,"use strict",function(){function a(a){1>arguments.length|| +(this.range=a,this.forceBrBreak=0,this.enlargeBr=1,this.enforceRealBlocks=0,this._||(this._={}))}function e(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("contenteditable"))return b.push(a),!1},CKEDITOR.NODE_ELEMENT,!0);return b}function b(a,c,d,f){a:{null==f&&(f=e(d));for(var l;l=f.shift();)if(l.getDtd().p){f={element:l,remaining:f};break a}f=null}if(!f)return 0;if((l=CKEDITOR.filter.instances[f.element.data("cke-filter")])&&!l.check(c))return b(a,c,d,f.remaining);c=new CKEDITOR.dom.range(f.element); +c.selectNodeContents(f.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=l;a._.nestedEditable={element:f.element,container:d,remaining:f.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var d=/^[\r\n\t ]+$/,l=CKEDITOR.dom.walker.bookmark(!1,!0),m=CKEDITOR.dom.walker.whitespaces(!0),f=function(a){return l(a)&&m(a)},h={dd:1,dt:1, +li:1};a.prototype={getNextParagraph:function(a){var g,e,m,u,r;a=a||"p";if(this._.nestedEditable){if(g=this._.nestedEditable.iterator.getNextParagraph(a))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,g;this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining))return this.activeFilter=this._.nestedEditable.iterator.activeFilter,this._.nestedEditable.iterator.getNextParagraph(a);this._.nestedEditable=null}if(!this.range.root.getDtd()[a])return null; +if(!this._.started){var q=this.range.clone();e=q.startPath();var p=q.endPath(),w=!q.collapsed&&c(q,e.block),z=!q.collapsed&&c(q,p.block,1);q.shrink(CKEDITOR.SHRINK_ELEMENT,!0);w&&q.setStartAt(e.block,CKEDITOR.POSITION_BEFORE_END);z&&q.setEndAt(p.block,CKEDITOR.POSITION_AFTER_START);e=q.endContainer.hasAscendant("pre",!0)||q.startContainer.hasAscendant("pre",!0);q.enlarge(this.forceBrBreak&&!e||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);q.collapsed||(e=new CKEDITOR.dom.walker(q.clone()), +p=CKEDITOR.dom.walker.bookmark(!0,!0),e.evaluator=p,this._.nextNode=e.next(),e=new CKEDITOR.dom.walker(q.clone()),e.evaluator=p,e=e.previous(),this._.lastNode=e.getNextSourceNode(!0,null,q.root),this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()&&(p=this.range.clone(),p.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END),p.checkEndOfBlock()&&(p=new CKEDITOR.dom.elementPath(p.endContainer, +p.root),this._.lastNode=(p.block||p.blockLimit).getNextSourceNode(!0))),this._.lastNode&&q.root.contains(this._.lastNode)||(this._.lastNode=this._.docEndMarker=q.document.createText(""),this._.lastNode.insertAfter(e)),q=null);this._.started=1;e=q}p=this._.nextNode;q=this._.lastNode;for(this._.nextNode=null;p;){var w=0,z=p.hasAscendant("pre"),B=p.type!=CKEDITOR.NODE_ELEMENT,v=0;if(B)p.type==CKEDITOR.NODE_TEXT&&d.test(p.getText())&&(B=0);else{var y=p.getName();if(CKEDITOR.dtd.$block[y]&&"false"==p.getAttribute("contenteditable")){g= +p;b(this,a,g);break}else if(p.isBlockBoundary(this.forceBrBreak&&!z&&{br:1})){if("br"==y)B=1;else if(!e&&!p.getChildCount()&&"hr"!=y){g=p;m=p.equals(q);break}e&&(e.setEndAt(p,CKEDITOR.POSITION_BEFORE_START),"br"!=y&&(this._.nextNode=p));w=1}else{if(p.getFirst()){e||(e=this.range.clone(),e.setStartAt(p,CKEDITOR.POSITION_BEFORE_START));p=p.getFirst();continue}B=1}}B&&!e&&(e=this.range.clone(),e.setStartAt(p,CKEDITOR.POSITION_BEFORE_START));m=(!w||B)&&p.equals(q);if(e&&!w)for(;!p.getNext(f)&&!m;){y= +p.getParent();if(y.isBlockBoundary(this.forceBrBreak&&!z&&{br:1})){w=1;B=0;m||y.equals(q);e.setEndAt(y,CKEDITOR.POSITION_BEFORE_END);break}p=y;B=1;m=p.equals(q);v=1}B&&e.setEndAt(p,CKEDITOR.POSITION_AFTER_END);p=this._getNextSourceNode(p,v,q);if((m=!p)||w&&e)break}if(!g){if(!e)return this._.docEndMarker&&this._.docEndMarker.remove(),this._.nextNode=null;g=new CKEDITOR.dom.elementPath(e.startContainer,e.root);p=g.blockLimit;w={div:1,th:1,td:1};g=g.block;!g&&p&&!this.enforceRealBlocks&&w[p.getName()]&& +e.checkStartOfBlock()&&e.checkEndOfBlock()&&!p.equals(e.root)?g=p:!g||this.enforceRealBlocks&&g.is(h)?(g=this.range.document.createElement(a),e.extractContents().appendTo(g),g.trim(),e.insertNode(g),u=r=!0):"li"!=g.getName()?e.checkStartOfBlock()&&e.checkEndOfBlock()||(g=g.clone(!1),e.extractContents().appendTo(g),g.trim(),r=e.splitBlock(),u=!r.wasStartOfBlock,r=!r.wasEndOfBlock,e.insertNode(g)):m||(this._.nextNode=g.equals(q)?null:this._getNextSourceNode(e.getBoundaryNodes().endNode,1,q))}u&&(u= +g.getPrevious())&&u.type==CKEDITOR.NODE_ELEMENT&&("br"==u.getName()?u.remove():u.getLast()&&"br"==u.getLast().$.nodeName.toLowerCase()&&u.getLast().remove());r&&(u=g.getLast())&&u.type==CKEDITOR.NODE_ELEMENT&&"br"==u.getName()&&(!CKEDITOR.env.needsBrFiller||u.getPrevious(l)||u.getNext(l))&&u.remove();this._.nextNode||(this._.nextNode=m||g.equals(q)||!q?null:this._getNextSourceNode(g,1,q));return g},_getNextSourceNode:function(a,b,c){function d(a){return!(a.equals(c)||a.equals(e))}var e=this.range.root; +for(a=a.getNextSourceNode(b,null,d);!l(a);)a=a.getNextSourceNode(b,null,d);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}}(),CKEDITOR.command=function(a,e){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return!1;this.editorFocus&&a.focus();return!1===this.fire("exec")?!0:!1!==e.exec.call(this,a,b)};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return!0;if(this.context&&!b.isContextFor(this.context)|| +!this.checkAllowed(!0))return this.disable(),!0;this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&this.disable();return!1===this.fire("refresh",{editor:a,path:b})?!0:e.refresh&&!1!==e.refresh.apply(this,arguments)};var b;this.checkAllowed=function(c){return c||"boolean"!=typeof b?b=a.activeFilter.checkFeature(this):b};CKEDITOR.tools.extend(this,e,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!e.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)},CKEDITOR.command.prototype= +{enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(this.preserveState&&"undefined"!=typeof this.previousState?this.previousState:CKEDITOR.TRISTATE_OFF)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return!1;this.previousState=this.state;this.state=a;this.fire("state");return!0},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?this.setState(CKEDITOR.TRISTATE_ON): +this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}},CKEDITOR.event.implementOn(CKEDITOR.command.prototype),CKEDITOR.ENTER_P=1,CKEDITOR.ENTER_BR=2,CKEDITOR.ENTER_DIV=3,CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"\x3c!DOCTYPE html\x3e",bodyId:"",bodyClass:"",fullPage:!1,height:200,contentsCss:CKEDITOR.getUrl("contents.css"), +extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]},function(){function a(a,b,c,d,e){var g,f;a=[];for(g in b){f=b[g];f="boolean"==typeof f?{}:"function"==typeof f?{match:f}:E(f);"$"!=g.charAt(0)&&(f.elements=g);c&&(f.featureName=c.toLowerCase());var k=f;k.elements=m(k.elements,/\s+/)||null;k.propertiesOnly=k.propertiesOnly||!0===k.elements;var l=/\s*,\s*/,h=void 0;for(h in K){k[h]=m(k[h], +l)||null;var v=k,q=F[h],n=m(k[F[h]],l),y=k[h],B=[],p=!0,C=void 0;n?p=!1:n={};for(C in y)"!"==C.charAt(0)&&(C=C.slice(1),B.push(C),n[C]=!0,p=!1);for(;C=B.pop();)y[C]=y["!"+C],delete y["!"+C];v[q]=(p?!1:n)||null}k.match=k.match||null;d.push(f);a.push(f)}b=e.elements;e=e.generic;var r;c=0;for(d=a.length;c=--f&&(l&&CKEDITOR.document.getDocumentElement().removeStyle("cursor"),g(b))},t=function(b,c){a[b]=1;var d=e[b];delete e[b];for(var g=0;gCKEDITOR.env.version?g.$.onreadystatechange=function(){if("loaded"==g.$.readyState||"complete"== +g.$.readyState)g.$.onreadystatechange=null,t(b,!0)}:(g.$.onload=function(){setTimeout(function(){t(b,!0)},0)},g.$.onerror=function(){t(b,!1)}));g.appendTo(CKEDITOR.document.getHead())}}};l&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var r=0;r]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}}; -(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,d={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,e,g=0,h;c=this._.htmlPartsRegex.exec(b);){e=c.index;if(e>g)if(g=b.substring(g,e),h)h.push(g);else this.onText(g); -g=this._.htmlPartsRegex.lastIndex;if(e=c[1])if(e=e.toLowerCase(),h&&CKEDITOR.dtd.$cdata[e]&&(this.onCDATA(h.join("")),h=null),!h){this.onTagClose(e);continue}if(h)h.push(c[0]);else if(e=c[3]){if(e=e.toLowerCase(),!/="/.test(e)){var l={},q,t=c[4];c=!!c[5];if(t)for(;q=a.exec(t);){var f=q[1].toLowerCase();q=q[2]||q[3]||q[4]||"";l[f]=!q&&d[f]?f:CKEDITOR.tools.htmlDecodeAttr(q)}this.onTagOpen(e,l,c);!h&&CKEDITOR.dtd.$cdata[e]&&(h=[])}}else if(e=c[2])this.onComment(e)}if(b.length>g)this.onText(b.substring(g, -b.length))}}})(); -CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("\x3c",a)},openTagClose:function(a,d){d?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(a,d){"string"==typeof d&&(d=CKEDITOR.tools.htmlEncodeAttr(d));this._.output.push(" ",a,'\x3d"',d,'"')},closeTag:function(a){this._.output.push("\x3c/",a,"\x3e")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("\x3c!--",a, -"--\x3e")},write:function(a){this._.output.push(a)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(a){var d=this._.output.join("");a&&this.reset();return d}}});"use strict"; -(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,d=CKEDITOR.tools.indexOf(a,this),b=this.previous,c=this.next;b&&(b.next=c);c&&(c.previous=b);a.splice(d,1);this.parent=null},replaceWith:function(a){var d=this.parent.children,b=CKEDITOR.tools.indexOf(d,this),c=a.previous=this.previous,e=a.next=this.next;c&&(c.next=a);e&&(e.previous=a);d[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var d=a.parent.children, -b=CKEDITOR.tools.indexOf(d,a),c=a.next;d.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;c&&(c.previous=this);this.parent=a.parent},insertBefore:function(a){var d=a.parent.children,b=CKEDITOR.tools.indexOf(d,a);d.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var d="function"==typeof a?a:"string"==typeof a?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&& -b.type==CKEDITOR.NODE_ELEMENT;){if(d(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}})();"use strict";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:!1}}; -CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,d){var b=this.value;if(!(b=a.onComment(d,b,this)))return this.remove(),!1;if("string"!=typeof b)return this.replaceWith(b),!1;this.value=b;return!0},writeHtml:function(a,d){d&&this.filter(d);a.comment(this.value)}});"use strict"; -(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,d){if(!(this.value=a.onText(d,this.value,this)))return this.remove(),!1},writeHtml:function(a,d){d&&this.filter(d);a.text(this.value)}})})();"use strict"; -(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}}; -(function(){function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var d=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),e={ul:"li",ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml= -function(g,h,l){function q(a){var b;if(0h;h++)if(g=d[h]){g=g.exec(a,c,this);if(!1===g)return null;if(g&&g!=c)return this.onNode(a,g);if(c.parent&&!c.name)break}return c}, -onNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,g){return(d=this.attributesRules[d])?d.exec(a,g,c,this):g}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a, -c,d){for(var g=[this.findIndex(c),0],h=0,l=a.length;h/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function z(a){return a.replace(S,function(a,b){return decodeURIComponent(b)})}function A(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, -function(a){return"\x3c!--"+E+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function u(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)})}function C(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function m(a,b){var c=[],d=b.config.protectedSource,k=b._.dataStore||(b._.dataStore= -{id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,d=[/|$)/gi,//gi,//gi].concat(d);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(c.push(a)-1)+"--\x3e"});for(var n=0;n]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,b){k[k.id]=decodeURIComponent(b);return"{cke_protected_"+k.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,k){return"\x3c"+c+d+"\x3e"+C(u(k),b)+"\x3c/"+c+"\x3e"})}CKEDITOR.htmlDataProcessor=function(b){var c, -k,e=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=k=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(p);c.addRules(n,{applyToAll:!0});c.addRules(a(b,"data"),{applyToAll:!0});k.addRules(D);k.addRules(r,{applyToAll:!0});k.addRules(a(b,"html"),{applyToAll:!0});b.on("toHtml",function(a){a=a.data;var c=a.dataValue,k,c=m(c,b),c=f(c,M),c=t(c),c=f(c,T),c=c.replace(w,"$1cke:$2"),c=c.replace(I,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), -c=c.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");k=a.context||b.editable().getName();var e;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==k&&(k="div",c="\x3cpre\x3e"+c+"\x3c/pre\x3e",e=1);k=b.document.createElement(k);k.setHtml("a"+c);c=k.getHtml().substr(1);c=c.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");e&&(c=c.replace(/^
    |<\/pre>$/gi,""));c=c.replace(H,"$1$2");c=z(c);c=u(c);k=!1===a.fixForBody?!1:
    -d(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,k);k&&(e=c,!e.children.length&&CKEDITOR.dtd[e.name][k]&&(k=new CKEDITOR.htmlParser.element(k),e.add(k)));a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,!0,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(e.dataFilter,!0)},null,null,10);b.on("toHtml",function(a){a=a.data;var b=a.dataValue,
    -c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(!0);a.dataValue=A(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^
    /i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,d(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(e.htmlFilter,!0)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue, -!1,!0)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=e.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(!0);c=u(c);c=C(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var k=this.editor,e,n,p,f;b&&"object"==typeof b?(e=b.context,c=b.fixForBody,d=b.dontFilter,n=b.filter,p=b.enterMode,f=b.protectedWhitespaces):e=b;e||null===e||(e=k.editable().getName());return k.fire("toHtml",{dataValue:a,context:e,fixForBody:c,dontFilter:d, -filter:n||k.filter,enterMode:p||k.enterMode,protectedWhitespaces:f}).dataValue},toDataFormat:function(a,b){var c,d,k;b&&(c=b.context,d=b.filter,k=b.enterMode);c||null===c||(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:k||this.editor.enterMode}).dataValue}};var y=/(?: |\xa0)$/,E="{cke_protected}",v=CKEDITOR.dtd,x="caption colgroup col thead tfoot tbody".split(" "),k=CKEDITOR.tools.extend({},v.$blockLimit, -v.$block),p={elements:{input:l,textarea:l}},n={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},D={elements:{embed:function(a){var b=a.parent;if(b&&"object"==b.name){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},a:function(a){var b=a.attributes;if(!(a.children.length||b.name||b.id||a.attributes["data-cke-saved-name"]))return!1}}},r={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/, -""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return!1;for(var c=["name","href","src"],d,k=0;kd? -1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"==a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var b=a.children[0];!b&&h(a,b=new CKEDITOR.htmlParser.text); -b.value=a.attributes["data-cke-title"]||""},input:q,textarea:q},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||!1}}};CKEDITOR.env.ie&&(r.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})});var F=/<(a|area|img|input|source)\b([^>]*)>/gi,B=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,L=/^(href|src|name)$/i,T=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, -M=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,S=/([^<]*)<\/cke:encoded>/gi,w=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,H=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,I=/]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict"; -CKEDITOR.htmlParser.element=function(a,d){this.name=a;this.attributes=d||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!!(CKEDITOR.dtd.$nonBodyContent[b]||CKEDITOR.dtd.$block[b]||CKEDITOR.dtd.$listItem[b]||CKEDITOR.dtd.$tableContent[b]||CKEDITOR.dtd.$nonEditable[b]||"br"==b);this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}}; -CKEDITOR.htmlParser.cssStyle=function(a){var d={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){"font-family"==c&&(e=e.replace(/["']/g,""));d[c.toLowerCase()]=e});return{rules:d,populate:function(a){var c=this.toString();c&&(a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c)},toString:function(){var a=[],c; -for(c in d)d[c]&&a.push(c,":",d[c],";");return a.join("")}}}; -(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof a?b.name==a:b.name in a)}}var d=function(a,b){a=a[0];b=b[0];return ab?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var d=this,h,l;b=d.getFilterContext(b);if(b.off)return!0; -if(!d.parent)a.onRoot(b,d);for(;;){h=d.name;if(!(l=a.onElementName(b,h)))return this.remove(),!1;d.name=l;if(!(d=a.onElement(b,d)))return this.remove(),!1;if(d!==this)return this.replaceWith(d),!1;if(d.name==h)break;if(d.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(d),!1;if(!d.name)return this.replaceWithChildren(),!1}h=d.attributes;var q,t;for(q in h){for(l=h[q];;)if(t=a.onAttributeName(b,q))if(t!=q)delete h[q],q=t;else break;else{delete h[q];break}t&&(!1===(l=a.onAttribute(b,d,t,l))?delete h[t]: -h[t]=l)}d.isEmpty||this.filterChildren(a,!1,b);return!0},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var g=this.name,h=[],l=this.attributes,q,t;a.openTag(g,l);for(q in l)h.push([q,l[q]]);a.sortAttributes&&h.sort(d);q=0;for(t=h.length;qCKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),b());else if(this.hasFocus)this.focus(),a();else this.once("focus",function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document);a={doc:this.getDocument(),range:a.clone()};E.eol.detect(a,this);E.bogus.exclude(a);E.cell.shrink(a);a.fragment=a.range.cloneContents();E.tree.rebuild(a,this);E.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)}, -extractHtmlFromRange:function(a,b){var c=v,d={range:a,doc:a.document},e=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),e;a.enlarge(CKEDITOR.ENLARGE_INLINE,1);c.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var f=this.editor.createRange();f.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=f.createBookmark();c.list.detectMerge(d,this);c.table.detectRanges(d,this);c.block.detectMerge(d,this);d.tableContentsRanges?(c.table.deleteRanges(d), -a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(c.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize();c.fixUneditableRangePosition(a);c.list.merge(d,this);c.table.purge(d,this);c.block.merge(d,this);if(b){c=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&c.block&&!a.root.equals(c.block)){a:{var d=c.block.getElementsByTag("span"),f=0,h;if(d)for(;h=d.getItem(f++);)if(!z(h)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(c.block, -CKEDITOR.POSITION_BEFORE_START),c.block.remove())}else c.autoParagraph(this.editor,a),A(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings();return e},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(b=b.replace(C,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a, -"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&"Control"==b.type||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText", -function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"):a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus= -!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom",function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var d=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var e=a.config.contentsLangDirection;this.getDirection(1)!= -e&&this.changeAttr("dir",e);var n=CKEDITOR.getCss();n&&(e=d.getHead(),e.getCustomData("stylesheet")||(n=d.appendStyleText(n),n=new CKEDITOR.dom.element(n.ownerNode||n.owningElement),e.setCustomData("stylesheet",n),n.data("cke-temp",1)));e=d.getCustomData("stylesheet_ref")||0;d.setCustomData("stylesheet_ref",e+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a"); -b&&2!=a.$.button&&b.isReadOnly()&&a.preventDefault()});var h={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey(),d;if(c in h){b=a.getSelection();var k,e=b.getRanges()[0],n=e.startPath(),p,w,l,c=8==c;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(k=b.getSelectedElement())||(k=g(b))?(a.fire("saveSnapshot"),e.moveToPosition(k,CKEDITOR.POSITION_BEFORE_START),k.remove(),e.select(),a.fire("saveSnapshot"),d=1):e.collapsed&&((p=n.block)&&(l=p[c?"getPrevious": -"getNext"](f))&&l.type==CKEDITOR.NODE_ELEMENT&&l.is("table")&&e[c?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),e[c?"checkEndOfBlock":"checkStartOfBlock"]()&&p.remove(),e["moveToElementEdit"+(c?"End":"Start")](l),e.select(),a.fire("saveSnapshot"),d=1):n.blockLimit&&n.blockLimit.is("td")&&(w=n.blockLimit.getAscendant("table"))&&e.checkBoundaryOfElement(w,c?CKEDITOR.START:CKEDITOR.END)&&(l=w[c?"getPrevious":"getNext"](f))?(a.fire("saveSnapshot"),e["moveToElementEdit"+(c?"End":"Start")](l), -e.checkStartOfBlock()&&e.checkEndOfBlock()?l.remove():e.select(),a.fire("saveSnapshot"),d=1):(w=n.contains(["td","th","caption"]))&&e.checkBoundaryOfElement(w,c?CKEDITOR.START:CKEDITOR.END)&&(d=1))}return!d});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&&this.attachListener(this,"keyup",function(b){b.data.getKeystroke()in h&&!this.getFirst(c)&&(this.appendBogus(),b=a.createRange(),b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),b.select())});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return!1; -b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie&&!CKEDITOR.env.edge||this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();c.is("img","hr","input","textarea","select")&&!c.isReadOnly()&&(a.getSelection().selectElement(c),c.is("input","textarea","select")&&b.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(b){(b=b.data.getTarget())&&b.is("img")&&a.getSelection().selectElement(b)}); -CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(2==b.data.$.button&&(b=b.data.getTarget(),!b.getOuterHtml().replace(C,""))){var c=a.createRange();c.moveToElementEditStart(b);c.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a, -"key",function(b){if(a.readOnly)return!0;b=b.data.domEvent.getKey();if(b in h){var c=8==b,d=a.getSelection().getRanges()[0];b=d.startPath();if(d.collapsed)a:{var k=b.block;if(k&&d[c?"checkStartOfBlock":"checkEndOfBlock"]()&&d.moveToClosestEditablePosition(k,!c)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var e=d.startContainer.getChild(d.startOffset-(c?1:0));if(e&&e.type==CKEDITOR.NODE_ELEMENT&&e.is("hr")){a.fire("saveSnapshot");e.remove();b=!0;break a}}d=d.startPath().block;if(!d|| -d&&d.contains(k))b=void 0;else{a.fire("saveSnapshot");var f;(f=(c?d:k).getBogus())&&f.remove();f=a.getSelection();e=f.createBookmarks();(c?k:d).moveChildren(c?d:k,!1);b.lastElement.mergeSiblings();t(k,d,!c);f.selectBookmarks(e);b=!0}}else b=!1}else c=d,f=b.block,d=c.endPath().block,f&&d&&!f.equals(d)?(a.fire("saveSnapshot"),(k=f.getBogus())&&k.remove(),c.enlarge(CKEDITOR.ENLARGE_INLINE),c.deleteContents(),d.getParent()&&(d.moveChildren(f,!1),b.lastElement.mergeSiblings(),t(f,d,!0)),c=a.getSelection().getRanges()[0], -c.collapse(1),c.optimize(),""===c.startContainer.getHtml()&&c.startContainer.appendBogus(),c.select(),b=!0):b=!1;if(!b)return;a.getSelection().scrollIntoView();a.fire("saveSnapshot");return!1}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c= -a.getCustomData("stylesheet_ref");--c?a.setCustomData("stylesheet_ref",c):(a.removeCustomData("stylesheet_ref"),b.removeCustomData("stylesheet").remove())}}this.editor.fire("contentDomUnload");delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;arguments.length&&(b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null));return b};CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement", -function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),a(b),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a= -b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label;if(d&&(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+e+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}"); -var f=CKEDITOR.dom.walker.whitespaces(!0),z=CKEDITOR.dom.walker.bookmark(!1,!0),A=CKEDITOR.dom.walker.empty(),u=CKEDITOR.dom.walker.bogus(),C=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,m=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,f,n,p,h=[],r=d.range.startContainer;e=d.range.startPath();for(var r=B[r.getName()],g=0,D=c.getChildren(),l=D.count(),F=-1,m=-1,t=0,q=e.contains(B.$list);g< -l;++g)e=D.getItem(g),a(e)?(n=e.getName(),q&&n in CKEDITOR.dtd.$list?h=h.concat(b(e,d)):(p=!!r[n],"br"!=n||!e.data("cke-eol")||g&&g!=l-1||(t=(f=g?h[g-1].node:D.getItem(g+1))&&(!a(f)||!f.is("br")),f=f&&a(f)&&B.$block[f.getName()]),-1!=F||p||(F=g),p||(m=g),h.push({isElement:1,isLineBreak:t,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:n,allowed:p}),f=t=0)):h.push({isElement:0,node:e,allowed:1});-1CKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var e=d.startContainer,f=e.getAscendant("table",1),h=!1;c(f.getElementsByTag("td"));c(f.getElementsByTag("th"));f=d.clone();f.setStart(e,0);f=a(f).lastBackward();f||(f=d.clone(),f.setEndAt(e, -CKEDITOR.POSITION_BEFORE_END),f=a(f).lastForward(),h=!0);f||(f=e);f.is("table")?(d.setStartAt(f,CKEDITOR.POSITION_BEFORE_START),d.collapse(!0),f.remove()):(f.is({tbody:1,thead:1,tfoot:1})&&(f=b(f,"tr",h)),f.is("tr")&&(f=b(f,f.getParent().is("thead")?"th":"td",h)),(e=f.getBogus())&&e.remove(),d.moveToPosition(f,h?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}(),E={eol:{detect:function(a,b){var c=a.range,d=c.clone(),e=c.clone(),f=new CKEDITOR.dom.elementPath(c.startContainer,b),h=new CKEDITOR.dom.elementPath(c.endContainer, -b);d.collapse(1);e.collapse();f.block&&d.checkBoundaryOfElement(f.block,CKEDITOR.END)&&(c.setStartAfter(f.block),a.prependEolBr=1);h.block&&e.checkBoundaryOfElement(h.block,CKEDITOR.START)&&(c.setEndBefore(h.block),a.appendEolBr=1)},fix:function(a,b){var c=b.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(c),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(c),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}}, -bogus:{exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode,b=b.endNode;!b||!u(b)||c&&c.equals(b)||a.range.setEndBefore(b)}},tree:{rebuild:function(a,b){var c=a.range,d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),f=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),h;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(e.blockLimit.is({tr:1,table:1})){var g=e.contains("table").getParent();h=function(a){return!a.equals(g)}}else if(e.block&& -e.block.is(CKEDITOR.dtd.$listItem)&&(f=f.contains(CKEDITOR.dtd.$list),c=c.contains(CKEDITOR.dtd.$list),!f.equals(c))){var l=e.contains(CKEDITOR.dtd.$list).getParent();h=function(a){return!a.equals(l)}}h||(h=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,h)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&&d(c);)e=c.clone(0,1),a.fragment.appendTo(e),a.fragment=e,c=c.getParent()}},cell:{shrink:function(a){a=a.range;var b=a.startContainer,c=a.endContainer, -d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&b.equals(c)&&b.is("tr")&&++d==e&&a.shrink(CKEDITOR.SHRINK_TEXT)}}},v=function(){function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var f;f=e.getNext();)f.insertAfter(d),d=f;A(c)&&c.remove()}function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark), -e=d.startPath(),f=d.endPath(),k=e.contains(CKEDITOR.dtd.$list),h=f.contains(CKEDITOR.dtd.$list);a.mergeList=k&&h&&k.getParent().equals(h.getParent())&&!k.equals(h);a.mergeListItems=e.block&&f.block&&e.block.is(CKEDITOR.dtd.$listItem)&&f.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode, -e=a.mergeListBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),h=new CKEDITOR.dom.elementPath(e,c);if(a.mergeList){var p=f.contains(CKEDITOR.dtd.$list),g=h.contains(CKEDITOR.dtd.$list);p.equals(g)||(g.moveChildren(p),g.remove())}a.mergeListItems&&(f=f.contains(CKEDITOR.dtd.$listItem),h=h.contains(CKEDITOR.dtd.$listItem),f.equals(h)||b(h,d,e));d.remove();e.remove()}}},block:{detectMerge:function(a,b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode); -c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}},merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,f=new CKEDITOR.dom.elementPath(d,c),h=new CKEDITOR.dom.elementPath(e,c),f=f.block,h=h.block;f&&h&&!f.equals(h)&&b(h,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=[],f,k=new CKEDITOR.dom.walker(c),h=c.startPath().contains(d),n=c.endPath().contains(d),p={};k.guard=function(a, -k){if(a.type==CKEDITOR.NODE_ELEMENT){var g="visited_"+(k?"out":"in");if(a.getCustomData(g))return;CKEDITOR.dom.element.setMarker(p,a,g,1)}if(k&&h&&a.equals(h))f=c.clone(),f.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),e.push(f);else if(!k&&n&&a.equals(n))f=c.clone(),f.setStartAt(n,CKEDITOR.POSITION_AFTER_START),e.push(f);else{if(g=!k)g=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!h||b(a,h))&&(!n||b(a,n));g&&(f=c.clone(),f.selectNodeContents(a),e.push(f))}};k.lastForward();CKEDITOR.dom.element.clearAllMarkers(p); -return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL?!1:0===(e&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c),e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};c.checkForward();if(1d?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&"false"==d.getAttribute("contenteditable")&&(a.getSelection().fake(d),c.data.preventDefault(),c.cancel())}}}function A(a){for(var b=0;b=d.getLength()?g.setStartAfter(d):g.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(h?g.setEndAfter(e):g.setEndBefore(e));d=new CKEDITOR.dom.walker(g);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);d.getPosition(g.endContainer)&CKEDITOR.POSITION_CONTAINS||(e.setStartAfter(d), -e.collapsed||a.splice(b+1,0,e));return!0}return!1};d.next()}}return a}var u,C,m=CKEDITOR.dom.walker.invisible(1),y=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return!1}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;(e=d.moveToClosestEditablePosition(b.selected,a))||(e=d.moveToClosestEditablePosition(b.selected,!a));e&&c.getSelection().selectRanges([d]);c.fire("saveSnapshot"); -b.selected.remove();e||(d.moveToElementEditablePosition(c.editable()),c.getSelection().selectRanges([d]));c.fire("saveSnapshot");return!1}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=e.getSelection();a&&a.removeAllRanges()}var e=b.editor;e.on("contentDom",function(){function b(){H=new CKEDITOR.dom.selection(e.getSelection());H.lock()}function c(){k.removeListener("mouseup",c);l.removeListener("mouseup",c);var a=CKEDITOR.document.$.selection, -b=a.createRange();"None"!=a.type&&b.parentElement().ownerDocument==f.$&&b.select()}var f=e.document,k=CKEDITOR.document,g=e.editable(),p=f.getBody(),l=f.getDocumentElement(),m=g.isInline(),w,H;CKEDITOR.env.gecko&&g.attachListener(g,"focus",function(a){a.removeListener();0!==w&&(a=e.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==g.$&&(a=e.createRange(),a.moveToElementEditStart(g),a.select())},null,null,-2);g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){w&&CKEDITOR.env.webkit&& -(w=e._.previousActive&&e._.previousActive.equals(f.getActive()));e.unlockSelection(w);w=0},null,null,-1);g.attachListener(g,"mousedown",function(){w=0});if(CKEDITOR.env.ie||m)E?g.attachListener(g,"beforedeactivate",b,null,null,-1):g.attachListener(e,"selectionCheck",b,null,null,-1),g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){e.lockSelection(H);w=1},null,null,-1),g.attachListener(g,"mousedown",function(){w=0});if(CKEDITOR.env.ie&&!m){var I;g.attachListener(g,"mousedown", -function(a){2==a.data.$.button&&((a=e.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(I=e.window.getScrollPosition()))});g.attachListener(g,"mouseup",function(a){2==a.data.$.button&&I&&(e.document.$.documentElement.scrollLeft=I.x,e.document.$.documentElement.scrollTop=I.y);I=null});if("BackCompat"!=f.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)l.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=p.$.createTextRange();try{c.moveToPoint(a.clientX,a.clientY)}catch(e){}d.setEndPoint(0> -f.compareEndPoints("StartToStart",c)?"EndToEnd":"StartToStart",c);d.select()}}function c(){l.removeListener("mousemove",b);k.removeListener("mouseup",c);l.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.yCKEDITOR.env.version)l.on("mousedown", -function(a){a.data.getTarget().is("html")&&(k.on("mouseup",c),l.on("mouseup",c))})}}g.attachListener(g,"selectionchange",a,e);g.attachListener(g,"keyup",d,e);g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){e.forceNextSelectionCheck();e.selectionChange(1)});if(m&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var G;g.attachListener(g,"mousedown",function(){G=1});g.attachListener(f.getDocumentElement(),"mouseup",function(){G&&d.call(e);G=0})}else g.attachListener(CKEDITOR.env.ie? -g:f.getDocumentElement(),"mouseup",d,e);CKEDITOR.env.webkit&&g.attachListener(f,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h(g)}},null,null,-1);g.attachListener(g,"keydown",z(e),null,null,-1)});e.on("setData",function(){e.unlockSelection();CKEDITOR.env.webkit&&c()});e.on("contentDomUnload",function(){e.unlockSelection()});if(CKEDITOR.env.ie9Compat)e.on("beforeDestroy",c,null,null,9);e.on("dataReady",function(){delete e._.fakeSelection; -delete e._.hiddenSelectionContainer;e.selectionChange(1)});e.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=e.editable().getLast(a);b&&b.hasAttribute("data-cke-hidden-sel")&&(b.remove(),CKEDITOR.env.gecko&&(a=e.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);e.on("key",function(a){if("wysiwyg"==e.mode){var b=e.getSelection();if(b.isFake){var c=y[a.data.keyCode];if(c)return c({editor:e,selected:b.getSelectedElement(), -selection:b,keyEvent:a})}}})});CKEDITOR.on("instanceReady",function(a){function b(){var a=d.editable();if(a&&(a=g(a))){var c=d.document.$.getSelection();"None"==c.type||c.anchorNode!=a.$&&c.focusNode!=a.$||(f=q(c));e=a.getText();a.setText(l(e))}}function c(){var a=d.editable();a&&(a=g(a))&&(a.setText(e),f&&(t(d.document.$,f),f=null))}var d=a.editor,e,f;CKEDITOR.env.webkit&&(d.on("selectionChange",function(){var a=d.editable(),b=g(a);b&&(b.getCustomData("ready")?h(a):b.setCustomData("ready",1))},null, -null,-1),d.on("beforeSetMode",function(){h(d.editable())},null,null,-1),d.on("beforeUndoImage",b),d.on("afterUndoImage",c),d.on("beforeGetData",b,null,null,0),d.on("getData",c))});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:d).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection||a?(a=this.editable())&&"wysiwyg"==this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.lockSelection= -function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;return b?(b.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select= -function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var E="function"!=typeof window.getSelection,v=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var b=a;a=a.root}var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:v++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument(); -this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b)return CKEDITOR.tools.extend(this._.cache,b._.cache),this.isFake=b.isFake,this.isLocked=b.isLocked,this;a=this.getNative();var d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(f){}d=e&&CKEDITOR.dom.element.get(e.item&&e.item(0)||e.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&& -!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var x={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel= -E?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:E?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&&(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE; -else if(1==c.rangeCount){var c=c.getRangeAt(0),d=c.startContainer;d==c.endContainer&&1==d.nodeType&&1==c.endOffset-c.startOffset&&x[d.childNodes[c.startOffset].nodeName.toLowerCase()]&&(b=CKEDITOR.SELECTION_ELEMENT)}return a.type=b},getRanges:function(){var a=E?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,k,h=b.duplicate(),g=0, -w=e.length-1,l=-1,n,m;g<=w;)if(l=Math.floor((g+w)/2),f=e[l],h.moveToElementText(f),n=h.compareEndPoints("StartToStart",b),0n)g=l+1;else return{container:d,offset:a(f)};if(-1==l||l==e.length-1&&0>n){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h)return f=e[e.length-1],f.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length};for(d=e.length;0]*>)[ \t\r\n]*/gi,"$1");g=g.replace(/([ \t\n\r]+| )/g, -" ");g=g.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="\x3cpre\x3e"+g+"\x3c/pre\x3e";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(g);b=e}else g?b=A(c?[a.getHtml()]:f(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,k;(k=c.getPrevious(T))&&k.type==CKEDITOR.NODE_ELEMENT&&k.is("pre")&&(d=z(k.getHtml(),/\n$/,"")+"\n\n"+z(c.getHtml(),/^\n/,""),CKEDITOR.env.ie?c.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e": -c.setHtml(d),k.remove())}else c&&y(b)}function f(a){var b=[];z(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"\x3c/pre\x3e"+c+"\x3cpre\x3e"}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function z(a,b,c){var d="",e="";a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function A(a,b){var c; -1=c?(g=e.createText(""),g.insertAfter(this)):(a=e.createText(""),a.insertAfter(g),a.remove()));return g},substring:function(a, -d){return"number"!=typeof d?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,d)}}); -(function(){function a(a,c,d){var g=a.serializable,h=c[d?"endContainer":"startContainer"],l=d?"endOffset":"startOffset",q=g?c.document.getById(a.startNode):a.startNode;a=g?c.document.getById(a.endNode):a.endNode;h.equals(q.getPrevious())?(c.startOffset=c.startOffset-h.getLength()-a.getPrevious().getLength(),h=a.getNext()):h.equals(a.getPrevious())&&(c.startOffset-=h.getLength(),h=a.getNext());h.equals(q.getParent())&&c[l]++;h.equals(a.getParent())&&c[l]++;c[d?"endContainer":"startContainer"]=h;return c} -CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,d)};var d={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],g;return{getNextRange:function(h){g=void 0===g?0:g+1;var l=a[g];if(l&&1b?-1:1}),e=0,g;eCKEDITOR.env.version? -a[h].$.styleSheet.cssText+=g:a[h].$.innerHTML+=g}}var g={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(d(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,b,c,d,e){var g;a&&(a=a.toLowerCase(),b&&(g=this.icons[a+"-rtl"]), -g||(g=this.icons[a]));a=c||g&&g.path||"";d=d||g&&g.offset;e=e||g&&g.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,d="",g="";"function"==typeof c&&(d=c(this,"editor"),g= -c(this,"panel"));a=[[q,a]];e([b],d,a);e(l,g,a)}).call(this,a)}});var h="cke_ui_color",l=[],q=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor;a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);l.push(a);var d=b.getUiColor();d&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[q,d]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})(); -(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=!1;else{var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var d=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!d||d!=b)}catch(c){CKEDITOR.env.hc=!1}a.remove()}CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}"); -CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending)for(delete CKEDITOR._.pending,d=0;dc;c++){var f=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);a[f]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:linear-gradient(to bottom,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType\x3d0,startColorstr\x3d'{from}',endColorstr\x3d'{to}');");return function(c,a){return b.output({from:c, -to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), +for(var d=new CKEDITOR.dom.documentFragment,e,g,f,k=0;k]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}}, +function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,e={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,d,l=0,m;c=this._.htmlPartsRegex.exec(b);){d=c.index;if(d>l)if(l=b.substring(l,d),m)m.push(l);else this.onText(l); +l=this._.htmlPartsRegex.lastIndex;if(d=c[1])if(d=d.toLowerCase(),m&&CKEDITOR.dtd.$cdata[d]&&(this.onCDATA(m.join("")),m=null),!m){this.onTagClose(d);continue}if(m)m.push(c[0]);else if(d=c[3]){if(d=d.toLowerCase(),!/="/.test(d)){var f={},h,k=c[4];c=!!c[5];if(k)for(;h=a.exec(k);){var g=h[1].toLowerCase();h=h[2]||h[3]||h[4]||"";f[g]=!h&&e[g]?g:CKEDITOR.tools.htmlDecodeAttr(h)}this.onTagOpen(d,f,c);!m&&CKEDITOR.dtd.$cdata[d]&&(m=[])}}else if(d=c[2])this.onComment(d)}if(b.length>l)this.onText(b.substring(l, +b.length))}}}(),CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("\x3c",a)},openTagClose:function(a,e){e?this._.output.push(" /\x3e"):this._.output.push("\x3e")},attribute:function(a,e){"string"==typeof e&&(e=CKEDITOR.tools.htmlEncodeAttr(e));this._.output.push(" ",a,'\x3d"',e,'"')},closeTag:function(a){this._.output.push("\x3c/",a,"\x3e")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("\x3c!--", +a,"--\x3e")},write:function(a){this._.output.push(a)},reset:function(){this._.output=[];this._.indent=!1},getHtml:function(a){var e=this._.output.join("");a&&this.reset();return e}}}),"use strict",function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,e=CKEDITOR.tools.indexOf(a,this),b=this.previous,c=this.next;b&&(b.next=c);c&&(c.previous=b);a.splice(e,1);this.parent=null},replaceWith:function(a){var e=this.parent.children, +b=CKEDITOR.tools.indexOf(e,this),c=a.previous=this.previous,d=a.next=this.next;c&&(c.next=a);d&&(d.previous=a);e[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var e=a.parent.children,b=CKEDITOR.tools.indexOf(e,a),c=a.next;e.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;c&&(c.previous=this);this.parent=a.parent},insertBefore:function(a){var e=a.parent.children,b=CKEDITOR.tools.indexOf(e,a);e.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next= +this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var e="function"==typeof a?a:"string"==typeof a?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&&b.type==CKEDITOR.NODE_ELEMENT;){if(e(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}}(),"use strict",CKEDITOR.htmlParser.comment= +function(a){this.value=a;this._={isBlockLike:!1}},CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,e){var b=this.value;if(!(b=a.onComment(e,b,this)))return this.remove(),!1;if("string"!=typeof b)return this.replaceWith(b),!1;this.value=b;return!0},writeHtml:function(a,e){e&&this.filter(e);a.comment(this.value)}}),"use strict",function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:!1}};CKEDITOR.htmlParser.text.prototype= +CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,e){if(!(this.value=a.onText(e,this.value,this)))return this.remove(),!1},writeHtml:function(a,e){e&&this.filter(e);a.text(this.value)}})}(),"use strict",function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})}(),"use strict", +CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:!0,hasInlineStarted:!1}},function(){function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var e=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),d={ul:"li", +ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=function(l,m,f){function h(a){var b;if(0m;m++)if(e=d[m]){e= +e.exec(a,c,this);if(!1===e)return null;if(e&&e!=c)return this.onNode(a,e);if(c.parent&&!c.name)break}return c},onNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,e){return(d=this.attributesRules[d])?d.exec(a,e,c,this):e}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype= +{add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a,c,d){for(var e=[this.findIndex(c),0],m=0,f=a.length;m/g,"\x26gt;")+"\x3c/textarea\x3e");return"\x3ccke:encoded\x3e"+encodeURIComponent(a)+"\x3c/cke:encoded\x3e"})}function n(a){return a.replace(K,function(a,b){return decodeURIComponent(b)})}function t(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, +function(a){return"\x3c!--"+w+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\x3e"})}function u(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)})}function r(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function q(a,b){var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore= +{id:1}),g=/<\!--\{cke_temp(comment)?\}(\d*?)--\x3e/g,d=[/|$)/gi,//gi,//gi].concat(d);a=a.replace(/\x3c!--[\s\S]*?--\x3e/g,function(a){return"\x3c!--{cke_tempcomment}"+(c.push(a)-1)+"--\x3e"});for(var f=0;f]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,e){return"\x3c"+c+d+"\x3e"+r(u(e),b)+"\x3c/"+c+"\x3e"})}CKEDITOR.htmlDataProcessor=function(b){var c, +d,f=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(y);c.addRules(C,{applyToAll:!0});c.addRules(a(b,"data"),{applyToAll:!0});d.addRules(x);d.addRules(A,{applyToAll:!0});d.addRules(a(b,"html"),{applyToAll:!0});b.on("toHtml",function(a){a=a.data;var c=a.dataValue,d,c=q(c,b),c=g(c,H),c=k(c),c=g(c,I),c=c.replace(F,"$1cke:$2"),c=c.replace(R,"\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"), +c=c.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,"$1data-cke-"+CKEDITOR.rnd+"-$2");d=a.context||b.editable().getName();var f;CKEDITOR.env.ie&&9>CKEDITOR.env.version&&"pre"==d&&(d="div",c="\x3cpre\x3e"+c+"\x3c/pre\x3e",f=1);d=b.document.createElement(d);d.setHtml("a"+c);c=d.getHtml().substr(1);c=c.replace(new RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");f&&(c=c.replace(/^
    |<\/pre>$/gi,""));c=c.replace(N,"$1$2");c=n(c);c=u(c);d=!1===a.fixForBody?!1:
    +e(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,d);d&&(f=c,!f.children.length&&CKEDITOR.dtd[f.name][d]&&(d=new CKEDITOR.htmlParser.element(d),f.add(d)));a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,!0,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(f.dataFilter,!0)},null,null,10);b.on("toHtml",function(a){a=a.data;var b=a.dataValue,
    +c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(!0);a.dataValue=t(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^
    /i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,e(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(f.htmlFilter,!0)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue, +!1,!0)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=f.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(!0);c=u(c);c=r(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,g,f,k,h;b&&"object"==typeof b?(g=b.context,c=b.fixForBody,d=b.dontFilter,f=b.filter,k=b.enterMode,h=b.protectedWhitespaces):g=b;g||null===g||(g=e.editable().getName());return e.fire("toHtml",{dataValue:a,context:g,fixForBody:c,dontFilter:d, +filter:f||e.filter,enterMode:k||e.enterMode,protectedWhitespaces:h}).dataValue},toDataFormat:function(a,b){var c,d,e;b&&(c=b.context,d=b.filter,e=b.enterMode);c||null===c||(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var p=/(?: |\xa0)$/,w="{cke_protected}",z=CKEDITOR.dtd,B="caption colgroup col thead tfoot tbody".split(" "),v=CKEDITOR.tools.extend({},z.$blockLimit, +z.$block),y={elements:{input:f,textarea:f}},C={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},x={elements:{embed:function(a){var b=a.parent;if(b&&"object"==b.name){var c=b.attributes.width,b=b.attributes.height;c&&(a.attributes.width=c);b&&(a.attributes.height=b)}},a:function(a){var b=a.attributes;if(!(a.children.length||b.name||b.id||a.attributes["data-cke-saved-name"]))return!1}}},A={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/, +""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return!1;for(var c=["name","href","src"],d,e=0;ed? +1:-1})},param:function(a){a.children=[];a.isEmpty=!0;return a},span:function(a){"Apple-style-span"==a.attributes["class"]&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];b&&b.value&&(b.value=CKEDITOR.tools.trim(b.value));a.attributes.type||(a.attributes.type="text/css")},title:function(a){var b=a.children[0];!b&&m(a,b=new CKEDITOR.htmlParser.text); +b.value=a.attributes["data-cke-title"]||""},input:h,textarea:h},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||!1}}};CKEDITOR.env.ie&&(A.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})});var D=/<(a|area|img|input|source)\b([^>]*)>/gi,G=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,E=/^(href|src|name)$/i,I=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, +H=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,K=/([^<]*)<\/cke:encoded>/gi,F=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,N=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,R=/]*?)\/?>(?!\s*<\/cke:\1)/gi}(),"use strict",CKEDITOR.htmlParser.element=function(a,e){this.name=a;this.attributes=e||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!!(CKEDITOR.dtd.$nonBodyContent[b]||CKEDITOR.dtd.$block[b]||CKEDITOR.dtd.$listItem[b]|| +CKEDITOR.dtd.$tableContent[b]||CKEDITOR.dtd.$nonEditable[b]||"br"==b);this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}},CKEDITOR.htmlParser.cssStyle=function(a){var e={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,d){"font-family"==c&&(d=d.replace(/["']/g,""));e[c.toLowerCase()]=d});return{rules:e,populate:function(a){var c= +this.toString();c&&(a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c)},toString:function(){var a=[],c;for(c in e)e[c]&&a.push(c,":",e[c],";");return a.join("")}}},function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&("string"==typeof a?b.name==a:b.name in a)}}var e=function(a,b){a=a[0];b=b[0];return ab?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype= +CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var e=this,m,f;b=e.getFilterContext(b);if(b.off)return!0;if(!e.parent)a.onRoot(b,e);for(;;){m=e.name;if(!(f=a.onElementName(b,m)))return this.remove(),!1;e.name=f;if(!(e=a.onElement(b,e)))return this.remove(),!1;if(e!==this)return this.replaceWith(e),!1;if(e.name==m)break;if(e.type!=CKEDITOR.NODE_ELEMENT)return this.replaceWith(e), +!1;if(!e.name)return this.replaceWithChildren(),!1}m=e.attributes;var h,k;for(h in m){for(f=m[h];;)if(k=a.onAttributeName(b,h))if(k!=h)delete m[h],h=k;else break;else{delete m[h];break}k&&(!1===(f=a.onAttribute(b,e,k,f))?delete m[k]:m[k]=f)}e.isEmpty||this.filterChildren(a,!1,b);return!0},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var l=this.name,m=[],f=this.attributes,h,k;a.openTag(l,f);for(h in f)m.push([h,f[h]]);a.sortAttributes&&m.sort(e);h=0;for(k=m.length;hCKEDITOR.env.version||CKEDITOR.env.quirks))this.hasFocus&&(this.focus(),b());else if(this.hasFocus)this.focus(),a();else this.once("focus", +function(){a()},null,null,-999)},getHtmlFromRange:function(a){if(a.collapsed)return new CKEDITOR.dom.documentFragment(a.document);a={doc:this.getDocument(),range:a.clone()};w.eol.detect(a,this);w.bogus.exclude(a);w.cell.shrink(a);a.fragment=a.range.cloneContents();w.tree.rebuild(a,this);w.eol.fix(a,this);return new CKEDITOR.dom.documentFragment(a.fragment.$)},extractHtmlFromRange:function(a,b){var c=z,d={range:a,doc:a.document},e=this.getHtmlFromRange(a);if(a.collapsed)return a.optimize(),e;a.enlarge(CKEDITOR.ENLARGE_INLINE, +1);c.table.detectPurge(d);d.bookmark=a.createBookmark();delete d.range;var g=this.editor.createRange();g.moveToPosition(d.bookmark.startNode,CKEDITOR.POSITION_BEFORE_START);d.targetBookmark=g.createBookmark();c.list.detectMerge(d,this);c.table.detectRanges(d,this);c.block.detectMerge(d,this);d.tableContentsRanges?(c.table.deleteRanges(d),a.moveToBookmark(d.bookmark),d.range=a):(a.moveToBookmark(d.bookmark),d.range=a,a.extractContents(c.detectExtractMerge(d)));a.moveToBookmark(d.targetBookmark);a.optimize(); +c.fixUneditableRangePosition(a);c.list.merge(d,this);c.table.purge(d,this);c.block.merge(d,this);if(b){c=a.startPath();if(d=a.checkStartOfBlock()&&a.checkEndOfBlock()&&c.block&&!a.root.equals(c.block)){a:{var d=c.block.getElementsByTag("span"),g=0,f;if(d)for(;f=d.getItem(g++);)if(!n(f)){d=!0;break a}d=!1}d=!d}d&&(a.moveToPosition(c.block,CKEDITOR.POSITION_BEFORE_START),c.block.remove())}else c.autoParagraph(this.editor,a),t(a.startContainer)&&a.startContainer.appendBogus();a.startContainer.mergeSiblings(); +return e},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||!1!==a.config.ignoreEmptyParagraph&&(b=b.replace(r,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a, +"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&"Control"==b.type||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode,a.data.range)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?this.attachClass("cke_editable_inline"): +a.elementMode!=CKEDITOR.ELEMENT_MODE_REPLACE&&a.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO||this.attachClass("cke_editable_themed");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(){this.hasFocus=!1},null,null,-1);this.on("focus",function(){this.hasFocus=!0},null,null,-1);a.focusManager.add(this);this.equals(CKEDITOR.document.getActive())&&(this.hasFocus=!0,a.once("contentDom", +function(){a.focusManager.focus(this)},this));this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var d=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var e=a.config.contentsLangDirection;this.getDirection(1)!=e&&this.changeAttr("dir",e);var f=CKEDITOR.getCss();f&&(e=d.getHead(),e.getCustomData("stylesheet")||(f=d.appendStyleText(f),f=new CKEDITOR.dom.element(f.ownerNode||f.owningElement), +e.setCustomData("stylesheet",f),f.data("cke-temp",1)));e=d.getCustomData("stylesheet_ref")||0;d.setCustomData("stylesheet_ref",e+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){a=a.data;var b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");b&&2!=a.$.button&&b.isReadOnly()&&a.preventDefault()});var h={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return!0;var c=b.data.domEvent.getKey(),d;if(c in +h){b=a.getSelection();var e,f=b.getRanges()[0],k=f.startPath(),m,n,v,c=8==c;CKEDITOR.env.ie&&11>CKEDITOR.env.version&&(e=b.getSelectedElement())||(e=l(b))?(a.fire("saveSnapshot"),f.moveToPosition(e,CKEDITOR.POSITION_BEFORE_START),e.remove(),f.select(),a.fire("saveSnapshot"),d=1):f.collapsed&&((m=k.block)&&(v=m[c?"getPrevious":"getNext"](g))&&v.type==CKEDITOR.NODE_ELEMENT&&v.is("table")&&f[c?"checkStartOfBlock":"checkEndOfBlock"]()?(a.fire("saveSnapshot"),f[c?"checkEndOfBlock":"checkStartOfBlock"]()&& +m.remove(),f["moveToElementEdit"+(c?"End":"Start")](v),f.select(),a.fire("saveSnapshot"),d=1):k.blockLimit&&k.blockLimit.is("td")&&(n=k.blockLimit.getAscendant("table"))&&f.checkBoundaryOfElement(n,c?CKEDITOR.START:CKEDITOR.END)&&(v=n[c?"getPrevious":"getNext"](g))?(a.fire("saveSnapshot"),f["moveToElementEdit"+(c?"End":"Start")](v),f.checkStartOfBlock()&&f.checkEndOfBlock()?v.remove():f.select(),a.fire("saveSnapshot"),d=1):(n=k.contains(["td","th","caption"]))&&f.checkBoundaryOfElement(n,c?CKEDITOR.START: +CKEDITOR.END)&&(d=1))}return!d});a.blockless&&CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller&&this.attachListener(this,"keyup",function(b){b.data.getKeystroke()in h&&!this.getFirst(c)&&(this.appendBogus(),b=a.createRange(),b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START),b.select())});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return!1;b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie&&!CKEDITOR.env.edge|| +this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();c.is("img","hr","input","textarea","select")&&!c.isReadOnly()&&(a.getSelection().selectElement(c),c.is("input","textarea","select")&&b.data.preventDefault())});CKEDITOR.env.edge&&this.attachListener(this,"mouseup",function(b){(b=b.data.getTarget())&&b.is("img")&&a.getSelection().selectElement(b)});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(2==b.data.$.button&&(b=b.data.getTarget(),!b.getOuterHtml().replace(r, +""))){var c=a.createRange();c.moveToElementEditStart(b);c.select(!0)}});CKEDITOR.env.webkit&&(this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()}),this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()}));CKEDITOR.env.webkit&&this.attachListener(a,"key",function(b){if(a.readOnly)return!0;b=b.data.domEvent.getKey();if(b in h){var c=8==b,d=a.getSelection().getRanges()[0];b=d.startPath(); +if(d.collapsed)a:{var e=b.block;if(e&&d[c?"checkStartOfBlock":"checkEndOfBlock"]()&&d.moveToClosestEditablePosition(e,!c)&&d.collapsed){if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var g=d.startContainer.getChild(d.startOffset-(c?1:0));if(g&&g.type==CKEDITOR.NODE_ELEMENT&&g.is("hr")){a.fire("saveSnapshot");g.remove();b=!0;break a}}d=d.startPath().block;if(!d||d&&d.contains(e))b=void 0;else{a.fire("saveSnapshot");var f;(f=(c?d:e).getBogus())&&f.remove();f=a.getSelection();g=f.createBookmarks(); +(c?e:d).moveChildren(c?d:e,!1);b.lastElement.mergeSiblings();k(e,d,!c);f.selectBookmarks(g);b=!0}}else b=!1}else c=d,f=b.block,d=c.endPath().block,f&&d&&!f.equals(d)?(a.fire("saveSnapshot"),(e=f.getBogus())&&e.remove(),c.enlarge(CKEDITOR.ENLARGE_INLINE),c.deleteContents(),d.getParent()&&(d.moveChildren(f,!1),b.lastElement.mergeSiblings(),k(f,d,!0)),c=a.getSelection().getRanges()[0],c.collapse(1),c.optimize(),""===c.startContainer.getHtml()&&c.startContainer.appendBogus(),c.select(),b=!0):b=!1;if(!b)return; +a.getSelection().scrollIntoView();a.fire("saveSnapshot");return!1}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");--c?a.setCustomData("stylesheet_ref",c):(a.removeCustomData("stylesheet_ref"),b.removeCustomData("stylesheet").remove())}}this.editor.fire("contentDomUnload"); +delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;arguments.length&&(b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null));return b};CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))&&("false"!=a.getAttribute("contentEditable")&&a.data("cke-editable",a.hasAttribute("contenteditable")? +"true":"1"),a.setAttribute("contentEditable",!1))});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();d&&!d.isLocked&&(d=c.checkDirty(),c.fire("lockSnapshot"),a(b),c.fire("unlockSnapshot"),!d&&c.resetDirty())}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label; +if(d&&(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents"))){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+e+'" class\x3d"cke_voice_label"\x3e'+d+"\x3c/span\x3e");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");var g=CKEDITOR.dom.walker.whitespaces(!0),n=CKEDITOR.dom.walker.bookmark(!1,!0),t=CKEDITOR.dom.walker.empty(), +u=CKEDITOR.dom.walker.bogus(),r=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,q=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,g,f,k,h=[],m=d.range.startContainer;e=d.range.startPath();for(var m=l[m.getName()],n=0,r=c.getChildren(),p=r.count(),w=-1,u=-1,y=0,C=e.contains(l.$list);nCKEDITOR.env.version&&d.getChildCount()&&d.getFirst().remove())}return function(d){var e=d.startContainer,g=e.getAscendant("table",1),f=!1;c(g.getElementsByTag("td"));c(g.getElementsByTag("th"));g=d.clone();g.setStart(e,0);g=a(g).lastBackward();g||(g=d.clone(),g.setEndAt(e,CKEDITOR.POSITION_BEFORE_END),g=a(g).lastForward(),f=!0);g||(g=e);g.is("table")?(d.setStartAt(g,CKEDITOR.POSITION_BEFORE_START), +d.collapse(!0),g.remove()):(g.is({tbody:1,thead:1,tfoot:1})&&(g=b(g,"tr",f)),g.is("tr")&&(g=b(g,g.getParent().is("thead")?"th":"td",f)),(e=g.getBogus())&&e.remove(),d.moveToPosition(g,f?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END))}}(),w={eol:{detect:function(a,b){var c=a.range,d=c.clone(),e=c.clone(),g=new CKEDITOR.dom.elementPath(c.startContainer,b),f=new CKEDITOR.dom.elementPath(c.endContainer,b);d.collapse(1);e.collapse();g.block&&d.checkBoundaryOfElement(g.block,CKEDITOR.END)&& +(c.setStartAfter(g.block),a.prependEolBr=1);f.block&&e.checkBoundaryOfElement(f.block,CKEDITOR.START)&&(c.setEndBefore(f.block),a.appendEolBr=1)},fix:function(a,b){var c=b.getDocument(),d;a.appendEolBr&&(d=this.createEolBr(c),a.fragment.append(d));!a.prependEolBr||d&&!d.getPrevious()||a.fragment.append(this.createEolBr(c),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}},bogus:{exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode,b=b.endNode; +!b||!u(b)||c&&c.equals(b)||a.range.setEndBefore(b)}},tree:{rebuild:function(a,b){var c=a.range,d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),g=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),f;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(e.blockLimit.is({tr:1,table:1})){var k=e.contains("table").getParent();f=function(a){return!a.equals(k)}}else if(e.block&&e.block.is(CKEDITOR.dtd.$listItem)&&(g=g.contains(CKEDITOR.dtd.$list),c=c.contains(CKEDITOR.dtd.$list), +!g.equals(c))){var h=e.contains(CKEDITOR.dtd.$list).getParent();f=function(a){return!a.equals(h)}}f||(f=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,f)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&&d(c);)e=c.clone(0,1),a.fragment.appendTo(e),a.fragment=e,c=c.getParent()}},cell:{shrink:function(a){a=a.range;var b=a.startContainer,c=a.endContainer,d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&b.equals(c)&&b.is("tr")&&++d== +e&&a.shrink(CKEDITOR.SHRINK_TEXT)}}},z=function(){function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var g;g=e.getNext();)g.insertAfter(d),d=g;t(c)&&c.remove()}function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark),e=d.startPath(),g=d.endPath(),f=e.contains(CKEDITOR.dtd.$list),k=g.contains(CKEDITOR.dtd.$list); +a.mergeList=f&&k&&f.getParent().equals(k.getParent())&&!f.equals(k);a.mergeListItems=e.block&&g.block&&e.block.is(CKEDITOR.dtd.$listItem)&&g.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems)d=d.clone(),d.setStartBefore(a.bookmark.startNode),d.setEndAfter(a.bookmark.endNode),a.mergeListBookmark=d.createBookmark()},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode,e=a.mergeListBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e, +c);if(a.mergeList){var k=g.contains(CKEDITOR.dtd.$list),h=f.contains(CKEDITOR.dtd.$list);k.equals(h)||(h.moveChildren(k),h.remove())}a.mergeListItems&&(g=g.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$listItem),g.equals(f)||b(f,d,e));d.remove();e.remove()}}},block:{detectMerge:function(a,b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode);c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}}, +merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d=a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e,c),g=g.block,f=f.block;g&&f&&!g.equals(f)&&b(f,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=[],g,f=new CKEDITOR.dom.walker(c),k=c.startPath().contains(d),h=c.endPath().contains(d),l={};f.guard=function(a,f){if(a.type==CKEDITOR.NODE_ELEMENT){var m="visited_"+(f?"out":"in");if(a.getCustomData(m))return; +CKEDITOR.dom.element.setMarker(l,a,m,1)}if(f&&k&&a.equals(k))g=c.clone(),g.setEndAt(k,CKEDITOR.POSITION_BEFORE_END),e.push(g);else if(!f&&h&&a.equals(h))g=c.clone(),g.setStartAt(h,CKEDITOR.POSITION_AFTER_START),e.push(g);else{if(m=!f)m=a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!k||b(a,k))&&(!h||b(a,h));m&&(g=c.clone(),g.selectNodeContents(a),e.push(g))}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(l);return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED, +e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL?!1:0===(e&d)}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c),e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};c.checkForward();if(1g&&e&&e.intersectsNode(c.$)){var k=[{node:d.anchorNode,offset:d.anchorOffset},{node:d.focusNode,offset:d.focusOffset}];d.anchorNode==c.$&&d.anchorOffset>g&&(k[0].offset-=g);d.focusNode==c.$&&d.focusOffset>g&&(k[1].offset-=g)}}c.setText(f(c.getText(),1));k&&(c=a.getDocument().$,d=c.getSelection(),c=c.createRange(),c.setStart(k[0].node,k[0].offset),c.collapse(!0),d.removeAllRanges(), +d.addRange(c),d.extend(k[1].node,k[1].offset))}}function f(a,b){return b?a.replace(B,function(a,b){return b?" ":""}):a.replace(z,"")}function h(a){var b=CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"'+(CKEDITOR.env.ie?"display:none":"position:fixed;top:0;left:-1000px")+'"\x3e\x26nbsp;\x3c/div\x3e',a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(1),d=a.createRange(),e=c.root.on("selectionchange",function(a){a.cancel()}, +null,null,0);d.setStartAt(b,CKEDITOR.POSITION_AFTER_START);d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([d]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function k(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(),g=e[0];1==e.length&&g.collapsed&&(d=g[38>d?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&"false"==d.getAttribute("contenteditable")&&(a.getSelection().fake(d), +c.data.preventDefault(),c.cancel())}}}function g(a){for(var b=0;b=d.getLength()? +k.setStartAfter(d):k.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(f?k.setEndAfter(e):k.setEndBefore(e));d=new CKEDITOR.dom.walker(k);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);d.getPosition(k.endContainer)&CKEDITOR.POSITION_CONTAINS||(e.setStartAfter(d),e.collapsed||a.splice(b+1,0,e));return!0}return!1};d.next()}}return a}var n,t,u=CKEDITOR.dom.walker.invisible(1),r=function(){function a(b){return function(a){var c= +a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return!1}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;(e=d.moveToClosestEditablePosition(b.selected,a))||(e=d.moveToClosestEditablePosition(b.selected,!a));e&&c.getSelection().selectRanges([d]);c.fire("saveSnapshot");b.selected.remove();e||(d.moveToElementEditablePosition(c.editable()),c.getSelection().selectRanges([d]));c.fire("saveSnapshot");return!1}}var c=a(), +d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=d.getSelection();a&&a.removeAllRanges()}var d=b.editor;d.on("contentDom",function(){function b(){w=new CKEDITOR.dom.selection(d.getSelection());w.lock()}function c(){f.removeListener("mouseup",c);n.removeListener("mouseup",c);var a=CKEDITOR.document.$.selection,b=a.createRange();"None"!=a.type&&b.parentElement().ownerDocument==g.$&&b.select()}var g=d.document,f=CKEDITOR.document,h=d.editable(), +l=g.getBody(),n=g.getDocumentElement(),r=h.isInline(),F,w;CKEDITOR.env.gecko&&h.attachListener(h,"focus",function(a){a.removeListener();0!==F&&(a=d.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==h.$&&(a=d.createRange(),a.moveToElementEditStart(h),a.select())},null,null,-2);h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){F&&CKEDITOR.env.webkit&&(F=d._.previousActive&&d._.previousActive.equals(g.getActive()));d.unlockSelection(F);F=0},null,null,-1);h.attachListener(h, +"mousedown",function(){F=0});if(CKEDITOR.env.ie||r)q?h.attachListener(h,"beforedeactivate",b,null,null,-1):h.attachListener(d,"selectionCheck",b,null,null,-1),h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){d.lockSelection(w);F=1},null,null,-1),h.attachListener(h,"mousedown",function(){F=0});if(CKEDITOR.env.ie&&!r){var p;h.attachListener(h,"mousedown",function(a){2==a.data.$.button&&((a=d.document.getSelection())&&a.getType()!=CKEDITOR.SELECTION_NONE||(p=d.window.getScrollPosition()))}); +h.attachListener(h,"mouseup",function(a){2==a.data.$.button&&p&&(d.document.$.documentElement.scrollLeft=p.x,d.document.$.documentElement.scrollTop=p.y);p=null});if("BackCompat"!=g.$.compatMode){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)n.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=l.$.createTextRange();try{c.moveToPoint(a.clientX,a.clientY)}catch(e){}d.setEndPoint(0>g.compareEndPoints("StartToStart",c)?"EndToEnd":"StartToStart",c);d.select()}}function c(){n.removeListener("mousemove", +b);f.removeListener("mouseup",c);n.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.yCKEDITOR.env.version)n.on("mousedown",function(a){a.data.getTarget().is("html")&&(f.on("mouseup",c),n.on("mouseup",c))})}}h.attachListener(h,"selectionchange", +a,d);h.attachListener(h,"keyup",e,d);h.attachListener(h,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){d.forceNextSelectionCheck();d.selectionChange(1)});if(r&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var v;h.attachListener(h,"mousedown",function(){v=1});h.attachListener(g.getDocumentElement(),"mouseup",function(){v&&e.call(d);v=0})}else h.attachListener(CKEDITOR.env.ie?h:g.getDocumentElement(),"mouseup",e,d);CKEDITOR.env.webkit&&h.attachListener(g,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:m(h)}}, +null,null,-1);h.attachListener(h,"keydown",k(d),null,null,-1)});d.on("setData",function(){d.unlockSelection();CKEDITOR.env.webkit&&c()});d.on("contentDomUnload",function(){d.unlockSelection()});if(CKEDITOR.env.ie9Compat)d.on("beforeDestroy",c,null,null,9);d.on("dataReady",function(){delete d._.fakeSelection;delete d._.hiddenSelectionContainer;d.selectionChange(1)});d.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=d.editable().getLast(a);b&&b.hasAttribute("data-cke-hidden-sel")&& +(b.remove(),CKEDITOR.env.gecko&&(a=d.editable().getFirst(a))&&a.is("br")&&a.getAttribute("_moz_editor_bogus_node")&&a.remove())},null,null,100);d.on("key",function(a){if("wysiwyg"==d.mode){var b=d.getSelection();if(b.isFake){var c=r[a.data.keyCode];if(c)return c({editor:d,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});if(CKEDITOR.env.webkit)CKEDITOR.on("instanceReady",function(a){var b=a.editor;b.on("selectionChange",function(){var a=b.editable(),c=a.getCustomData("cke-fillingChar"); +c&&(c.getCustomData("ready")?m(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){m(b.editable())},null,null,-1);b.on("getSnapshot",function(a){a.data&&(a.data=f(a.data))},b,null,20);b.on("toDataFormat",function(a){a.data.dataValue=f(a.data.dataValue)},null,null,0)});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:e).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){return!this._.savedSelection&&!this._.fakeSelection||a?(a=this.editable())&&"wysiwyg"== +this.mode?new CKEDITOR.dom.selection(a):null:this._.savedSelection||this._.fakeSelection};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);return a.getType()!=CKEDITOR.SELECTION_NONE?(!a.isLocked&&a.lock(),this._.savedSelection=a,!0):!1};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;return b?(b.unlock(a),delete this._.savedSelection,!0):!1};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath}; +CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var q="function"!=typeof window.getSelection,p=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection){var b= +a;a=a.root}var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:p++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b)return CKEDITOR.tools.extend(this._.cache,b._.cache),this.isFake=b.isFake,this.isLocked=b.isLocked,this;a=this.getNative();var d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(g){}d=e&&CKEDITOR.dom.element.get(e.item&& +e.item(0)||e.parentElement())}if(!d||d.type!=CKEDITOR.NODE_ELEMENT&&d.type!=CKEDITOR.NODE_TEXT||!this.root.equals(d)&&!this.root.contains(d))this._.cache.type=CKEDITOR.SELECTION_NONE,this._.cache.startElement=null,this._.cache.selectedElement=null,this._.cache.selectedText="",this._.cache.ranges=new CKEDITOR.dom.rangeList;return this};var w={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1},z=CKEDITOR.tools.repeat("​", +7),B=new RegExp(z+"( )?","g");CKEDITOR.tools.extend(CKEDITOR.dom.selection,{_removeFillingCharSequenceString:f,_createFillingCharSequenceNode:l,FILLING_CHAR_SEQUENCE:z});CKEDITOR.dom.selection.prototype={getNative:function(){return void 0!==this._.cache.nativeSel?this._.cache.nativeSel:this._.cache.nativeSel=q?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:q?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(), +d=c.type;"Text"==d&&(b=CKEDITOR.SELECTION_TEXT);"Control"==d&&(b=CKEDITOR.SELECTION_ELEMENT);c.createRange().parentElement()&&(b=CKEDITOR.SELECTION_TEXT)}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(1==c.rangeCount){var c=c.getRangeAt(0),d=c.startContainer;d==c.endContainer&&1==d.nodeType&&1==c.endOffset-c.startOffset&&w[d.childNodes[c.startOffset].nodeName.toLowerCase()]&& +(b=CKEDITOR.SELECTION_ELEMENT)}return a.type=b},getRanges:function(){var a=q?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,g,f,k=b.duplicate(),h=0,l=e.length-1,m=-1,n,r;h<=l;)if(m=Math.floor((h+l)/2),g=e[m],k.moveToElementText(g),n=k.compareEndPoints("StartToStart",b),0n)h=m+1;else return{container:d,offset:a(g)}; +if(-1==m||m==e.length-1&&0>n){k.moveToElementText(d);k.setEndPoint("StartToStart",b);k=k.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!k)return g=e[e.length-1],g.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:g,offset:g.nodeValue.length};for(d=e.length;0]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g," ");f=f.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var k=a.getDocument().createElement("div");k.append(e);e.$.outerHTML="\x3cpre\x3e"+f+"\x3c/pre\x3e";e.copyAttributes(k.getFirst());e=k.getFirst().remove()}else e.setHtml(f);b=e}else f?b=t(c?[a.getHtml()]:g(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,h;(h=c.getPrevious(I))&& +h.type==CKEDITOR.NODE_ELEMENT&&h.is("pre")&&(d=n(h.getHtml(),/\n$/,"")+"\n\n"+n(c.getHtml(),/^\n/,""),CKEDITOR.env.ie?c.$.outerHTML="\x3cpre\x3e"+d+"\x3c/pre\x3e":c.setHtml(d),h.remove())}else c&&p(b)}function g(a){var b=[];n(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"\x3c/pre\x3e"+c+"\x3cpre\x3e"}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function n(a,b,c){var d="",e="";a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi, +function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function t(a,b){var c;1=c?(l=d.createText(""),l.insertAfter(this)):(a=d.createText(""),a.insertAfter(l),a.remove()));return l},substring:function(a,e){return"number"!=typeof e?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a, +e)}}),function(){function a(a,c,d){var e=a.serializable,m=c[d?"endContainer":"startContainer"],f=d?"endOffset":"startOffset",h=e?c.document.getById(a.startNode):a.startNode;a=e?c.document.getById(a.endNode):a.endNode;m.equals(h.getPrevious())?(c.startOffset=c.startOffset-m.getLength()-a.getPrevious().getLength(),m=a.getNext()):m.equals(a.getPrevious())&&(c.startOffset-=m.getLength(),m=a.getNext());m.equals(h.getParent())&&c[f]++;m.equals(a.getParent())&&c[f]++;c[d?"endContainer":"startContainer"]= +m;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,e)};var e={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],e;return{getNextRange:function(m){e=void 0===e?0:e+1;var f=a[e];if(f&&1b?-1:1}),e=0,f;eCKEDITOR.env.version?a[h].$.styleSheet.cssText+=f:a[h].$.innerHTML+=f}}var l={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(e(a))},icons:{},addIcon:function(a,b,c,d){a= +a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,b,c,d,e){var f;a&&(a=a.toLowerCase(),b&&(f=this.icons[a+"-rtl"]),f||(f=this.icons[a]));a=c||f&&f.path||"";d=d||f&&f.offset;e=e||f&&f.bgsize||"16px";a&&(a=a.replace(/'/g,"\\'"));return a&&"background-image:url('"+CKEDITOR.getUrl(a)+"');background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b= +c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,e="",k="";"function"==typeof c&&(e=c(this,"editor"),k=c(this,"panel"));a=[[h,a]];d([b],e,a);d(f,k,a)}).call(this,a)}});var m="cke_ui_color",f=[],h=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor;a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);f.push(a); +var e=b.getUiColor();e&&d([a],CKEDITOR.skin.chameleon(b,"panel"),[[h,e]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})}(),function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=!1;else{var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var e=a.getComputedStyle("border-top-color"), +b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!(!e||e!=b)}catch(c){CKEDITOR.env.hc=!1}a.remove()}CKEDITOR.env.hc&&(CKEDITOR.env.cssClass+=" cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending)for(delete CKEDITOR._.pending,e=0;em;m++){var f=m,h;h=parseInt(e[m],16);h=("0"+(0>b?0|h*(1+b):0|h+(255-h)*b).toString(16)).slice(-2);e[f]=h}return"#"+e.join("")}}(),e=function(){var a=new CKEDITOR.template("background:#{to};background-image:linear-gradient(to bottom,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType\x3d0,startColorstr\x3d'{from}',endColorstr\x3d'{to}');"); +return function(b,e){return a.output({from:b,to:e})}}(),b={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; -return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-.1),defaultGradient:c(b(a,.9),a),lightGradient:c(b(a,1),b(a,.7)),mediumGradient:c(b(a,.8),b(a,.5)),ckeButtonOn:c(b(a,.6),b(a,.7)),ckeResizer:b(a,-.4),ckeToolbarSeparator:b(a,.5),ckeColorauto:b(a,.8),dialogBody:b(a,.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-.6),elementsPathBg:a,menubuttonIcon:b(a,.5),menubuttonIconHover:b(a,.3)};return f[e].output(a).replace(/\[/g,"{").replace(/\]/g, -"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var h=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;darguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+ -"_label";this._.children=[];var e={role:a.role||"presentation"};a.includeLabel&&(e["aria-labelledby"]=c.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,e,function(){var e=[],g=a.required?" cke_required":"";"horizontal"!=a.labelLayout?e.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" ',' id\x3d"'+c.labelId+'"',c.inputId?' for\x3d"'+c.inputId+'"':"",(a.labelStyle?' style\x3d"'+a.labelStyle+'"':"")+"\x3e",a.label,"\x3c/label\x3e",'\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', -a.controlStyle?' style\x3d"'+a.controlStyle+'"':"",' role\x3d"presentation"\x3e',f.call(this,b,a),"\x3c/div\x3e"):(g={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'\x3clabel class\x3d"cke_dialog_ui_labeled_label'+g+'" id\x3d"'+c.labelId+'" for\x3d"'+c.inputId+'"'+(a.labelStyle?' style\x3d"'+a.labelStyle+'"':"")+"\x3e"+CKEDITOR.tools.htmlEncode(a.label)+"\x3c/label\x3e"},{type:"html",html:'\x3cspan class\x3d"cke_dialog_ui_labeled_content"'+(a.controlStyle?' style\x3d"'+a.controlStyle+ -'"':"")+"\x3e"+f.call(this,b,a)+"\x3c/span\x3e"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,g,e));return e.join("")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",c={"class":"cke_dialog_ui_input_"+a.type,id:f,type:a.type};a.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var e=this,m=!1;b.on("load",function(){e.getInputElement().on("keydown", -function(a){13==a.data.getKeystroke()&&(m=!0)});e.getInputElement().on("keyup",function(a){13==a.data.getKeystroke()&&m&&(b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0),m=!1);e.bidi&&w.call(e,a)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var b=['\x3cdiv class\x3d"cke_dialog_ui_input_',a.type,'" role\x3d"presentation"'];a.width&&b.push('style\x3d"width:'+a.width+'" ');b.push("\x3e\x3cinput ");c["aria-labelledby"]=this._.labelId;this._.required&& -(c["aria-required"]=this._.required);for(var e in c)b.push(e+'\x3d"'+c[e]+'" ');b.push(" /\x3e\x3c/div\x3e");return b.join("")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this,c=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",e={};a.validate&&(this.validate=a.validate);e.rows=a.rows||5;e.cols=a.cols||20;e["class"]="cke_dialog_ui_input_textarea "+(a["class"]||"");"undefined"!=typeof a.inputStyle&&(e.style=a.inputStyle);a.dir&&(e.dir=a.dir);if(f.bidi)b.on("load", -function(){f.getInputElement().on("keyup",w)},f);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e["aria-labelledby"]=this._.labelId;this._.required&&(e["aria-required"]=this._.required);var a=['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"',c,'" '],b;for(b in e)a.push(b+'\x3d"'+CKEDITOR.tools.htmlEncode(e[b])+'" ');a.push("\x3e",CKEDITOR.tools.htmlEncode(f._["default"]),"\x3c/textarea\x3e\x3c/div\x3e");return a.join("")})}},checkbox:function(b, -a,d){if(!(3>arguments.length)){var f=h.call(this,a,{"default":!!a["default"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"span",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},!0),e=[],d=CKEDITOR.tools.getNextId()+"_label",g={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":d};t(c);a["default"]&&(g.checked="checked");"undefined"!=typeof c.inputStyle&&(c.style=c.inputStyle); -f.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,e,"input",null,g);e.push(' \x3clabel id\x3d"',d,'" for\x3d"',g.id,'"'+(a.labelStyle?' style\x3d"'+a.labelStyle+'"':"")+"\x3e",CKEDITOR.tools.htmlEncode(a.label),"\x3c/label\x3e");return e.join("")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._["default"]||(this._["default"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.validate);var f=[],c=this;a.role="radiogroup";a.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this, -b,a,d,function(){for(var e=[],d=[],g=(a.id?a.id:CKEDITOR.tools.getNextId())+"_radio",k=0;karguments.length)){var f=h.call(this,a);a.validate&&(this.validate=a.validate);f.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_select":CKEDITOR.tools.getNextId()+"_select"},!0),e=[],d=[],g={id:f.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};e.push('\x3cdiv class\x3d"cke_dialog_ui_input_', -a.type,'" role\x3d"presentation"');a.width&&e.push('style\x3d"width:'+a.width+'" ');e.push("\x3e");void 0!==a.size&&(g.size=a.size);void 0!==a.multiple&&(g.multiple=a.multiple);t(c);for(var k=0,l;karguments.length)){void 0===a["default"]&&(a["default"]="");var f=CKEDITOR.tools.extend(h.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var b=['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', -f.frameId,'" title\x3d"',a.label,'" src\x3d"javascript:void('];b.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");b.push(')"\x3e\x3c/iframe\x3e');return b.join("")})}},fileButton:function(b,a,d){var f=this;if(!(3>arguments.length)){h.call(this,a);a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),e=c.onClick;c.className=(c.className?c.className+" ":"")+"cke_dialog_ui_button";c.onClick=function(c){var d= -a["for"];e&&!1===e.call(this,c)||(b.getContentElement(d[0],d[1]).submit(),this.disable())};b.on("load",function(){b.getContentElement(a["for"][0],a["for"][1])._.buttons.push(f)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\s*<[\w:]+\s+([^>]*)?>/,a=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,d=/\/$/;return function(f,c,e){if(!(3>arguments.length)){var m=[],g=c.html;"\x3c"!=g.charAt(0)&&(g="\x3cspan\x3e"+g+"\x3c/span\x3e");var k=c.focus;if(k){var l=this.focus;this.focus=function(){("function"== -typeof k?k:l).call(this);this.fire("focus")};c.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,f,c,m,"span",null,null,"");m=m.join("").match(b);g=g.match(a)||["","",""];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]="/"+g[2]);e.push([g[1]," ",m[1]||"",g[2]].join(""))}}}(),fieldset:function(b,a,d,f,c){var e=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,f,"fieldset",null,null,function(){var a=[];e&&a.push("\x3clegend"+ -(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e"+e+"\x3c/legend\x3e");for(var b=0;ba.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b= -CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?"":b.getChild(0).getText()},eventProcessors:r},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return this._.disabled?!1:this.fire("click",{dialog:this._.dialog})},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()}, -isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on("click",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)}, -focus:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){if(this.bidi){var a=b&&b.charAt(0);(a="‪"==a?"ltr":"‫"==a?"rtl":null)&&(b=b.slice(1));this.setDirectionMarker(a)}b||(b="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)}, -getValue:function(){var b=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&b){var a=this.getDirectionMarker();a&&(b=("ltr"==a?"‪":"‫")+b)}return b},setDirectionMarker:function(b){var a=this.getInputElement();b?a.setAttributes({dir:b,"data-cke-dir-marker":b}):this.getDirectionMarker()&&a.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},q,!0);CKEDITOR.ui.dialog.textarea.prototype= -new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var f=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),c=this.getInputElement().$;f.$.text=b;f.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(f.$):c.add(f.$,null):c.add(f.$,d);return this},remove:function(b){this.getInputElement().$.remove(b); -return this},clear:function(){for(var b=this.getInputElement().$;0b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function A(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;ck.width-c.width-g?k.width-c.width+("rtl"==f.lang.dir?0:h[1]):e.x,e.y+h[0]k.height-c.height-g?k.height-c.height+h[2]:e.y,1);b.data.preventDefault()} -function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var d=null,e=null,f=a.getParentEditor(),g=f.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof g&&(g=20);a.parts.title.on("mousedown",function(g){d={x:g.data.$.screenX,y:g.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup", -c);e=a.getPosition();if(CKEDITOR.env.ie6Compat){var f=u.getChild(0).getFrameDocument();f.on("mousemove",b);f.on("mouseup",c)}g.data.preventDefault()},a)}function Z(a){function b(b){var c="rtl"==f.lang.dir,n=k.width,q=k.height,G=n+(b.data.$.screenX-m.x)*(c?-1:1)*(a._.moved?1:2),H=q+(b.data.$.screenY-m.y)*(a._.moved?1:2),B=a._.element.getFirst(),B=c&&B.getComputedStyle("right"),C=a.getPosition();C.y+H>p.height&&(H=p.height-C.y);(c?B:C.x)+G>p.width&&(G=p.width-(c?B:C.x));if(e==CKEDITOR.DIALOG_RESIZE_WIDTH|| -e==CKEDITOR.DIALOG_RESIZE_BOTH)n=Math.max(d.minWidth||0,G-g);if(e==CKEDITOR.DIALOG_RESIZE_HEIGHT||e==CKEDITOR.DIALOG_RESIZE_BOTH)q=Math.max(d.minHeight||0,H-h);a.resize(n,q);a._.moved||a.layout();b.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);q&&(q.remove(),q=null);if(CKEDITOR.env.ie6Compat){var a=u.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var d=a.definition,e=d.resizable; -if(e!=CKEDITOR.DIALOG_RESIZE_NONE){var f=a.getParentEditor(),g,h,p,m,k,q,n=CKEDITOR.tools.addFunction(function(e){k=a.getSize();var d=a.parts.contents;d.$.getElementsByTagName("iframe").length&&(q=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'),d.append(q));h=k.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));g=k.width-a.parts.contents.getSize("width", -1);m={x:e.screenX,y:e.screenY};p=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(d=u.getChild(0).getFrameDocument(),d.on("mousemove",b),d.on("mouseup",c));e.preventDefault&&e.preventDefault()});a.on("load",function(){var b="";e==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":e==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+ -b+" cke_resizer_"+f.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(f.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+n+', event )"\x3e'+("ltr"==f.lang.dir?"◢":"◣")+"\x3c/div\x3e");a.parts.footer.append(b,1)});f.on("destroy",function(){CKEDITOR.tools.removeFunction(n)})}}function I(a){a.data.preventDefault(1)}function N(a){var b=CKEDITOR.document.getWindow(),c=a.config,d=c.dialog_backgroundCoverColor||"white",e=c.dialog_backgroundCoverOpacity,f=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(d, -e,f),g=z[c];g?g.show():(f=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",f,"; top: 0px; left: 0px; ",CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),f.push("void((function(){"+ -encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+d+"' );document.close();")+"})())"),f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),f.push("\x3c/div\x3e"),g=CKEDITOR.dom.element.createFromHtml(f.join("")),g.setOpacity(void 0!==e?e:.5),g.on("keydown",I),g.on("keypress",I),g.on("keyup",I),g.appendTo(CKEDITOR.document.getBody()),z[c]=g);a.focusManager.add(g); -u=g;a=function(){var a=b.getViewPaneSize();g.setStyles({width:a.width+"px",height:a.height+"px"})};var h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;g.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};J=a;b.on("resize",a);a();CKEDITOR.env.mac&&CKEDITOR.env.webkit||g.focus();if(CKEDITOR.env.ie6Compat){var p=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){p.prevScrollHandler= -window.onscroll||function(){};window.onscroll=p},0);h()}}function O(a){u&&(a.focusManager.remove(u),a=CKEDITOR.document.getWindow(),u.hide(),a.removeListener("resize",J),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),J=null)}var v=CKEDITOR.tools.cssLength,W='\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+ -CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; -CKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;cb.length)){var c=l._.currentFocusIndex;l._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(e){}var d=c,g=1arguments.length)){var f=a.call(this,c);f.labelId=CKEDITOR.tools.getNextId()+ +"_label";this._.children=[];var l={role:c.role||"presentation"};c.includeLabel&&(l["aria-labelledby"]=f.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"div",null,l,function(){var a=[],d=c.required?" cke_required":"";"horizontal"!=c.labelLayout?a.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label'+d+'" ',' id\x3d"'+f.labelId+'"',f.inputId?' for\x3d"'+f.inputId+'"':"",(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e",c.label,"\x3c/label\x3e",'\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', +c.controlStyle?' style\x3d"'+c.controlStyle+'"':"",' role\x3d"presentation"\x3e',e.call(this,b,c),"\x3c/div\x3e"):(d={type:"hbox",widths:c.widths,padding:0,children:[{type:"html",html:'\x3clabel class\x3d"cke_dialog_ui_labeled_label'+d+'" id\x3d"'+f.labelId+'" for\x3d"'+f.inputId+'"'+(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e"+CKEDITOR.tools.htmlEncode(c.label)+"\x3c/label\x3e"},{type:"html",html:'\x3cspan class\x3d"cke_dialog_ui_labeled_content"'+(c.controlStyle?' style\x3d"'+c.controlStyle+ +'"':"")+"\x3e"+e.call(this,b,c)+"\x3c/span\x3e"}]},CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,d,a));return a.join("")})}},textInput:function(b,c,d){if(!(3>arguments.length)){a.call(this,c);var e=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",l={"class":"cke_dialog_ui_input_"+c.type,id:e,type:c.type};c.validate&&(this.validate=c.validate);c.maxLength&&(l.maxlength=c.maxLength);c.size&&(l.size=c.size);c.inputStyle&&(l.style=c.inputStyle);var m=this,r=!1;b.on("load",function(){m.getInputElement().on("keydown", +function(a){13==a.data.getKeystroke()&&(r=!0)});m.getInputElement().on("keyup",function(a){13==a.data.getKeystroke()&&r&&(b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0),r=!1);m.bidi&&f.call(m,a)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){var a=['\x3cdiv class\x3d"cke_dialog_ui_input_',c.type,'" role\x3d"presentation"'];c.width&&a.push('style\x3d"width:'+c.width+'" ');a.push("\x3e\x3cinput ");l["aria-labelledby"]=this._.labelId;this._.required&& +(l["aria-required"]=this._.required);for(var b in l)a.push(b+'\x3d"'+l[b]+'" ');a.push(" /\x3e\x3c/div\x3e");return a.join("")})}},textarea:function(b,c,d){if(!(3>arguments.length)){a.call(this,c);var e=this,l=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",m={};c.validate&&(this.validate=c.validate);m.rows=c.rows||5;m.cols=c.cols||20;m["class"]="cke_dialog_ui_input_textarea "+(c["class"]||"");"undefined"!=typeof c.inputStyle&&(m.style=c.inputStyle);c.dir&&(m.dir=c.dir);if(e.bidi)b.on("load", +function(){e.getInputElement().on("keyup",f)},e);CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){m["aria-labelledby"]=this._.labelId;this._.required&&(m["aria-required"]=this._.required);var a=['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"',l,'" '],b;for(b in m)a.push(b+'\x3d"'+CKEDITOR.tools.htmlEncode(m[b])+'" ');a.push("\x3e",CKEDITOR.tools.htmlEncode(e._["default"]),"\x3c/textarea\x3e\x3c/div\x3e");return a.join("")})}},checkbox:function(b, +c,d){if(!(3>arguments.length)){var e=a.call(this,c,{"default":!!c["default"]});c.validate&&(this.validate=c.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"span",null,null,function(){var a=CKEDITOR.tools.extend({},c,{id:c.id?c.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},!0),d=[],g=CKEDITOR.tools.getNextId()+"_label",f={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":g};m(a);c["default"]&&(f.checked="checked");"undefined"!=typeof a.inputStyle&&(a.style=a.inputStyle); +e.checkbox=new CKEDITOR.ui.dialog.uiElement(b,a,d,"input",null,f);d.push(' \x3clabel id\x3d"',g,'" for\x3d"',f.id,'"'+(c.labelStyle?' style\x3d"'+c.labelStyle+'"':"")+"\x3e",CKEDITOR.tools.htmlEncode(c.label),"\x3c/label\x3e");return d.join("")})}},radio:function(b,c,d){if(!(3>arguments.length)){a.call(this,c);this._["default"]||(this._["default"]=this._.initValue=c.items[0][1]);c.validate&&(this.validate=c.validate);var e=[],f=this;c.role="radiogroup";c.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this, +b,c,d,function(){for(var a=[],d=[],g=(c.id?c.id:CKEDITOR.tools.getNextId())+"_radio",l=0;larguments.length)){var e=a.call(this,c);c.validate&&(this.validate=c.validate);e.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){var a=CKEDITOR.tools.extend({},c,{id:c.id?c.id+"_select":CKEDITOR.tools.getNextId()+"_select"},!0),d=[],g=[],f={id:e.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};d.push('\x3cdiv class\x3d"cke_dialog_ui_input_', +c.type,'" role\x3d"presentation"');c.width&&d.push('style\x3d"width:'+c.width+'" ');d.push("\x3e");void 0!==c.size&&(f.size=c.size);void 0!==c.multiple&&(f.multiple=c.multiple);m(a);for(var l=0,w;larguments.length)){void 0===c["default"]&&(c["default"]="");var e=CKEDITOR.tools.extend(a.call(this,c),{definition:c,buttons:[]});c.validate&&(this.validate=c.validate);b.on("load",function(){CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,c,d,function(){e.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var a=['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', +e.frameId,'" title\x3d"',c.label,'" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("")})}},fileButton:function(b,c,d){var e=this;if(!(3>arguments.length)){a.call(this,c);c.validate&&(this.validate=c.validate);var f=CKEDITOR.tools.extend({},c),l=f.onClick;f.className=(f.className?f.className+" ":"")+"cke_dialog_ui_button";f.onClick=function(a){var d= +c["for"];l&&!1===l.call(this,a)||(b.getContentElement(d[0],d[1]).submit(),this.disable())};b.on("load",function(){b.getContentElement(c["for"][0],c["for"][1])._.buttons.push(e)});CKEDITOR.ui.dialog.button.call(this,b,f,d)}},html:function(){var a=/^\s*<[\w:]+\s+([^>]*)?>/,b=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,c=/\/$/;return function(d,e,f){if(!(3>arguments.length)){var l=[],m=e.html;"\x3c"!=m.charAt(0)&&(m="\x3cspan\x3e"+m+"\x3c/span\x3e");var p=e.focus;if(p){var w=this.focus;this.focus=function(){("function"== +typeof p?p:w).call(this);this.fire("focus")};e.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,d,e,l,"span",null,null,"");l=l.join("").match(a);m=m.match(b)||["","",""];c.test(m[1])&&(m[1]=m[1].slice(0,-1),m[2]="/"+m[2]);f.push([m[1]," ",l[1]||"",m[2]].join(""))}}}(),fieldset:function(a,b,c,d,e){var f=e.label;this._={children:b};CKEDITOR.ui.dialog.uiElement.call(this,a,e,d,"fieldset",null,null,function(){var a=[];f&&a.push("\x3clegend"+ +(e.labelStyle?' style\x3d"'+e.labelStyle+'"':"")+"\x3e"+f+"\x3c/legend\x3e");for(var b=0;bb.getChildCount()?(new CKEDITOR.dom.text(a,CKEDITOR.document)).appendTo(b):b.getChild(0).$.nodeValue=a;return this},getLabel:function(){var a= +CKEDITOR.document.getById(this._.labelId);return!a||1>a.getChildCount()?"":a.getChild(0).getText()},eventProcessors:d},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return this._.disabled?!1:this.fire("click",{dialog:this._.dialog})},enable:function(){this._.disabled=!1;var a=this.getElement();a&&a.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()}, +isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(a,b){this.on("click",function(){b.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)}, +focus:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&b.$.focus()},0)},select:function(){var a=this.selectParentTab();setTimeout(function(){var b=a.getInputElement();b&&(b.$.focus(),b.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(a){if(this.bidi){var b=a&&a.charAt(0);(b="‪"==b?"ltr":"‫"==b?"rtl":null)&&(a=a.slice(1));this.setDirectionMarker(b)}a||(a="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)}, +getValue:function(){var a=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&a){var b=this.getDirectionMarker();b&&(a=("ltr"==b?"‪":"‫")+a)}return a},setDirectionMarker:function(a){var b=this.getInputElement();a?b.setAttributes({dir:a,"data-cke-dir-marker":a}):this.getDirectionMarker()&&b.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},c,!0);CKEDITOR.ui.dialog.textarea.prototype= +new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(a,b,c){var d=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),e=this.getInputElement().$;d.$.text=a;d.$.value=void 0===b||null===b?a:b;void 0===c||null===c?CKEDITOR.env.ie?e.add(d.$):e.add(d.$,null):e.add(d.$,c);return this},remove:function(a){this.getInputElement().$.remove(a); +return this},clear:function(){for(var a=this.getInputElement().$;0b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function e(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;ch.width-k.width-g?h.width-k.width+("rtl"==f.lang.dir?0:l[1]):e.x,e.y+l[0]h.height-k.height-g?h.height-k.height+l[2]:e.y,1);c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mousemove", +b);CKEDITOR.document.removeListener("mouseup",c);if(CKEDITOR.env.ie6Compat){var a=x.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var d=null,e=null,f=a.getParentEditor(),g=f.config.dialog_magnetDistance,l=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof g&&(g=20);a.parts.title.on("mousedown",function(f){d={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);e=a.getPosition();if(CKEDITOR.env.ie6Compat){var g= +x.getChild(0).getFrameDocument();g.on("mousemove",b);g.on("mouseup",c)}f.data.preventDefault()},a)}function g(a){function b(c){var n="rtl"==f.lang.dir,p=m.width,w=m.height,r=p+(c.data.$.screenX-h.x)*(n?-1:1)*(a._.moved?1:2),z=w+(c.data.$.screenY-h.y)*(a._.moved?1:2),u=a._.element.getFirst(),u=n&&u.getComputedStyle("right"),q=a.getPosition();q.y+z>k.height&&(z=k.height-q.y);(n?u:q.x)+r>k.width&&(r=k.width-(n?u:q.x));if(e==CKEDITOR.DIALOG_RESIZE_WIDTH||e==CKEDITOR.DIALOG_RESIZE_BOTH)p=Math.max(d.minWidth|| +0,r-g);if(e==CKEDITOR.DIALOG_RESIZE_HEIGHT||e==CKEDITOR.DIALOG_RESIZE_BOTH)w=Math.max(d.minHeight||0,z-l);a.resize(p,w);a._.moved||a.layout();c.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mouseup",c);CKEDITOR.document.removeListener("mousemove",b);n&&(n.remove(),n=null);if(CKEDITOR.env.ie6Compat){var a=x.getChild(0).getFrameDocument();a.removeListener("mouseup",c);a.removeListener("mousemove",b)}}var d=a.definition,e=d.resizable;if(e!=CKEDITOR.DIALOG_RESIZE_NONE){var f=a.getParentEditor(), +g,l,k,h,m,n,p=CKEDITOR.tools.addFunction(function(d){m=a.getSize();var e=a.parts.contents;e.$.getElementsByTagName("iframe").length&&(n=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%;"\x3e\x3c/div\x3e'),e.append(n));l=m.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));g=m.width-a.parts.contents.getSize("width",1);h={x:d.screenX,y:d.screenY};k=CKEDITOR.document.getWindow().getViewPaneSize(); +CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);CKEDITOR.env.ie6Compat&&(e=x.getChild(0).getFrameDocument(),e.on("mousemove",b),e.on("mouseup",c));d.preventDefault&&d.preventDefault()});a.on("load",function(){var b="";e==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":e==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer'+b+" cke_resizer_"+f.lang.dir+'" title\x3d"'+CKEDITOR.tools.htmlEncode(f.lang.common.resize)+ +'" onmousedown\x3d"CKEDITOR.tools.callFunction('+p+', event )"\x3e'+("ltr"==f.lang.dir?"◢":"◣")+"\x3c/div\x3e");a.parts.footer.append(b,1)});f.on("destroy",function(){CKEDITOR.tools.removeFunction(p)})}}function n(a){a.data.preventDefault(1)}function t(a){var b=CKEDITOR.document.getWindow(),c=a.config,d=c.dialog_backgroundCoverColor||"white",e=c.dialog_backgroundCoverOpacity,f=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(d,e,f),g=C[c];g?g.show():(f=['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ',CKEDITOR.env.ie6Compat? +"absolute":"fixed","; z-index: ",f,"; top: 0px; left: 0px; ",CKEDITOR.env.ie6Compat?"":"background-color: "+d,'" class\x3d"cke_dialog_background_cover"\x3e'],CKEDITOR.env.ie6Compat&&(d="\x3chtml\x3e\x3cbody style\x3d\\'background-color:"+d+";\\'\x3e\x3c/body\x3e\x3c/html\x3e",f.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'),f.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+ +d+"' );document.close();")+"})())"),f.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')),f.push("\x3c/div\x3e"),g=CKEDITOR.dom.element.createFromHtml(f.join("")),g.setOpacity(void 0!==e?e:.5),g.on("keydown",n),g.on("keypress",n),g.on("keyup",n),g.appendTo(CKEDITOR.document.getBody()),C[c]=g);a.focusManager.add(g);x=g;a=function(){var a=b.getViewPaneSize();g.setStyles({width:a.width+"px",height:a.height+ +"px"})};var l=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;g.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do a=c.getPosition(),c.move(a.x,a.y);while(c=c._.parentDialog)}};y=a;b.on("resize",a);a();CKEDITOR.env.mac&&CKEDITOR.env.webkit||g.focus();if(CKEDITOR.env.ie6Compat){var k=function(){l();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){k.prevScrollHandler=window.onscroll||function(){};window.onscroll=k},0);l()}}function u(a){x&&(a.focusManager.remove(x), +a=CKEDITOR.document.getWindow(),x.hide(),a.removeListener("resize",y),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||null},0),y=null)}var r=CKEDITOR.tools.cssLength,q='\x3cdiv class\x3d"cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e'; +CKEDITOR.dialog=function(b,f){function h(){var a=x._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;cb.length)){var c=x._.currentFocusIndex;x._.tabBarMode&&0>a&&(c=0);try{b[c].getInputElement().$.blur()}catch(d){}var e=c,f=1c.height|| +null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,this._.parentDialog=null,t(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this); +a.on("keydown",D);a.on("keyup",G);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],d=this._.tabs[a.id],e=a.requiredContent,g=0;if(d){for(var l in this._.contents[a.id]){var k=this._.contents[a.id][l];"hbox"!=k.type&&"vbox"!=k.type&&k.getInputElement()&&(k.requiredContent&&!this._.editor.activeFilter.check(k.requiredContent)?k.disable():(k.enable(),g++))}!g||e&&!this._.editor.activeFilter.check(e)?d[0].addClass("cke_dialog_tab_disabled"):d[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout(); +f(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),d=(c.width-b.width)/2,e=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0c.height|| b.width+(0c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:d,this._.moved?this._.position.y:e)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})}, -commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(ba(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide(); -if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else O(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",Q);a.removeListener("keyup",R);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog; +commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(I(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide(); +if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else u(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",D);a.removeListener("keyup",G);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog; this.foreach(function(a){a.resetInitValue&&a.resetInitValue()});this.setState(CKEDITOR.DIALOG_STATE_IDLE)}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title\x3d"'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",d=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),e=this._.contents[a.id]={},f=d.getChild(), g=0;d=f.shift();)d.notAllowed||"hbox"==d.type||"vbox"==d.type||g++,e[d.id]=d,"function"==typeof d.getChild&&f.push.apply(f,d.getChild());g||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");d=CKEDITOR.env;e="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"',0arguments.length)){var h=(d.call?d(b):d)|| -"div",p=["\x3c",h," "],m=(e&&e.call?e(b):e)||{},k=(f&&f.call?f(b):f)||{},q=(g&&g.call?g.call(this,a,b):g)||"",n=this.domId=k.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(m.display="none",this.notAllowed=!0);k.id=n;var r={};b.type&&(r["cke_dialog_ui_"+b.type]=1);b.className&&(r[b.className]=1);b.disabled&&(r.cke_disabled=1);for(var l=k["class"]&&k["class"].split?k["class"].split(" "):[],n=0;nCKEDITOR.env.version?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=!1;a._.hasFocus=!0;t.fire("focus");c&&this.addClass(c)});b.on("blur",function(){t.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,b);this.keyboardFocusable&&(this.tabIndex= -b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=t.focusIndex}))}},hbox:function(a,b,c,d,e){if(!(4>arguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.widths||null,h=e&&e.height||null,p,m={role:"presentation"};e&&e.align&&(m.align=e.align);CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"hbox"},d,"table",{},m,function(){var a=['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for(p=0;parguments.length)){this._||(this._={});var f=this._.children=b,g=e&&e.width||null,h=e&&e.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,e||{type:"vbox"},d,"div",null,{role:"presentation"},function(){var b=['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');e&&e.expand&&b.push("height:100%;");b.push("width:"+v(g||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align\x3d"', -CKEDITOR.tools.htmlEncode(e&&e.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("\x3e\x3ctbody\x3e");for(var d=0;darguments.length)return this._.children.concat();a.splice||(a=[a]);return 2> -a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,d){for(var e=c.children,f,g=[],h=[],p=0;pe.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text("",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b]+data-cke-bookmark[^<]*?<\/span>/ig,"");c&&r(b,d)})}function t(){if("wysiwyg"==b.mode){var a=u("paste");b.getCommand("cut").setState(u("cut"));b.getCommand("copy").setState(u("copy")); -b.getCommand("paste").setState(a);b.fire("pasteState",a)}}function u(a){if(w&&a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==a)return CKEDITOR.TRISTATE_OFF;a=b.getSelection();var d=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==d.length&&d[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var n=CKEDITOR.plugins.clipboard,p=0,v=0,w=0;(function(){b.on("key",q);b.on("contentDom",a);b.on("selectionChange",function(b){w=b.data.selection.getRanges()[0].checkReadOnly(); -t()});b.contextMenu&&b.contextMenu.addListener(function(b,a){w=a.getRanges()[0].checkReadOnly();return{cut:u("cut"),copy:u("copy"),paste:u("paste")}})})();(function(){function a(d,c,e,f,q){var g=b.lang.clipboard[c];b.addCommand(c,e);b.ui.addButton&&b.ui.addButton(d,{label:g,command:c,toolbar:"clipboard,"+f});b.addMenuItems&&b.addMenuItem(c,{label:g,command:c,group:"clipboard",order:q})}a("Cut","cut",c("cut"),10,1);a("Copy","copy",c("copy"),20,4);a("Paste","paste",d(),30,8)})();b.getClipboardData= -function(a,d){function c(a){a.removeListener();a.cancel();d(a.data)}function e(a){a.removeListener();a.cancel();k=!0;d({type:g,dataValue:a.data.dataValue,dataTransfer:a.data.dataTransfer,method:"paste"})}function f(){this.customTitle=a&&a.title}var q=!1,g="auto",k=!1;d||(d=a,a=null);b.on("paste",c,null,null,0);b.on("beforePaste",function(a){a.removeListener();q=!0;g=a.data.type},null,null,1E3);!1===z()&&(b.removeListener("paste",c),q&&b.fire("pasteDialog",f)?(b.on("pasteDialogCommit",e),b.on("dialogHide", -function(a){a.removeListener();a.data.removeListener("pasteDialogCommit",e);setTimeout(function(){k||d(null)},10)})):d(null))}}function A(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(
    <\/div>|
    [^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|)*$/gi)&&!b.match(/^(

    ([^<]|)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!b.match(/^([^<]|)*$/gi))return"html"}else return"html";return"htmlifiedtext"} -function B(b,a){function c(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e",~~(a/2))+(1==a%2?"\x3cbr\x3e":"")}a=a.replace(/\s+/g," ").replace(/> +/gi,"\x3cbr\x3e");a=a.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1(
    |)<\/div>)(?!$|(

    (
    |)<\/div>))/g,"\x3cbr\x3e").replace(/^(
    (
    |)<\/div>){2}(?!$)/g,"\x3cdiv\x3e\x3c/div\x3e"),a.match(/
    (
    |)<\/div>/)&& -(a="\x3cp\x3e"+a.replace(/(
    (
    |)<\/div>)+/g,function(a){return c(a.split("\x3c/div\x3e\x3cdiv\x3e").length+1)})+"\x3c/p\x3e"),a=a.replace(/<\/div>
    /g,"\x3cbr\x3e"),a=a.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(a=a.replace(/^

    $/,"\x3cbr\x3e")),-1){2,}/g,function(a){return c(a.length/4)})+"\x3c/p\x3e"));return C(b,a)}function D(){function b(){var a={},b;for(b in CKEDITOR.dtd)"$"!= -b.charAt(0)&&"div"!=b&&"span"!=b&&(a[b]=1);return a}var a={};return{get:function(c){return"plain-text"==c?a.plainText||(a.plainText=new CKEDITOR.filter("br")):"semantic-content"==c?((c=a.semanticContent)||(c=new CKEDITOR.filter,c.allow({$1:{elements:b(),attributes:!0,styles:!1,classes:!1}}),c=a.semanticContent=c),c):c?new CKEDITOR.filter(c):null}}}function x(b,a,c){a=CKEDITOR.htmlParser.fragment.fromHtml(a);var d=new CKEDITOR.htmlParser.basicWriter;c.applyTo(a,!0,!1,b.activeEnterMode);a.writeHtml(d); -return d.getHtml()}function C(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\/p>

    )+/g,function(a){return CKEDITOR.tools.repeat("\x3cbr\x3e",a.length/7*2)}).replace(/<\/?p>/g,""):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\/)?p>/g,"\x3c$1div\x3e"));return a}function E(b){b.data.preventDefault();b.data.$.dataTransfer.dropEffect="none"}function F(b){var a=CKEDITOR.plugins.clipboard;b.on("contentDom",function(){function c(a,d,c){d.select();r(b,{dataTransfer:c,method:"drop"},1);c.sourceEditor.fire("saveSnapshot"); -c.sourceEditor.editable().extractHtmlFromRange(a);c.sourceEditor.getSelection().selectRanges([a]);c.sourceEditor.fire("saveSnapshot")}function d(d,c){d.select();r(b,{dataTransfer:c,method:"drop"},1);a.resetDragDataTransfer()}function e(a,d,c){var e={$:a.data.$,target:a.data.getTarget()};d&&(e.dragRange=d);c&&(e.dropRange=c);!1===b.fire(a.name,e)&&a.data.preventDefault()}function g(a){a.type!=CKEDITOR.NODE_ELEMENT&&(a=a.getParent());return a.getChildCount()}var f=b.editable(),h=CKEDITOR.plugins.clipboard.getDropTarget(b), -l=b.ui.space("top"),p=b.ui.space("bottom");a.preventDefaultDropOnElement(l);a.preventDefaultDropOnElement(p);f.attachListener(h,"dragstart",e);f.attachListener(b,"dragstart",a.resetDragDataTransfer,a,null,1);f.attachListener(b,"dragstart",function(d){a.initDragDataTransfer(d,b)},null,null,2);f.attachListener(b,"dragstart",function(){var d=a.dragRange=b.getSelection().getRanges()[0];CKEDITOR.env.ie&&10>CKEDITOR.env.version&&(a.dragStartContainerChildCount=d?g(d.startContainer):null,a.dragEndContainerChildCount= -d?g(d.endContainer):null)},null,null,100);f.attachListener(h,"dragend",e);f.attachListener(b,"dragend",a.initDragDataTransfer,a,null,1);f.attachListener(b,"dragend",a.resetDragDataTransfer,a,null,100);f.attachListener(h,"dragover",function(a){var b=a.data.getTarget();b&&b.is&&b.is("html")?a.data.preventDefault():CKEDITOR.env.ie&&CKEDITOR.plugins.clipboard.isFileApiSupported&&a.data.$.dataTransfer.types.contains("Files")&&a.data.preventDefault()});f.attachListener(h,"drop",function(d){if(!d.data.$.defaultPrevented){d.data.preventDefault(); -var c=d.data.getTarget();if(!c.isReadOnly()||c.type==CKEDITOR.NODE_ELEMENT&&c.is("html")){var c=a.getRangeAtDropPosition(d,b),f=a.dragRange;c&&e(d,f,c)}}},null,null,9999);f.attachListener(b,"drop",a.initDragDataTransfer,a,null,1);f.attachListener(b,"drop",function(e){if(e=e.data){var f=e.dropRange,g=e.dragRange,h=e.dataTransfer;h.getTransferType(b)==CKEDITOR.DATA_TRANSFER_INTERNAL?setTimeout(function(){a.internalDrop(g,f,h,b)},0):h.getTransferType(b)==CKEDITOR.DATA_TRANSFER_CROSS_EDITORS?c(g,f,h): -d(f,h)}},null,null,9999)})}CKEDITOR.plugins.add("clipboard",{requires:"dialog",init:function(b){var a,c=D();b.config.forcePasteAsPlainText?a="plain-text":b.config.pasteFilter?a=b.config.pasteFilter:!CKEDITOR.env.webkit||"pasteFilter"in b.config||(a="semantic-content");b.pasteFilter=c.get(a);y(b);F(b);CKEDITOR.dialog.add("paste",CKEDITOR.getUrl(this.path+"dialogs/paste.js"));b.on("paste",function(a){a.data.dataTransfer||(a.data.dataTransfer=new CKEDITOR.plugins.clipboard.dataTransfer);if(!a.data.dataValue){var c= -a.data.dataTransfer,g=c.getData("text/html");if(g)a.data.dataValue=g,a.data.type="html";else if(g=c.getData("text/plain"))a.data.dataValue=b.editable().transformPlainTextToHtml(g),a.data.type="text"}},null,null,1);b.on("paste",function(a){var b=a.data.dataValue,c=CKEDITOR.dtd.$block;-1 <\/span>/gi," "),"html"!=a.data.type&&(b=b.replace(/]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g, -"\x26nbsp;\x26nbsp; \x26nbsp;")})),-1/,"")),b=b.replace(/(<[^>]+) class="Apple-[^"]*"/gi,"$1"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var f,h,l=new CKEDITOR.dom.element("div");for(l.setHtml(b);1==l.getChildCount()&&(f=l.getFirst())&&f.type==CKEDITOR.NODE_ELEMENT&&(f.hasClass("cke_editable")||f.hasClass("cke_contents"));)l=h=f; -h&&(b=h.getHtml().replace(/
    $/i,""))}CKEDITOR.env.ie?b=b.replace(/^ (?: |\r\n)?<(\w+)/g,function(b,f){return f.toLowerCase()in c?(a.data.preSniffing="html","\x3c"+f):b}):CKEDITOR.env.webkit?b=b.replace(/<\/(\w+)>


    <\/div>$/,function(b,f){return f in c?(a.data.endsWithEOL=1,"\x3c/"+f+"\x3e"):b}):CKEDITOR.env.gecko&&(b=b.replace(/(\s)
    $/,"$1"));a.data.dataValue=b},null,null,3);b.on("paste",function(a){a=a.data;var e=a.type,g=a.dataValue,f,h=b.config.clipboard_defaultContentType||"html", -l=a.dataTransfer.getTransferType(b);f="html"==e||"html"==a.preSniffing?"html":A(g);"htmlifiedtext"==f&&(g=B(b.config,g));"text"==e&&"html"==f?g=x(b,g,c.get("plain-text")):l==CKEDITOR.DATA_TRANSFER_EXTERNAL&&b.pasteFilter&&!a.dontFilter&&(g=x(b,g,b.pasteFilter));a.startsWithEOL&&(g='\x3cbr data-cke-eol\x3d"1"\x3e'+g);a.endsWithEOL&&(g+='\x3cbr data-cke-eol\x3d"1"\x3e');"auto"==e&&(e="html"==f||"html"==h?"html":"text");a.type=e;a.dataValue=g;delete a.preSniffing;delete a.startsWithEOL;delete a.endsWithEOL}, -null,null,6);b.on("paste",function(a){a=a.data;a.dataValue&&(b.insertHtml(a.dataValue,a.type,a.range),setTimeout(function(){b.fire("afterPaste")},0))},null,null,1E3);b.on("pasteDialog",function(a){setTimeout(function(){b.openDialog("paste",a.data)},0)})}});CKEDITOR.plugins.clipboard={isCustomCopyCutSupported:!CKEDITOR.env.ie&&!CKEDITOR.env.iOS,isCustomDataTypesSupported:!CKEDITOR.env.ie,isFileApiSupported:!CKEDITOR.env.ie||9CKEDITOR.env.version||a.isInline()?a:b.document},fixSplitNodesAfterDrop:function(b,a,c,d){function e(b,c,d){var e=b;e.type==CKEDITOR.NODE_TEXT&&(e=b.getParent());if(e.equals(c)&&d!=c.getChildCount())return b= -a.startContainer.getChild(a.startOffset-1),c=a.startContainer.getChild(a.startOffset),b&&b.type==CKEDITOR.NODE_TEXT&&c&&c.type==CKEDITOR.NODE_TEXT&&(d=b.getLength(),b.setText(b.getText()+c.getText()),c.remove(),a.setStart(b,d),a.collapse(!0)),!0}var g=a.startContainer;"number"==typeof d&&"number"==typeof c&&g.type==CKEDITOR.NODE_ELEMENT&&(e(b.startContainer,g,c)||e(b.endContainer,g,d))},isDropRangeAffectedByDragRange:function(b,a){var c=a.startContainer,d=a.endOffset;return b.endContainer.equals(c)&& -b.endOffset<=d||b.startContainer.getParent().equals(c)&&b.startContainer.getIndex()CKEDITOR.env.version&&this.fixSplitNodesAfterDrop(b,a,e.dragStartContainerChildCount,e.dragEndContainerChildCount);(h=this.isDropRangeAffectedByDragRange(b,a))||(f=b.createBookmark(!1)); -e=a.clone().createBookmark(!1);h&&(f=b.createBookmark(!1));b=f.startNode;a=f.endNode;h=e.startNode;a&&b.getPosition(h)&CKEDITOR.POSITION_PRECEDING&&a.getPosition(h)&CKEDITOR.POSITION_FOLLOWING&&h.insertBefore(b);b=d.createRange();b.moveToBookmark(f);g.extractHtmlFromRange(b,1);a=d.createRange();a.moveToBookmark(e);r(d,{dataTransfer:c,method:"drop",range:a},1);d.fire("unlockSnapshot")},getRangeAtDropPosition:function(b,a){var c=b.data.$,d=c.clientX,e=c.clientY,g=a.getSelection(!0).getRanges()[0],f= -a.createRange();if(b.data.testRange)return b.data.testRange;if(document.caretRangeFromPoint)c=a.document.$.caretRangeFromPoint(d,e),f.setStart(CKEDITOR.dom.node(c.startContainer),c.startOffset),f.collapse(!0);else if(c.rangeParent)f.setStart(CKEDITOR.dom.node(c.rangeParent),c.rangeOffset),f.collapse(!0);else{if(CKEDITOR.env.ie&&8l&& -!h;l++){if(!h)try{c.moveToPoint(d,e-l),h=!0}catch(p){}if(!h)try{c.moveToPoint(d,e+l),h=!0}catch(q){}}if(h){var k="cke-temp-"+(new Date).getTime();c.pasteHTML('\x3cspan id\x3d"'+k+'"\x3e​\x3c/span\x3e');var t=a.document.getById(k);f.moveToPosition(t,CKEDITOR.POSITION_BEFORE_START);t.remove()}else{var u=a.document.$.elementFromPoint(d,e),n=new CKEDITOR.dom.element(u),r;if(n.equals(a.editable())||"html"==n.getName())return g&&g.startContainer&&!g.startContainer.equals(a.editable())?g:null;r=n.getClientRect(); -d/i,bodyRegExp:/([\s\S]*)<\/body>/i, -fragmentRegExp:/\x3c!--(?:Start|End)Fragment--\x3e/g,data:{},files:[],normalizeType:function(a){a=a.toLowerCase();return"text"==a||"text/plain"==a?"Text":"url"==a?"URL":a}};this.id=this.getData(p);this.id||(this.id="Text"==p?"":"cke-"+CKEDITOR.tools.getUniqueId());if("Text"!=p)try{this.$.setData(p,this.id)}catch(c){}a&&(this.sourceEditor=a,this.setData("text/html",a.getSelectedHtml(1)),"Text"==p||this.getData("text/plain")||this.setData("text/plain",a.getSelection().getSelectedText()))};CKEDITOR.DATA_TRANSFER_INTERNAL= -1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS=2;CKEDITOR.DATA_TRANSFER_EXTERNAL=3;CKEDITOR.plugins.clipboard.dataTransfer.prototype={getData:function(b){b=this._.normalizeType(b);var a=this._.data[b];if(void 0===a||null===a||""===a)try{a=this.$.getData(b)}catch(c){}if(void 0===a||null===a||""===a)a="";"text/html"==b?(a=a.replace(this._.metaRegExp,""),(b=this._.bodyRegExp.exec(a))&&b.length&&(a=b[1],a=a.replace(this._.fragmentRegExp,""))):"Text"==b&&CKEDITOR.env.gecko&&this.getFilesCount()&&"file://"==a.substring(0, -7)&&(a="");return a},setData:function(b,a){b=this._.normalizeType(b);this._.data[b]=a;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported||"URL"==b||"Text"==b){"Text"==p&&"Text"==b&&(this.id=a);try{this.$.setData(b,a)}catch(c){}}},getTransferType:function(b){return this.sourceEditor?this.sourceEditor==b?CKEDITOR.DATA_TRANSFER_INTERNAL:CKEDITOR.DATA_TRANSFER_CROSS_EDITORS:CKEDITOR.DATA_TRANSFER_EXTERNAL},cacheData:function(){function b(b){b=a._.normalizeType(b);var c=a.getData(b);c&&(a._.data[b]= -c)}if(this.$){var a=this,c,d;if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){if(this.$.types)for(c=0;cc?d+c:b.width>c?d-a.left:d-a.right+b.width):lc?d-c:b.width> -c?d-a.right+b.width:d-a.left);c=a.top;b.height-a.tope?n-e:b.height>e?n-a.bottom+b.height:n-a.top);CKEDITOR.env.ie&&(b=a=new CKEDITOR.dom.element(k.$.offsetParent),"html"==b.getName()&&(b=b.getDocument().getBody()),"rtl"==b.getComputedStyle("direction")&&(d=CKEDITOR.env.ie8Compat?d-2*k.getDocument().getDocumentElement().$.scrollLeft:d-(a.$.scrollWidth-a.$.clientWidth)));var a=k.getFirst(),f;(f=a.getCustomData("activePanel"))&&f.onHide&&f.onHide.call(this,1);a.setCustomData("activePanel",this); -k.setStyles({top:n+"px",left:d+"px"});k.setOpacity(1);g&&g()},this);m.isLoaded?a():m.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();p.element.focus();CKEDITOR.env.webkit&&(CKEDITOR.document.getBody().$.scrollTop=a);this.allowBlur(!0);this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},reposition:function(){var a=this._.showBlockParams; -this.visible&&this._.showBlockParams&&(this.hide(),this.showBlock.apply(this,a))},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();a&&!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},blur:function(){var a=this._.iframe.getFrameDocument().getActive();a&&a.is("a")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur(); -this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;this._.showBlockParams=null;this._.editor.fire("panelHide",this)}},allowBlur:function(a){var b=this._.panel;void 0!==a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,f,h,g){if(this._.activeChild!=a||a._.panel._.offsetParentId!=c.getId())this.hideChild(),a.onHide= -CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,f,h,g),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=""},100)},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances), -b;for(b in f){var c=f[b];a?c.destroy():c.element.hide()}a&&(f={})})})();CKEDITOR.plugins.add("colorbutton",{requires:"panelbutton,floatpanel",init:function(c){function r(p,g,e,h){var k=new CKEDITOR.style(l["colorButton_"+g+"Style"]),m=CKEDITOR.tools.getNextId()+"_colorBox";c.ui.add(p,CKEDITOR.UI_PANELBUTTON,{label:e,title:e,modes:{wysiwyg:1},editorFocus:0,toolbar:"colors,"+h,allowedContent:k,requiredContent:k,panel:{css:CKEDITOR.skin.getPath("editor"),attributes:{role:"listbox","aria-label":f.panelTitle}},onBlock:function(a,b){b.autoSize=!0;b.element.addClass("cke_colorblock"); -b.element.setHtml(u(a,g,m));b.element.getDocument().getBody().setStyle("overflow","hidden");CKEDITOR.ui.fire("ready",this);var d=b.keys,e="rtl"==c.lang.dir;d[e?37:39]="next";d[40]="next";d[9]="next";d[e?39:37]="prev";d[38]="prev";d[CKEDITOR.SHIFT+9]="prev";d[32]="click"},refresh:function(){c.activeFilter.check(k)||this.setState(CKEDITOR.TRISTATE_DISABLED)},onOpen:function(){var a=c.getSelection(),a=a&&a.getStartElement(),a=c.elementPath(a),b;if(a){a=a.block||a.blockLimit||c.document.getBody();do b= -a&&a.getComputedStyle("back"==g?"background-color":"color")||"transparent";while("back"==g&&"transparent"==b&&a&&(a=a.getParent()));b&&"transparent"!=b||(b="#ffffff");this._.panel._.iframe.getFrameDocument().getById(m).setStyle("background-color",b);return b}}})}function u(p,g,e){var h=[],k=l.colorButton_colors.split(","),m=c.plugins.colordialog&&!1!==l.colorButton_enableMore,a=k.length+(m?2:1),b=CKEDITOR.tools.addFunction(function(a,b){function d(a){this.removeListener("ok",d);this.removeListener("cancel", -d);"ok"==a.name&&e(this.getContentElement("picker","selectedColor").getValue(),b)}var e=arguments.callee;if("?"==a)c.openDialog("colordialog",function(){this.on("ok",d);this.on("cancel",d)});else{c.focus();p.hide();c.fire("saveSnapshot");c.removeStyle(new CKEDITOR.style(l["colorButton_"+b+"Style"],{color:"inherit"}));if(a){var f=l["colorButton_"+b+"Style"];f.childRule="back"==b?function(a){return t(a)}:function(a){return!(a.is("a")||a.getElementsByTag("a").count())||t(a)};c.applyStyle(new CKEDITOR.style(f, -{color:a}))}c.fire("saveSnapshot")}});h.push('\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"',f.auto,'" onclick\x3d"CKEDITOR.tools.callFunction(',b,",null,'",g,"');return false;\" href\x3d\"javascript:void('",f.auto,'\')" role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"',a,'"\x3e\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctr\x3e\x3ctd\x3e\x3cspan class\x3d"cke_colorbox" id\x3d"',e,'"\x3e\x3c/span\x3e\x3c/td\x3e\x3ctd colspan\x3d7 align\x3dcenter\x3e', -f.auto,'\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/a\x3e\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e');for(e=0;ec.group?1:a.orderc.order?1:0})}var h='\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1"_cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked}';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress\x3d"return false;"'); -CKEDITOR.env.gecko&&(h+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var h=h+(' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e'),p=CKEDITOR.addTemplate("menuItem",h+'\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e'), -n=CKEDITOR.addTemplate("menuArrow",'\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),m=c.block.attributes=c.attributes||{};!m.role&&(m.role="menu");this._.panelDefinition= -c},_:{onShow:function(){var a=this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),m=this._.listeners;this.removeAll();for(var e=0;ec.width&&(a.resize_minWidth=c.width);a.resize_minHeight>c.height&&(a.resize_minHeight=c.height);CKEDITOR.document.on("mousemove",f);CKEDITOR.document.on("mouseup",k);b.document&&(b.document.on("mousemove",f),b.document.on("mouseup",k));d.preventDefault&&d.preventDefault()});b.on("destroy", -function(){CKEDITOR.tools.removeFunction(q)});b.on("uiSpace",function(a){if("bottom"==a.data.space){var e="";h&&!p&&(e=" cke_resizer_horizontal");!h&&p&&(e=" cke_resizer_vertical");var c='\x3cspan id\x3d"'+r+'" class\x3d"cke_resizer'+e+" cke_resizer_"+g+'" title\x3d"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'" onmousedown\x3d"CKEDITOR.tools.callFunction('+q+', event)"\x3e'+("ltr"==g?"◢":"◣")+"\x3c/span\x3e";"ltr"==g&&"ltr"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on("maximize", -function(a){b.ui.space("resizer")[a.data==CKEDITOR.TRISTATE_ON?"hide":"show"]()})}}});(function(){function B(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||q(a),f=0;fa.order?-1:0>b.order?1:b.orderCKEDITOR.env.version?f.createText("\r"):f.createElement("br"),a.deleteContents(),a.insertNode(b),CKEDITOR.env.needsBrFiller?(f.createText("").insertAfter(b),k&&(l||m.blockLimit).appendBogus(),b.getNext().$.nodeValue="",a.setStartAt(b.getNext(),CKEDITOR.POSITION_AFTER_START)): -a.setStartAt(b,CKEDITOR.POSITION_AFTER_END)),a.collapse(!0),a.select(),a.scrollIntoView()):u(b,d,a,h)}}};var x=CKEDITOR.plugins.enterkey,t=x.enterBr,u=x.enterBlock,w=/^h[1-6]$/})();(function(){function k(b,f){var g={},c=[],e={nbsp:" ",shy:"­",gt:"\x3e",lt:"\x3c",amp:"\x26",apos:"'",quot:'"'};b=b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(b,a){var d=f?"\x26"+a+";":e[a];g[d]=f?e[a]:"\x26"+a+";";c.push(d);return""});if(!f&&b){b=b.split(",");var a=document.createElement("div"),d;a.innerHTML="\x26"+b.join(";\x26")+";";d=a.innerHTML;a=null;for(a=0;aa&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10);d=(d||"location\x3dno,menubar\x3dno,toolbar\x3dno,dependent\x3dyes,minimizable\x3dno,modal\x3dyes,alwaysRaised\x3dyes,resizable\x3dyes,scrollbars\x3dyes")+",width\x3d"+ -a+",height\x3d"+b+",top\x3d"+f+",left\x3d"+g;var c=window.open("",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+"\x3d"+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf("?")?"\x26":"?")+d.join("\x26")}function k(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}function m(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config["filebrowser"+k(a.getName())+"WindowWidth"]||c.config.filebrowserWindowWidth||"80%",a=c.config["filebrowser"+k(a.getName())+"WindowHeight"]||c.config.filebrowserWindowHeight|| -"70%",b=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function n(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return a.getContentElement(this["for"][0],this["for"][1]).getInputElement().$.value&&a.getContentElement(this["for"][0],this["for"][1]).getAction()?!0:!1}function p(a,c,d){var b=d.params|| -{};b.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function l(a,c,d,b){if(b&&b.length)for(var e,g=b.length;g--;)if(e=b[g],"hbox"!=e.type&&"vbox"!=e.type&&"fieldset"!=e.type||l(a,c,d,e.children),e.filebrowser)if("string"==typeof e.filebrowser&&(e.filebrowser={action:"fileButton"==e.type?"QuickUpload":"Browse",target:e.filebrowser}),"Browse"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config["filebrowser"+ -k(c)+"BrowseUrl"],void 0===f&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=m,e.filebrowser.url=f,e.hidden=!1)}else if("QuickUpload"==e.filebrowser.action&&e["for"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config["filebrowser"+k(c)+"UploadUrl"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;if(h&&!1===h.call(b,a))return!1;if(n.call(b,a)){a=b.getDialog().getContentElement(this["for"][0],this["for"][1]).getInputElement();if(b=new CKEDITOR.dom.element(a.$.form))(a= -b.$.elements.ckCsrfToken)?a=new CKEDITOR.dom.element(a):(a=new CKEDITOR.dom.element("input"),a.setAttributes({name:"ckCsrfToken",type:"hidden"}),b.append(a)),a.setAttribute("value",CKEDITOR.tools.getCsrfToken());return!0}return!1};e.filebrowser.url=f;e.hidden=!1;p(a,d.getContents(e["for"][0]).get(e["for"][1]),e.filebrowser)}}function h(a,c,d){if(-1!==d.indexOf(";")){d=d.split(";");for(var b=0;bh.height-c.bottom?e("pin"):e("bottom"),d=h.width/2,d=l.floatSpacePreferRight?"right":0n.width?"rtl"==l.contentsLangDirection? -"right":"left":d-c.left>c.right-d?"left":"right",n.width>h.width?(d="left",f=0):(f="left"==d?0h.width&&(d="left"==d?"right":"left",f=0)),b.setStyle(d,w(("pin"==m?u:p)+f+("pin"==m?0:"left"==d?v:-v)))):(m="pin",e("pin"),t(d))}}}();if(p){var k=new CKEDITOR.template('\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko? -" ":"")+'" lang\x3d"{langCode}" role\x3d"application" style\x3d"{style}"'+(a.title?' aria-labelledby\x3d"cke_{name}_arialbl"':" ")+"\x3e"+(a.title?'\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e':" ")+'\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{topId}" class\x3d"cke_top" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e'),b=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(k.output({content:p,id:a.id,langDir:a.lang.dir, -langCode:a.langCode,name:a.name,style:"display:none;z-index:"+(l.baseFloatZIndex-1),topId:a.ui.spaceId("top"),voiceLabel:a.title}))),u=CKEDITOR.tools.eventsBuffer(500,t),e=CKEDITOR.tools.eventsBuffer(100,t);b.unselectable();b.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});a.on("focus",function(b){t(b);a.on("change",u.input);g.on("scroll",e.input);g.on("resize",e.input)});a.on("blur",function(){b.hide();a.removeListener("change",u.input);g.removeListener("scroll", -e.input);g.removeListener("resize",e.input)});a.on("destroy",function(){g.removeListener("scroll",e.input);g.removeListener("resize",e.input);b.clearCustomData();b.remove()});a.focusManager.hasFocus&&b.show();a.focusManager.add(b,1)}}var g=CKEDITOR.document.getWindow(),w=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add("floatingspace",{init:function(a){a.on("loaded",function(){k(this)},null,null,20)}})})();CKEDITOR.plugins.add("listblock",{requires:"panel",onLoad:function(){var f=CKEDITOR.addTemplate("panel-list",'\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'),g=CKEDITOR.addTemplate("panel-list-item",'\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" href\x3d"javascript:void(\'{val}\')" {onclick}\x3d"CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'), -h=CKEDITOR.addTemplate("panel-list-group",'\x3ch1 id\x3d"{id}" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'),k=/\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){b=b||{};var c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c["aria-multiselectable"]=!0);!c.role&& -(c.role="listbox");this.base.apply(this,arguments);this.element.setAttribute("role",c.role);c=this.keys;c[40]="next";c[9]="next";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(c[13]="mouseup");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=f.output({items:this._.pendingList.join("")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click|| -(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(k,"\\'");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a}; -this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close();var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display", -"none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display","none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();a=this._.items[a];var b=this.element.getDocument().getById(a); -b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},unmark:function(a){var b=this.element.getDocument();a=this._.items[a];var c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&& -this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")},focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();c&&setTimeout(function(){c.focus()},0)}}})}});CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}}); -(function(){var d='\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href\x3d\"javascript:void('{titleJs}')\"")+' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"true"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(d+=' onkeypress\x3d"return false;"'); -CKEDITOR.env.gecko&&(d+=' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var d=d+(' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick\x3d"return false;" onmouseup':"onclick")+'\x3d"CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e'+ -(CKEDITOR.env.hc?"\x26#9660;":CKEDITOR.env.air?"\x26nbsp;":"")+"\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),k=CKEDITOR.addTemplate("combo",d);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel"; -a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join("")},render:function(a,b){function g(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue("");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var d= -CKEDITOR.env,h="cke_"+this.id,e=CKEDITOR.tools.addFunction(function(b){l&&(a.unlockSelection(1),l=0);c.execute(b)},this),f=this,c={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(c){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var d=f.getValue();d?b.list.mark(d):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(c),4)}},clickFn:e};a.on("activeFilterChange",g,this);a.on("mode", -g,this);a.on("selectionChange",g,this);!this.readOnly&&a.on("readOnly",g,this);var m=CKEDITOR.tools.addFunction(function(b,d){b=new CKEDITOR.dom.event(b);var g=b.getKeystroke();if(40==g)a.once("panelShow",function(a){a.data._.panel._.currentBlock.onKeyDown(40)});switch(g){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,d);break;default:c.onkey(c,g)}b.preventDefault()}),n=CKEDITOR.tools.addFunction(function(){c.onfocus&&c.onfocus()}),l=0;c.keyDownFn=m;d={id:h,name:this.name||this.command,label:this.label, -title:this.title,cls:this.className||"",titleJs:d.gecko&&!d.hc?"":(this.title||"").replace("'",""),keydownFn:m,focusFn:n,clickFn:e};k.output(d,b);if(this.onRender)this.onRender();return c},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,d=this._.panelDefinition.block,k=b.parent||CKEDITOR.document.getBody(),h="cke_combopanel__"+this.name,e=new CKEDITOR.ui.floatPanel(a,k,b),f=e.addListBlock(this.id,d),c=this;e.onShow=function(){this.element.addClass(h);c.setState(CKEDITOR.TRISTATE_ON); -c._.on=1;c.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(c.onOpen)c.onOpen();a.once("panelShow",function(){f.focus(!f.multiSelect&&c.getValue())})};e.onHide=function(b){this.element.removeClass(h);c.setState(c.modes&&c.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);c._.on=0;if(!b&&c.onClose)c.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){c.onClick&&c.onClick.call(c,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){c._.on= -0;c.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var d=this.document.getById("cke_"+this.id+"_text");d&&(a||b?d.removeClass("cke_combo_inlinelabel"):(b=this.label,d.addClass("cke_combo_inlinelabel")),d.setText("undefined"!=typeof b?b:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)}, -showAll:function(){this._.list.showAll()},add:function(a,b,d){this._.items[a]=d||a;this._.list.add(a,b,d)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById("cke_"+this.id);b.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled");this._.state= -a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();(function(){function l(a,b,c,f,p,l,t,v){var w=a.config,q=new CKEDITOR.style(t),k=p.split(";");p=[];for(var m={},d=0;dthis.$.offsetHeight){var d=b.createRange();d[33==c?"moveToElementEditStart":"moveToElementEditEnd"](this);d.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(c,"blur",function(){try{c.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(c,"touchend",function(){a.focus()});d=b.document.getElementsByTag("title").getItem(0);d.data("cke-title",d.getText());CKEDITOR.env.ie&&(b.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){"unloaded"== -this.status&&(this.status="ready");b.fire("contentDom");this._.isPendingFocus&&(b.focus(),this._.isPendingFocus=!1);setTimeout(function(){b.fire("dataReady")},0)},0,this)}function n(a){function f(){var c;a.editable().attachListener(a,"selectionChange",function(){var d=a.getSelection().getSelectedElement();d&&(c&&(c.detachEvent("onresizestart",b),c=null),d.$.attachEvent("onresizestart",b),c=d.$)})}function b(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var c=a.document.$;c.execCommand("enableObjectResizing", -!1,!a.config.disableObjectResizing);c.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(d){}else CKEDITOR.env.ie&&11>CKEDITOR.env.version&&a.config.disableObjectResizing&&f(a)}function p(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var f=[],b;for(b in CKEDITOR.dtd.$removeEmpty)f.push("html.CSS1Compat "+b+"[contenteditable\x3dfalse]");a.push(f.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&& -(a.push("html{height:100% !important}"),a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(f){function b(b){b&&b.removeListener();a.editable(new l(a, -d.$.contentWindow.document.body));a.setData(a.getData(1),f)}var c="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",c=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie&&!CKEDITOR.env.edge?"javascript:void(function(){"+encodeURIComponent(c)+"}())":"",d=CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"'+c+'" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');d.setStyles({width:"100%",height:"100%"});d.addClass("cke_wysiwyg_frame").addClass("cke_reset"); -c=a.ui.space("contents");c.append(d);var e=CKEDITOR.env.ie&&!CKEDITOR.env.edge||CKEDITOR.env.gecko;if(e)d.on("load",b);var g=a.title,h=a.fire("ariaEditorHelpLabel",{}).label;g&&(CKEDITOR.env.ie&&h&&(g+=", "+h),d.setAttribute("title",g));if(h){var g=CKEDITOR.tools.getNextId(),k=CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+g+'" class\x3d"cke_voice_label"\x3e'+h+"\x3c/span\x3e");c.append(k,1);d.setAttribute("aria-describedby",g)}a.on("beforeModeUnload",function(a){a.removeListener();k&&k.remove()}); -d.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!e&&b();a.fire("ariaWidget",d)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var f=this.config,b=f.contentsCss;CKEDITOR.tools.isArray(b)||(f.contentsCss=b?[b]:[]);f.contentsCss.push(a)};var l=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(m,0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")}, -base:CKEDITOR.editable,proto:{setData:function(a,f){var b=this.editor;if(f)this.setHtml(a),this.fixInitialSelection(),b.fire("dataReady");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,d=c.fullPage,e=c.docType,g=CKEDITOR.tools.buildStyleHtml(p()).replace(/ +'; + llxFooter(); $db->close(); \ No newline at end of file diff --git a/htdocs/multicurrency/ajax/updaterates.php b/htdocs/multicurrency/ajax/updaterates.php deleted file mode 100644 index 663e68a647c..00000000000 --- a/htdocs/multicurrency/ajax/updaterates.php +++ /dev/null @@ -1,35 +0,0 @@ - - * Copyright (C) 2016 Pierre-Henry Favre - * - * 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 . - */ - -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Disables token renewal -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); -if (! defined('NOREQUIREHOOK')) define('NOREQUIREHOOK','1'); - -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; - -$sync_response = GETPOST('sync_response'); - -if (!empty($sync_response)) -{ - $sync_response = json_decode($sync_response); - MultiCurrency::syncRates($sync_response); -} \ No newline at end of file diff --git a/htdocs/multicurrency/js/currencylayer.js.php b/htdocs/multicurrency/js/currencylayer.js.php deleted file mode 100644 index 0b563aae266..00000000000 --- a/htdocs/multicurrency/js/currencylayer.js.php +++ /dev/null @@ -1,98 +0,0 @@ - - * Copyright (C) 2016 Pierre-Henry Favre - * - * 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 . - */ - -include '../../main.inc.php'; -$langs->load('errors'); - -?> - -function getXMLHttpRequest() -{ - var xhr = null; - if (window.XMLHttpRequest || window.ActiveXObject) - { - if (window.ActiveXObject) - { - try - { - xhr = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch(e) - { - xhr = new ActiveXObject("Microsoft.XMLHTTP"); - } - } - else - { - xhr = new XMLHttpRequest(); - } - } - else - { - if (typeof $ !== "undefined") $.jnotify("transnoentitiesnoconv('multicurrency_error_browser_incompatible'); ?>", "error"); - else alert("transnoentitiesnoconv('multicurrency_error_browser_incompatible'); ?>"); - - return null; - } - - return xhr; -} - -function request(url, callback) -{ - var xhr = getXMLHttpRequest(); - xhr.onreadystatechange = function() - { - if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) - { - callback(xhr.responseText); - } - - }; - - xhr.open("GET", url, true); - xhr.send(null); -} - -function syncronize_rates() -{ - document.getElementById("bt_sync").disabled = true; - var url_sync = "http://apilayer.net/api/live?access_key=global->MULTICURRENCY_APP_ID; ?>&format=1global->MULTICURRENCY_APP_SOURCE)) echo '&source='.$conf->global->MULTICURRENCY_APP_SOURCE; ?>"; - request(url_sync, update_rates); -} - -function update_rates(responseText) -{ - var response = JSON.parse(responseText); - if (response.success) - { - var url = "/multicurrency/ajax/updaterates.php?sync_response="+JSON.stringify(response); - request(url, reloadpage); - } - else - { - if (typeof $ !== "undefined") $.jnotify("transnoentitiesnoconv('multicurrency_syncronize_error'); ?>: "+response.error.info, "error"); - else alert("transnoentitiesnoconv('multicurrency_syncronize_error'); ?>: "+response.error.info); - } -} - -function reloadpage(responseText) -{ - document.getElementById("bt_sync").disabled = false; - window.location.href = window.location.pathname; -} From 9169adf4ceab98ad04a180653f205b4b928b7cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 22:34:55 +0200 Subject: [PATCH 153/380] FIX #4766 VAT not shown in supplier invoice popup Close #4766 --- htdocs/compta/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 5fb1d638a88..5c93c1e62db 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -5,6 +5,7 @@ * Copyright (C) 2015 Juanjo Menent * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) 2016 Marcos García * * 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 @@ -230,7 +231,7 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire) */ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) { - $sql = "SELECT f.ref, f.rowid, f.total_ht, f.tva as total_tva, f.total_ttc, f.type"; + $sql = "SELECT f.ref, f.rowid, f.total_ht, f.total_tva, f.total_ttc, f.type"; $sql.= ", s.nom as name"; $sql.= ", s.rowid as socid"; $sql.= ", s.code_fournisseur"; From b2f922291fefb66eb845ae7fce78ef536bcf60ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 22:38:58 +0200 Subject: [PATCH 154/380] FIX #4851 Project selector in supplier invoices shows the project label twice Close #4851 --- htdocs/core/class/html.formprojet.class.php | 2 +- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index 2b7f76dedf9..4c094061ee4 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -180,7 +180,7 @@ class FormProjets continue; } - $labeltoshow=dol_trunc($obj->ref,18).' - '.$obj->title; + $labeltoshow=dol_trunc($obj->ref,18); //if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')'; //else $labeltoshow.=' ('.$langs->trans("Private").')'; $labeltoshow.=' '.dol_trunc($obj->title,$maxlength); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 890772326ea..42418184c4f 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1474,7 +1474,7 @@ class FactureFournisseur extends CommonInvoice if (! empty($this->total_ht)) $label.= '
    ' . $langs->trans('AmountHT') . ': ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency); if (! empty($this->total_tva)) - $label.= '
    ' . $langs->trans('TVA') . ': ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency); + $label.= '
    ' . $langs->trans('VAT') . ': ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency); if (! empty($this->total_ttc)) $label.= '
    ' . $langs->trans('AmountTTC') . ': ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); From 1026484da1ec129a47cc84d4ec16e3d4863189df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 22:48:42 +0200 Subject: [PATCH 155/380] FIX #4748 Supplier invoice payment confirmation amount is not translated Close #4748 --- htdocs/fourn/facture/paiement.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 81fe1d6b345..d69c2df9a94 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -432,7 +432,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie $preselectedchoice=$addwarning?'no':'yes'; print '
    '; - $text=$langs->trans('ConfirmSupplierPayment',$totalpayment,$langs->trans("Currency".$conf->currency)); + $text=$langs->trans('ConfirmSupplierPayment', price($totalpayment),$langs->trans("Currency".$conf->currency)); if (GETPOST('closepaidinvoices')) { $text.='
    '.$langs->trans("AllCompletelyPayedInvoiceWillBeClosed"); From 7cc1288bb2c4c9b86802f761664ff5903ff1b8a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 22:54:13 +0200 Subject: [PATCH 156/380] FIX #4743 UI glitch in project summary page Close #4743 --- htdocs/projet/element.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 1be43fe94dd..c475dcbcae0 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -344,8 +344,7 @@ $langs->load("orders"); $langs->load("proposals"); $langs->load("margins"); -//print load_fiche_titre($langs->trans("Profit"),'','title_accountancy'); -print '
    '.img_picto("", "title_accountancy").' '.$langs->trans("Profit").'

    '; +print load_fiche_titre($langs->trans("Profit"), '', 'title_accountancy'); print ''; print ''; From 3135cf720d8ccfc8ff09b821e664fd4be3a66edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 22:56:45 +0200 Subject: [PATCH 157/380] FIX #4737 Bank transacion type selector translation is cropped Close #4737 --- htdocs/compta/bank/search.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index 80befe3d433..d4f4b82a96b 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -210,7 +210,7 @@ if ($resql) print ''; print ''; print ''; print ''; print ''; print "\n"; From af473df2143a275a4d1704a2ac2dfaaefa5dfa48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 23:27:42 +0200 Subject: [PATCH 160/380] FIX #4742 Able to delete a supplier invoice with a registered payment Close #4742 --- htdocs/fourn/facture/card.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index c2b2c587736..7887e8cc6ed 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2270,7 +2270,11 @@ else // Delete if ($action != 'edit' && $user->rights->fournisseur->facture->supprimer) { - print ''.$langs->trans('Delete').''; + if ($object->getSommePaiement()) { + print ''; + } else { + print ''.$langs->trans('Delete').''; + } } print ''; print '
    '; From 15d927375132469cd89c7fcf834be5ccc9886495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 10 Apr 2016 00:30:31 +0200 Subject: [PATCH 161/380] FIX #4747 Missing UI background when registering a supplier invoice payment Close #4747 --- htdocs/fourn/facture/paiement.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 758885cef58..dcaabd160f8 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -281,9 +281,10 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; print ''; + dol_fiche_head(); + print '
      '; - $form->select_types_paiements(empty($type)?'':$type, 'type', '', 2, 0, 1, 8); + $form->select_types_paiements(empty($type)?'':$type, 'type', '', 2, 0, 1); print ''; From b9de3d5852d59d0ca9ca0f73852ffdb431e29fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 23:03:00 +0200 Subject: [PATCH 158/380] FIX #4442 Missing translation in Banks menu Close #4442 --- htdocs/core/menus/standard/eldy.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 8d6882c26c2..b6a98b1c2d3 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -970,6 +970,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("withdrawals"); $langs->load("banks"); $langs->load("bills"); + $langs->load('categories'); // Bank-Caisse if (! empty($conf->banque->enabled)) From 865f9defff1b2ca8b23684c59e44f03b94bd0d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 9 Apr 2016 23:08:47 +0200 Subject: [PATCH 159/380] FIX #4424 Missing email of user popup in supplier orders area Close #4424 --- htdocs/fourn/commande/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index c877589851d..510ca2755be 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -245,7 +245,7 @@ if (! empty($conf->fournisseur->enabled)) /* * List of users allowed */ -$sql = "SELECT u.rowid, u.lastname, u.firstname"; +$sql = "SELECT u.rowid, u.lastname, u.firstname, u.email"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u,"; $sql.= " ".MAIN_DB_PREFIX."user_rights as ur"; $sql.= ", ".MAIN_DB_PREFIX."rights_def as rd"; @@ -278,6 +278,7 @@ if ($resql) $userstatic->id=$obj->rowid; $userstatic->lastname=$obj->lastname; $userstatic->firstname=$obj->firstname; + $userstatic->email=$obj->email; print $userstatic->getNomUrl(1); print '
    '; - print ''; print '
    '.$langs->trans('Payment').'
    '.$langs->trans('Company').''; $supplierstatic->id=$obj->socid; $supplierstatic->name=$obj->name; @@ -311,6 +312,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie } print '
    '; + dol_fiche_end(); $parameters=array('facid'=>$facid, 'ref'=>$ref, 'objcanvas'=>$objcanvas); $reshook=$hookmanager->executeHooks('paymentsupplierinvoices',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks @@ -337,7 +339,6 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie { $i = 0; print '
    '; - print $langs->trans('Invoices').'
    '; if(!empty($conf->global->FAC_AUTO_FILLJS)){ //Add js for AutoFill From 7acbf1dd92112dfbdfdc6228ac4e8f0660531a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 10 Apr 2016 01:00:27 +0200 Subject: [PATCH 162/380] FIX #4874 SQL error when listing users Close #4874 --- htdocs/user/index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 8710dc87e04..3d787762a8c 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016 Marcos García * * 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 @@ -201,7 +202,9 @@ if ($search_login != '') $sql.= natural_search("u.login", $search_login); if ($search_lastname != '') $sql.= natural_search("u.lastname", $search_lastname); if ($search_firstname != '') $sql.= natural_search("u.firstname", $search_firstname); if ($search_gender != '' && $search_gender != '-1') $sql.= " AND u.gender = '".$search_gender."'"; -if ($search_employee >= 0) $sql.= natural_search("u.employee", $search_employee); +if (is_numeric($search_employee) && $search_employee >= 0) { + $sql .= ' AND u.employee = '.(int) $search_employee; +} if ($search_accountancy_code != '') $sql.= natural_search("u.accountancy_code", $search_accountancy_code); if ($search_email != '') $sql.= natural_search("u.email", $search_email); if ($search_statut != '' && $search_statut >= 0) $sql.= " AND (u.statut=".$search_statut.")"; From d0356d6bd035c629a9e2fcfa2b88b6ec60b31184 Mon Sep 17 00:00:00 2001 From: nka11 Date: Sun, 10 Apr 2016 13:57:53 +0200 Subject: [PATCH 163/380] new api class for accounts, filtering on order api --- htdocs/commande/class/api_commande.class.php | 22 +- htdocs/societe/class/api_contact.class.php | 3 +- htdocs/user/class/api_account.class.php | 212 +++++++++++++++++++ 3 files changed, 233 insertions(+), 4 deletions(-) create mode 100644 htdocs/user/class/api_account.class.php diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index e8266fe6383..f0f346ecdb2 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -106,12 +106,12 @@ class CommandeApi extends DolibarrApi * @url GET /order/list * @return array Array of order objects */ - function getList($mode=0, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { + function getList($mode=0, $societe = "", $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { global $db, $conf; $obj_ret = array(); - - $socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : ''; + // case of external user, $societe param is ignored and replaced by user's socid + $socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : $societe; // If the internal user must only see his customers, force searching by him if (! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; @@ -178,6 +178,22 @@ class CommandeApi extends DolibarrApi } return $obj_ret; } + + /** + * List orders for specific thirdparty + * + * Get a list of orders + * + * @param int $socid Id of customer + * + * @url GET /customer/{socid}/order/list + * @url GET /thirdparty/{socid}/order/list + * @return array Array of order objects + */ + function getListForSoc($socid = "") { + return getList(0,$socid); + } + /** * Create order object diff --git a/htdocs/societe/class/api_contact.class.php b/htdocs/societe/class/api_contact.class.php index 09f92dd1364..1021913f16e 100644 --- a/htdocs/societe/class/api_contact.class.php +++ b/htdocs/societe/class/api_contact.class.php @@ -17,7 +17,7 @@ use Luracast\Restler\RestException; -require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; /** * API class for contact object @@ -100,6 +100,7 @@ class ContactApi extends DolibarrApi * @url GET /contact/list * @url GET /contact/list/{socid} * @url GET /thirdparty/{socid}/contacts + * @url GET /customer/{socid}/contacts * * @throws RestException */ diff --git a/htdocs/user/class/api_account.class.php b/htdocs/user/class/api_account.class.php new file mode 100644 index 00000000000..956584d9292 --- /dev/null +++ b/htdocs/user/class/api_account.class.php @@ -0,0 +1,212 @@ + + * + * 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 . + */ + +use Luracast\Restler\RestException; + +//require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php'; + +/** + * API class for user object + * + * @smart-auto-routing false + * @access protected + * @class DolibarrApiAccess {@requires user,external} + * + */ +class AccountApi extends DolibarrApi +{ + /** + * + * @var array $FIELDS Mandatory fields, checked when create and update object + */ + static $FIELDS = array( + 'login' + ); + + /** + * @var User $account {@type User} + */ + public $account; + + /** + * Constructor + * + * @url account/ + * + */ + function __construct() { + global $db, $conf; + $this->db = $db; + $this->account = new User($this->db); + } + + /** + * Get properties of an account object + * + * Return an array with account informations + * + * @param int $id ID of account + * @return array|mixed data without useless information + * + * @url GET account/{user} + * @throws RestException + */ + function get($id) { + //if (!DolibarrApiAccess::$user->rights->user->lire) + //{ + //throw new RestException(401); + //} + + $result = $this->account->fetch($id); + if (!$result) + { + throw new RestException(404, 'User not found'); + } + + if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + { + throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); + } + + return $this->_cleanObjectDatas($this->account); + } + + /** + * Create account object from contact + * + * @param int $contactid Id of contact + * @param array $request_data Request datas + * @return int ID of account + * + * @url POST /contact/{contactid}/createAccount + */ + function createFromContact($contactid, $request_data = NULL) { + //if (!DolibarrApiAccess::$user->rights->user->creer) + //{ + //throw new RestException(401); + //} + // + if (!isset($request_data["login"])) + throw new RestException(400, "login field missing"); + if (!isset($request_data["password"])) + throw new RestException(400, "password field missing"); + if (!DolibarrApiAccess::$user->rights->societe->contact->lire) { + throw new RestException(401); + } + $contact = new Contact($this->db); + $contact->fetch($contactid); + if ($contact->id <= 0) { + throw new RestException(404, 'Contact not found'); + } + + if (!DolibarrApi::_checkAccessToResource('contact', $contact->id, 'socpeople&societe')) { + throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); + } + // Check mandatory fields + $login = $request_data["login"]; + $password = $request_data["password"]; + $result = $this->account->create_from_contact($contact,$login,$password); + if ($result <= 0) { + throw new RestException(500, "User not created"); + } + // password parameter not used in create_from_contact + $this->account->setPassword($this->account,$password); + return $result; + } + + /** + * Update account + * + * @param int $id Id of account to update + * @param array $request_data Datas + * @return int + * + * @url PUT account/{id} + */ + function put($id, $request_data = NULL) { + //if (!DolibarrApiAccess::$user->rights->user->creer) + //{// + //throw new RestException(401); + //} + + $result = $this->account->fetch($id); + if (!$result) + { + throw new RestException(404, 'Account not found'); + } + + if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + { + throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); + } + + foreach ($request_data as $field => $value) + { + $this->account->$field = $value; + } + + if ($this->account->update($id, DolibarrApiAccess::$user, 1, '', '', 'update')) + return $this->get($id); + + return false; + } + + /** + * Delete account + * + * @param int $id Account ID + * @return array + * + * @url DELETE account/{id} + */ + function delete($id) { + //if (!DolibarrApiAccess::$user->rights->user->supprimer) + //{ + //throw new RestException(401); + //} + $result = $this->account->fetch($id); + if (!$result) + { + throw new RestException(404, 'User not found'); + } + + if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + { + throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); + } + + return $this->account->delete($id); + } + + /** + * Validate fields before create or update object + * + * @param array $data Data to validate + * @return array + * @throws RestException + */ + function _validate($data) { + $account = array(); + foreach (UserApi::$FIELDS as $field) + { + if (!isset($data[$field])) + throw new RestException(400, "$field field missing"); + $account[$field] = $data[$field]; + } + return $account; + } +} From cea87dccbb81cea1501672141232ad5a410e58c1 Mon Sep 17 00:00:00 2001 From: nka11 Date: Sun, 10 Apr 2016 13:59:52 +0200 Subject: [PATCH 164/380] crlf fix --- htdocs/includes/pdfmake/pdfmake.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/includes/pdfmake/pdfmake.js b/htdocs/includes/pdfmake/pdfmake.js index 5f2ffb1591e..6e458e51cb0 100644 --- a/htdocs/includes/pdfmake/pdfmake.js +++ b/htdocs/includes/pdfmake/pdfmake.js @@ -14757,16 +14757,16 @@ /* 8 */ /***/ function(module, exports) { - module.exports = function(module) { - if(!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - module.children = []; - module.webpackPolyfill = 1; - } - return module; - } + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } /***/ }, @@ -68134,14 +68134,14 @@ /* 106 */ /***/ function(module, exports) { - module.exports = function() { throw new Error("define cannot be used indirect"); }; + module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }, /* 107 */ /***/ function(module, exports) { - /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; + /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) From 132cdd9ed414c67752229b9d8744c9a3be0a4899 Mon Sep 17 00:00:00 2001 From: nka11 Date: Sun, 10 Apr 2016 14:15:38 +0200 Subject: [PATCH 165/380] Fix coding style errors --- .../categories/class/api_category.class.php | 39 ++++++++++++++++++- htdocs/commande/class/api_commande.class.php | 3 +- htdocs/societe/class/api_thirdparty.class.php | 3 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/htdocs/categories/class/api_category.class.php b/htdocs/categories/class/api_category.class.php index d66875185a4..71e727aac4a 100644 --- a/htdocs/categories/class/api_category.class.php +++ b/htdocs/categories/class/api_category.class.php @@ -18,6 +18,7 @@ use Luracast\Restler\RestException; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; /** * API class for category object @@ -276,6 +277,7 @@ class CategoryApi extends DolibarrApi /** * Get categories for a customer * + * @param int $cusid Customer id filter * @param string $sortfield Sort field * @param string $sortorder Sort order * @param int $limit Limit for list @@ -285,9 +287,44 @@ class CategoryApi extends DolibarrApi * * @url GET /customer/{cusid}/categories */ - function getListCustomerCategories($sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $cusid) { + function getListCustomerCategories($cusid, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { return $this->getListForItem('customer', $sortfield, $sortorder, $limit, $page, $cusid); } + + /** + * Add category to customer + * + * @param int $cusid Id of customer + * @param int $catid Id of category + * + * @return mixed + * + * @url GET /customer/{cusid}/addCategory/{catid} + */ + + function addCustomerCategory($cusid,$catid) { + if(! DolibarrApiAccess::$user->rights->societe->creer) { + throw new RestException(401); + } + $customer = new Client($this->db); + $customer->fetch($cusid); + if( ! $customer ) { + throw new RestException(404, 'customer not found'); + } + $result = $this->category->fetch($catid); + if( ! $result ) { + throw new RestException(404, 'category not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('societe',$customer->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + if( ! DolibarrApi::_checkAccessToResource('category',$this->category->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->category->add_type($customer,'customer'); + return $customer; + } /** * Get supplier categories list diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index 8ed6de4dda2..c449210de73 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -98,6 +98,7 @@ class CommandeApi extends DolibarrApi * Get a list of orders * * @param int $mode Use this param to filter list + * @param string $societe Societe filter field * @param string $sortfield Sort field * @param string $sortorder Sort order * @param int $limit Limit for list @@ -202,7 +203,7 @@ class CommandeApi extends DolibarrApi * * @url POST order/ * - * @return string ID of commande + * @return int ID of commande */ function post($request_data = NULL) { diff --git a/htdocs/societe/class/api_thirdparty.class.php b/htdocs/societe/class/api_thirdparty.class.php index 430dc1aaf0a..9c65d08ac43 100644 --- a/htdocs/societe/class/api_thirdparty.class.php +++ b/htdocs/societe/class/api_thirdparty.class.php @@ -147,6 +147,7 @@ class ThirdpartyApi extends DolibarrApi * @param int $mode Set to 1 to show only customers * Set to 2 to show only prospects * Set to 3 to show only those are not customer neither prospect + * @param Text $email Search by email filter * @param string $sortfield Sort field * @param string $sortorder Sort order * @param int $limit Limit for list @@ -369,7 +370,7 @@ class ThirdpartyApi extends DolibarrApi * Delete thirdparty * * @param int $id Thirparty ID - * @return integer + * @return type * * @url DELETE thirdparty/{id} * @url DELETE customer/{id} From 11292410e950e770ba906f621b6f693e5e50e9ae Mon Sep 17 00:00:00 2001 From: nka11 Date: Sun, 10 Apr 2016 14:23:29 +0200 Subject: [PATCH 166/380] Fix coding style errors --- htdocs/categories/class/api_category.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/categories/class/api_category.class.php b/htdocs/categories/class/api_category.class.php index 71e727aac4a..5e558ddc486 100644 --- a/htdocs/categories/class/api_category.class.php +++ b/htdocs/categories/class/api_category.class.php @@ -301,7 +301,6 @@ class CategoryApi extends DolibarrApi * * @url GET /customer/{cusid}/addCategory/{catid} */ - function addCustomerCategory($cusid,$catid) { if(! DolibarrApiAccess::$user->rights->societe->creer) { throw new RestException(401); From 9f019a0ec3193f1080acd30ae8eaf5a6007a5761 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 Apr 2016 20:50:55 +0200 Subject: [PATCH 167/380] Debug supplier proposal module --- htdocs/supplier_proposal/card.php | 57 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 36d04f559e1..be07d022fdb 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1089,7 +1089,7 @@ if ($action == 'create') print ''; // Reference - print ''; + print ''; // Third party print ''; @@ -1419,7 +1419,7 @@ if ($action == 'create') $linkback = '' . $langs->trans("BackToList") . ''; // Ref - print ''; @@ -1469,7 +1469,7 @@ if ($action == 'create') // Payment mode print ''; - print ''; @@ -230,6 +230,7 @@ print '' print ''; print ''; +/* This property seems not used in code, so i comment it $var=!$var; print ''; print ''; @@ -242,6 +243,7 @@ print ''; print ''; print ''; +*/ print '
    ' . $langs->trans('Ref') . '' . $langs->trans("Draft") . '
    ' . $langs->trans('Ref') . '' . $langs->trans("Draft") . '
    ' . $langs->trans('Ref') . ''; + print '
    ' . $langs->trans('Ref') . ''; print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '
    '; + print ''; print ''; @@ -1519,18 +1519,18 @@ if ($action == 'create') } // Multicurrency - if (! empty($conf->multicurrency->enabled)) + if ( empty($conf->multicurrency->enabled)) { // Multicurrency code print ''; - print ''; - print ''; @@ -1589,17 +1589,22 @@ if ($action == 'create') } // Other attributes - $cols = 3; + $cols = 2; + if (empty($conf->margin->enabled)) $cols++; + include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; // Amount HT - print ''; - print ''; - print ''; + print ''; + print ''; // Margin Infos if (! empty($conf->margin->enabled)) { - print ''; } @@ -1607,48 +1612,48 @@ if ($action == 'create') // Amount VAT print ''; - print ''; - print ''; + print ''; + print ''; // Amount Local Taxes if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) // Localtax1 { print ''; - print ''; - print ''; + print ''; + print ''; } if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) // Localtax2 { print ''; - print ''; - print ''; + print ''; + print ''; } // Amount TTC print ''; - print ''; - print ''; + print ''; + print ''; if (!empty($conf->multicurrency->enabled)) { // Multicurrency Amount HT print ''; - print ''; + print ''; print ''; // Multicurrency Amount VAT print ''; - print ''; + print ''; print ''; // Multicurrency Amount TTC print ''; - print ''; + print ''; print ''; } // Statut - print ''; + print ''; print '
    '; print $langs->trans('PaymentMode'); print '
    '; + print ''; print ''; if ($action != 'editmulticurrencycode' && ! empty($object->brouillon)) print ''; print '
    '; print fieldLabel('Currency','multicurrency_code'); print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
    '; - print '
    '; + print ''; if ($action == 'editmulticurrencycode') { $form->form_multicurrency_code($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_code, 'multicurrency_code'); } else { @@ -1540,14 +1540,14 @@ if ($action == 'create') // Multicurrency rate print '
    '; + print ''; print ''; if ($action != 'editmulticurrencyrate' && ! empty($object->brouillon)) print ''; print '
    '; print fieldLabel('Rate','multicurrency_tx'); print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
    '; - print '
    '; + print ''; if ($action == 'editmulticurrencyrate') { $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); } else { @@ -1561,7 +1561,7 @@ if ($action == 'create') // Outstanding Bill print '
    '; print $langs->trans('OutstandingBill'); - print ''; + print ''; print price($soc->get_OutstandingBill()) . ' / '; print price($soc->outstanding_limit, 0, '', 1, - 1, - 1, $conf->currency); print '
    ' . $langs->trans('AmountHT') . '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . $langs->trans('AmountHT') . '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . ''; + $rowspan=4; + if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) $rowspan++; + if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) $rowspan++; + if (!empty($conf->multicurrency->enabled)) $rowspan+=3; + print ''; $formmargin->displayMarginInfos($object); print '
    ' . $langs->trans('AmountVAT') . '' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '' . price($object->total_localtax2, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . price($object->total_localtax2, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . $langs->trans('AmountTTC') . '' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
    ' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
    ' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
    ' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
    ' . $langs->trans('Status') . '' . $object->getLibStatut(4) . '
    ' . $langs->trans('Status') . '' . $object->getLibStatut(4) . '

    '; From b7275edfb8db5a92e19a901ac61b22a0bd107370 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 11 Apr 2016 14:24:31 +0200 Subject: [PATCH 168/380] FIX #4989 --- htdocs/admin/dict.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index bc56f13cc66..a5a3139353a 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -232,7 +232,7 @@ $tabfield[21]= "code,label"; $tabfield[22]= "code,label"; $tabfield[23]= "country_id,country,taux,accountancy_code_sell,accountancy_code_buy,note"; $tabfield[24]= "code,label"; -$tabfield[25]= "label,type_template,position,topic,content"; +$tabfield[25]= "label,type_template,private,position,topic,content"; $tabfield[26]= "code,label,short_label"; $tabfield[27]= "code,libelle"; $tabfield[28]= "code,label,affect,delay,newByMonth,country_id,country"; @@ -264,7 +264,7 @@ $tabfieldvalue[21]= "code,label"; $tabfieldvalue[22]= "code,label"; $tabfieldvalue[23]= "country,taux,accountancy_code_sell,accountancy_code_buy,note"; $tabfieldvalue[24]= "code,label"; -$tabfieldvalue[25]= "label,type_template,position,topic,content"; +$tabfieldvalue[25]= "label,type_template,private,position,topic,content"; $tabfieldvalue[26]= "code,label,short_label"; $tabfieldvalue[27]= "code,libelle"; $tabfieldvalue[28]= "code,label,affect,delay,newByMonth,country"; @@ -585,7 +585,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $ok=0; setEventMessages($langs->transnoentities("ErrorFieldMustBeANumeric",$langs->transnoentities("Code")), null, 'errors'); } - + // Clean some parameters if (isset($_POST["localtax1"]) && empty($_POST["localtax1"])) $_POST["localtax1"]='0'; // If empty, we force to 0 if (isset($_POST["localtax2"]) && empty($_POST["localtax2"])) $_POST["localtax2"]='0'; // If empty, we force to 0 @@ -685,7 +685,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $i++; } $sql.= " WHERE ".$rowidcol." = '".$rowid."'"; - + print $sql; dol_syslog("actionmodify", LOG_DEBUG); //print $sql; $resql = $db->query($sql); @@ -1330,7 +1330,7 @@ if ($id) if (in_array($obj->code, array('AC_OTH','AC_OTH_AUTO')) || in_array($obj->type, array('systemauto'))) { $canbedisabled=0; $canbedisabled = 0; } $canbemodified=$iserasable; if ($obj->code == 'RECEP') $canbemodified=1; - + $url = $_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(! empty($obj->rowid)?$obj->rowid:(! empty($obj->code)?$obj->code:'')).'&code='.(! empty($obj->code)?urlencode($obj->code):'').'&id='.$id.'&'; // Favorite From 23bb2eaf8a4e1be3fdf22db1d4b05324bf6287a3 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 11 Apr 2016 14:27:17 +0200 Subject: [PATCH 169/380] remove debug --- htdocs/admin/dict.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index a5a3139353a..5e9fc895f0b 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -685,7 +685,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $i++; } $sql.= " WHERE ".$rowidcol." = '".$rowid."'"; - print $sql; + dol_syslog("actionmodify", LOG_DEBUG); //print $sql; $resql = $db->query($sql); From 695cccca1c4dbef1610eb3970354a24746b11fd3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 Apr 2016 14:44:14 +0200 Subject: [PATCH 170/380] Import wizard accept both id or ref into imported fields. But if the ref is numeric, there is no way to know if it is a ref or id. So i introduct support of syntax id: or ref: into value of field to import to force type. --- htdocs/core/modules/import/import_csv.modules.php | 10 ++++++++-- htdocs/core/modules/import/import_xlsx.modules.php | 13 ++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index da59679b1be..da927dbdbe1 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -319,7 +319,7 @@ class ImportCsv extends ModeleImports * * @param array $arrayrecord Array of read values: [fieldpos] => (['val']=>val, ['type']=>-1=null,0=blank,1=string), [fieldpos+1]... * @param array $array_match_file_to_database Array of target fields where to insert data: [fieldpos] => 's.fieldname', [fieldpos+1]... - * @param Object $objimport Object import (contains objimport->import_tables_array, objimport->import_fields_array, objimport->import_convertvalue_array, ...) + * @param Object $objimport Object import (contains objimport->array_import_tables, objimport->array_import_fields, objimport->array_import_convertvalue, ...) * @param int $maxfields Max number of fields to use * @param string $importid Import key * @return int <0 if KO, >0 if OK @@ -420,7 +420,13 @@ class ImportCsv extends ModeleImports || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel' ) { - if (! is_numeric($newval) && $newval != '') // If value into input import file is not a numeric, we apply the function defined into descriptor + // New val can be an id or ref. If it start with id: it is forced to id, if it start with ref: it is forced to ref. It not, we try to guess. + $isidorref='id'; + if (! is_numeric($newval) && $newval != '' && ! preg_match('/^id:/i',$newval)) $isidorref='ref'; + $newval=preg_replace('/^(id|ref):/i','',$newval); // Remove id: or ref: that was used to force if field is id or ref + //print 'Val is now '.$newval.' and is type '.$isidorref."
    \n"; + + if ($isidorref == 'ref') // If value into input import file is a ref, we apply the function defined into descriptor { $file=$objimport->array_import_convertvalue[0][$val]['classfile']; $class=$objimport->array_import_convertvalue[0][$val]['class']; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 637cf35cc79..47c5fa3feaf 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -336,7 +336,7 @@ class Importxlsx extends ModeleImports * * @param array $arrayrecord Array of read values: [fieldpos] => (['val']=>val, ['type']=>-1=null,0=blank,1=string), [fieldpos+1]... * @param array $array_match_file_to_database Array of target fields where to insert data: [fieldpos] => 's.fieldname', [fieldpos+1]... - * @param Object $objimport Object import (contains objimport->import_tables_array, objimport->import_fields_array, objimport->import_convertvalue_array, ...) + * @param Object $objimport Object import (contains objimport->array_import_tables, objimport->array_import_fields, objimport->array_import_convertvalue, ...) * @param int $maxfields Max number of fields to use * @param string $importid Import key * @return int <0 if KO, >0 if OK @@ -438,7 +438,13 @@ class Importxlsx extends ModeleImports || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel' ) { - if (! is_numeric($newval) && $newval != '') // If value into input import file is not a numeric, we apply the function defined into descriptor + // New val can be an id or ref. If it start with id: it is forced to id, if it start with ref: it is forced to ref. It not, we try to guess. + $isidorref='id'; + if (! is_numeric($newval) && $newval != '' && ! preg_match('/^id:/i',$newval)) $isidorref='ref'; + $newval=preg_replace('/^(id|ref):/i','',$newval); // Remove id: or ref: that was used to force if field is id or ref + //print 'Val is now '.$newval.' and is type '.$isidorref."
    \n"; + + if ($isidorref == 'ref') // If value into input import file is a ref, we apply the function defined into descriptor { $file=$objimport->array_import_convertvalue[0][$val]['classfile']; $class=$objimport->array_import_convertvalue[0][$val]['class']; @@ -645,7 +651,8 @@ class Importxlsx extends ModeleImports } if (! empty($objimport->array_import_tables_creator[0][$alias])) $sql.=', '.$user->id; $sql.=')'; -print($sql); + + //print($sql).'
    '; dol_syslog("import_csv.modules", LOG_DEBUG); //print '> '.join(',',$arrayrecord); From 8035742779d1b7f9c4afe90fb6b6fd44a3a9aa2e Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 11 Apr 2016 14:52:22 +0200 Subject: [PATCH 171/380] FIX fetchAllEMailTemplate --- htdocs/core/class/html.formmail.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index bc185ef6d71..f8f6afcf1ff 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -334,7 +334,7 @@ class FormMail extends Form $out.= '   '; $out.= ''; } - + $out.= ''."\n"; @@ -894,7 +894,7 @@ class FormMail extends Form $line->id=$obj->rowid; $line->label=$obj->label; $line->topic=$obj->topic; - $line->content=$obj->lacontentbel; + $line->content=$obj->content; $line->lang=$obj->lang; $this->lines_model[]=$line; } From 0e7fb80a3428fcf7857160669f4ea2dbce9efded Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 Apr 2016 14:56:42 +0200 Subject: [PATCH 172/380] FIX: We should be able to import value '0' --- htdocs/core/modules/import/import_csv.modules.php | 2 +- htdocs/core/modules/import/import_xlsx.modules.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index da927dbdbe1..8f25a38d322 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -401,7 +401,7 @@ class ImportCsv extends ModeleImports // Make some tests on $newval // Is it a required field ? - if (preg_match('/\*/',$objimport->array_import_fields[0][$val]) && ($newval=='')) + if (preg_match('/\*/',$objimport->array_import_fields[0][$val]) && ((string) $newval=='')) { $this->errors[$error]['lib']=$langs->trans('ErrorMissingMandatoryValue',$key); $this->errors[$error]['type']='NOTNULL'; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 47c5fa3feaf..34139820ba8 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -419,7 +419,7 @@ class Importxlsx extends ModeleImports // Make some tests on $newval // Is it a required field ? - if (preg_match('/\*/',$objimport->array_import_fields[0][$val]) && ($newval=='')) + if (preg_match('/\*/',$objimport->array_import_fields[0][$val]) && ((string) $newval == '')) { $this->errors[$error]['lib']=$langs->trans('ErrorMissingMandatoryValue',$key); $this->errors[$error]['type']='NOTNULL'; From 03f43d7c5561feb2276585a3028e831e74df1a40 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 Apr 2016 15:19:58 +0200 Subject: [PATCH 173/380] Removed a TODO by moving detection of line of records of a file to import into the import driver. --- .../modules/import/import_csv.modules.php | 13 +++++++++++ .../modules/import/import_xlsx.modules.php | 23 +++++++++++++++++++ htdocs/imports/import.php | 4 ++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 8f25a38d322..85689edcf7c 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -49,6 +49,7 @@ class ImportCsv extends ModeleImports var $separator; + var $file; // Path of file var $handle; // Handle fichier var $cacheconvert=array(); // Array to cache list of value found after a convertion @@ -236,6 +237,18 @@ class ImportCsv extends ModeleImports return $ret; } + + /** + * Return nb of records. File must be closed. + * + * @return int <0 if KO, >=0 if OK + */ + function import_get_nb_of_lines($file) + { + return dol_count_nb_of_line($file); + } + + /** * Input header line from file * diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 34139820ba8..a821540f29b 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -49,6 +49,7 @@ class Importxlsx extends ModeleImports var $separator; + var $file; // Path of file var $handle; // Handle fichier var $cacheconvert=array(); // Array to cache list of value found after a convertion @@ -276,9 +277,31 @@ class Importxlsx extends ModeleImports $reader = new PHPExcel_Reader_Excel2007(); $this->workbook = $reader->load($file); $this->record = 1; + $this->file = $file; + return $ret; } + + /** + * Return nb of records. File must be closed. + * + * @return int <0 if KO, >=0 if OK + */ + function import_get_nb_of_lines($file) + { + $reader = new PHPExcel_Reader_Excel2007(); + $this->workbook = $reader->load($file); + + $rowcount = $this->workbook->getActiveSheet()->getHighestDataRow(); + + $this->workbook->disconnectWorksheets(); + unset($this->workbook); + + return $rowcount; + } + + /** * Input header line from file * diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 23d5a61415b..eae01880f90 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1142,6 +1142,7 @@ if ($step == 5 && $datatoimport) // Load source fields in input file $fieldssource=array(); $result=$obj->import_open_file($conf->import->dir_temp.'/'.$filetoimport,$langs); + if ($result >= 0) { // Read first line @@ -1156,8 +1157,7 @@ if ($step == 5 && $datatoimport) $obj->import_close_file(); } - // TODO, remove this, since it only works for csv - $nboflines=dol_count_nb_of_line($conf->import->dir_temp.'/'.$filetoimport); + $nboflines=$obj->import_get_nb_of_lines($conf->import->dir_temp.'/'.$filetoimport); $param='&leftmenu=import&format='.$format.'&datatoimport='.$datatoimport.'&filetoimport='.urlencode($filetoimport).'&nboflines='.$nboflines.'&separator='.urlencode($separator).'&enclosure='.urlencode($enclosure); $param2 = $param; // $param2 = $param without excludefirstline and endatlinenb From 3678e052709c5f565c6227f876c577a8a1b965b6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 Apr 2016 16:36:00 +0200 Subject: [PATCH 174/380] Mutualize code by moving getter into parent class. --- .../modules/import/import_csv.modules.php | 70 --------------- .../modules/import/import_xlsx.modules.php | 89 ++----------------- htdocs/core/modules/import/modules_import.php | 72 +++++++++++++++ 3 files changed, 81 insertions(+), 150 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 85689edcf7c..245f1a15794 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -86,76 +86,6 @@ class ImportCsv extends ModeleImports if (preg_match('/^societe_/',$datatoimport)) $this->thirpartyobject=new Societe($this->db); } - /** - * getDriverId - * - * @return string Id - */ - function getDriverId() - { - return $this->id; - } - - /** - * getDriverLabel - * - * @return string Label - */ - function getDriverLabel() - { - return $this->label; - } - - /** - * getDriverDesc - * - * @return string Description - */ - function getDriverDesc() - { - return $this->desc; - } - - /** - * getDriverExtension - * - * @return string Driver suffix - */ - function getDriverExtension() - { - return $this->extension; - } - - /** - * getDriverVersion - * - * @return string Driver version - */ - function getDriverVersion() - { - return $this->version; - } - - /** - * getDriverLabel - * - * @return string Label of external lib - */ - function getLibLabel() - { - return $this->label_lib; - } - - /** - * getLibVersion - * - * @return string Version of external lib - */ - function getLibVersion() - { - return $this->version_lib; - } - /** * Output header of an example file for this format diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index a821540f29b..309e3dd7085 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -73,100 +73,29 @@ class Importxlsx extends ModeleImports // this is used as an extension from the example file code, so we have to put xlsx here !!! $this->id='xlsx'; // Same value as xxx in file name export_xxx.modules.php - $this->label='Excel'; // Label of driver - $this->desc=$langs->trans("ExcelFormatDesc",$this->separator,$this->enclosure,$this->escape); + $this->label='Excel 2007'; // Label of driver + $this->desc=$langs->trans("Excel2007FormatDesc"); $this->extension='xlsx'; // Extension for generated file by this driver $this->picto='mime/xls'; // Picto (This is not used by the example file code as Mime type, too bad ...) $this->version='1.0'; // Driver version // If driver use an external library, put its name here - require_once PHPEXCEL_PATH.'PHPExcel.php'; + require_once PHPEXCEL_PATH.'PHPExcel.php'; require_once PHPEXCEL_PATH.'PHPExcel/Style/Alignment.php'; - if (! class_exists('ZipArchive')) // For Excel2007, PHPExcel need ZipArchive - { + if (! class_exists('ZipArchive')) // For Excel2007, PHPExcel need ZipArchive + { $langs->load("errors"); $this->error=$langs->trans('ErrorPHPNeedModule','zip'); return -1; - } - $this->label_lib='PhpExcel'; - $this->version_lib='1.8.0'; + } + $this->label_lib='PhpExcel'; + $this->version_lib='1.8.0'; $this->datatoimport=$datatoimport; if (preg_match('/^societe_/',$datatoimport)) $this->thirpartyobject=new Societe($this->db); } -// Those Get methods should all be in the parent class !!! - /** - * getDriverId - * - * @return string Id - */ - function getDriverId() - { - return $this->id; - } - - /** - * getDriverLabel - * - * @return string Label - */ - function getDriverLabel() - { - return $this->label; - } - - /** - * getDriverDesc - * - * @return string Description - */ - function getDriverDesc() - { - return $this->desc; - } - - /** - * getDriverExtension - * - * @return string Driver suffix - */ - function getDriverExtension() - { - return $this->extension; - } - - /** - * getDriverVersion - * - * @return string Driver version - */ - function getDriverVersion() - { - return $this->version; - } - - /** - * getDriverLabel - * - * @return string Label of external lib - */ - function getLibLabel() - { - return $this->label_lib; - } - - /** - * getLibVersion - * - * @return string Version of external lib - */ - function getLibVersion() - { - return $this->version_lib; - } - - + /** * Output header of an example file for this format * diff --git a/htdocs/core/modules/import/modules_import.php b/htdocs/core/modules/import/modules_import.php index a27b0fd9426..11b81ecb820 100644 --- a/htdocs/core/modules/import/modules_import.php +++ b/htdocs/core/modules/import/modules_import.php @@ -59,6 +59,78 @@ class ModeleImports { } + + /** + * getDriverId + * + * @return string Id + */ + function getDriverId() + { + return $this->id; + } + + /** + * getDriverLabel + * + * @return string Label + */ + function getDriverLabel() + { + return $this->label; + } + + /** + * getDriverDesc + * + * @return string Description + */ + function getDriverDesc() + { + return $this->desc; + } + + /** + * getDriverExtension + * + * @return string Driver suffix + */ + function getDriverExtension() + { + return $this->extension; + } + + /** + * getDriverVersion + * + * @return string Driver version + */ + function getDriverVersion() + { + return $this->version; + } + + /** + * getDriverLabel + * + * @return string Label of external lib + */ + function getLibLabel() + { + return $this->label_lib; + } + + /** + * getLibVersion + * + * @return string Version of external lib + */ + function getLibVersion() + { + return $this->version_lib; + } + + /** * Charge en memoire et renvoie la liste des modeles actifs * From 791df0c9ea4e657c2d80c51d91b9c41886463551 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 11 Apr 2016 17:27:34 +0200 Subject: [PATCH 175/380] FIX: correct display of minimum buying price --- htdocs/fourn/class/fournisseur.product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 344fa3ffa56..50613103848 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -540,7 +540,7 @@ class ProductFournisseur extends Product { global $langs; $langs->load("suppliers"); - $out=($showunitprice?price($this->fourn_unitprice).' '.$langs->trans("HT").'   (':'').($showsuptitle?$langs->trans("Supplier").': ':'').$this->getSocNomUrl(1).' / '.$langs->trans("SupplierRef").': '.$this->fourn_ref.($showunitprice?')':''); + $out=($showunitprice?price($this->fourn_unitprice * (1 - $this->fourn_remise_percent/100) + $this->fourn_unitcharges - $this->fourn_remise).' '.$langs->trans("HT").'   (':'').($showsuptitle?$langs->trans("Supplier").': ':'').$this->getSocNomUrl(1).' / '.$langs->trans("SupplierRef").': '.$this->fourn_ref.($showunitprice?')':''); return $out; } From 983b2c9a210c11a56f7af7376686afaef70ba8b6 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 11 Apr 2016 17:40:47 +0200 Subject: [PATCH 176/380] FIX: real min buying price --- htdocs/product/composition/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 89760dc66ba..10d50acebe0 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -354,7 +354,7 @@ if ($id > 0 || ! empty($ref)) else { print $langs->trans("NotDefined"); $notdefined++; $atleastonenotdefined++; } } print ''; - $totalline=price2num($value['nb'] * $product_fourn->fourn_unitprice, 'MT'); + $totalline=price2num($value['nb'] * ($product_fourn->fourn_unitprice * (1 - $product_fourn->fourn_remise_percent/100) + $product_fourn->fourn_unitcharges), 'MT'); $total+=$totalline; print ''; if (! empty($conf->stock->enabled)) print ''; // Real stock From 292373cf8401f190ccc7269838d0e0efdff5d0c6 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 11 Apr 2016 17:43:10 +0200 Subject: [PATCH 177/380] forgot new discount field --- htdocs/product/composition/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 10d50acebe0..6cb6424bdc4 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -354,7 +354,7 @@ if ($id > 0 || ! empty($ref)) else { print $langs->trans("NotDefined"); $notdefined++; $atleastonenotdefined++; } } print ''; - $totalline=price2num($value['nb'] * ($product_fourn->fourn_unitprice * (1 - $product_fourn->fourn_remise_percent/100) + $product_fourn->fourn_unitcharges), 'MT'); + $totalline=price2num($value['nb'] * ($product_fourn->fourn_unitprice * (1 - $product_fourn->fourn_remise_percent/100) + $product_fourn->fourn_unitcharges - $product_fourn->fourn_remise), 'MT'); $total+=$totalline; print ''; if (! empty($conf->stock->enabled)) print ''; // Real stock From 1fdcd0e859642b400dbd4e2bea344b5882f6b25a Mon Sep 17 00:00:00 2001 From: nka11 Date: Mon, 11 Apr 2016 18:07:02 +0200 Subject: [PATCH 178/380] Fixed bugs in order api. Added method for posting new lines in order --- htdocs/commande/class/api_commande.class.php | 84 +++++++++++++++++--- 1 file changed, 74 insertions(+), 10 deletions(-) diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index c449210de73..a8479900aad 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -212,19 +212,84 @@ class CommandeApi extends DolibarrApi } // Check mandatory fields $result = $this->_validate($request_data); - + foreach($request_data as $field => $value) { $this->commande->$field = $value; } + if (isset($request_data["lines"])) { + $lines = array(); + foreach ($request_data["lines"] as $line) { + array_push($lines, (object)$line); + } + $this->commande->lines = $lines; + } if(! $this->commande->create(DolibarrApiAccess::$user) ) { throw new RestException(401); } - return $this->commande->ref; + return $this->commande->id; + } + /** + * Add a line to given order + * + * + * @param int $id Id of commande to update + * @param array $request_data Orderline data + * + * @url POST order/{id}/line + * + * @return int + */ + function postLine($id, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->commande->creer) { + throw new RestException(401); + } + + $result = $this->commande->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Commande not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object)$request_data; + $updateRes = $this->commande->addline( + $request_data->desc, + $request_data->subprice, + $request_data->qty, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + $request_data->fk_product, + $request_data->remise_percent, + $request_data->info_bits, + $request_data->fk_remise_except, + 'HT', + 0, + $request_data->date_start, + $request_data->date_end, + $request_data->product_type, + $request_data->rang, + $request_data->special_code, + $fk_parent_line, + $request_data->fk_fournprice, + $request_data->pa_ht, + $request_data->label, + $request_data->array_options, + $request_data->fk_unit, + $this->element, + $request_data->id + ); + + if ($updateRes > 0) { + return $this->get($id); + } + return false; } /** - * Update order + * Update order general fields (don't touch lines of order) * * @param int $id Id of commande to update * @param array $request_data Datas @@ -233,11 +298,10 @@ class CommandeApi extends DolibarrApi * * @return int */ - function put($id, $request_data = NULL) - { - if(! DolibarrApiAccess::$user->rights->commande->creer) { - throw new RestException(401); - } + function put($id, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->commande->creer) { + throw new RestException(401); + } $result = $this->commande->fetch($id); if( ! $result ) { @@ -247,13 +311,12 @@ class CommandeApi extends DolibarrApi if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - foreach($request_data as $field => $value) { $this->commande->$field = $value; } if($this->commande->update($id, DolibarrApiAccess::$user,1,'','','update')) - return $this->get ($id); + return $this->get($id); return false; } @@ -346,6 +409,7 @@ class CommandeApi extends DolibarrApi if (!isset($data[$field])) throw new RestException(400, "$field field missing"); $commande[$field] = $data[$field]; + } return $commande; } From b60e90a7b7ff1c61733707207e770dc32a55e043 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 11 Apr 2016 18:08:03 +0200 Subject: [PATCH 179/380] NEW A module can add, into its import profiles, a sql request to execute at end of import. This allow to update dernormalized data after import. --- htdocs/core/modules/modStock.class.php | 6 +++- htdocs/imports/class/import.class.php | 3 ++ htdocs/imports/import.php | 46 ++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php index 81454a52222..7bdf5d1d641 100644 --- a/htdocs/core/modules/modStock.class.php +++ b/htdocs/core/modules/modStock.class.php @@ -194,8 +194,12 @@ class modStock extends DolibarrModules $this->import_convertvalue_array[$r]=array( 'ps.fk_product'=>array('rule'=>'fetchidfromref','classfile'=>'/product/class/product.class.php','class'=>'Product','method'=>'fetch','element'=>'product'), 'ps.fk_entrepot'=>array('rule'=>'fetchidfromref','classfile'=>'/product/stock/class/entrepot.class.php','class'=>'Entrepot','method'=>'fetch','element'=>'label') + ); + $this->import_examplevalues_array[$r]=array( + 'ps.fk_product'=>"PREF123456",'ps.fk_entrepot'=>"ALM001",'ps.reel'=>"10" ); - $this->import_examplevalues_array[$r]=array('ps.fk_product'=>"PREF123456",'ps.fk_entrepot'=>"ALM001",'ps.reel'=>"10" + $this->import_run_sql_after_array[$r]=array( // Because we may change data that are denormalized, we must update dernormalized data after. + 'UPDATE llx_product p SET p.stock= (SELECT SUM(ps.reel) FROM llx_product_stock ps WHERE ps.fk_product = p.rowid);' ); } diff --git a/htdocs/imports/class/import.class.php b/htdocs/imports/class/import.class.php index 9a4d58aa65f..fb842ef56ca 100644 --- a/htdocs/imports/class/import.class.php +++ b/htdocs/imports/class/import.class.php @@ -38,6 +38,7 @@ class Import var $array_import_regex; var $array_import_examplevalues; var $array_import_convertvalue; + var $array_import_run_sql_after; /** @@ -151,6 +152,8 @@ class Import $this->array_import_examplevalues[$i]=$module->import_examplevalues_array[$r]; // Tableau des regles de conversion d'une valeur depuis une autre source (cle=champ, valeur=tableau des regles) $this->array_import_convertvalue[$i]=(isset($module->import_convertvalue_array[$r])?$module->import_convertvalue_array[$r]:''); + // Sql request to run after import + $this->array_import_run_sql_after[$i]=(isset($module->import_run_sql_after_array[$r])?$module->import_run_sql_after_array[$r]:''); // Module $this->array_import_module[$i]=$module; diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index eae01880f90..9b40c35ead6 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1415,6 +1415,25 @@ if ($step == 5 && $datatoimport) print $langs->trans("ErrorFailedToOpenFile",$pathfile); } + $error=0; + + // Run the sql after import if defined + //var_dump($objimport->array_import_run_sql_after[0]); + if (! empty($objimport->array_import_run_sql_after[0]) && is_array($objimport->array_import_run_sql_after[0])) + { + $i=0; + foreach($objimport->array_import_run_sql_after[0] as $sqlafterimport) + { + $i++; + $resqlafterimport=$db->query($sqlafterimport); + if (! $resqlafterimport) + { + $arrayoferrors['none'][]=array('lib'=>$langs->trans("Error running final request: ".$sqlafterimport)); + $error++; + } + } + } + $db->rollback(); // We force rollback because this was just a simulation. // Show OK @@ -1740,8 +1759,31 @@ if ($step == 6 && $datatoimport) } if (count($arrayoferrors) > 0) $db->rollback(); // We force rollback because this was errors. - else $db->commit(); // We can commit if no errors. - + else + { + $error=0; + + // Run the sql after import if defined + //var_dump($objimport->array_import_run_sql_after[0]); + if (! empty($objimport->array_import_run_sql_after[0]) && is_array($objimport->array_import_run_sql_after[0])) + { + $i=0; + foreach($objimport->array_import_run_sql_after[0] as $sqlafterimport) + { + $i++; + $resqlafterimport=$db->query($sqlafterimport); + if (! $resqlafterimport) + { + $arrayoferrors['none'][]=array('lib'=>$langs->trans("Error running final request: ".$sqlafterimport)); + $error++; + } + } + } + + if (! $error) $db->commit(); // We can commit if no errors. + else $db->rollback(); + } + dol_fiche_end(); From e5a447c14885997eab64ebb3ad40062b55005c8a Mon Sep 17 00:00:00 2001 From: nka11 Date: Mon, 11 Apr 2016 22:41:35 +0200 Subject: [PATCH 180/380] Adding more line features (PUT, DELETE, POST) --- htdocs/commande/class/api_commande.class.php | 122 ++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index a8479900aad..7d4df239c85 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -229,6 +229,37 @@ class CommandeApi extends DolibarrApi return $this->commande->id; } + /** + * Get lines of an order + * + * + * @param int $id Id of order + * @param array $request_data Orderline data + * + * @url GET order/{id}/line/list + * + * @return int + */ + function getLines($id) { + if(! DolibarrApiAccess::$user->rights->commande->lire) { + throw new RestException(401); + } + + $result = $this->commande->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Commande not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->commande->getLinesArray(); + $result = array(); + foreach ($this->commande->lines as $line) { + array_push($result,$this->_cleanObjectDatas($line)); + } + return $result; + } /** * Add a line to given order * @@ -283,13 +314,102 @@ class CommandeApi extends DolibarrApi ); if ($updateRes > 0) { + return $this->get($id)->line->rowid; + + } + return false; + } + /** + * Update a line to given order + * + * + * @param int $id Id of commande to update + * @param int $lineid Id of line to update + * @param array $request_data Orderline data + * + * @url PUT order/{id}/line/{lineid} + * + * @return object + */ + function putLine($id, $lineid, $request_data = NULL) { + if(! DolibarrApiAccess::$user->rights->commande->creer) { + throw new RestException(401); + } + + $result = $this->commande->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Commande not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object)$request_data; + $updateRes = $this->commande->updateline( + $lineid, + $request_data->desc, + $request_data->subprice, + $request_data->qty, + $request_data->remise_percent, + $request_data->tva_tx, + $request_data->localtax1_tx, + $request_data->localtax2_tx, + 'HT', + $request_data->info_bits, + $request_data->date_start, + $request_data->date_end, + $request_data->product_type, + $request_data->fk_parent_line, + 0, + $request_data->fk_fournprice, + $request_data->pa_ht, + $request_data->label, + $request_data->special_code, + $request_data->array_options, + $request_data->fk_unit + ); + + if ($updateRes > 0) { + $result = $this->get($id); + unset($result->line); + return $this->_cleanObjectDatas($result); + } + return false; + } + /** + * Delete a line to given order + * + * + * @param int $id Id of commande to update + * @param int $lineid Id of line to delete + * + * @url DELETE order/{id}/line/{lineid} + * + * @return int + */ + function delLine($id, $lineid) { + if(! DolibarrApiAccess::$user->rights->commande->creer) { + throw new RestException(401); + } + + $result = $this->commande->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Commande not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $request_data = (object)$request_data; + $updateRes = $this->commande->deleteline($lineid); + if ($updateRes == 1) { return $this->get($id); } return false; } /** - * Update order general fields (don't touch lines of order) + * Update order general fields (won't touch lines of order) * * @param int $id Id of commande to update * @param array $request_data Datas From 9ced1dc008f5647f39db6aad1407845ef66df043 Mon Sep 17 00:00:00 2001 From: nka11 Date: Mon, 11 Apr 2016 23:27:43 +0200 Subject: [PATCH 181/380] fixing some style and renaming Account to User API --- htdocs/commande/class/api_commande.class.php | 16 ++--- ...i_account.class.php => api_user.class.php} | 66 +++++++++---------- 2 files changed, 39 insertions(+), 43 deletions(-) rename htdocs/user/class/{api_account.class.php => api_user.class.php} (73%) diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index 7d4df239c85..248cbbcabc4 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -98,16 +98,16 @@ class CommandeApi extends DolibarrApi * Get a list of orders * * @param int $mode Use this param to filter list - * @param string $societe Societe filter field * @param string $sortfield Sort field * @param string $sortorder Sort order * @param int $limit Limit for list * @param int $page Page number + * @param string $societe Societe filter field * * @url GET /order/list * @return array Array of order objects */ - function getList($mode=0, $societe = "", $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { + function getList($mode=0, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0, $societe = 0) { global $db, $conf; $obj_ret = array(); @@ -191,8 +191,8 @@ class CommandeApi extends DolibarrApi * @url GET /thirdparty/{socid}/order/list * @return array Array of order objects */ - function getListForSoc($socid = "") { - return getList(0,$socid); + function getListForSoc($socid = 0) { + return getList(0,"s.rowid","ASC",0,0,$socid); } @@ -219,7 +219,7 @@ class CommandeApi extends DolibarrApi if (isset($request_data["lines"])) { $lines = array(); foreach ($request_data["lines"] as $line) { - array_push($lines, (object)$line); + array_push($lines, (object) $line); } $this->commande->lines = $lines; } @@ -284,7 +284,7 @@ class CommandeApi extends DolibarrApi if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - $request_data = (object)$request_data; + $request_data = (object) $request_data; $updateRes = $this->commande->addline( $request_data->desc, $request_data->subprice, @@ -344,7 +344,7 @@ class CommandeApi extends DolibarrApi if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - $request_data = (object)$request_data; + $request_data = (object) $request_data; $updateRes = $this->commande->updateline( $lineid, $request_data->desc, @@ -400,7 +400,7 @@ class CommandeApi extends DolibarrApi if( ! DolibarrApi::_checkAccessToResource('commande',$this->commande->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - $request_data = (object)$request_data; + $request_data = (object) $request_data; $updateRes = $this->commande->deleteline($lineid); if ($updateRes == 1) { return $this->get($id); diff --git a/htdocs/user/class/api_account.class.php b/htdocs/user/class/api_user.class.php similarity index 73% rename from htdocs/user/class/api_account.class.php rename to htdocs/user/class/api_user.class.php index 956584d9292..d09785d3ccb 100644 --- a/htdocs/user/class/api_account.class.php +++ b/htdocs/user/class/api_user.class.php @@ -27,7 +27,7 @@ use Luracast\Restler\RestException; * @class DolibarrApiAccess {@requires user,external} * */ -class AccountApi extends DolibarrApi +class UserApi extends DolibarrApi { /** * @@ -38,68 +38,66 @@ class AccountApi extends DolibarrApi ); /** - * @var User $account {@type User} + * @var User $user {@type User} */ - public $account; + public $useraccount; /** * Constructor * - * @url account/ + * @url user/ * */ function __construct() { global $db, $conf; $this->db = $db; - $this->account = new User($this->db); + $this->useraccount = new User($this->db); } /** - * Get properties of an account object + * Get properties of an user object * - * Return an array with account informations + * Return an array with user informations * - * @param int $id ID of account + * @param int $id ID of user * @return array|mixed data without useless information * - * @url GET account/{user} + * @url GET user/{id} * @throws RestException */ function get($id) { - //if (!DolibarrApiAccess::$user->rights->user->lire) - //{ + //if (!DolibarrApiAccess::$user->rights->user->user->lire) { //throw new RestException(401); //} - $result = $this->account->fetch($id); + $result = $this->useraccount->fetch($id); if (!$result) { throw new RestException(404, 'User not found'); } - if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) { throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); } - return $this->_cleanObjectDatas($this->account); + return $this->_cleanObjectDatas($this->useraccount); } /** - * Create account object from contact + * Create useraccount object from contact * * @param int $contactid Id of contact * @param array $request_data Request datas - * @return int ID of account + * @return int ID of user * - * @url POST /contact/{contactid}/createAccount + * @url POST /contact/{contactid}/createUser */ function createFromContact($contactid, $request_data = NULL) { - //if (!DolibarrApiAccess::$user->rights->user->creer) - //{ + //if (!DolibarrApiAccess::$user->rights->user->user->creer) { //throw new RestException(401); //} - // + if (!isset($request_data["login"])) throw new RestException(400, "login field missing"); if (!isset($request_data["password"])) @@ -119,12 +117,12 @@ class AccountApi extends DolibarrApi // Check mandatory fields $login = $request_data["login"]; $password = $request_data["password"]; - $result = $this->account->create_from_contact($contact,$login,$password); + $result = $this->useraccount->create_from_contact($contact,$login,$password); if ($result <= 0) { throw new RestException(500, "User not created"); } // password parameter not used in create_from_contact - $this->account->setPassword($this->account,$password); + $this->useraccount->setPassword($this->useraccount,$password); return $result; } @@ -135,31 +133,30 @@ class AccountApi extends DolibarrApi * @param array $request_data Datas * @return int * - * @url PUT account/{id} + * @url PUT user/{id} */ function put($id, $request_data = NULL) { - //if (!DolibarrApiAccess::$user->rights->user->creer) - //{// + //if (!DolibarrApiAccess::$user->rights->user->user->creer) { //throw new RestException(401); //} - $result = $this->account->fetch($id); + $result = $this->useraccount->fetch($id); if (!$result) { throw new RestException(404, 'Account not found'); } - if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) { throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); } foreach ($request_data as $field => $value) { - $this->account->$field = $value; + $this->useraccount->$field = $value; } - if ($this->account->update($id, DolibarrApiAccess::$user, 1, '', '', 'update')) + if ($this->useraccount->update($id, DolibarrApiAccess::$user, 1, '', '', 'update')) return $this->get($id); return false; @@ -171,25 +168,24 @@ class AccountApi extends DolibarrApi * @param int $id Account ID * @return array * - * @url DELETE account/{id} + * @url DELETE user/{id} */ function delete($id) { - //if (!DolibarrApiAccess::$user->rights->user->supprimer) - //{ + //if (!DolibarrApiAccess::$user->rights->user->user->supprimer) { //throw new RestException(401); //} - $result = $this->account->fetch($id); + $result = $this->useraccount->fetch($id); if (!$result) { throw new RestException(404, 'User not found'); } - if (!DolibarrApi::_checkAccessToResource('user', $this->account->id, 'user')) + if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) { throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); } - return $this->account->delete($id); + return $this->useraccount->delete($id); } /** From 0dd25a7e7042f9dcd884c75ccc16daf254ea4f0b Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 12 Apr 2016 09:39:48 +0200 Subject: [PATCH 182/380] add new filter in GROUP BY clause --- htdocs/compta/stats/cabyprodserv.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index 7e5a194c0e7..ca58ff334b5 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -222,7 +222,7 @@ if ($modecompta == 'CREANCES-DETTES') $sql.= " AND cp.fk_categorie = c.rowid AND cp.fk_product = p.rowid"; } $sql.= " AND f.entity = ".$conf->entity; - $sql.= " GROUP BY p.rowid, p.ref, p.label"; + $sql.= " GROUP BY p.rowid, p.ref, p.label, p.fk_product_type"; $sql.= $db->order($sortfield,$sortorder); dol_syslog("cabyprodserv", LOG_DEBUG); From 25dcca301f38c986feef2beebc4b3800913da1a8 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 12 Apr 2016 09:47:35 +0200 Subject: [PATCH 183/380] Fix VAT amount on credit note was > 0 when manually entered --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index ae368b3870b..333f71806c6 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2392,7 +2392,7 @@ class Facture extends CommonInvoice $this->line->date_start = $date_start; $this->line->date_end = $date_end; $this->line->total_ht = (($this->type==self::TYPE_CREDIT_NOTE||$qty<0)?-abs($total_ht):$total_ht); // For credit note and if qty is negative, total is negative - $this->line->total_tva = $total_tva; + $this->line->total_tva = (($this->type==self::TYPE_CREDIT_NOTE||$qty<0)?-abs($total_tva):$total_tva); $this->line->total_localtax1 = $total_localtax1; $this->line->total_localtax2 = $total_localtax2; $this->line->total_ttc = (($this->type==self::TYPE_CREDIT_NOTE||$qty<0)?-abs($total_ttc):$total_ttc); From 872c99afe951b1ed23611681c0f68e73625dc5b3 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 12 Apr 2016 11:35:39 +0200 Subject: [PATCH 184/380] FIX Hook resprint be printed --- htdocs/core/tpl/objectline_create.tpl.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 31ad9716155..71d34ac4cd4 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -32,7 +32,7 @@ $usemargins=0; -if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) +if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) { $usemargins=1; } @@ -193,11 +193,17 @@ else { { $parameters=array('fk_parent_line'=>GETPOST('fk_parent_line','int')); $reshook=$hookmanager->executeHooks('formCreateProductOptions',$parameters,$object,$action); + if (!empty($hookmanager->resPrint)) { + print $hookmanager->resPrint; + } } if (is_object($hookmanager) && ! empty($senderissupplier)) { $parameters=array('htmlname'=>'addproduct'); $reshook=$hookmanager->executeHooks('formCreateProductSupplierOptions',$parameters,$object,$action); + if (!empty($hookmanager->resPrint)) { + print $hookmanager->resPrint; + } } @@ -476,7 +482,7 @@ jQuery(document).ready(function() { $("#select_type").change(function() { setforfree(); - if (jQuery('#select_type').val() >= 0) + if (jQuery('#select_type').val() >= 0) { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); @@ -582,7 +588,7 @@ jQuery(document).ready(function() { /* To set focus */ - if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0) + if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0) { /* focus work on a standard textarea but not if field was replaced with CKEDITOR */ jQuery('#dp_desc').focus(); From 56c64f22bec579fbe8d67d8e0142588725451017 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 Apr 2016 13:30:47 +0200 Subject: [PATCH 185/380] Prepare menu icon to hide/show left menu --- htdocs/theme/eldy/img/menus/menu.png | Bin 0 -> 166 bytes htdocs/theme/eldy/img/menus_black/menu.png | Bin 0 -> 101 bytes htdocs/theme/md/img/menu.png | Bin 0 -> 166 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/theme/eldy/img/menus/menu.png create mode 100644 htdocs/theme/eldy/img/menus_black/menu.png create mode 100644 htdocs/theme/md/img/menu.png diff --git a/htdocs/theme/eldy/img/menus/menu.png b/htdocs/theme/eldy/img/menus/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ef108b1275503b5da65e98c326ba7c89c4c9ac GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;M!Q z+`=Ht$S`Y;1W=H@#M9T6{Q(OPx2#;w2eBhSA#+a`$B>A_Z!a$t1RBR+c;i5)Gg-^b@sk}t>*8+f6Ol&*dgeEykch)?FB=LnFmNz${AJE7 yXCby@2~%AbQ%$h9@C^13%#42=80-ZY^s?9ex4rLXcYi8SAA_f>pUXO@geCw|yc$0M literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menu.png b/htdocs/theme/md/img/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ef108b1275503b5da65e98c326ba7c89c4c9ac GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;M!Q z+`=Ht$S`Y;1W=H@#M9T6{Q(OPx2#;w2eBhSA#+a`$B>A_Z!a$t1RBR+c;i5)Gg-^b@sk}t>*8+f6Ol&*dgeEy Date: Tue, 12 Apr 2016 13:38:41 +0200 Subject: [PATCH 186/380] Removed hidden option MAIN_MENU_USE_JQUERY_LAYOUT. This feature will be implemented with pure CSS/Jquery so no more need of not maintained external library. --- htdocs/admin/menus/other.php | 33 -------------- htdocs/main.inc.php | 79 ++------------------------------- htdocs/theme/eldy/style.css.php | 4 +- htdocs/theme/md/style.css.php | 4 +- 4 files changed, 8 insertions(+), 112 deletions(-) diff --git a/htdocs/admin/menus/other.php b/htdocs/admin/menus/other.php index 73dc0fe3b85..471edf58e79 100644 --- a/htdocs/admin/menus/other.php +++ b/htdocs/admin/menus/other.php @@ -50,25 +50,11 @@ else if ($action == 'disable_hidemenu') exit; } -if ($action == 'activate_layoutmenu') -{ - dolibarr_set_const($db, "MAIN_MENU_USE_JQUERY_LAYOUT", '1','chaine',0,'',$conf->entity); - header("Location: ".$_SERVER["PHP_SELF"]); - exit; -} -else if ($action == 'disable_layoutmenu') -{ - dolibarr_del_const($db, "MAIN_MENU_USE_JQUERY_LAYOUT",$conf->entity); - header("Location: ".$_SERVER["PHP_SELF"]); - exit; -} - /* * View */ - llxHeader('',$langs->trans("Setup")); print load_fiche_titre($langs->trans("Menus"),'','title_setup'); @@ -119,25 +105,6 @@ else print ""; print ''; -// Use a flip-hide menu -if (isset($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL > 1) -{ - $var=!$var; - print ""; - print ''; - print '"; - print ''; -} - print '
    '.($notdefined?'':price($totalline,'','',0,0,-1,$conf->currency)).''.$langs->trans("Stock").': '.$value['stock'].''.($notdefined?'':price($totalline,'','',0,0,-1,$conf->currency)).''.$langs->trans("Stock").': '.$value['stock'].'
    '.$langs->trans("MenuUseLayout").''; - if (empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) - { - print ''.img_picto($langs->trans("Disabled"),'switch_off').''; - } - else - { - print ''.img_picto($langs->trans("Enabled"),'switch_on').''; - } - print "
    '; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 8652af27d82..697b2ab9ab9 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1033,13 +1033,8 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs else print ''."\n"; // JQuery print ''."\n"; // Tooltip print ''."\n"; // JNotify - /*if (! empty($conf->global->MAIN_USE_JQUERY_FILEUPLOAD) || (defined('REQUIRE_JQUERY_FILEUPLOAD') && constant('REQUIRE_JQUERY_FILEUPLOAD'))) // jQuery fileupload - { - print ''."\n"; - }*/ if (! empty($conf->global->MAIN_USE_JQUERY_DATATABLES) || (defined('REQUIRE_JQUERY_DATATABLES') && constant('REQUIRE_JQUERY_DATATABLES'))) // jQuery datatables { - //print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; @@ -1131,11 +1126,6 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs else print ''."\n"; print ''."\n"; print ''."\n"; - // jQuery Layout - if (empty($conf->dol_use_jmobile) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT) || defined('REQUIRE_JQUERY_LAYOUT')) - { - print ''."\n"; - } // jQuery jnotify if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && ! defined('DISABLE_JQUERY_JNOTIFY')) { @@ -1374,60 +1364,6 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a if ($conf->use_javascript_ajax) { - if (empty($conf->dol_use_jmobile) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) - { - print '' . "\n"; - } - // Raven.js for client-side Sentry logging support if (array_key_exists('mod_syslog_sentry', $conf->loghandlers) && ! empty($conf->global->SYSLOG_SENTRY_DSN)) { @@ -1448,8 +1384,6 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a */ print "\n".''."\n"; - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '."\n"; - if (empty($conf->dol_hide_topmenu)) { print '
    '; @@ -1579,11 +1513,10 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a //unset($form); } - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "
    \n"; print '
    '; print "\n\n"; - if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '; + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) print '
    '; } @@ -1616,8 +1549,7 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra // Instantiate hooks of thirdparty module $hookmanager->initHooks(array('searchform','leftblock')); - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "\n".''."\n".'
    '."\n"; - else print "\n".''."\n".'
    '."\n"; + print "\n".''."\n".'
    '."\n"; print "\n"; @@ -1779,8 +1711,7 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra $reshook=$hookmanager->executeHooks('printLeftBlock',$parameters); // Note that $action and $object may have been modified by some hooks print $hookmanager->resPrint; - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '."\n"; - else print '
    '; // End div id="id-left" + print '
    '; // End div id="id-left" } print "\n"; @@ -1800,7 +1731,6 @@ function main_area($title='') { global $conf, $langs; - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '."\n"; if (empty($conf->dol_hide_leftmenu)) print '
    '; print "\n"; @@ -1944,7 +1874,6 @@ if (! function_exists("llxFooter")) print '
    '."\n"; if (! empty($conf->dol_use_jmobile)) print '
    '; // end data-role="page" - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '."\n"; if (empty($conf->dol_hide_leftmenu)) print '
    '; // End div id-right print "\n"; @@ -1953,7 +1882,7 @@ if (! function_exists("llxFooter")) printCommonFooter($zone); //var_dump($langs); // Uncommment to see the property _tab_loaded to see which language file were loaded - if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
    '."\n"; // End div container + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) print '
    '."\n"; // End div container if (! empty($delayedhtmlcontent)) print $delayedhtmlcontent; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b772f741219..7454229aec0 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -646,7 +646,7 @@ td.showDragHandle { div.fiche { - margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'6':'20'):'24')); ?>px; + margin-: px; margin-: dol_optimize_smallscreen)?'12':'6')); ?>px; dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> } @@ -683,7 +683,7 @@ div.ficheaddleft { @media only screen and (max-width: 900px) { div.fiche { - margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'6':'20'):'24')); ?>px; + margin-: px; margin-: px; dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 9644232d2c6..78a8eaf79b2 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -699,7 +699,7 @@ td.showDragHandle { div.fiche { - margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; + margin-: px; margin-: dol_optimize_smallscreen)?'16':'4')); ?>px; dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> margin-bottom: 15px; @@ -737,7 +737,7 @@ div.ficheaddleft { @media only screen and (max-width: 900px) { div.fiche { - margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; + margin-: px; margin-: px; dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> margin-bottom: 15px; From 357877b1fe1c3e90cae0feeba5e7af7cf128205e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 Apr 2016 14:10:27 +0200 Subject: [PATCH 187/380] Debug multicurrency and clean properties of some modules --- htdocs/admin/multicurrency.php | 6 ++-- htdocs/comm/propal.php | 10 +++--- htdocs/commande/card.php | 6 ++-- htdocs/compta/facture.php | 6 ++-- htdocs/contrat/card.php | 1 + htdocs/core/class/html.form.class.php | 31 +++++++++++++------ htdocs/core/modules/modCategorie.class.php | 3 +- .../modules/modDocumentGeneration.class.php | 2 +- htdocs/core/modules/modExport.class.php | 2 +- htdocs/core/modules/modFckeditor.class.php | 1 + htdocs/core/modules/modImport.class.php | 2 +- htdocs/core/modules/modLabel.class.php | 1 + .../core/modules/modMultiCurrency.class.php | 4 +-- htdocs/core/modules/modWebsites.class.php | 2 +- htdocs/fourn/commande/card.php | 5 +-- htdocs/fourn/facture/card.php | 5 +-- .../install/mysql/migration/3.9.0-4.0.0.sql | 3 +- .../mysql/tables/llx_multicurrency_rate.sql | 3 +- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/en_US/receiptprinter.lang | 2 +- .../class/multicurrency.class.php | 2 ++ htdocs/supplier_proposal/card.php | 6 ++-- 22 files changed, 66 insertions(+), 38 deletions(-) diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index b1ad347d8b7..b77606a60ed 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -136,7 +136,7 @@ if ($resql) * View */ -$page_name = "MultiCurrency"; +$page_name = "MultiCurrencySetup"; llxHeader('', $langs->trans($page_name)); @@ -212,7 +212,7 @@ print '
    '; print ''; print ''; print ''; -print $form->selectarray('MULTICURRENCY_MODIFY_RATE_APPLICATION', array('PU_DOLIBARR' => 'PU_DOLIBARR', 'PU_CURRENCY' => 'PU_CURRENCY')); +print $form->selectarray('MULTICURRENCY_MODIFY_RATE_APPLICATION', array('PU_DOLIBARR' => 'PU_DOLIBARR', 'PU_CURRENCY' => 'PU_CURRENCY'), $conf->global->MULTICURRENCY_MODIFY_RATE_APPLICATION); print ''; print ''; print '
    '.$langs->transnoentitiesnoconv("multicurrency_currencyFromToRate").'
    '; diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index dea894a0258..d05f9078828 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -911,6 +911,7 @@ if (empty($reshook)) unset($_POST['type']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -1040,6 +1041,7 @@ if (empty($reshook)) unset($_POST['productid']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -1325,7 +1327,7 @@ if ($action == 'create') } } else { print ''; - print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 1); + print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 'SelectThirdParty'); // reload page to retrieve customer informations if (!empty($conf->global->RELOAD_PAGE_ON_CUSTOMER_CHANGE)) { @@ -1465,7 +1467,7 @@ if ($action == 'create') print ''.fieldLabel('Currency','multicurrency_code').''; print ''; $currency_code = (!empty($soc->multicurrency_code) ? $soc->multicurrency_code : ($object->multicurrency_code ? $object->multicurrency_code : $conf->currency)); - print $form->selectMultiCurrency($currency_code, 'multicurrency_code'); + print $form->selectMultiCurrency($currency_code, 'multicurrency_code', 1); print ''; } @@ -1978,9 +1980,9 @@ if ($action == 'create') print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 9b5c29f55db..db80893f426 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -833,6 +833,7 @@ if (empty($reshook)) unset($_POST['type']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -963,6 +964,7 @@ if (empty($reshook)) unset($_POST['productid']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -2205,9 +2207,9 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 00498b870a7..491c4ca041a 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1522,6 +1522,7 @@ if (empty($reshook)) unset($_POST['type']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -1682,6 +1683,7 @@ if (empty($reshook)) unset($_POST['productid']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -3516,9 +3518,9 @@ else if ($id > 0 || ! empty($ref)) print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index b38787a4067..36c79c0f7c5 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -621,6 +621,7 @@ if (empty($reshook)) unset($_POST['type']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 082f362458b..4c32664630f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -902,7 +902,7 @@ class Form * @param string $selected Preselected type * @param string $htmlname Name of field in form * @param string $filter optional filters criteras (example: 's.rowid <> x', 's.client IN (1,3)') - * @param string $showempty Add an empty field (Can be '1' or text to use on empty line like 'SelectThirdParty') + * @param string $showempty Add an empty field (Can be '1' or text key to use on empty line like 'SelectThirdParty') * @param int $showtype Show third party type in combolist (customer, prospect or supplier) * @param int $forcecombo Force to use combo box * @param array $events Ajax event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) @@ -3779,7 +3779,7 @@ class Form print ''; print ''; print ''; print ''; print '
    '; - print $this->selectMultiCurrency($selected,$htmlname); + print $this->selectMultiCurrency($selected, $htmlname, 1); print '
    '; @@ -3797,11 +3797,13 @@ class Form * @param string $page Page * @param double $rate Current rate * @param string $htmlname Name of select html field + * @param string $currency Currency code to explain the rate * @return void */ - function form_multicurrency_rate($page, $rate='', $htmlname='multicurrency_tx') + function form_multicurrency_rate($page, $rate='', $htmlname='multicurrency_tx', $currency='') { - global $langs; + global $langs, $mysoc, $conf; + if ($htmlname != "none") { print '
    '; @@ -3816,7 +3818,15 @@ class Form } else { - print !empty($rate) ? price(price2num($rate), 1, $langs) : 1; + if (! empty($rate)) + { + print price($rate, 1, $langs, 1, 0); + if ($currency && $rate != 1) print '   ('.price($rate, 1, $langs, 1, 0).' '.$currency.' = 1 '.$conf->currency.')'; + } + else + { + print 1; + } } } @@ -4030,17 +4040,17 @@ class Form * @param integer $useempty 1=Add empty line * @return string */ - function selectMultiCurrency($selected='',$htmlname='multicurrency_code', $useempty=0) + function selectMultiCurrency($selected='', $htmlname='multicurrency_code', $useempty=0) { global $db,$conf,$langs,$user; - $langs->loadCacheCurrencies(''); + $langs->loadCacheCurrencies(''); // Load ->cache_currencies $TCurrency = array(); $sql = 'SELECT code FROM '.MAIN_DB_PREFIX.'multicurrency'; + $sql.= " WHERE entity IN ('".getEntity('mutlicurrency')."')"; $resql = $db->query($sql); - if ($resql) { while ($obj = $db->fetch_object($resql)) $TCurrency[$obj->code] = $obj->code; @@ -4048,14 +4058,14 @@ class Form $out=''; $out.= ''; diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index ad4c2bba16a..17141b6200d 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -45,6 +45,7 @@ class modCategorie extends DolibarrModules $this->numero = 1780; $this->family = "technic"; + $this->module_position = 20; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Gestion des categories (produits, clients, fournisseurs...)"; @@ -53,7 +54,7 @@ class modCategorie extends DolibarrModules $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - $this->special = 2; + $this->special = 0; $this->picto = 'category'; // Data directories to create when module is enabled diff --git a/htdocs/core/modules/modDocumentGeneration.class.php b/htdocs/core/modules/modDocumentGeneration.class.php index 9111ec11099..0648eb8bf0b 100644 --- a/htdocs/core/modules/modDocumentGeneration.class.php +++ b/htdocs/core/modules/modDocumentGeneration.class.php @@ -45,7 +45,7 @@ class modDocumentGeneration extends DolibarrModules $this->numero = 1520; $this->family = "technic"; - $this->module_position = 10000; + $this->module_position = 80; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Direct mail document generation"; diff --git a/htdocs/core/modules/modExport.class.php b/htdocs/core/modules/modExport.class.php index cb3d104e096..e8a6baa8509 100644 --- a/htdocs/core/modules/modExport.class.php +++ b/htdocs/core/modules/modExport.class.php @@ -44,7 +44,7 @@ class modExport extends DolibarrModules $this->numero = 240; $this->family = "technic"; - $this->module_position = 520; + $this->module_position = 72; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Outils d'exports de donnees Dolibarr (via un assistant)"; diff --git a/htdocs/core/modules/modFckeditor.class.php b/htdocs/core/modules/modFckeditor.class.php index 4735b0811a3..31b3fafff16 100644 --- a/htdocs/core/modules/modFckeditor.class.php +++ b/htdocs/core/modules/modFckeditor.class.php @@ -45,6 +45,7 @@ class modFckeditor extends DolibarrModules $this->numero = 2000; $this->family = "technic"; + $this->module_position = 20; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Editeur WYSIWYG"; diff --git a/htdocs/core/modules/modImport.class.php b/htdocs/core/modules/modImport.class.php index 63af9dc9064..8f3faad9bd1 100644 --- a/htdocs/core/modules/modImport.class.php +++ b/htdocs/core/modules/modImport.class.php @@ -44,7 +44,7 @@ class modImport extends DolibarrModules $this->numero = 250; $this->family = "technic"; - $this->module_position = 510; + $this->module_position = 70; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Outils d'imports de donnees Dolibarr (via un assistant)"; diff --git a/htdocs/core/modules/modLabel.class.php b/htdocs/core/modules/modLabel.class.php index 0b282584261..05e98d36454 100644 --- a/htdocs/core/modules/modLabel.class.php +++ b/htdocs/core/modules/modLabel.class.php @@ -44,6 +44,7 @@ class modLabel extends DolibarrModules $this->numero = 60; $this->family = "technic"; + $this->module_position = 80; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Gestion des etiquettes"; diff --git a/htdocs/core/modules/modMultiCurrency.class.php b/htdocs/core/modules/modMultiCurrency.class.php index 48ce8bc3bc0..7ae613edd49 100644 --- a/htdocs/core/modules/modMultiCurrency.class.php +++ b/htdocs/core/modules/modMultiCurrency.class.php @@ -52,9 +52,9 @@ class modMultiCurrency extends DolibarrModules // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' // It is used to group modules in module setup page - $this->family = "financial"; + $this->family = "technic"; // Module position in the family - $this->module_position = 555; + $this->module_position = 40; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); diff --git a/htdocs/core/modules/modWebsites.class.php b/htdocs/core/modules/modWebsites.class.php index 8e019fabed8..e3b500b0e0d 100644 --- a/htdocs/core/modules/modWebsites.class.php +++ b/htdocs/core/modules/modWebsites.class.php @@ -46,7 +46,7 @@ class modWebsites extends DolibarrModules // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' // It is used to group modules in module setup page $this->family = "portal"; - $this->module_position = 20; + $this->module_position = 50; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "Enable the public website with CMS features"; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 8bff36e159e..59bc805a120 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -472,6 +472,7 @@ if (empty($reshook)) unset($_POST['remise_percent']); unset($_POST['pu']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['label']); @@ -2027,9 +2028,9 @@ elseif (! empty($object->id)) print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index d14dd97e6b3..08748bef416 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -830,6 +830,7 @@ if (empty($reshook)) unset($_POST['remise_percent']); unset($_POST['pu']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['label']); @@ -2053,9 +2054,9 @@ else print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } 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 15de62fb3e8..8296aa82e74 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 @@ -190,8 +190,7 @@ CREATE TABLE llx_multicurrency_rate rowid integer AUTO_INCREMENT PRIMARY KEY, date_sync datetime DEFAULT NULL, rate double NOT NULL DEFAULT 0, - fk_multicurrency integer NOT NULL, - entity integer NOT NULL DEFAULT 1 + fk_multicurrency integer NOT NULL ) ENGINE=innodb; ALTER TABLE llx_societe ADD COLUMN fk_multicurrency integer; diff --git a/htdocs/install/mysql/tables/llx_multicurrency_rate.sql b/htdocs/install/mysql/tables/llx_multicurrency_rate.sql index e6b90382dcd..333f5deab52 100644 --- a/htdocs/install/mysql/tables/llx_multicurrency_rate.sql +++ b/htdocs/install/mysql/tables/llx_multicurrency_rate.sql @@ -22,6 +22,5 @@ CREATE TABLE llx_multicurrency_rate rowid integer AUTO_INCREMENT PRIMARY KEY, date_sync datetime DEFAULT NULL, rate double NOT NULL DEFAULT 0, - fk_multicurrency integer NOT NULL, - entity integer DEFAULT 1 + fk_multicurrency integer NOT NULL ) ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 3468dc43eee..b37083ca091 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -99,6 +99,7 @@ AntiVirusParamExample= Example for ClamWin: --database="C:\Program Files (x86)\C ComptaSetup=Accounting module setup UserSetup=User management setup MenuSetup=Menu management setup +MultiCurrencySetup=Multi-currency setup MenuLimits=Limits and accuracy MenuIdParent=Parent menu ID DetailMenuIdParent=ID of parent menu (empty for a top menu) diff --git a/htdocs/langs/en_US/receiptprinter.lang b/htdocs/langs/en_US/receiptprinter.lang index 7b52f072eaf..189a8f25e38 100644 --- a/htdocs/langs/en_US/receiptprinter.lang +++ b/htdocs/langs/en_US/receiptprinter.lang @@ -5,7 +5,7 @@ PrinterUpdated=Printer %s updated PrinterDeleted=Printer %s deleted TestSentToPrinter=Test Sent To Printer %s ReceiptPrinter=Receipt printers -ReceiptPrinterDesc=Setup of printers +ReceiptPrinterDesc=Setup of receipt printers ReceiptPrinterTemplateDesc=Setup of Templates ReceiptPrinterTypeDesc=Description of Receipt Printer's type ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index fd6da3816ea..834d5b38605 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -471,7 +471,9 @@ class MultiCurrency extends CommonObject { $sql = 'SELECT m.rowid, mc.rate FROM '.MAIN_DB_PREFIX.'multicurrency m'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'multicurrency_rate mc ON (m.rowid = mc.fk_multicurrency)'; + // FIXME Is this comptible with SQL ? $sql.= ' WHERE m.code = "'.$db->escape($code).'" AND mc.date_sync >= ALL (SELECT date_sync FROM '.MAIN_DB_PREFIX.'multicurrency_rate)'; + $sql.= " AND m.entity IN '".getEntity('multicurrency', 1)."'"; $resql = $db->query($sql); if ($resql && $obj = $db->fetch_object($resql)) return array($obj->rowid, $obj->rate); else return array(0, 1); diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index be07d022fdb..9101b6efda2 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -717,6 +717,7 @@ if (empty($reshook)) unset($_POST['type']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -841,6 +842,7 @@ if (empty($reshook)) unset($_POST['productid']); unset($_POST['remise_percent']); unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); unset($_POST['price_ttc']); unset($_POST['tva_tx']); unset($_POST['product_ref']); @@ -1549,9 +1551,9 @@ if ($action == 'create') print ''; print ''; if ($action == 'editmulticurrencyrate') { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code); } else { - $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none'); + $form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code); } print ''; } From 2462716eb455299339416aa4d2c7f3179501c672 Mon Sep 17 00:00:00 2001 From: fappels Date: Tue, 12 Apr 2016 16:24:00 +0200 Subject: [PATCH 188/380] Fix migration script --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 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 15de62fb3e8..eb2077c6dfa 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 @@ -359,7 +359,7 @@ CREATE TABLE llx_c_accounting_category ( ) ENGINE=innodb; 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; From df8bbaee3410864e1db7c35c31fb2ea18395a305 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 Apr 2016 18:24:35 +0200 Subject: [PATCH 189/380] Add icone for website module --- htdocs/theme/eldy/style.css.php | 7 ++++++- htdocs/theme/md/style.css.php | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 7454229aec0..ce97dd1c14f 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1021,6 +1021,10 @@ div.mainmenu.tools { background-image: url(); } +div.mainmenu.websites { + background-image: url(); +} + 'name of class for div') @@ -1040,7 +1044,8 @@ foreach($conf->modules as $val) $mainmenuusedarray=array_unique(explode(',',$mainmenuused)); $generic=1; -$divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices'); +// Put here list of menu entries when the div.mainmenu.menuentry was previously defined +$divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices','websites'); foreach($mainmenuusedarray as $val) { if (empty($val) || in_array($val,$divalreadydefined)) continue; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 78a8eaf79b2..8997231230f 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1072,6 +1072,10 @@ div.mainmenu.tools { background-image: url(); } +div.mainmenu.websites { + background-image: url(); +} + 'name of class for div') @@ -1091,7 +1095,8 @@ foreach($conf->modules as $val) $mainmenuusedarray=array_unique(explode(',',$mainmenuused)); $generic=1; -$divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices'); +// Put here list of menu entries when the div.mainmenu.menuentry was previously defined +$divalreadydefined=array('home','companies','products','commercial','externalsite','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices','websites'); foreach($mainmenuusedarray as $val) { if (empty($val) || in_array($val,$divalreadydefined)) continue; From 87702f89fc7b9dca28972d376b872f468d20af28 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 Apr 2016 19:17:50 +0200 Subject: [PATCH 190/380] Work on website module --- htdocs/websites/class/website.class.php | 640 ++++++++++++++++++++++++ htdocs/websites/index.php | 64 ++- 2 files changed, 694 insertions(+), 10 deletions(-) create mode 100644 htdocs/websites/class/website.class.php diff --git a/htdocs/websites/class/website.class.php b/htdocs/websites/class/website.class.php new file mode 100644 index 00000000000..46a0bfe495a --- /dev/null +++ b/htdocs/websites/class/website.class.php @@ -0,0 +1,640 @@ + + * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry + * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) ---Put here your own copyright and developer email--- + * + * 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 websites/website.class.php + * \ingroup websites + * \brief This file is an example for a CRUD class file (Create/Read/Update/Delete) + * Put some comments here + */ + +// Put here all includes required by your class file +require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; + +/** + * Class Website + * + * Put here description of your class + * @see CommonObject + */ +class Website extends CommonObject +{ + /** + * @var string Id to identify managed objects + */ + public $element = 'website'; + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'website'; + + /** + * @var WebsiteLine[] Lines + */ + public $lines = array(); + + /** + */ + + public $entity; + public $shortname; + public $description; + public $status; + public $date_creation = ''; + public $date_modification = ''; + public $tms = ''; + + /** + */ + + + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + public function __construct(DoliDB $db) + { + $this->db = $db; + return 1; + } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + // Clean parameters + + if (isset($this->entity)) { + $this->entity = trim($this->entity); + } + if (isset($this->shortname)) { + $this->shortname = trim($this->shortname); + } + if (isset($this->description)) { + $this->description = trim($this->description); + } + if (isset($this->status)) { + $this->status = trim($this->status); + } + + + + // Check parameters + // Put here code to add control on parameters values + + // Insert request + $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; + + $sql.= 'entity,'; + $sql.= 'shortname,'; + $sql.= 'description,'; + $sql.= 'status,'; + $sql.= 'date_creation,'; + $sql.= 'date_modification'; + + + $sql .= ') VALUES ('; + + $sql .= ' '.(! isset($this->entity)?'NULL':$this->entity).','; + $sql .= ' '.(! isset($this->shortname)?'NULL':"'".$this->db->escape($this->shortname)."'").','; + $sql .= ' '.(! isset($this->description)?'NULL':"'".$this->db->escape($this->description)."'").','; + $sql .= ' '.(! isset($this->status)?'NULL':$this->status).','; + $sql .= ' '.(! isset($this->date_creation) || dol_strlen($this->date_creation)==0?'NULL':"'".$this->db->idate($this->date_creation)."'").','; + $sql .= ' '.(! isset($this->date_modification) || dol_strlen($this->date_modification)==0?'NULL':"'".$this->db->idate($this->date_modification)."'"); + + + $sql .= ')'; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error) { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); + + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action to call a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_CREATE',$user); + //if ($result < 0) $error++; + //// End call triggers + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return $this->id; + } + } + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $ref = null) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + + $sql .= " t.entity,"; + $sql .= " t.shortname,"; + $sql .= " t.description,"; + $sql .= " t.status,"; + $sql .= " t.date_creation,"; + $sql .= " t.date_modification,"; + $sql .= " t.tms"; + + + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; + if (null !== $ref) { + $sql .= ' WHERE t.ref = ' . '\'' . $ref . '\''; + } else { + $sql .= ' WHERE t.rowid = ' . $id; + } + + $resql = $this->db->query($sql); + if ($resql) { + $numrows = $this->db->num_rows($resql); + if ($numrows) { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + + $this->entity = $obj->entity; + $this->shortname = $obj->shortname; + $this->description = $obj->description; + $this->status = $obj->status; + $this->date_creation = $this->db->jdate($obj->date_creation); + $this->date_modification = $this->db->jdate($obj->date_modification); + $this->tms = $this->db->jdate($obj->tms); + + + } + $this->db->free($resql); + + if ($numrows) { + return 1; + } else { + return 0; + } + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * @param string $filtermode filter mode (AND or OR) + * + * @return int <0 if KO, >0 if OK + */ + public function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter = array(), $filtermode='AND') + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + + $sql .= " t.entity,"; + $sql .= " t.shortname,"; + $sql .= " t.description,"; + $sql .= " t.status,"; + $sql .= " t.date_creation,"; + $sql .= " t.date_modification,"; + $sql .= " t.tms"; + + + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; + + // Manage filter + $sqlwhere = array(); + if (count($filter) > 0) { + foreach ($filter as $key => $value) { + $sqlwhere [] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + } + } + if (count($sqlwhere) > 0) { + $sql .= ' WHERE ' . implode(' '.$filtermode.' ', $sqlwhere); + } + + if (!empty($sortfield)) { + $sql .= $this->db->order($sortfield,$sortorder); + } + if (!empty($limit)) { + $sql .= ' ' . $this->db->plimit($limit + 1, $offset); + } + $this->lines = array(); + + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); + + while ($obj = $this->db->fetch_object($resql)) { + $line = new WebsiteLine(); + + $line->id = $obj->rowid; + + $line->entity = $obj->entity; + $line->shortname = $obj->shortname; + $line->description = $obj->description; + $line->status = $obj->status; + $line->date_creation = $this->db->jdate($obj->date_creation); + $line->date_modification = $this->db->jdate($obj->date_modification); + $line->tms = $this->db->jdate($obj->tms); + + + + $this->lines[] = $line; + } + $this->db->free($resql); + + return $num; + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + $error = 0; + + dol_syslog(__METHOD__, LOG_DEBUG); + + // Clean parameters + + if (isset($this->entity)) { + $this->entity = trim($this->entity); + } + if (isset($this->shortname)) { + $this->shortname = trim($this->shortname); + } + if (isset($this->description)) { + $this->description = trim($this->description); + } + if (isset($this->status)) { + $this->status = trim($this->status); + } + + + + // Check parameters + // Put here code to add a control on parameters values + + // Update request + $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; + + $sql .= ' entity = '.(isset($this->entity)?$this->entity:"null").','; + $sql .= ' shortname = '.(isset($this->shortname)?"'".$this->db->escape($this->shortname)."'":"null").','; + $sql .= ' description = '.(isset($this->description)?"'".$this->db->escape($this->description)."'":"null").','; + $sql .= ' status = '.(isset($this->status)?$this->status:"null").','; + $sql .= ' date_creation = '.(! isset($this->date_creation) || dol_strlen($this->date_creation) != 0 ? "'".$this->db->idate($this->date_creation)."'" : 'null').','; + $sql .= ' date_modification = '.(! isset($this->date_modification) || dol_strlen($this->date_modification) != 0 ? "'".$this->db->idate($this->date_modification)."'" : 'null').','; + $sql .= ' tms = '.(dol_strlen($this->tms) != 0 ? "'".$this->db->idate($this->tms)."'" : "'".$this->db->idate(dol_now())."'"); + + + $sql .= ' WHERE rowid=' . $this->id; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error && !$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + $this->db->begin(); + + if (!$error) { + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_DELETE',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + } + + if (!$error) { + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element; + $sql .= ' WHERE rowid=' . $this->id; + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + /** + * Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * + * @return int New id of clone + */ + public function createFromClone($fromid) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + global $user; + $error = 0; + $object = new Website($this->db); + + $this->db->begin(); + + // Load source object + $object->fetch($fromid); + // Reset object + $object->id = 0; + + // Clear fields + // ... + + // Create clone + $result = $object->create($user); + + // Other options + if ($result < 0) { + $error ++; + $this->errors = $object->errors; + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + // End + if (!$error) { + $this->db->commit(); + + return $object->id; + } else { + $this->db->rollback(); + + return - 1; + } + } + + /** + * Return a link to the user card (with optionaly the picto) + * Use this->id,this->lastname, this->firstname + * + * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) + * @param string $option On what the link point to + * @param integer $notooltip 1=Disable tooltip + * @param int $maxlen Max length of visible user name + * @param string $morecss Add more css on link + * @return string String with URL + */ + function getNomUrl($withpicto=0, $option='', $notooltip=0, $maxlen=24, $morecss='') + { + global $langs, $conf, $db; + global $dolibarr_main_authentication, $dolibarr_main_demo; + global $menumanager; + + + $result = ''; + $companylink = ''; + + $label = '' . $langs->trans("MyModule") . ''; + $label.= '
    '; + $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; + + $link = 'ref . $linkend; + return $result; + } + + /** + * Retourne le libelle du status d'un user (actif, inactif) + * + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @return string Label of status + */ + function getLibStatut($mode=0) + { + return $this->LibStatut($this->status,$mode); + } + + /** + * Renvoi le libelle d'un status donne + * + * @param int $status Id status + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @return string Label of status + */ + function LibStatut($status,$mode=0) + { + global $langs; + + if ($mode == 0) + { + $prefix=''; + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 1) + { + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 2) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 3) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5'); + } + if ($mode == 4) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 5) + { + if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5'); + } + } + + + /** + * Initialise object with example values + * Id must be 0 if object instance is a specimen + * + * @return void + */ + public function initAsSpecimen() + { + $this->id = 0; + + $this->entity = ''; + $this->shortname = ''; + $this->description = ''; + $this->status = ''; + $this->date_creation = ''; + $this->date_modification = ''; + $this->tms = ''; + + + } + +} + +/** + * Class WebsiteLine + */ +class WebsiteLine +{ + /** + * @var int ID + */ + public $id; + /** + * @var mixed Sample line property 1 + */ + + public $entity; + public $shortname; + public $description; + public $status; + public $date_creation = ''; + public $date_modification = ''; + public $tms = ''; + + /** + * @var mixed Sample line property 2 + */ + +} diff --git a/htdocs/websites/index.php b/htdocs/websites/index.php index 7c52b440f44..a975bac297a 100644 --- a/htdocs/websites/index.php +++ b/htdocs/websites/index.php @@ -21,8 +21,49 @@ * \brief Page to setup the module Website */ + +/** + * Show HTML header HTML + BODY + Top menu + left menu + DIV + * + * @param string $head Optionnal head lines + * @param string $title HTML title + * @param string $help_url Url links to help page + * Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage + * For other external page: http://server/url + * @param string $target Target to use on links + * @param int $disablejs More content into html header + * @param int $disablehead More content into html header + * @param array $arrayofjs Array of complementary js files + * @param array $arrayofcss Array of complementary css files + * @param string $morequerystring Query string to add to the link "print" to get same parameters (use only if autodetect fails) + * @return void + */ +function llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='') +{ + global $conf; + + // html header + top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); + + // top menu and left menu area + if (empty($conf->dol_hide_topmenu)) + { + top_menu($head, $title, $target, $disablejs, $disablehead, $arrayofjs, $arrayofcss, $morequerystring, $help_url); + } + if (empty($conf->dol_hide_leftmenu)) + { + left_menu('', $help_url, '', '', 1, $title, 1); + } + + // main area + //main_area($title); +} + + + require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/websites/class/website.class.php'; $langs->load("admin"); $langs->load("other"); @@ -36,7 +77,7 @@ $conf->dol_hide_leftmenu = 1; $website='website1'; - +$object=new Website($db); /* @@ -75,12 +116,21 @@ $form = new Form($db); $help_url=''; -llxHeader('',$langs->trans("WebsiteSetup"),$help_url); +llxHeader('', $langs->trans("WebsiteSetup"), $help_url); +$style=' style="padding-top: 4px; padding-left: 10px; border-bottom: 1px solid #888; height: 20px; vertical-align: middle; margin-bottom: 5px;"'; -$linkback=''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("WebsiteSetup"),$linkback,'title_setup'); +print '
    '; +// Loop on each sites + +$tmp = $object->fetchAll(); +foreach($object->lines as $websitearray) +{ + var_dump($websitearray); +} + +print '
    '; $head = array(); @@ -95,10 +145,6 @@ if ($_SESSION['website_mode'] == 'edit') print ''; print ''; - dol_fiche_head($head, 'general', $langs->trans("Page").': '.$langs->trans("Home"), 0, 'globe'); - - print load_fiche_titre($langs->trans("SEO"),'',''); - print ''; print ''; print ''; @@ -152,8 +198,6 @@ if ($_SESSION['website_mode'] == 'edit') $doleditor=new DolEditor('WEBSITE_FOOTER',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); $doleditor->Create(); - dol_fiche_end(); - print '
    '; print ''; From e1d35c279787e21930270206ac33a8f082edb4f1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 12 Apr 2016 19:29:32 +0200 Subject: [PATCH 191/380] Fix waarnings --- htdocs/imports/class/import.class.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/imports/class/import.class.php b/htdocs/imports/class/import.class.php index fb842ef56ca..254628b38fa 100644 --- a/htdocs/imports/class/import.class.php +++ b/htdocs/imports/class/import.class.php @@ -33,13 +33,18 @@ class Import var $array_import_code; var $array_import_label; var $array_import_tables; + var $array_import_tables_creator; var $array_import_fields; + var $array_import_fieldshidden; var $array_import_entities; var $array_import_regex; var $array_import_examplevalues; var $array_import_convertvalue; var $array_import_run_sql_after; + var $error; + var $errors; + /** * Constructor @@ -138,7 +143,7 @@ class Import $this->array_import_label[$i]=$module->getImportDatasetLabel($r); // Array of tables to import (key=alias, value=tablename) $this->array_import_tables[$i]=$module->import_tables_array[$r]; - // Array of tables creator field to import (key=alias, value=creator field) + // Array of tables creator field to import (key=alias, value=creator field name) $this->array_import_tables_creator[$i]=(isset($module->import_tables_creator_array[$r])?$module->import_tables_creator_array[$r]:''); // Array of fields to import (key=field, value=label) $this->array_import_fields[$i]=$module->import_fields_array[$r]; From 9de6d31c87d21642b5ce5a5167d5979cf9499dd5 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 13 Apr 2016 15:57:46 +0200 Subject: [PATCH 192/380] New add link to widthdraw slip card on bank transaction --- htdocs/compta/paiement/class/paiement.class.php | 12 ++++++++++++ .../prelevement/class/bonprelevement.class.php | 1 + 2 files changed, 13 insertions(+) diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index daf43ec9d64..9e81180c4fe 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -563,6 +563,18 @@ class Paiement extends CommonObject } } + // Add link 'WithdrawalPayment' in bank_url + if (! $error && $label == '(WithdrawalPayment)') + { + $result=$acc->add_url_line( + $bank_line_id, + $this->id_prelevement, + DOL_URL_ROOT.'/compta/prelevement/card.php?id=', + $this->num_paiement, + 'withdraw' + ); + } + if (! $error && ! $notrigger) { // Appel des triggers diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 3c3a7d14ca0..31d9e4d67c1 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -462,6 +462,7 @@ class BonPrelevement extends CommonObject $paiement->amounts = $amounts; $paiement->paiementid = 3; // $paiement->num_paiement = $this->ref ; + $paiement->id_prelevement = $this->id ; $paiement_id = $paiement->create($user); if ($paiement_id < 0) From 1676595b93b0a0edeeb5314abdf2a70d7ce605e9 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Thu, 14 Apr 2016 10:50:32 +0200 Subject: [PATCH 193/380] NEW: fichinter lines ordered by rang AND DATE --- htdocs/fichinter/card.php | 2 +- htdocs/fichinter/class/fichinter.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index a247341cdec..7a54d4237f3 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1409,7 +1409,7 @@ else if ($id > 0 || ! empty($ref)) $sql.= ' WHERE ft.fk_fichinter = '.$object->id; if (!empty($conf->global->FICHINTER_HIDE_EMPTY_DURATION)) $sql.= ' AND ft.duree <> 0'; - $sql.= ' ORDER BY ft.rang ASC, ft.rowid'; + $sql.= ' ORDER BY ft.rang ASC, ft.date ASC, ft.rowid'; $resql = $db->query($sql); if ($resql) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index c1e7a3aaca2..11b8629bc3a 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -969,7 +969,7 @@ class Fichinter extends CommonObject { $sql = 'SELECT rowid, description, duree, date, rang'; $sql.= ' FROM '.MAIN_DB_PREFIX.'fichinterdet'; - $sql.=' WHERE fk_fichinter = '.$this->id .' ORDER BY rang ASC' ; + $sql.=' WHERE fk_fichinter = '.$this->id .' ORDER BY rang ASC, date ASC' ; dol_syslog(get_class($this)."::fetch_lines", LOG_DEBUG); $resql=$this->db->query($sql); From 2d3b2c08b57e3c156599ec90f1f7413a2cfcf1f2 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 10:56:03 +0200 Subject: [PATCH 194/380] FIX #3815 Call to undefined function local_by_date(). branch 3.7 --- htdocs/compta/localtax/quadri_detail.php | 36 +-- htdocs/core/lib/tax.lib.php | 366 ++++++++++++++++++++++- 2 files changed, 370 insertions(+), 32 deletions(-) diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 7396c625165..73cfdff0659 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -3,7 +3,7 @@ * Copyright (C) 2004 Eric Seigne * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2006-2007 Yannick Warnier - * Copyright (C) 2014 Rosana Romero + * Copyright (C) 2014-2016 Juanjo Menent * * 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 @@ -116,16 +116,11 @@ $product_static=new Product($db); $payment_static=new Paiement($db); $paymentfourn_static=new PaiementFourn($db); -//print_fiche_titre($langs->trans("VAT"),""); - -//$fsearch.='
    '; $fsearch.=' '; $fsearch.=' '; -//$fsearch.=' '.$langs->trans("SalesTurnoverMinimum").': '; -//$fsearch.=' '; $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local; -// Affiche en-tete du rapport + if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice for goods and services { $nom=$langs->trans($local==1?"LT1ReportByQuartersInDueDebtMode":"LT2ReportByQuartersInDueDebtMode"); @@ -138,14 +133,11 @@ if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice $nextyear=$year_start; $nextquarter=$q; if ($nextquarter < 4) $nextquarter++; else { $nextquarter=1; $nextyear++; } - //$periodlink=($prevyear?"".img_previous()." ".img_next()."":""); - //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='
    '.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - //if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='
    '.$langs->trans("WarningDepositsNotIncluded"); + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.='
    '.$langs->trans("DepositsAreNotIncluded"); else $description.='
    '.$langs->trans("DepositsAreIncluded"); $description.=$fsearch; $builddate=time(); - //$exportlink=$langs->trans("NotYetAvailable"); $elementcust=$langs->trans("CustomersInvoices"); $productcust=$langs->trans("ProductOrService"); @@ -170,14 +162,10 @@ if ($conf->global->$calc==2) // Invoice for goods, payment for services $nextyear=$year_start; $nextquarter=$q; if ($nextquarter < 4) $nextquarter++; else { $nextquarter=1; $nextyear++; } - //$periodlink=($prevyear?"".img_previous()." ".img_next()."":""); if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.=' '.$langs->trans("DepositsAreNotIncluded"); else $description.=' '.$langs->trans("DepositsAreIncluded"); - //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='
    '.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - //if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='
    '.$langs->trans("WarningDepositsNotIncluded"); $description.=$fsearch; $builddate=time(); - //$exportlink=$langs->trans("NotYetAvailable"); $elementcust=$langs->trans("CustomersInvoices"); $productcust=$langs->trans("ProductOrService"); @@ -203,15 +191,12 @@ if($local==1){ // VAT Received and paid - - $y = $year_current; $total = 0; $i=0; // Load arrays of datas $x_coll= local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell', $local); -//$x_coll = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell'); $x_paye = local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy', $local); @@ -230,10 +215,10 @@ if (! is_array($x_coll) || ! is_array($x_paye)) else { $x_both = array(); + //now, from these two arrays, get another array with one rate per line foreach(array_keys($x_coll) as $my_coll_rate) { - //foreach($x_coll[$my_coll_rate][localtax1_list]){ $x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht']; $x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat']; $x_both[$my_coll_rate]['paye']['totalht'] = 0; @@ -303,9 +288,6 @@ else } //now we have an array (x_both) indexed by rates for coll and paye - - //print table headers for this quadri - incomes first - $x_coll_sum = 0; $x_coll_ht = 0; $x_paye_sum = 0; @@ -313,9 +295,7 @@ else $span=3; if ($modetax == 0) $span+=2; - - //print '
    '; - + if($conf->global->$calc ==0 || $conf->global->$calc == 2){ // Customers invoices print ''; @@ -345,8 +325,6 @@ else if($rate!=0){ print ""; - //print ''; - /**/ print ''; print ''."\n"; } @@ -400,9 +378,7 @@ else print price($fields['totalht']); if (price2num($fields['ftotal_ttc'])) { - //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - "; $ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']); - //print ' ('.round($ratiolineinvoice*100,2).'%)'; } print ''; } @@ -413,7 +389,6 @@ else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) $ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']); print ''; // Societe - print ""; + print ""; print ''; print ''; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 0e11079f476..e209dd741d6 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -975,7 +975,7 @@ class FactureFournisseur extends CommonInvoice } else if (preg_match('/^[\(]?PROV/i', $this->ref) || empty($this->ref)) // empty should not happened, but when it occurs, the test save life { - $num = $this->getNextNumRef($this->client); + $num = $this->getNextNumRef($this->thirdparty); } else { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 59bc805a120..31c2d0aba00 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1184,12 +1184,12 @@ if (empty($reshook)) // Recipient was provided from combo list if (GETPOST('receiver','alpha') == 'thirdparty') // Id of third party { - $sendto = $object->client->email; + $sendto = $object->thirdparty->email; $sendtoid = 0; } else // Id du contact { - $sendto = $object->client->contact_get_property(GETPOST('receiver','alpha'),'email'); + $sendto = $object->thirdparty->contact_get_property(GETPOST('receiver','alpha'),'email'); $sendtoid = GETPOST('receiver','alpha'); } } @@ -2451,7 +2451,7 @@ elseif (! empty($object->id)) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang = $_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) - $newlang = $object->client->default_lang; + $newlang = $object->thirdparty->default_lang; if (!empty($newlang)) { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 64f459886ae..b7e22e9e42f 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -976,12 +976,12 @@ if (empty($reshook)) // Recipient was provided from combo list if ($_POST['receiver'] == 'thirdparty') // Id of third party { - $sendto = $object->client->email; + $sendto = $object->thirdparty->email; $sendtoid = 0; } else // Id du contact { - $sendto = $object->client->contact_get_property($_POST['receiver'],'email'); + $sendto = $object->thirdparty->contact_get_property($_POST['receiver'],'email'); $sendtoid = $_POST['receiver']; } } @@ -1120,7 +1120,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -2423,7 +2423,7 @@ else if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang = $_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) - $newlang = $object->client->default_lang; + $newlang = $object->thirdparty->default_lang; if (!empty($newlang)) { diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index 8a815c31edb..9ae66ee685e 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -255,7 +255,7 @@ if ($action == 'builddoc') // En get ou en post $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -413,7 +413,7 @@ if ($action == 'create') // Seems to no be used $outputlangs = $langs; $newlang=''; if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$commande->client->default_lang; + if (empty($newlang)) $newlang=$commande->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -755,7 +755,7 @@ else $outputlangs = $langs; $newlang=''; if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$object->client->default_lang; + if (empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/product/card.php b/htdocs/product/card.php index ef126a85b52..4632c7ebb5c 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -152,7 +152,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 5f9fc3eacd6..f5675db86f3 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -221,16 +221,16 @@ class SupplierProposal extends CommonObject $productdesc = $prod->description; - $tva_tx = get_default_tva($mysoc,$this->client,$prod->id); - $tva_npr = get_default_npr($mysoc,$this->client,$prod->id); + $tva_tx = get_default_tva($mysoc,$this->thirdparty,$prod->id); + $tva_npr = get_default_npr($mysoc,$this->thirdparty,$prod->id); if (empty($tva_tx)) $tva_npr=0; - $localtax1_tx = get_localtax($tva_tx,1,$mysoc,$this->client,$tva_npr); - $localtax2_tx = get_localtax($tva_tx,2,$mysoc,$this->client,$tva_npr); + $localtax1_tx = get_localtax($tva_tx,1,$mysoc,$this->thirdparty,$tva_npr); + $localtax2_tx = get_localtax($tva_tx,2,$mysoc,$this->thirdparty,$tva_npr); // multiprix - if($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) + if($conf->global->PRODUIT_MULTIPRICES && $this->thirdparty->price_level) { - $price = $prod->multiprices[$this->client->price_level]; + $price = $prod->multiprices[$this->thirdparty->price_level]; } else { @@ -1662,7 +1662,7 @@ class SupplierProposal extends CommonObject if (! empty($conf->global->MAIN_MULTILANGS)) { $outputlangs = new Translate("",$conf); - $newlang=(GETPOST('lang_id') ? GETPOST('lang_id') : $this->client->default_lang); + $newlang=(GETPOST('lang_id') ? GETPOST('lang_id') : $this->thirdparty->default_lang); $outputlangs->setDefaultLang($newlang); } //$ret=$object->fetch($id); // Reload to get new records @@ -1764,7 +1764,7 @@ class SupplierProposal extends CommonObject $values = array( "'".$this->db->idate($now)."'", $product->fk_product, - $this->client->id, + $this->thirdparty->id, "'".$product->ref_fourn."'", $price, $qty, diff --git a/htdocs/supplier_proposal/note.php b/htdocs/supplier_proposal/note.php index 4e9f3affa50..a3799c0eb29 100644 --- a/htdocs/supplier_proposal/note.php +++ b/htdocs/supplier_proposal/note.php @@ -87,10 +87,10 @@ if ($id > 0 || ! empty($ref)) print ''; // Customer - if ( is_null($object->client) ) + if ( is_null($object->thirdparty) ) $object->fetch_thirdparty(); print ""; - print ''; + print ''; print ''; // ID - if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smmtps', 'swiftmailer')))) + if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { $var=!$var; $mainstmpid=(! empty($conf->global->MAIN_MAIL_SMTPS_ID)?$conf->global->MAIN_MAIL_SMTPS_ID:''); From 46190409839ad310834b999f9e7b8a2c755f929e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 Apr 2016 11:02:55 +0200 Subject: [PATCH 236/380] Work on website module --- dev/skeletons/skeleton_class.class.php | 2 +- htdocs/admin/websites.php | 10 +- .../install/mysql/migration/3.9.0-4.0.0.sql | 4 +- .../install/mysql/tables/llx_website.key.sql | 2 +- htdocs/install/mysql/tables/llx_website.sql | 2 +- htdocs/langs/en_US/errors.lang | 2 +- htdocs/langs/en_US/website.lang | 10 +- htdocs/theme/eldy/style.css.php | 21 + htdocs/theme/md/style.css.php | 21 + htdocs/websites/class/website.class.php | 39 +- htdocs/websites/class/websitepage.class.php | 651 ++++++++++++++++++ htdocs/websites/index.php | 206 +++++- htdocs/websites/indexold.php | 65 -- 13 files changed, 902 insertions(+), 133 deletions(-) create mode 100644 htdocs/websites/class/websitepage.class.php delete mode 100644 htdocs/websites/indexold.php diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index 2e737b8e87f..9a230a05698 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -249,7 +249,7 @@ class Skeleton_Class extends CommonObject $line->prop1 = $obj->field1; $line->prop2 = $obj->field2; - $this->lines[] = $line; + $this->lines[$line->id] = $line; //... } $this->db->free($resql); diff --git a/htdocs/admin/websites.php b/htdocs/admin/websites.php index de4c0472f62..3db5dd93e49 100644 --- a/htdocs/admin/websites.php +++ b/htdocs/admin/websites.php @@ -75,23 +75,23 @@ $tablib[1] = "Websites"; // Requests to extract data $tabsql=array(); -$tabsql[1] = "SELECT f.rowid as rowid, f.entity, f.shortname, f.description, f.status FROM ".MAIN_DB_PREFIX."website as f"; +$tabsql[1] = "SELECT f.rowid as rowid, f.entity, f.ref, f.description, f.status FROM ".MAIN_DB_PREFIX."website as f"; // Criteria to sort dictionaries $tabsqlsort=array(); -$tabsqlsort[1] ="shortname ASC"; +$tabsqlsort[1] ="ref ASC"; // Nom des champs en resultat de select pour affichage du dictionnaire $tabfield=array(); -$tabfield[1] = "shortname,description"; +$tabfield[1] = "ref,description"; // Nom des champs d'edition pour modification d'un enregistrement $tabfieldvalue=array(); -$tabfieldvalue[1] = "shortname,description"; +$tabfieldvalue[1] = "ref,description"; // Nom des champs dans la table pour insertion d'un enregistrement $tabfieldinsert=array(); -$tabfieldinsert[1] = "shortname,description,entity"; +$tabfieldinsert[1] = "ref,description,entity"; // Nom du rowid si le champ n'est pas de type autoincrement // Example: "" if id field is "rowid" and has autoincrement on 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 08763bcd9e6..caff6f7001c 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 @@ -106,7 +106,7 @@ CREATE TABLE llx_website ( rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY, entity integer DEFAULT 1, - shortname varchar(24) NOT NULL, + ref varchar(24) NOT NULL, description varchar(255), status integer, date_creation datetime, @@ -114,7 +114,7 @@ CREATE TABLE llx_website tms timestamp ) ENGINE=innodb; -ALTER TABLE llx_website ADD UNIQUE INDEX uk_website_shortname (shortname, entity); +ALTER TABLE llx_website ADD UNIQUE INDEX uk_website_ref (ref, entity); CREATE TABLE llx_website_page ( diff --git a/htdocs/install/mysql/tables/llx_website.key.sql b/htdocs/install/mysql/tables/llx_website.key.sql index d25a0009dbe..f3919997476 100644 --- a/htdocs/install/mysql/tables/llx_website.key.sql +++ b/htdocs/install/mysql/tables/llx_website.key.sql @@ -16,5 +16,5 @@ -- -- =========================================================================== -ALTER TABLE llx_website ADD UNIQUE INDEX uk_website_shortname (shortname, entity); +ALTER TABLE llx_website ADD UNIQUE INDEX uk_website_ref (ref, entity); diff --git a/htdocs/install/mysql/tables/llx_website.sql b/htdocs/install/mysql/tables/llx_website.sql index 81be6720d88..fd8ed4cc39c 100644 --- a/htdocs/install/mysql/tables/llx_website.sql +++ b/htdocs/install/mysql/tables/llx_website.sql @@ -21,7 +21,7 @@ CREATE TABLE llx_website ( rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY, entity integer DEFAULT 1, - shortname varchar(24) NOT NULL, + ref varchar(24) NOT NULL, description varchar(255), status integer, date_creation datetime, diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index c69c49c793a..a3376a336bb 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -85,7 +85,7 @@ ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier -ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Setup - Modules to complete. +ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Home - Setup - Modules to complete. ErrorBadMask=Error on mask ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number ErrorBadMaskBadRazMonth=Error, bad reset value diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 58765929b6c..688866a4e5b 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -2,4 +2,12 @@ Shortname=Code WebsiteSetupDesc=Create here as much entry as number of different websites you need. Then go into menu Websites to edit them. DeleteWebsite=Delete website -ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its pages and content will also be removed. \ No newline at end of file +ConfirmDeleteWebsite=Are you sure you want to delete this web site. All its pages and content will also be removed. +WEBSITE_PAGENAME=Page name/alias +WEBSITE_URL=Page real URL +EditMenu=Edit menu +EditPageMeta=Edit Meta +EditPageContent=Edit Content +Website=Web site +AddPage=Add page +Page=Page \ No newline at end of file diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ce97dd1c14f..e7fe3a14952 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -3104,6 +3104,27 @@ td.hidden { } +/* ============================================================================== */ +/* Module website */ +/* ============================================================================== */ + +.websitebar { + border-bottom: 1px solid #888; + height: 30px; +} +.websiteselection { + display: inline-block; + padding-left: 10px; + vertical-align: middle; + margin-bottom: 5px; + line-height: 29px; +} +.websitetools { + float: right; + padding-top: 2px; +} + + /* ============================================================================== */ /* Module agenda */ /* ============================================================================== */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 30188232239..9b5bbc5966e 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2949,6 +2949,27 @@ td.hidden { } +/* ============================================================================== */ +/* Module website */ +/* ============================================================================== */ + +.websitebar { + border-bottom: 1px solid #888; + height: 30px; +} +.websiteselection { + display: inline-block; + padding-left: 10px; + vertical-align: middle; + margin-bottom: 5px; + line-height: 29px; +} +.websitetools { + float: right; + padding-top: 2px; +} + + /* ============================================================================== */ /* Module agenda */ /* ============================================================================== */ diff --git a/htdocs/websites/class/website.class.php b/htdocs/websites/class/website.class.php index 46a0bfe495a..464223a8ed3 100644 --- a/htdocs/websites/class/website.class.php +++ b/htdocs/websites/class/website.class.php @@ -49,7 +49,7 @@ class Website extends CommonObject public $table_element = 'website'; /** - * @var WebsiteLine[] Lines + * @var WebsitePage[] Lines of all pages */ public $lines = array(); @@ -57,13 +57,15 @@ class Website extends CommonObject */ public $entity; - public $shortname; + public $ref; public $description; public $status; public $date_creation = ''; public $date_modification = ''; public $tms = ''; + public $records; + /** */ @@ -98,8 +100,8 @@ class Website extends CommonObject if (isset($this->entity)) { $this->entity = trim($this->entity); } - if (isset($this->shortname)) { - $this->shortname = trim($this->shortname); + if (isset($this->ref)) { + $this->ref = trim($this->ref); } if (isset($this->description)) { $this->description = trim($this->description); @@ -117,7 +119,7 @@ class Website extends CommonObject $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; $sql.= 'entity,'; - $sql.= 'shortname,'; + $sql.= 'ref,'; $sql.= 'description,'; $sql.= 'status,'; $sql.= 'date_creation,'; @@ -127,7 +129,7 @@ class Website extends CommonObject $sql .= ') VALUES ('; $sql .= ' '.(! isset($this->entity)?'NULL':$this->entity).','; - $sql .= ' '.(! isset($this->shortname)?'NULL':"'".$this->db->escape($this->shortname)."'").','; + $sql .= ' '.(! isset($this->ref)?'NULL':"'".$this->db->escape($this->ref)."'").','; $sql .= ' '.(! isset($this->description)?'NULL':"'".$this->db->escape($this->description)."'").','; $sql .= ' '.(! isset($this->status)?'NULL':$this->status).','; $sql .= ' '.(! isset($this->date_creation) || dol_strlen($this->date_creation)==0?'NULL':"'".$this->db->idate($this->date_creation)."'").','; @@ -187,7 +189,7 @@ class Website extends CommonObject $sql .= ' t.rowid,'; $sql .= " t.entity,"; - $sql .= " t.shortname,"; + $sql .= " t.ref,"; $sql .= " t.description,"; $sql .= " t.status,"; $sql .= " t.date_creation,"; @@ -211,7 +213,7 @@ class Website extends CommonObject $this->id = $obj->rowid; $this->entity = $obj->entity; - $this->shortname = $obj->shortname; + $this->ref = $obj->ref; $this->description = $obj->description; $this->status = $obj->status; $this->date_creation = $this->db->jdate($obj->date_creation); @@ -255,13 +257,12 @@ class Website extends CommonObject $sql .= ' t.rowid,'; $sql .= " t.entity,"; - $sql .= " t.shortname,"; + $sql .= " t.ref,"; $sql .= " t.description,"; $sql .= " t.status,"; $sql .= " t.date_creation,"; $sql .= " t.date_modification,"; $sql .= " t.tms"; - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; @@ -282,7 +283,7 @@ class Website extends CommonObject if (!empty($limit)) { $sql .= ' ' . $this->db->plimit($limit + 1, $offset); } - $this->lines = array(); + $this->records = array(); $resql = $this->db->query($sql); if ($resql) { @@ -294,16 +295,14 @@ class Website extends CommonObject $line->id = $obj->rowid; $line->entity = $obj->entity; - $line->shortname = $obj->shortname; + $line->ref = $obj->ref; $line->description = $obj->description; $line->status = $obj->status; $line->date_creation = $this->db->jdate($obj->date_creation); $line->date_modification = $this->db->jdate($obj->date_modification); $line->tms = $this->db->jdate($obj->tms); - - - $this->lines[] = $line; + $this->records[$line->id] = $line; } $this->db->free($resql); @@ -335,8 +334,8 @@ class Website extends CommonObject if (isset($this->entity)) { $this->entity = trim($this->entity); } - if (isset($this->shortname)) { - $this->shortname = trim($this->shortname); + if (isset($this->ref)) { + $this->ref = trim($this->ref); } if (isset($this->description)) { $this->description = trim($this->description); @@ -354,7 +353,7 @@ class Website extends CommonObject $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; $sql .= ' entity = '.(isset($this->entity)?$this->entity:"null").','; - $sql .= ' shortname = '.(isset($this->shortname)?"'".$this->db->escape($this->shortname)."'":"null").','; + $sql .= ' ref = '.(isset($this->ref)?"'".$this->db->escape($this->ref)."'":"null").','; $sql .= ' description = '.(isset($this->description)?"'".$this->db->escape($this->description)."'":"null").','; $sql .= ' status = '.(isset($this->status)?$this->status:"null").','; $sql .= ' date_creation = '.(! isset($this->date_creation) || dol_strlen($this->date_creation) != 0 ? "'".$this->db->idate($this->date_creation)."'" : 'null').','; @@ -600,7 +599,7 @@ class Website extends CommonObject $this->id = 0; $this->entity = ''; - $this->shortname = ''; + $this->ref = ''; $this->description = ''; $this->status = ''; $this->date_creation = ''; @@ -626,7 +625,7 @@ class WebsiteLine */ public $entity; - public $shortname; + public $ref; public $description; public $status; public $date_creation = ''; diff --git a/htdocs/websites/class/websitepage.class.php b/htdocs/websites/class/websitepage.class.php new file mode 100644 index 00000000000..a001c8ad56c --- /dev/null +++ b/htdocs/websites/class/websitepage.class.php @@ -0,0 +1,651 @@ + + * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry + * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) ---Put here your own copyright and developer email--- + * + * 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 websites/websitepage.class.php + * \ingroup websites + * \brief This file is an example for a CRUD class file (Create/Read/Update/Delete) + * Put some comments here + */ + +// Put here all includes required by your class file +require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; +//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; + +/** + * Class Websitepage + */ +class WebsitePage extends CommonObject +{ + /** + * @var string Id to identify managed objects + */ + public $element = 'websitepage'; + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'website_page'; + + /** + */ + + public $fk_website; + public $pageurl; + public $title; + public $description; + public $keywords; + public $content; + public $status; + public $date_creation = ''; + public $date_modification = ''; + public $tms = ''; + + /** + */ + + + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + public function __construct(DoliDB $db) + { + $this->db = $db; + return 1; + } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + // Clean parameters + + if (isset($this->fk_website)) { + $this->fk_website = trim($this->fk_website); + } + if (isset($this->pageurl)) { + $this->pageurl = trim($this->pageurl); + } + if (isset($this->title)) { + $this->title = trim($this->title); + } + if (isset($this->description)) { + $this->description = trim($this->description); + } + if (isset($this->keywords)) { + $this->keywords = trim($this->keywords); + } + if (isset($this->content)) { + $this->content = trim($this->content); + } + if (isset($this->status)) { + $this->status = trim($this->status); + } + + + + // Check parameters + // Put here code to add control on parameters values + + // Insert request + $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; + + $sql.= 'fk_website,'; + $sql.= 'pageurl,'; + $sql.= 'title,'; + $sql.= 'description,'; + $sql.= 'keywords,'; + $sql.= 'content,'; + $sql.= 'status,'; + $sql.= 'date_creation,'; + $sql.= 'date_modification'; + + + $sql .= ') VALUES ('; + + $sql .= ' '.(! isset($this->fk_website)?'NULL':$this->fk_website).','; + $sql .= ' '.(! isset($this->pageurl)?'NULL':"'".$this->db->escape($this->pageurl)."'").','; + $sql .= ' '.(! isset($this->title)?'NULL':"'".$this->db->escape($this->title)."'").','; + $sql .= ' '.(! isset($this->description)?'NULL':"'".$this->db->escape($this->description)."'").','; + $sql .= ' '.(! isset($this->keywords)?'NULL':"'".$this->db->escape($this->keywords)."'").','; + $sql .= ' '.(! isset($this->content)?'NULL':"'".$this->db->escape($this->content)."'").','; + $sql .= ' '.(! isset($this->status)?'NULL':$this->status).','; + $sql .= ' '.(! isset($this->date_creation) || dol_strlen($this->date_creation)==0?'NULL':"'".$this->db->idate($this->date_creation)."'").','; + $sql .= ' '.(! isset($this->date_modification) || dol_strlen($this->date_modification)==0?'NULL':"'".$this->db->idate($this->date_modification)."'"); + + + $sql .= ')'; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error) { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); + + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action to call a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_CREATE',$user); + //if ($result < 0) $error++; + //// End call triggers + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return $this->id; + } + } + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $website_id Web site page + * @param string $page Page name + * + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $website_id = null, $page = null) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + + $sql .= " t.fk_website,"; + $sql .= " t.pageurl,"; + $sql .= " t.title,"; + $sql .= " t.description,"; + $sql .= " t.keywords,"; + $sql .= " t.content,"; + $sql .= " t.status,"; + $sql .= " t.date_creation,"; + $sql .= " t.date_modification,"; + $sql .= " t.tms"; + + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; + if (null !== $website_id) { + $sql .= ' WHERE t.fk_website = ' . '\'' . $website_id . '\''; + $sql .= ' AND t.pageurl = ' . '\'' . $page . '\''; + } else { + $sql .= ' WHERE t.rowid = ' . $id; + } + + $resql = $this->db->query($sql); + if ($resql) { + $numrows = $this->db->num_rows($resql); + if ($numrows) { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + + $this->fk_website = $obj->fk_website; + $this->pageurl = $obj->pageurl; + $this->title = $obj->title; + $this->description = $obj->description; + $this->keywords = $obj->keywords; + $this->content = $obj->content; + $this->status = $obj->status; + $this->date_creation = $this->db->jdate($obj->date_creation); + $this->date_modification = $this->db->jdate($obj->date_modification); + $this->tms = $this->db->jdate($obj->tms); + + + } + $this->db->free($resql); + + if ($numrows) { + return 1; + } else { + return 0; + } + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * @param string $filtermode filter mode (AND or OR) + * + * @return int <0 if KO, >0 if OK + */ + public function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter = array(), $filtermode='AND') + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT'; + $sql .= ' t.rowid,'; + + $sql .= " t.fk_website,"; + $sql .= " t.pageurl,"; + $sql .= " t.title,"; + $sql .= " t.description,"; + $sql .= " t.keywords,"; + $sql .= " t.content,"; + $sql .= " t.status,"; + $sql .= " t.date_creation,"; + $sql .= " t.date_modification,"; + $sql .= " t.tms"; + + + $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; + + // Manage filter + $sqlwhere = array(); + if (count($filter) > 0) { + foreach ($filter as $key => $value) { + $sqlwhere [] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + } + } + if (count($sqlwhere) > 0) { + $sql .= ' WHERE ' . implode(' '.$filtermode.' ', $sqlwhere); + } + + if (!empty($sortfield)) { + $sql .= $this->db->order($sortfield,$sortorder); + } + if (!empty($limit)) { + $sql .= ' ' . $this->db->plimit($limit + 1, $offset); + } + $this->lines = array(); + + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); + + while ($obj = $this->db->fetch_object($resql)) { + $line = new WebsitepageLine(); + + $line->id = $obj->rowid; + + $line->fk_website = $obj->fk_website; + $line->pageurl = $obj->pageurl; + $line->title = $obj->title; + $line->description = $obj->description; + $line->keywords = $obj->keywords; + $line->content = $obj->content; + $line->status = $obj->status; + $line->date_creation = $this->db->jdate($obj->date_creation); + $line->date_modification = $this->db->jdate($obj->date_modification); + $line->tms = $this->db->jdate($obj->tms); + + + + $this->lines[$line->id] = $line; + } + $this->db->free($resql); + + return $num; + } else { + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + + return - 1; + } + } + + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + $error = 0; + + dol_syslog(__METHOD__, LOG_DEBUG); + + // Clean parameters + + if (isset($this->fk_website)) { + $this->fk_website = trim($this->fk_website); + } + if (isset($this->pageurl)) { + $this->pageurl = trim($this->pageurl); + } + if (isset($this->title)) { + $this->title = trim($this->title); + } + if (isset($this->description)) { + $this->description = trim($this->description); + } + if (isset($this->keywords)) { + $this->keywords = trim($this->keywords); + } + if (isset($this->content)) { + $this->content = trim($this->content); + } + if (isset($this->status)) { + $this->status = trim($this->status); + } + + + + // Check parameters + // Put here code to add a control on parameters values + + // Update request + $sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET'; + + $sql .= ' fk_website = '.(isset($this->fk_website)?$this->fk_website:"null").','; + $sql .= ' pageurl = '.(isset($this->pageurl)?"'".$this->db->escape($this->pageurl)."'":"null").','; + $sql .= ' title = '.(isset($this->title)?"'".$this->db->escape($this->title)."'":"null").','; + $sql .= ' description = '.(isset($this->description)?"'".$this->db->escape($this->description)."'":"null").','; + $sql .= ' keywords = '.(isset($this->keywords)?"'".$this->db->escape($this->keywords)."'":"null").','; + $sql .= ' content = '.(isset($this->content)?"'".$this->db->escape($this->content)."'":"null").','; + $sql .= ' status = '.(isset($this->status)?$this->status:"null").','; + $sql .= ' date_creation = '.(! isset($this->date_creation) || dol_strlen($this->date_creation) != 0 ? "'".$this->db->idate($this->date_creation)."'" : 'null').','; + $sql .= ' date_modification = '.(! isset($this->date_modification) || dol_strlen($this->date_modification) != 0 ? "'".$this->db->idate($this->date_modification)."'" : 'null').','; + $sql .= ' tms = '.(dol_strlen($this->tms) != 0 ? "'".$this->db->idate($this->tms)."'" : "'".$this->db->idate(dol_now())."'"); + + + $sql .= ' WHERE rowid=' . $this->id; + + $this->db->begin(); + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + if (!$error && !$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_MODIFY',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + $error = 0; + + $this->db->begin(); + + if (!$error) { + if (!$notrigger) { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action calls a trigger. + + //// Call triggers + //$result=$this->call_trigger('MYOBJECT_DELETE',$user); + //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //// End call triggers + } + } + + if (!$error) { + $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element; + $sql .= ' WHERE rowid=' . $this->id; + + $resql = $this->db->query($sql); + if (!$resql) { + $error ++; + $this->errors[] = 'Error ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + } + + // Commit or rollback + if ($error) { + $this->db->rollback(); + + return - 1 * $error; + } else { + $this->db->commit(); + + return 1; + } + } + + /** + * Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * + * @return int New id of clone + */ + public function createFromClone($fromid) + { + dol_syslog(__METHOD__, LOG_DEBUG); + + global $user; + $error = 0; + $object = new Websitepage($this->db); + + $this->db->begin(); + + // Load source object + $object->fetch($fromid); + // Reset object + $object->id = 0; + + // Clear fields + // ... + + // Create clone + $result = $object->create($user); + + // Other options + if ($result < 0) { + $error ++; + $this->errors = $object->errors; + dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); + } + + // End + if (!$error) { + $this->db->commit(); + + return $object->id; + } else { + $this->db->rollback(); + + return - 1; + } + } + + /** + * Return a link to the user card (with optionaly the picto) + * Use this->id,this->lastname, this->firstname + * + * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) + * @param string $option On what the link point to + * @param integer $notooltip 1=Disable tooltip + * @param int $maxlen Max length of visible user name + * @param string $morecss Add more css on link + * @return string String with URL + */ + function getNomUrl($withpicto=0, $option='', $notooltip=0, $maxlen=24, $morecss='') + { + global $langs, $conf, $db; + global $dolibarr_main_authentication, $dolibarr_main_demo; + global $menumanager; + + + $result = ''; + $companylink = ''; + + $label = '' . $langs->trans("MyModule") . ''; + $label.= '
    '; + $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; + + $link = 'ref . $linkend; + return $result; + } + + /** + * Retourne le libelle du status d'un user (actif, inactif) + * + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @return string Label of status + */ + function getLibStatut($mode=0) + { + return $this->LibStatut($this->status,$mode); + } + + /** + * Renvoi le libelle d'un status donne + * + * @param int $status Id status + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @return string Label of status + */ + function LibStatut($status,$mode=0) + { + global $langs; + + if ($mode == 0) + { + $prefix=''; + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 1) + { + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 2) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 3) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5'); + } + if ($mode == 4) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 5) + { + if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5'); + } + } + + + /** + * Initialise object with example values + * Id must be 0 if object instance is a specimen + * + * @return void + */ + public function initAsSpecimen() + { + $this->id = 0; + + $this->fk_website = ''; + $this->pageurl = ''; + $this->title = ''; + $this->description = ''; + $this->keywords = ''; + $this->content = ''; + $this->status = ''; + $this->date_creation = ''; + $this->date_modification = ''; + $this->tms = ''; + + + } + +} diff --git a/htdocs/websites/index.php b/htdocs/websites/index.php index a975bac297a..bfcdb9e0c85 100644 --- a/htdocs/websites/index.php +++ b/htdocs/websites/index.php @@ -64,6 +64,7 @@ function llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/websites/class/website.class.php'; +require_once DOL_DOCUMENT_ROOT.'/websites/class/websitepage.class.php'; $langs->load("admin"); $langs->load("other"); @@ -71,13 +72,23 @@ $langs->load("website"); if (! $user->admin) accessforbidden(); -$action = GETPOST('action','alpha'); - $conf->dol_hide_leftmenu = 1; +$error=0; +$website=GETPOST('website', 'alpha'); +$page=GETPOST('page', 'alpha'); +$action = GETPOST('action','alpha'); + +if (GETPOST('preview')) $action='preview'; +if (GETPOST('editmeta')) { $action='editmeta'; } +if (GETPOST('editmenu')) { $action='editmenu'; } +if (GETPOST('editcontent')) { $action='editcontent'; } + +if (empty($action)) $action='preview'; + -$website='website1'; $object=new Website($db); +$objectpage=new WebsitePage($db); /* @@ -87,19 +98,43 @@ $object=new Website($db); // Action mise a jour ou ajout d'une constante if ($action == 'update') { - + $db->begin(); + $object->fetch(0, $website); - if (! $res > 0) $error++; - - if (! $error) - { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } - else - { - setEventMessages($langs->trans("Error"), null, 'errors'); - } + $objectpage->fk_website = $object->id; + $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME'); + + $res = $objectpage->fetch(0, $object->fk_website, $objectpage->pageurl); + + if ($res > 0) + { + $objectpage->title = GETPOST('WEBSITE_TITLE'); + $objectpage->description = GETPOST('WEBSITE_DESCRIPTION'); + $objectpage->keyword = GETPOST('WEBSITE_KEYWORD'); + + $res = $objectpage->update($user); + if (! $res > 0) + { + $error++; + setEventMessages($objectpage->error, $objectpage->errors, 'errors'); + } + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + $action=''; + } + else + { + $db->rollback(); + } + } + else + { + dol_print_error($db); + } } @@ -109,26 +144,108 @@ if ($action == 'update') * View */ -$_SESSION['website_mode'] = 'edit'; - - $form = new Form($db); $help_url=''; llxHeader('', $langs->trans("WebsiteSetup"), $help_url); -$style=' style="padding-top: 4px; padding-left: 10px; border-bottom: 1px solid #888; height: 20px; vertical-align: middle; margin-bottom: 5px;"'; + print "\n".'
    '; + print ''; + print ''; + print ''; + print ''; -print '
    '; -// Loop on each sites +$style=''; +if ($action != 'preview') $style=' margin-bottom: 5px;'; + +print ''; + print '
    '; + print '
    '; + print $langs->trans("Page").': '; + print '
    '; + print '
    '; + $array=$objectpage->fetchAll(); + print $form->selectarray('page', $array); + print '
    '; + print ''; + + print '
    '; + + if ($action == 'preview') + { + $disabled=''; + if (empty($user->rights->websites->create)) $disabled=' disabled="disabled"'; + + if ($page) + { + print ''; + print ''; + } + } + else print ''; + if (preg_match('/^addpage/',$action)) print ''; + + print '
    '; + + } } +else +{ + print '
    '; + $langs->load("errors"); + print $langs->trans("ErrorModuleSetupNotComplete"); + print '
    '; + $action=''; +} + print '
    '; @@ -139,12 +256,8 @@ $head = array(); * Edit mode */ -if ($_SESSION['website_mode'] == 'edit') +if ($action == 'editmeta' || $action == 'addpage') { - print "\n".''; - print ''; - print ''; - print '
    '.$langs->trans("Description").'
    '..')
    '.$langs->trans("Rate").': '.vatrate($rate).'%'.$langs->trans("Rate").': '.vatrate($rate).'%
    '; - //print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc']; if ($fields['payment_amount'] && $fields['ftotal_ttc']) { $payment_static->id=$fields['payment_id']; @@ -491,7 +466,6 @@ else if($conf->global->$calc ==0 || $conf->global->$calc == 1){ echo ''; //print table headers for this quadri - expenses now - //imprime les en-tete de tables pour ce quadri - maintenant les d�penses print ''; print ''; print ''; diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index de705111b9d..ae217004bbf 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -2,7 +2,7 @@ /* Copyright (C) 2004-2009 Laurent Destailleur * Copyright (C) 2006-2007 Yannick Warnier * Copyright (C) 2011 Regis Houssin - * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2012-2016 Juanjo Menent * Copyright (C) 2015 Marcos García * * This program is free software; you can redistribute it and/or modify @@ -205,6 +205,370 @@ function vat_by_thirdparty($db, $y, $date_start, $date_end, $modetax, $direction } } +/** + * Gets LocalTaxes to collect for the given year (and given quarter or month) + * The function gets the LocalTaxes in split results, as the LocalTaxes declaration asks + * to report the amounts for different LocalTaxes rates as different lines. + * + * @param DoliDB $db Database handler object + * @param int $y Year + * @param int $q Quarter + * @param string $date_start Start date + * @param string $date_end End date + * @param int $modetax 0 or 1 (option on debit) + * @param int $direction 'sell' (customer invoice) or 'buy' (supplier invoices) + * @param int $local 1 for LocalTax1, 2 for LocalTax2 + * @param int $m Month + * @return array List of quarters with LocalTaxes + */ +function local_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, $local, $m=0) +{ + global $conf; + + $list=array(); + + if ($direction == 'sell') + { + $invoicetable='facture'; + $invoicedettable='facturedet'; + $fk_facture='fk_facture'; + $fk_facture2='fk_facture'; + $fk_payment='fk_paiement'; + $total_tva='total_tva'; + $total_localtax1='total_localtax1'; + $total_localtax2='total_localtax2'; + $paymenttable='paiement'; + $paymentfacturetable='paiement_facture'; + $invoicefieldref='facnumber'; + $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; + } + if ($direction == 'buy') + { + $invoicetable='facture_fourn'; + $invoicedettable='facture_fourn_det'; + $fk_facture='fk_facture_fourn'; + $fk_facture2='fk_facturefourn'; + $fk_payment='fk_paiementfourn'; + $total_tva='tva'; + $total_localtax1='total_localtax1'; + $total_localtax2='total_localtax2'; + $paymenttable='paiementfourn'; + $paymentfacturetable='paiementfourn_facturefourn'; + $invoicefieldref='ref'; + $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; + } + + // BIENS + + // Define sql request + $sql=''; + if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services + { + if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) + { + $sql='TODO'; + } + if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) + { + // Count on delivery date (use invoice date as delivery is unknown) + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx,"; + $sql.= " d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql.= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; + else $sql.= " AND f.type IN (0,1,2,3)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 0"; // Limit to products + $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + } + } + else // Option vat on delivery for goods (payments) and payments for services + { + if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) + { + $sql='TODO'; + } + if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) + { + // Count on delivery date (use invoice date as delivery is unknown) + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; + else $sql.= " AND f.type IN (0,1,2,3)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 0"; // Limit to products + $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + } + } + + if (! $sql) return -1; + if ($sql == 'TODO') return -2; + if ($sql != 'TODO') + { + dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); + + $resql = $db->query($sql); + if ($resql) + { + $lt=-1; + $oldrowid=''; + while($assoc = $db->fetch_array($resql)) + { + if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; + if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; + + if ($assoc['rowid'] != $oldrowid) + { + $oldrowid=$assoc['rowid']; + $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; + } + + $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; + $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; + + $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; + $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; + $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); + $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); + + $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; + $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; + $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; + $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; + $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; + + $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; + + $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; + $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; + $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; + + $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; + $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; + + $lt = $assoc['localtax_tx']; + } + } + else + { + dol_print_error($db); + return -3; + } + } + + + //SERVICES + + // Define sql request + $sql=''; + if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services + { + if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) + { + $sql='TODO'; + } + if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) + { + // Count on invoice date + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; + else $sql.= " AND f.type IN (0,1,2,3)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 1"; // Limit to services + $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + } + } + else // Option on delivery for goods (payments) and payments for services + { + if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) + { + + $sql='TODO'; + } + if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) + { + // Count on payments date + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; + else $sql.= " AND f.type IN (0,1,2,3)"; + $sql.= " AND f.rowid = d.".$fk_facture;; + $sql.= " AND pf.".$fk_facture2." = f.rowid"; + $sql.= " AND pa.rowid = pf.".$fk_payment; + if ($y && $m) + { + $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND pa.datep >= ".$db->idate($date_start)." AND pa.datep <= ".$db->idate($date_end); + $sql.= " AND (d.product_type = 1"; // Limit to services + $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + } + } + + if (! $sql) + { + dol_syslog("Tax.lib.php::vat_by_date no accountancy module enabled".$sql,LOG_ERR); + return -1; // -1 = Not accountancy module enabled + } + if ($sql == 'TODO') return -2; // -2 = Feature not yet available + if ($sql != 'TODO') + { + dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); + $resql = $db->query($sql); + if ($resql) + { + $lt = -1; + $oldrowid=''; + while($assoc = $db->fetch_array($resql)) + { + if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; + if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; + + if ($assoc['rowid'] != $oldrowid) + { + $oldrowid=$assoc['rowid']; + $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; + } + + $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; + $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; + + $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; + $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; + $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); + $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); + + $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; + $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; + $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; + $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; + $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; + + $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; + + $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; + $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; + $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; + + $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; + $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; + + $lt = $assoc['localtax_tx']; + } + } + else + { + dol_print_error($db); + return -3; + } + } + + return $list; + + +} + /** * Gets VAT to collect for the given year (and given quarter or month) From c3d4cd85f17f4c223112573979763bef78fdb05d Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Fri, 15 Apr 2016 12:28:35 +0200 Subject: [PATCH 195/380] NEW hidden feature: SUPPLIERORDER_WITH_NOPRICEDEFINED allow supplier order even if no supplier price defined --- htdocs/core/class/html.form.class.php | 13 +++++++++++-- htdocs/core/tpl/objectline_create.tpl.php | 2 +- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- htdocs/fourn/commande/card.php | 9 +++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 393560b4640..702b44c468e 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1968,14 +1968,23 @@ class Form if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) { - // mode=2 means suppliers products + if (!empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + { + print ''; + } + // mode=2 means suppliers products $urloption=($socid > 0?'socid='.$socid.'&':'').'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=2&status='.$status.'&finished='.$finished; print ajax_autocompleter('', $htmlname, DOL_URL_ROOT.'/product/ajax/products.php', $urloption, $conf->global->PRODUIT_USE_SEARCH_TO_SELECT, 0, $ajaxoptions); print ($hidelabel?'':$langs->trans("RefOrLabel").' : ').''; } else { - print $this->select_produits_fournisseurs_list($socid,$selected,$htmlname,$filtertype,$filtre,'',-1,0); + if (!empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + { + print ''; + print ''; + } + print $this->select_produits_fournisseurs_list($socid,$selected,$htmlname,$filtertype,$filtre,'',-1,0); } } diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index c757efa23b4..3cab39b0d0b 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -176,7 +176,7 @@ else { else { $ajaxoptions=array( - 'update' => array('qty'=>'qty','remise_percent' => 'discount'), // html id tags that will be edited with which ajax json response key + 'update' => array('qty'=>'qty','remise_percent' => 'discount','idprod' => 'idprod'), // html id tags that will be edited with which ajax json response key 'option_disabled' => 'addPredefinedProductButton', // html id to disable once select is done 'warning' => $langs->trans("NoPriceDefinedForThisSupplier") // translation of an error saved into var 'error' ); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e988893dbb4..39858256ced 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1268,7 +1268,7 @@ class CommandeFournisseur extends CommonOrder { $this->db->begin(); - if ($fk_product > 0) + if ($fk_prod_fourn_price > 0) { $prod = new Product($this->db, $fk_product); if ($prod->fetch($fk_product) > 0) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 904cd5b3133..d114e9c06fc 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -306,10 +306,15 @@ if (empty($reshook)) // Ecrase $txtva par celui du produit if ((GETPOST('prod_entry_mode') != 'free') && empty($error)) // With combolist mode idprodfournprice is > 0 or -1. With autocomplete, idprodfournprice is > 0 or '' { - $idprod=0; $productsupplier = new ProductFournisseur($db); - if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) + if (empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + { + $idprod=0; + if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) + } + + if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) if (GETPOST('idprodfournprice') > 0) { From ec5e0e5290b250a92643e72a41a3ad21d753bebd Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Fri, 15 Apr 2016 12:32:36 +0200 Subject: [PATCH 196/380] forgot one line --- htdocs/fourn/commande/card.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index d114e9c06fc..91f6aa9041b 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -314,8 +314,6 @@ if (empty($reshook)) if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) } - if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) - if (GETPOST('idprodfournprice') > 0) { $idprod=$productsupplier->get_buyprice(GETPOST('idprodfournprice'), $qty); // Just to see if a price exists for the quantity. Not used to found vat. From 4446e6a36cf5df2de1e660944cae2bc8d710ea2b Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 12:47:21 +0200 Subject: [PATCH 197/380] FIX #3815 Call to undefined function local_by_date(). branch 3.8 --- htdocs/compta/localtax/quadri_detail.php | 42 +-- htdocs/core/lib/tax.lib.php | 335 +++++++++++++++++++++++ 2 files changed, 343 insertions(+), 34 deletions(-) diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 7396c625165..a4eaccba35b 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -3,7 +3,7 @@ * Copyright (C) 2004 Eric Seigne * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2006-2007 Yannick Warnier - * Copyright (C) 2014 Rosana Romero + * Copyright (C) 2014-2016 Juanjo Menent * * 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 @@ -116,16 +116,11 @@ $product_static=new Product($db); $payment_static=new Paiement($db); $paymentfourn_static=new PaiementFourn($db); -//print_fiche_titre($langs->trans("VAT"),""); - -//$fsearch.='
    '; $fsearch.=' '; $fsearch.=' '; -//$fsearch.=' '.$langs->trans("SalesTurnoverMinimum").': '; -//$fsearch.=' '; $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local; -// Affiche en-tete du rapport + if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice for goods and services { $nom=$langs->trans($local==1?"LT1ReportByQuartersInDueDebtMode":"LT2ReportByQuartersInDueDebtMode"); @@ -138,14 +133,11 @@ if ($conf->global->$calc==0 || $conf->global->$calc==1) // Calculate on invoice $nextyear=$year_start; $nextquarter=$q; if ($nextquarter < 4) $nextquarter++; else { $nextquarter=1; $nextyear++; } - //$periodlink=($prevyear?"".img_previous()." ".img_next()."":""); - //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='
    '.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - //if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='
    '.$langs->trans("WarningDepositsNotIncluded"); - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.='
    '.$langs->trans("DepositsAreNotIncluded"); + + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.='
    '.$langs->trans("DepositsAreNotIncluded"); else $description.='
    '.$langs->trans("DepositsAreIncluded"); $description.=$fsearch; $builddate=time(); - //$exportlink=$langs->trans("NotYetAvailable"); $elementcust=$langs->trans("CustomersInvoices"); $productcust=$langs->trans("ProductOrService"); @@ -170,14 +162,10 @@ if ($conf->global->$calc==2) // Invoice for goods, payment for services $nextyear=$year_start; $nextquarter=$q; if ($nextquarter < 4) $nextquarter++; else { $nextquarter=1; $nextyear++; } - //$periodlink=($prevyear?"".img_previous()." ".img_next()."":""); - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.=' '.$langs->trans("DepositsAreNotIncluded"); + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.=' '.$langs->trans("DepositsAreNotIncluded"); else $description.=' '.$langs->trans("DepositsAreIncluded"); - //if ($conf->global->MAIN_MODULE_COMPTABILITE || $conf->global->MAIN_MODULE_ACCOUNTING) $description.='
    '.img_warning().' '.$langs->trans('OptionVatInfoModuleComptabilite'); - //if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='
    '.$langs->trans("WarningDepositsNotIncluded"); $description.=$fsearch; $builddate=time(); - //$exportlink=$langs->trans("NotYetAvailable"); $elementcust=$langs->trans("CustomersInvoices"); $productcust=$langs->trans("ProductOrService"); @@ -203,15 +191,12 @@ if($local==1){ // VAT Received and paid - - $y = $year_current; $total = 0; $i=0; // Load arrays of datas $x_coll= local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell', $local); -//$x_coll = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell'); $x_paye = local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy', $local); @@ -230,10 +215,10 @@ if (! is_array($x_coll) || ! is_array($x_paye)) else { $x_both = array(); + //now, from these two arrays, get another array with one rate per line foreach(array_keys($x_coll) as $my_coll_rate) { - //foreach($x_coll[$my_coll_rate][localtax1_list]){ $x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht']; $x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat']; $x_both[$my_coll_rate]['paye']['totalht'] = 0; @@ -303,9 +288,6 @@ else } //now we have an array (x_both) indexed by rates for coll and paye - - //print table headers for this quadri - incomes first - $x_coll_sum = 0; $x_coll_ht = 0; $x_paye_sum = 0; @@ -314,8 +296,6 @@ else $span=3; if ($modetax == 0) $span+=2; - //print '
    '; - if($conf->global->$calc ==0 || $conf->global->$calc == 2){ // Customers invoices print ''; @@ -345,8 +325,6 @@ else if($rate!=0){ print ""; - //print ''; - /**/ print ''; print ''."\n"; } @@ -400,9 +378,7 @@ else print price($fields['totalht']); if (price2num($fields['ftotal_ttc'])) { - //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - "; $ratiolineinvoice=($fields['dtotal_ttc']/$fields['ftotal_ttc']); - //print ' ('.round($ratiolineinvoice*100,2).'%)'; } print ''; } @@ -413,7 +389,6 @@ else { if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) $ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']); print ''; @@ -491,7 +466,6 @@ else if($conf->global->$calc ==0 || $conf->global->$calc == 1){ echo '
    '.$elementsup.''.$productsup.'
    '..')
    '.$langs->trans("Rate").': '.vatrate($rate).'%'.$langs->trans("Rate").': '.vatrate($rate).'%
    '; - //print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc']; if ($fields['payment_amount'] && $fields['ftotal_ttc']) { $payment_static->id=$fields['payment_id']; @@ -424,7 +399,7 @@ else print $langs->trans("NotUsedForGoods"); } else { - print $fields['payment_amount']; + print price($fields['payment_amount']); if (isset($fields['payment_amount'])) print ' ('.round($ratiopaymentinvoice*100,2).'%)'; } print '
    '; //print table headers for this quadri - expenses now - //imprime les en-tete de tables pour ce quadri - maintenant les d�penses print ''; print ''; print ''; @@ -585,7 +559,7 @@ else } else { - print $fields['payment_amount']; + print price($fields['payment_amount']); if (isset($fields['payment_amount'])) print ' ('.round($ratiopaymentinvoice*100,2).'%)'; } print ''; diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index 0a3c4942857..6054a32c692 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -178,6 +178,341 @@ function vat_by_thirdparty($db, $y, $date_start, $date_end, $modetax, $direction } } +/** + * Gets LocalTaxes to collect for the given year (and given quarter or month) + * The function gets the LocalTaxes in split results, as the LocalTaxes declaration asks + * to report the amounts for different LocalTaxes rates as different lines. + * + * @param DoliDB $db Database handler object + * @param int $y Year + * @param int $q Quarter + * @param string $date_start Start date + * @param string $date_end End date + * @param int $modetax 0 or 1 (option on debit) + * @param int $direction 'sell' (customer invoice) or 'buy' (supplier invoices) + * @param int $local 1 for LocalTax1, 2 for LocalTax2 + * @param int $m Month + * @return array List of quarters with LocalTaxes + */ +function local_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, $local, $m=0) +{ + global $conf; + + $list=array(); + + if ($direction == 'sell') + { + $invoicetable='facture'; + $invoicedettable='facturedet'; + $fk_facture='fk_facture'; + $fk_facture2='fk_facture'; + $fk_payment='fk_paiement'; + $total_tva='total_tva'; + $total_localtax1='total_localtax1'; + $total_localtax2='total_localtax2'; + $paymenttable='paiement'; + $paymentfacturetable='paiement_facture'; + $invoicefieldref='facnumber'; + $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; + } + if ($direction == 'buy') + { + $invoicetable='facture_fourn'; + $invoicedettable='facture_fourn_det'; + $fk_facture='fk_facture_fourn'; + $fk_facture2='fk_facturefourn'; + $fk_payment='fk_paiementfourn'; + $total_tva='tva'; + $total_localtax1='total_localtax1'; + $total_localtax2='total_localtax2'; + $paymenttable='paiementfourn'; + $paymentfacturetable='paiementfourn_facturefourn'; + $invoicefieldref='ref'; + $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; + } + + // BIENS + + // Define sql request + $sql=''; + if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services + { + + // Count on delivery date (use invoice date as delivery is unknown) + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx,"; + $sql.= " d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql.= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; + else $sql.= " AND f.type IN (0,1,2,3,5)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 0"; // Limit to products + $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + + } + else // Option on delivery for goods (payments) and payments for services + { + // Count on delivery date (use invoice date as delivery is unknown) + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; + else $sql.= " AND f.type IN (0,1,2,3,5)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 0"; // Limit to products + $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + + } + + if (! $sql) return -1; + + dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); + + $resql = $db->query($sql); + if ($resql) + { + $lt=-1; + $oldrowid=''; + while($assoc = $db->fetch_array($resql)) + { + if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; + if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; + + if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid + { + $oldrowid=$assoc['rowid']; + $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; + } + + $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; + $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; + + $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; + $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; + $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); + $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); + + $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; + $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; + $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; + $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; + $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; + + $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; + + $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; + $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; + $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; + + $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; + $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; + + $lt = $assoc['localtax_tx']; + } + } + else + { + dol_print_error($db); + return -3; + } + + // CAS DES SERVICES + + // Define sql request + $sql=''; + if ($modetax == 1) // Option vat on delivery for goods (payment) and debit invoice for services + { + + // Count on invoice date + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " 0 as payment_id, 0 as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; + else $sql.= " AND f.type IN (0,1,2,3,5)"; + $sql.= " AND f.rowid = d.".$fk_facture; + if ($y && $m) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; + $sql.= " AND (d.product_type = 1"; // Limit to services + $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture; + + } + else // Option vat on delivery for goods (payments) and payments for services + { + + // Count on payments date + $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; + $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; + $sql.= " d.date_start as date_start, d.date_end as date_end,"; + $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; + $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; + $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount"; + $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; + $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; + $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; + $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; + $sql.= " WHERE f.entity = " . $conf->entity; + $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) + if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; + else $sql.= " AND f.type IN (0,1,2,3,5)"; + $sql.= " AND f.rowid = d.".$fk_facture;; + $sql.= " AND pf.".$fk_facture2." = f.rowid"; + $sql.= " AND pa.rowid = pf.".$fk_payment; + if ($y && $m) + { + $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; + $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; + } + else if ($y) + { + $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,1,false))."'"; + $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,12,false))."'"; + } + if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; + if ($date_start && $date_end) $sql.= " AND pa.datep >= ".$db->idate($date_start)." AND pa.datep <= ".$db->idate($date_end); + $sql.= " AND (d.product_type = 1"; // Limit to services + $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service + $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; + + } + + if (! $sql) + { + dol_syslog("Tax.lib.php::local_by_date no accountancy module enabled".$sql,LOG_ERR); + return -1; + } + + dol_syslog("Tax.lib.php::local_by_date sql=".$sql); + $resql = $db->query($sql); + if ($resql) + { + $lt = -1; + $oldrowid=''; + while($assoc = $db->fetch_array($resql)) + { + if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; + if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; + if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; + + if ($assoc['rowid'] != $oldrowid) + { + $oldrowid=$assoc['rowid']; + $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; + } + + $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; + $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; + + $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; + $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; + $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); + $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); + + $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; + $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; + $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; + $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; + $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; + + $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; + $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; + $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; + $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; + + $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; + $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; + $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; + + $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; + $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; + + $lt = $assoc['localtax_tx']; + } + } + else + { + dol_print_error($db); + return -3; + } + + return $list; + + +} + /** * Gets VAT to collect for the given year (and given quarter or month) From c5ecc46a220b227b5fe46efba9fc76fda55773e1 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 15:42:58 +0200 Subject: [PATCH 198/380] FIX #3815 With higher quality --- htdocs/compta/localtax/quadri_detail.php | 11 +- htdocs/core/lib/tax.lib.php | 338 +---------------------- 2 files changed, 6 insertions(+), 343 deletions(-) diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index a4eaccba35b..175ff6cf98f 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -196,8 +196,8 @@ $total = 0; $i=0; // Load arrays of datas -$x_coll= local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell', $local); -$x_paye = local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy', $local); +$x_coll = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell'); +$x_paye = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy'); echo '
    '.$elementsup.''.$productsup.'
    '; @@ -220,9 +220,9 @@ else foreach(array_keys($x_coll) as $my_coll_rate) { $x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht']; - $x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat']; + $x_both[$my_coll_rate]['coll']['localtax'.$local] = $x_coll[$my_coll_rate]['localtax'.$local]; $x_both[$my_coll_rate]['paye']['totalht'] = 0; - $x_both[$my_coll_rate]['paye']['vat'] = 0; + $x_both[$my_coll_rate]['paye']['localtax'.$local] = 0; $x_both[$my_coll_rate]['coll']['links'] = ''; $x_both[$my_coll_rate]['coll']['detail'] = array(); foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy) @@ -637,6 +637,5 @@ else $i++; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index 6054a32c692..93b4b480dde 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -2,7 +2,7 @@ /* Copyright (C) 2004-2009 Laurent Destailleur * Copyright (C) 2006-2007 Yannick Warnier * Copyright (C) 2011 Regis Houssin - * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2012-2016 Juanjo Menent * Copyright (C) 2012 Cédric Salvador * Copyright (C) 2012-2014 Raphaël Doursenaud * Copyright (C) 2015 Marcos García @@ -178,342 +178,6 @@ function vat_by_thirdparty($db, $y, $date_start, $date_end, $modetax, $direction } } -/** - * Gets LocalTaxes to collect for the given year (and given quarter or month) - * The function gets the LocalTaxes in split results, as the LocalTaxes declaration asks - * to report the amounts for different LocalTaxes rates as different lines. - * - * @param DoliDB $db Database handler object - * @param int $y Year - * @param int $q Quarter - * @param string $date_start Start date - * @param string $date_end End date - * @param int $modetax 0 or 1 (option on debit) - * @param int $direction 'sell' (customer invoice) or 'buy' (supplier invoices) - * @param int $local 1 for LocalTax1, 2 for LocalTax2 - * @param int $m Month - * @return array List of quarters with LocalTaxes - */ -function local_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, $local, $m=0) -{ - global $conf; - - $list=array(); - - if ($direction == 'sell') - { - $invoicetable='facture'; - $invoicedettable='facturedet'; - $fk_facture='fk_facture'; - $fk_facture2='fk_facture'; - $fk_payment='fk_paiement'; - $total_tva='total_tva'; - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; - $paymenttable='paiement'; - $paymentfacturetable='paiement_facture'; - $invoicefieldref='facnumber'; - $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; - } - if ($direction == 'buy') - { - $invoicetable='facture_fourn'; - $invoicedettable='facture_fourn_det'; - $fk_facture='fk_facture_fourn'; - $fk_facture2='fk_facturefourn'; - $fk_payment='fk_paiementfourn'; - $total_tva='tva'; - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; - $paymenttable='paiementfourn'; - $paymentfacturetable='paiementfourn_facturefourn'; - $invoicefieldref='ref'; - $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; - } - - // BIENS - - // Define sql request - $sql=''; - if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services - { - - // Count on delivery date (use invoice date as delivery is unknown) - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx,"; - $sql.= " d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql.= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - - } - else // Option on delivery for goods (payments) and payments for services - { - // Count on delivery date (use invoice date as delivery is unknown) - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - - } - - if (! $sql) return -1; - - dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); - - $resql = $db->query($sql); - if ($resql) - { - $lt=-1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) - { - if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; - if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; - - if ($assoc['rowid'] != $oldrowid) // Si rupture sur d.rowid - { - $oldrowid=$assoc['rowid']; - $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; - } - - $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; - $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; - - $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; - $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; - $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); - $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); - - $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; - $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; - $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; - $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; - $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; - - $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; - - $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; - $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; - $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; - - $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; - $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; - - $lt = $assoc['localtax_tx']; - } - } - else - { - dol_print_error($db); - return -3; - } - - // CAS DES SERVICES - - // Define sql request - $sql=''; - if ($modetax == 1) // Option vat on delivery for goods (payment) and debit invoice for services - { - - // Count on invoice date - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - - } - else // Option vat on delivery for goods (payments) and payments for services - { - - // Count on payments date - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2,5)"; - else $sql.= " AND f.type IN (0,1,2,3,5)"; - $sql.= " AND f.rowid = d.".$fk_facture;; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; - if ($y && $m) - { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= ".$db->idate($date_start)." AND pa.datep <= ".$db->idate($date_end); - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; - - } - - if (! $sql) - { - dol_syslog("Tax.lib.php::local_by_date no accountancy module enabled".$sql,LOG_ERR); - return -1; - } - - dol_syslog("Tax.lib.php::local_by_date sql=".$sql); - $resql = $db->query($sql); - if ($resql) - { - $lt = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) - { - if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; - if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; - - if ($assoc['rowid'] != $oldrowid) - { - $oldrowid=$assoc['rowid']; - $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; - } - - $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; - $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; - - $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; - $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; - $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); - $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); - - $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; - $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; - $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; - $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; - $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; - - $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; - - $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; - $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; - $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; - - $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; - $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; - - $lt = $assoc['localtax_tx']; - } - } - else - { - dol_print_error($db); - return -3; - } - - return $list; - - -} - - /** * Gets VAT to collect for the given year (and given quarter or month) * The function gets the VAT in split results, as the VAT declaration asks From 9f4ccfab95760b425951c194241aeba71c9c27a1 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 15:54:51 +0200 Subject: [PATCH 199/380] FIX #3815 With higher quality --- htdocs/compta/localtax/quadri_detail.php | 15 +- htdocs/core/lib/tax.lib.php | 365 ----------------------- 2 files changed, 7 insertions(+), 373 deletions(-) diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index 73cfdff0659..b0a103ac514 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -196,8 +196,8 @@ $total = 0; $i=0; // Load arrays of datas -$x_coll= local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell', $local); -$x_paye = local_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy', $local); +$x_coll = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'sell'); +$x_paye = vat_by_date($db, 0, 0, $date_start, $date_end, $modetax, 'buy'); echo '
    '; @@ -220,9 +220,9 @@ else foreach(array_keys($x_coll) as $my_coll_rate) { $x_both[$my_coll_rate]['coll']['totalht'] = $x_coll[$my_coll_rate]['totalht']; - $x_both[$my_coll_rate]['coll']['vat'] = $x_coll[$my_coll_rate]['vat']; + $x_both[$my_coll_rate]['coll']['localtax'.$local] = $x_coll[$my_coll_rate]['localtax'.$local]; $x_both[$my_coll_rate]['paye']['totalht'] = 0; - $x_both[$my_coll_rate]['paye']['vat'] = 0; + $x_both[$my_coll_rate]['paye']['localtax'.$local] = 0; $x_both[$my_coll_rate]['coll']['links'] = ''; $x_both[$my_coll_rate]['coll']['detail'] = array(); foreach($x_coll[$my_coll_rate]['facid'] as $id=>$dummy) @@ -399,7 +399,7 @@ else print $langs->trans("NotUsedForGoods"); } else { - print $fields['payment_amount']; + print price($fields['payment_amount']); if (isset($fields['payment_amount'])) print ' ('.round($ratiopaymentinvoice*100,2).'%)'; } print ''; @@ -559,7 +559,7 @@ else } else { - print $fields['payment_amount']; + print price($fields['payment_amount']); if (isset($fields['payment_amount'])) print ' ('.round($ratiopaymentinvoice*100,2).'%)'; } print ''; @@ -637,6 +637,5 @@ else $i++; } -$db->close(); - llxFooter(); +$db->close(); diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index ae217004bbf..b4ae09c6d7d 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -205,371 +205,6 @@ function vat_by_thirdparty($db, $y, $date_start, $date_end, $modetax, $direction } } -/** - * Gets LocalTaxes to collect for the given year (and given quarter or month) - * The function gets the LocalTaxes in split results, as the LocalTaxes declaration asks - * to report the amounts for different LocalTaxes rates as different lines. - * - * @param DoliDB $db Database handler object - * @param int $y Year - * @param int $q Quarter - * @param string $date_start Start date - * @param string $date_end End date - * @param int $modetax 0 or 1 (option on debit) - * @param int $direction 'sell' (customer invoice) or 'buy' (supplier invoices) - * @param int $local 1 for LocalTax1, 2 for LocalTax2 - * @param int $m Month - * @return array List of quarters with LocalTaxes - */ -function local_by_date($db, $y, $q, $date_start, $date_end, $modetax, $direction, $local, $m=0) -{ - global $conf; - - $list=array(); - - if ($direction == 'sell') - { - $invoicetable='facture'; - $invoicedettable='facturedet'; - $fk_facture='fk_facture'; - $fk_facture2='fk_facture'; - $fk_payment='fk_paiement'; - $total_tva='total_tva'; - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; - $paymenttable='paiement'; - $paymentfacturetable='paiement_facture'; - $invoicefieldref='facnumber'; - $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; - } - if ($direction == 'buy') - { - $invoicetable='facture_fourn'; - $invoicedettable='facture_fourn_det'; - $fk_facture='fk_facture_fourn'; - $fk_facture2='fk_facturefourn'; - $fk_payment='fk_paiementfourn'; - $total_tva='tva'; - $total_localtax1='total_localtax1'; - $total_localtax2='total_localtax2'; - $paymenttable='paiementfourn'; - $paymentfacturetable='paiementfourn_facturefourn'; - $invoicefieldref='ref'; - $localtax_tx=$local==1?'localtax1_tx':'localtax2_tx'; - } - - // BIENS - - // Define sql request - $sql=''; - if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services - { - if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) - { - $sql='TODO'; - } - if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) - { - // Count on delivery date (use invoice date as delivery is unknown) - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx,"; - $sql.= " d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql.= " d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; - else $sql.= " AND f.type IN (0,1,2,3)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - } - } - else // Option vat on delivery for goods (payments) and payments for services - { - if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) - { - $sql='TODO'; - } - if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) - { - // Count on delivery date (use invoice date as delivery is unknown) - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; - else $sql.= " AND f.type IN (0,1,2,3)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 0"; // Limit to products - $sql.= " AND d.date_start is null AND d.date_end IS NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - } - } - - if (! $sql) return -1; - if ($sql == 'TODO') return -2; - if ($sql != 'TODO') - { - dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); - - $resql = $db->query($sql); - if ($resql) - { - $lt=-1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) - { - if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; - if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; - - if ($assoc['rowid'] != $oldrowid) - { - $oldrowid=$assoc['rowid']; - $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; - } - - $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; - $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; - - $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; - $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; - $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); - $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); - - $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; - $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; - $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; - $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; - $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; - - $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; - - $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; - $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; - $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; - - $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; - $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; - - $lt = $assoc['localtax_tx']; - } - } - else - { - dol_print_error($db); - return -3; - } - } - - - //SERVICES - - // Define sql request - $sql=''; - if ($modetax == 1) // Option on delivery for goods (payment) and debit invoice for services - { - if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) - { - $sql='TODO'; - } - if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) - { - // Count on invoice date - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " 0 as payment_id, 0 as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d" ; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; - else $sql.= " AND f.type IN (0,1,2,3)"; - $sql.= " AND f.rowid = d.".$fk_facture; - if ($y && $m) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND f.datef >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND f.datef <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(f.datef,'%m') > ".(($q-1)*3)." AND date_format(f.datef,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture; - } - } - else // Option on delivery for goods (payments) and payments for services - { - if (! empty($conf->global->MAIN_MODULE_ACCOUNTING)) - { - - $sql='TODO'; - } - if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) - { - // Count on payments date - $sql = "SELECT d.rowid, d.product_type as dtype, d.".$fk_facture." as facid, d.tva_tx as rate, d.".$localtax_tx." as localtax_tx, d.total_ht as total_ht, d.total_ttc as total_ttc, d.".$total_tva." as total_vat, d.description as descr,"; - $sql .=" d.".$total_localtax1." as total_localtax1, d.".$total_localtax2." as total_localtax2, "; - $sql.= " d.date_start as date_start, d.date_end as date_end,"; - $sql.= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc,"; - $sql.= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,"; - $sql.= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount"; - $sql.= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,"; - $sql.= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,"; - $sql.= " ".MAIN_DB_PREFIX.$paymenttable." as pa,"; - $sql.= " ".MAIN_DB_PREFIX.$invoicedettable." as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid"; - $sql.= " WHERE f.entity = " . $conf->entity; - $sql.= " AND f.fk_statut in (1,2)"; // Paid (partially or completely) - if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $sql.= " AND f.type IN (0,1,2)"; - else $sql.= " AND f.type IN (0,1,2,3)"; - $sql.= " AND f.rowid = d.".$fk_facture;; - $sql.= " AND pf.".$fk_facture2." = f.rowid"; - $sql.= " AND pa.rowid = pf.".$fk_payment; - if ($y && $m) - { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,$m,false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,$m,false))."'"; - } - else if ($y) - { - $sql.= " AND pa.datep >= '".$db->idate(dol_get_first_day($y,1,false))."'"; - $sql.= " AND pa.datep <= '".$db->idate(dol_get_last_day($y,12,false))."'"; - } - if ($q) $sql.= " AND (date_format(pa.datep,'%m') > ".(($q-1)*3)." AND date_format(pa.datep,'%m') <= ".($q*3).")"; - if ($date_start && $date_end) $sql.= " AND pa.datep >= ".$db->idate($date_start)." AND pa.datep <= ".$db->idate($date_end); - $sql.= " AND (d.product_type = 1"; // Limit to services - $sql.= " OR d.date_start is NOT null OR d.date_end IS NOT NULL)"; // enhance detection of service - $sql.= " ORDER BY d.rowid, d.".$fk_facture.", pf.rowid"; - } - } - - if (! $sql) - { - dol_syslog("Tax.lib.php::vat_by_date no accountancy module enabled".$sql,LOG_ERR); - return -1; // -1 = Not accountancy module enabled - } - if ($sql == 'TODO') return -2; // -2 = Feature not yet available - if ($sql != 'TODO') - { - dol_syslog("Tax.lib.php::vat_by_date sql=".$sql); - $resql = $db->query($sql); - if ($resql) - { - $lt = -1; - $oldrowid=''; - while($assoc = $db->fetch_array($resql)) - { - if (! isset($list[$assoc['localtax_tx']]['totalht'])) $list[$assoc['localtax_tx']]['totalht']=0; - if (! isset($list[$assoc['localtax_tx']]['vat'])) $list[$assoc['localtax_tx']]['vat']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax1'])) $list[$assoc['localtax_tx']]['localtax1']=0; - if (! isset($list[$assoc['localtax_tx']]['localtax2'])) $list[$assoc['localtax_tx']]['localtax2']=0; - - if ($assoc['rowid'] != $oldrowid) - { - $oldrowid=$assoc['rowid']; - $list[$assoc['localtax_tx']]['totalht'] += $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat'] += $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1'] += $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2'] += $assoc['total_localtax2']; - } - - $list[$assoc['localtax_tx']]['localtax1_tx'] = $assoc['localtax1_tx']; - $list[$assoc['localtax_tx']]['localtax2_tx'] = $assoc['localtax2_tx']; - - $list[$assoc['localtax_tx']]['dtotal_ttc'][] = $assoc['total_ttc']; - $list[$assoc['localtax_tx']]['dtype'][] = $assoc['dtype']; - $list[$assoc['localtax_tx']]['ddate_start'][] = $db->jdate($assoc['date_start']); - $list[$assoc['localtax_tx']]['ddate_end'][] = $db->jdate($assoc['date_end']); - - $list[$assoc['localtax_tx']]['facid'][] = $assoc['facid']; - $list[$assoc['localtax_tx']]['facnum'][] = $assoc['facnum']; - $list[$assoc['localtax_tx']]['type'][] = $assoc['type']; - $list[$assoc['localtax_tx']]['ftotal_ttc'][] = $assoc['ftotal_ttc']; - $list[$assoc['localtax_tx']]['descr'][] = $assoc['descr']; - - $list[$assoc['localtax_tx']]['totalht_list'][] = $assoc['total_ht']; - $list[$assoc['localtax_tx']]['vat_list'][] = $assoc['total_vat']; - $list[$assoc['localtax_tx']]['localtax1_list'][] = $assoc['total_localtax1']; - $list[$assoc['localtax_tx']]['localtax2_list'][] = $assoc['total_localtax2']; - - $list[$assoc['localtax_tx']]['pid'][] = $assoc['pid']; - $list[$assoc['localtax_tx']]['pref'][] = $assoc['pref']; - $list[$assoc['localtax_tx']]['ptype'][] = $assoc['ptype']; - - $list[$assoc['localtax_tx']]['payment_id'][] = $assoc['payment_id']; - $list[$assoc['localtax_tx']]['payment_amount'][] = $assoc['payment_amount']; - - $lt = $assoc['localtax_tx']; - } - } - else - { - dol_print_error($db); - return -3; - } - } - - return $list; - - -} - - /** * Gets VAT to collect for the given year (and given quarter or month) * The function gets the VAT in split results, as the VAT declaration asks From b5f7f962cc835d39c8e0faeeaf3b6311b452f581 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 16:05:47 +0200 Subject: [PATCH 200/380] FIX Travis fails --- htdocs/core/modules/import/import_csv.modules.php | 3 ++- htdocs/core/modules/import/import_xlsx.modules.php | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 245f1a15794..895ed6de89d 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -2,7 +2,7 @@ /* Copyright (C) 2006-2012 Laurent Destailleur * Copyright (C) 2009-2012 Regis Houssin * Copyright (C) 2012 Christophe Battarel - * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2012-2016 Juanjo Menent * * 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 @@ -171,6 +171,7 @@ class ImportCsv extends ModeleImports /** * Return nb of records. File must be closed. * + * @param string $file Path of filename * @return int <0 if KO, >=0 if OK */ function import_get_nb_of_lines($file) diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 309e3dd7085..627fcfd6fd9 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -2,7 +2,7 @@ /* Copyright (C) 2006-2012 Laurent Destailleur * Copyright (C) 2009-2012 Regis Houssin * Copyright (C) 2012 Christophe Battarel - * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2012-2016 Juanjo Menent * * 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 @@ -214,7 +214,8 @@ class Importxlsx extends ModeleImports /** * Return nb of records. File must be closed. - * + * + * @param string $file Path of filename * @return int <0 if KO, >=0 if OK */ function import_get_nb_of_lines($file) From f86952dfaa5fef098a89332f23c9d44f1dcd1e15 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 16:57:11 +0200 Subject: [PATCH 201/380] FIX Add missing field fk_shipping_method_id --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 1 + htdocs/install/mysql/tables/llx_societe.sql | 3 ++- 2 files changed, 3 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 8296aa82e74..70cb245c772 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 @@ -382,3 +382,4 @@ ALTER TABLE llx_product_fournisseur_price ADD supplier_reputation varchar(10) NU -- Delete old deprecated field ALTER TABLE llx_product_stock DROP COLUMN pmp; +ALTER TABLE llx_societe ADD COLUMN fk_shipping_method_id integer; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql index 9822272e7c2..e5d6f722d2c 100644 --- a/htdocs/install/mysql/tables/llx_societe.sql +++ b/htdocs/install/mysql/tables/llx_societe.sql @@ -103,5 +103,6 @@ create table llx_societe webservices_key varchar(128), -- supplier webservice key fk_multicurrency integer, - multicurrency_code varchar(255) + multicurrency_code varchar(255), + fk_shipping_method_id integer )ENGINE=innodb; From ecbf5996c1b315cd1f0b63f11972e2094f2317b1 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 15 Apr 2016 17:20:37 +0200 Subject: [PATCH 202/380] FIX #4961 --- htdocs/compta/prelevement/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index 9dd841e0add..58e7840a7ec 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -1,7 +1,7 @@ * Copyright (C) 2005-2010 Laurent Destailleur - * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2010-2016 Juanjo Menent * * 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 @@ -298,7 +298,7 @@ if ($id > 0) $num = $db->num_rows($result); $i = 0; - $urladd = "&id=".$prev_id; + $urladd = "&id=".$id; print_barre_liste("", $page, $_SERVER["PHP_SELF"], $urladd, $sortfield, $sortorder, '', $num); print"\n\n"; From bc949cafd28ef6c216720d345eb0fc5ef2bdfc3b Mon Sep 17 00:00:00 2001 From: appchecker Date: Sat, 16 Apr 2016 13:39:55 +0300 Subject: [PATCH 203/380] fix: comparing instead of assign --- htdocs/theme/md/style.css.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 8997231230f..30188232239 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -120,7 +120,7 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) $conf->global->THEME_ELDY_LINEPAIR1='250,250,250'; $conf->global->THEME_ELDY_LINEPAIR2='248,248,248'; $conf->global->THEME_ELDY_LINEPAIRHOVER='238,246,252'; - $conf->global->THEME_ELDY_USE_HOVER=='238,246,252'; + $conf->global->THEME_ELDY_USE_HOVER='238,246,252'; $conf->global->THEME_ELDY_TEXT='0,0,0'; $conf->global->THEME_ELDY_FONT_SIZE1='13'; $conf->global->THEME_ELDY_FONT_SIZE2='11'; From 567dc1734e2d9374da66fd911c2e811d50ae2225 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 16 Apr 2016 18:15:03 +0200 Subject: [PATCH 204/380] Add Swift Mailer to send mails --- COPYRIGHT | 3 + htdocs/admin/mails.php | 31 +- htdocs/core/class/CMailFile.class.php | 155 ++- htdocs/core/class/smtps.class.php | 5 +- .../swiftmailer/lib/classes/Swift.php | 80 ++ .../lib/classes/Swift/Attachment.php | 71 ++ .../AbstractFilterableInputStream.php | 181 +++ .../Swift/ByteStream/ArrayByteStream.php | 182 +++ .../Swift/ByteStream/FileByteStream.php | 229 ++++ .../ByteStream/TemporaryFileByteStream.php | 42 + .../lib/classes/Swift/CharacterReader.php | 67 ++ .../GenericFixedWidthReader.php | 97 ++ .../Swift/CharacterReader/UsAsciiReader.php | 84 ++ .../Swift/CharacterReader/Utf8Reader.php | 176 +++ .../classes/Swift/CharacterReaderFactory.php | 26 + .../SimpleCharacterReaderFactory.php | 124 ++ .../lib/classes/Swift/CharacterStream.php | 89 ++ .../CharacterStream/ArrayCharacterStream.php | 293 +++++ .../CharacterStream/NgCharacterStream.php | 267 +++++ .../lib/classes/Swift/ConfigurableSpool.php | 63 ++ .../lib/classes/Swift/DependencyContainer.php | 373 ++++++ .../lib/classes/Swift/DependencyException.php | 27 + .../lib/classes/Swift/EmbeddedFile.php | 69 ++ .../swiftmailer/lib/classes/Swift/Encoder.php | 28 + .../classes/Swift/Encoder/Base64Encoder.php | 58 + .../lib/classes/Swift/Encoder/QpEncoder.php | 300 +++++ .../classes/Swift/Encoder/Rfc2231Encoder.php | 92 ++ .../lib/classes/Swift/Encoding.php | 64 ++ .../lib/classes/Swift/Events/CommandEvent.php | 65 ++ .../classes/Swift/Events/CommandListener.php | 24 + .../lib/classes/Swift/Events/Event.php | 38 + .../classes/Swift/Events/EventDispatcher.php | 83 ++ .../classes/Swift/Events/EventListener.php | 18 + .../lib/classes/Swift/Events/EventObject.php | 63 ++ .../classes/Swift/Events/ResponseEvent.php | 65 ++ .../classes/Swift/Events/ResponseListener.php | 24 + .../lib/classes/Swift/Events/SendEvent.php | 129 +++ .../lib/classes/Swift/Events/SendListener.php | 31 + .../Swift/Events/SimpleEventDispatcher.php | 156 +++ .../Swift/Events/TransportChangeEvent.php | 27 + .../Swift/Events/TransportChangeListener.php | 45 + .../Swift/Events/TransportExceptionEvent.php | 46 + .../Events/TransportExceptionListener.php | 24 + .../lib/classes/Swift/FailoverTransport.php | 45 + .../lib/classes/Swift/FileSpool.php | 208 ++++ .../lib/classes/Swift/FileStream.php | 24 + .../lib/classes/Swift/Filterable.php | 32 + .../swiftmailer/lib/classes/Swift/Image.php | 61 + .../lib/classes/Swift/InputByteStream.php | 75 ++ .../lib/classes/Swift/IoException.php | 29 + .../lib/classes/Swift/KeyCache.php | 105 ++ .../classes/Swift/KeyCache/ArrayKeyCache.php | 206 ++++ .../classes/Swift/KeyCache/DiskKeyCache.php | 321 ++++++ .../Swift/KeyCache/KeyCacheInputStream.php | 51 + .../classes/Swift/KeyCache/NullKeyCache.php | 115 ++ .../KeyCache/SimpleKeyCacheInputStream.php | 127 +++ .../classes/Swift/LoadBalancedTransport.php | 45 + .../lib/classes/Swift/MailTransport.php | 45 + .../swiftmailer/lib/classes/Swift/Mailer.php | 114 ++ .../Swift/Mailer/ArrayRecipientIterator.php | 55 + .../Swift/Mailer/RecipientIterator.php | 32 + .../lib/classes/Swift/MemorySpool.php | 84 ++ .../swiftmailer/lib/classes/Swift/Message.php | 291 +++++ .../lib/classes/Swift/Mime/Attachment.php | 149 +++ .../classes/Swift/Mime/CharsetObserver.php | 24 + .../lib/classes/Swift/Mime/ContentEncoder.php | 34 + .../ContentEncoder/Base64ContentEncoder.php | 104 ++ .../ContentEncoder/NativeQpContentEncoder.php | 123 ++ .../ContentEncoder/PlainContentEncoder.php | 162 +++ .../Mime/ContentEncoder/QpContentEncoder.php | 134 +++ .../ContentEncoder/QpContentEncoderProxy.php | 98 ++ .../Mime/ContentEncoder/RawContentEncoder.php | 64 ++ .../lib/classes/Swift/Mime/EmbeddedFile.php | 45 + .../classes/Swift/Mime/EncodingObserver.php | 24 + .../lib/classes/Swift/Mime/Grammar.php | 176 +++ .../lib/classes/Swift/Mime/Header.php | 93 ++ .../lib/classes/Swift/Mime/HeaderEncoder.php | 24 + .../HeaderEncoder/Base64HeaderEncoder.php | 55 + .../Mime/HeaderEncoder/QpHeaderEncoder.php | 65 ++ .../lib/classes/Swift/Mime/HeaderFactory.php | 78 ++ .../lib/classes/Swift/Mime/HeaderSet.php | 169 +++ .../Swift/Mime/Headers/AbstractHeader.php | 503 ++++++++ .../classes/Swift/Mime/Headers/DateHeader.php | 125 ++ .../Mime/Headers/IdentificationHeader.php | 180 +++ .../Swift/Mime/Headers/MailboxHeader.php | 354 ++++++ .../Swift/Mime/Headers/OpenDKIMHeader.php | 137 +++ .../Mime/Headers/ParameterizedHeader.php | 258 +++++ .../classes/Swift/Mime/Headers/PathHeader.php | 143 +++ .../Swift/Mime/Headers/UnstructuredHeader.php | 112 ++ .../lib/classes/Swift/Mime/Message.php | 223 ++++ .../lib/classes/Swift/Mime/MimeEntity.php | 117 ++ .../lib/classes/Swift/Mime/MimePart.php | 212 ++++ .../Swift/Mime/ParameterizedHeader.php | 34 + .../Swift/Mime/SimpleHeaderFactory.php | 193 ++++ .../classes/Swift/Mime/SimpleHeaderSet.php | 397 +++++++ .../lib/classes/Swift/Mime/SimpleMessage.php | 649 +++++++++++ .../classes/Swift/Mime/SimpleMimeEntity.php | 843 ++++++++++++++ .../lib/classes/Swift/MimePart.php | 59 + .../lib/classes/Swift/NullTransport.php | 39 + .../lib/classes/Swift/OutputByteStream.php | 46 + .../classes/Swift/Plugins/AntiFloodPlugin.php | 141 +++ .../Swift/Plugins/BandwidthMonitorPlugin.php | 164 +++ .../Swift/Plugins/Decorator/Replacements.php | 31 + .../classes/Swift/Plugins/DecoratorPlugin.php | 204 ++++ .../Swift/Plugins/ImpersonatePlugin.php | 69 ++ .../lib/classes/Swift/Plugins/Logger.php | 36 + .../classes/Swift/Plugins/LoggerPlugin.php | 142 +++ .../Swift/Plugins/Loggers/ArrayLogger.php | 72 ++ .../Swift/Plugins/Loggers/EchoLogger.php | 58 + .../classes/Swift/Plugins/MessageLogger.php | 74 ++ .../Swift/Plugins/Pop/Pop3Connection.php | 31 + .../Swift/Plugins/Pop/Pop3Exception.php | 27 + .../Swift/Plugins/PopBeforeSmtpPlugin.php | 273 +++++ .../Swift/Plugins/RedirectingPlugin.php | 213 ++++ .../lib/classes/Swift/Plugins/Reporter.php | 32 + .../classes/Swift/Plugins/ReporterPlugin.php | 61 + .../Swift/Plugins/Reporters/HitReporter.php | 59 + .../Swift/Plugins/Reporters/HtmlReporter.php | 39 + .../lib/classes/Swift/Plugins/Sleeper.php | 24 + .../classes/Swift/Plugins/ThrottlerPlugin.php | 200 ++++ .../lib/classes/Swift/Plugins/Timer.php | 24 + .../lib/classes/Swift/Preferences.php | 103 ++ .../Swift/ReplacementFilterFactory.php | 27 + .../classes/Swift/RfcComplianceException.php | 27 + .../lib/classes/Swift/SendmailTransport.php | 45 + .../lib/classes/Swift/SignedMessage.php | 23 + .../swiftmailer/lib/classes/Swift/Signer.php | 20 + .../lib/classes/Swift/Signers/BodySigner.php | 33 + .../lib/classes/Swift/Signers/DKIMSigner.php | 698 ++++++++++++ .../classes/Swift/Signers/DomainKeySigner.php | 525 +++++++++ .../classes/Swift/Signers/HeaderSigner.php | 65 ++ .../classes/Swift/Signers/OpenDKIMSigner.php | 190 ++++ .../lib/classes/Swift/Signers/SMimeSigner.php | 436 +++++++ .../lib/classes/Swift/SmtpTransport.php | 58 + .../swiftmailer/lib/classes/Swift/Spool.php | 53 + .../lib/classes/Swift/SpoolTransport.php | 47 + .../lib/classes/Swift/StreamFilter.php | 35 + .../ByteArrayReplacementFilter.php | 169 +++ .../StreamFilters/StringReplacementFilter.php | 66 ++ .../StringReplacementFilterFactory.php | 45 + .../lib/classes/Swift/SwiftException.php | 29 + .../lib/classes/Swift/Transport.php | 54 + .../Swift/Transport/AbstractSmtpTransport.php | 490 ++++++++ .../Esmtp/Auth/CramMd5Authenticator.php | 81 ++ .../Esmtp/Auth/LoginAuthenticator.php | 51 + .../Esmtp/Auth/NTLMAuthenticator.php | 726 ++++++++++++ .../Esmtp/Auth/PlainAuthenticator.php | 50 + .../Esmtp/Auth/XOAuth2Authenticator.php | 70 ++ .../Swift/Transport/Esmtp/AuthHandler.php | 263 +++++ .../Swift/Transport/Esmtp/Authenticator.php | 35 + .../classes/Swift/Transport/EsmtpHandler.php | 86 ++ .../Swift/Transport/EsmtpTransport.php | 412 +++++++ .../Swift/Transport/FailoverTransport.php | 82 ++ .../lib/classes/Swift/Transport/IoBuffer.php | 67 ++ .../Swift/Transport/LoadBalancedTransport.php | 178 +++ .../classes/Swift/Transport/MailInvoker.php | 32 + .../classes/Swift/Transport/MailTransport.php | 239 ++++ .../classes/Swift/Transport/NullTransport.php | 93 ++ .../Swift/Transport/SendmailTransport.php | 160 +++ .../Swift/Transport/SimpleMailInvoker.php | 39 + .../lib/classes/Swift/Transport/SmtpAgent.php | 36 + .../Swift/Transport/SpoolTransport.php | 117 ++ .../classes/Swift/Transport/StreamBuffer.php | 325 ++++++ .../lib/classes/Swift/TransportException.php | 29 + .../lib/classes/Swift/Validate.php | 43 + .../lib/dependency_maps/cache_deps.php | 23 + .../lib/dependency_maps/message_deps.php | 9 + .../lib/dependency_maps/mime_deps.php | 123 ++ .../lib/dependency_maps/transport_deps.php | 76 ++ .../includes/swiftmailer/lib/mime_types.php | 1007 +++++++++++++++++ .../includes/swiftmailer/lib/preferences.php | 25 + .../includes/swiftmailer/lib/swift_init.php | 28 + .../swiftmailer/lib/swift_required.php | 30 + .../swiftmailer/lib/swift_required_pear.php | 30 + .../lib/swiftmailer_generate_mimes_config.php | 193 ++++ 175 files changed, 22383 insertions(+), 11 deletions(-) create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Attachment.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream/ArrayCharacterStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ConfigurableSpool.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/DependencyContainer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/DependencyException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/EmbeddedFile.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Encoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/Base64Encoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Encoding.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandEvent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/Event.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/EventDispatcher.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/EventListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/EventObject.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/SendEvent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/SendListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/SimpleEventDispatcher.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportExceptionEvent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/FailoverTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/FileSpool.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/FileStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Filterable.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Image.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/InputByteStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/IoException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/ArrayKeyCache.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/NullKeyCache.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/MailTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mailer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/MemorySpool.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Message.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Attachment.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Grammar.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Header.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderSet.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Message.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/MimePart.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/MimePart.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/NullTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/OutputByteStream.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/AntiFloodPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/DecoratorPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Logger.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/LoggerPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Exception.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/PopBeforeSmtpPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ReporterPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ThrottlerPlugin.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Timer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Preferences.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/RfcComplianceException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/SendmailTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/SignedMessage.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/BodySigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/SmtpTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Spool.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/SpoolTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/SwiftException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/MailTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/NullTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SpoolTransport.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/TransportException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Validate.php create mode 100644 htdocs/includes/swiftmailer/lib/dependency_maps/cache_deps.php create mode 100644 htdocs/includes/swiftmailer/lib/dependency_maps/message_deps.php create mode 100644 htdocs/includes/swiftmailer/lib/dependency_maps/mime_deps.php create mode 100644 htdocs/includes/swiftmailer/lib/dependency_maps/transport_deps.php create mode 100644 htdocs/includes/swiftmailer/lib/mime_types.php create mode 100644 htdocs/includes/swiftmailer/lib/preferences.php create mode 100644 htdocs/includes/swiftmailer/lib/swift_init.php create mode 100644 htdocs/includes/swiftmailer/lib/swift_required.php create mode 100644 htdocs/includes/swiftmailer/lib/swift_required_pear.php create mode 100755 htdocs/includes/swiftmailer/lib/swiftmailer_generate_mimes_config.php diff --git a/COPYRIGHT b/COPYRIGHT index 406b936becc..99d5a189f99 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -30,6 +30,7 @@ PHPPrintIPP 1.3 GPL-2+ Yes Restler 3.0 LGPL-3+ Yes Library to develop REST Web services TCPDF 6.2.12 LGPL-3+ Yes PDF generation TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement +Swift Mailer 5.4.2-DEV MIT license Yes Comprehensive mailing tools for PHP JS libraries: jQuery 1.11.3 MIT License Yes JS library @@ -61,6 +62,8 @@ http://www.gnu.org/licenses/licenses.en.html Copyright --------- +Copyright (C) 2016 + Copyright (C) 2015 - Laurent Destailleur - Marcos García diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index 52324dc1678..deaff88f50f 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -259,6 +259,7 @@ $listofmethods=array(); $listofmethods['mail']='PHP mail function'; //$listofmethods['simplemail']='Simplemail class'; $listofmethods['smtps']='SMTP/SMTPS socket library'; +$listofmethods['swiftmailer']='Swift Mailer socket library'; if ($action == 'edit') @@ -313,6 +314,20 @@ if ($action == 'edit') jQuery("#smtp_server_mess").hide(); jQuery("#smtp_port_mess").hide(); } + if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\') + { + jQuery(".drag").show(); + jQuery("#MAIN_MAIL_EMAIL_TLS").val('.$conf->global->MAIN_MAIL_EMAIL_TLS.'); + jQuery("#MAIN_MAIL_EMAIL_TLS").removeAttr("disabled"); + jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val('.$conf->global->MAIN_MAIL_EMAIL_STARTTLS.'); + jQuery("#MAIN_MAIL_EMAIL_STARTTLS").removeAttr("disabled"); + jQuery("#MAIN_MAIL_SMTP_SERVER").removeAttr("disabled"); + jQuery("#MAIN_MAIL_SMTP_PORT").removeAttr("disabled"); + jQuery("#MAIN_MAIL_SMTP_SERVER").show(); + jQuery("#MAIN_MAIL_SMTP_PORT").show(); + jQuery("#smtp_server_mess").hide(); + jQuery("#smtp_port_mess").hide(); + } } initfields(); jQuery("#MAIN_MAIL_SENDMODE").change(function() { @@ -436,7 +451,7 @@ if ($action == 'edit') print ''; // ID - if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps')) + if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smmtps', 'swiftmailer')))) { $var=!$var; $mainstmpid=(! empty($conf->global->MAIN_MAIL_SMTPS_ID)?$conf->global->MAIN_MAIL_SMTPS_ID:''); @@ -456,7 +471,7 @@ if ($action == 'edit') } // PW - if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps')) + if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { $var=!$var; $mainsmtppw=(! empty($conf->global->MAIN_MAIL_SMTPS_PW)?$conf->global->MAIN_MAIL_SMTPS_PW:''); @@ -478,7 +493,7 @@ if ($action == 'edit') // TLS $var=!$var; print ''; } // SMTPS PW $var=!$var; - if (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps') + if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { print ''; } @@ -596,7 +611,7 @@ else // TLS $var=!$var; print ''; + print ''; print ''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 64813c56f1d..e2883081452 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -540,7 +540,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index 37b6ebdc3eb..fa1341dcbc6 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -449,14 +449,14 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; print ''; print ''; - print ''; + print ''; dol_fiche_head(); print '
    '.$langs->trans("MAIN_MAIL_EMAIL_TLS").''; - if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps')) + if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { if (function_exists('openssl_open')) { @@ -492,7 +507,7 @@ if ($action == 'edit') // STARTTLS $var=!$var; print '
    '.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").''; - if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps')) + if (! empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { if (function_exists('openssl_open')) { @@ -581,14 +596,14 @@ else // SMTPS ID $var=!$var; - if (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps') + if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { print '
    '.$langs->trans("MAIN_MAIL_SMTPS_ID").''.$conf->global->MAIN_MAIL_SMTPS_ID.'
    '.$langs->trans("MAIN_MAIL_SMTPS_PW").''.preg_replace('/./','*',$conf->global->MAIN_MAIL_SMTPS_PW).'
    '.$langs->trans("MAIN_MAIL_EMAIL_TLS").''; - if (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps') + if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { if (function_exists('openssl_open')) { @@ -610,7 +625,7 @@ else // STARTTLS $var=!$var; print '
    '.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").''; - if (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'smtps') + if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { if (function_exists('openssl_open')) { diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 5fb15ef1ec1..44e61b3f219 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -352,6 +352,80 @@ class CMailFile $this->phpmailer->setErrorsTo($errors_to); $this->phpmailer->setDeliveryReceipt($deliveryreceipt); } + else if ($conf->global->MAIN_MAIL_SENDMODE == 'swiftmailer') + { + // Use Swift Mailer library + // ------------------------------------------ + + require_once DOL_DOCUMENT_ROOT.'/includes/swiftmailer/lib/swift_required.php'; + // Create the message + $this->message = Swift_Message::newInstance(); + + // Give the message a subject + $this->message->setSubject($this->encodetorfc2822($subject)); + + // Set the From address with an associative array + //$this->message->setFrom(array('john@doe.com' => 'John Doe')); + $this->message->setFrom($this->getArrayAddress($from)); + + // Set the To addresses with an associative array + $this->message->setTo($this->getArrayAddress($to)); + + $this->message->SetReplyTo($this->getArrayAddress($from)); + + $this->message->setCharSet($conf->file->character_set_client); + + // TODO Add trackid into smtp header + + if (! empty($this->html)) + { + if (!empty($css)) + { + $this->css = $css; + $this->buildCSS(); + } + $msg = $this->html; + $msg = $this->checkIfHTML($msg); + } + + if ($this->msgishtml) { + $this->message->setBody($msg,'text/html'); + // And optionally an alternative body + //$this->message->addPart('Here is the message itself', 'text/plain'); + } else { + $this->message->setBody($msg,'text/plain'); + // And optionally an alternative body + //$this->message->addPart('Here is the message itself', 'text/html'); + } + + if ($this->atleastoneimage) + { + foreach ($this->images_encoded as $img) + { + //$img['fullpath'],$img['image_encoded'],$img['name'],$img['content_type'],$img['cid'] + // TODO this part is not tested + //$attachment = Swift_Attachment::fromPath($img['fullpath'], 'image/jpeg'); + //$attachment->setFilename($img['name']); + //$attachment->setDisposition('inline'); + //$message->attach($attachment); + } + } + + if ($this->atleastonefile) + { + foreach ($filename_list as $i => $val) + { + //$this->message->attach(Swift_Attachment::fromPath($filename_list[$i],$mimetype_list[$i])); + $attachment = Swift_Attachment::fromPath($filename_list[$i],$mimetype_list[$i]); + $this->message->attach($attachment); + } + } + + if (! empty($addr_cc)) $this->message->setCc($this->getArrayAddress($addr_cc)); + if (! empty($addr_bcc)) $this->message->setBcc($this->getArrayAddress($addr_bcc)); + //if (! empty($errors_to)) $this->message->setErrorsTo($this->getArrayAddress($errors_to); + if (isset($this->deliveryreceipt) && $this->deliveryreceipt == 1) $this->message->setReadReceiptTo($this->getArrayAddress($from)); + } else { // Send mail method not correctly defined @@ -392,7 +466,7 @@ class CMailFile return $reshook; } - + // Action according to choosed sending method if ($conf->global->MAIN_MAIL_SENDMODE == 'mail') { @@ -427,7 +501,7 @@ class CMailFile if (! empty($conf->global->MAIN_MAIL_ALLOW_SENDMAIL_F)) { // le "Return-Path" (retour des messages bounced) dans les header ne fonctionne pas avec tous les MTA - // Le forcage de la valeure grace à l'option -f de sendmail est donc possible si la constante MAIN_MAIL_ALLOW_SENDMAIL_F est definie. + // Le forcage de la valeur grace à l'option -f de sendmail est donc possible si la constante MAIN_MAIL_ALLOW_SENDMAIL_F est definie. // La variable definie pose des pb avec certains sendmail securisee (option -f refusee car dangereuse) $bounce .= ($bounce?' ':'').(! empty($conf->global->MAIN_MAIL_ERRORS_TO) ? '-f' . $this->getValidAddress($conf->global->MAIN_MAIL_ERRORS_TO,2) : ($this->addr_from != '' ? '-f' . $this->getValidAddress($this->addr_from,2) : '') ); } @@ -527,6 +601,49 @@ class CMailFile } } } + else if ($conf->global->MAIN_MAIL_SENDMODE == 'swiftmailer') + { + + // Use Swift Mailer library + // ------------------------------------------ + require_once DOL_DOCUMENT_ROOT.'/includes/swiftmailer/lib/swift_required.php'; + + // Forcage parametres + if (empty($conf->global->MAIN_MAIL_SMTP_SERVER)) $conf->global->MAIN_MAIL_SMTP_SERVER=ini_get('SMTP'); + if (empty($conf->global->MAIN_MAIL_SMTP_PORT)) $conf->global->MAIN_MAIL_SMTP_PORT=ini_get('smtp_port'); + + // If we use SSL/TLS + $server=$conf->global->MAIN_MAIL_SMTP_SERVER; + $secure=''; + //var_dump(stream_get_transports()); + if (! empty($conf->global->MAIN_MAIL_EMAIL_TLS) && function_exists('openssl_open')) $secure='ssl'; + if (! empty($conf->global->MAIN_MAIL_EMAIL_STARTTLS) && function_exists('openssl_open')) $secure='tls'; + + $this->transport = Swift_SmtpTransport::newInstance($server, $conf->global->MAIN_MAIL_SMTP_PORT, $secure); + + if (! empty($conf->global->MAIN_MAIL_SMTPS_ID)) $this->transport->setUsername($conf->global->MAIN_MAIL_SMTPS_ID); + if (! empty($conf->global->MAIN_MAIL_SMTPS_PW)) $this->transport->setPassword($conf->global->MAIN_MAIL_SMTPS_PW); + //$smtps->_msgReplyTo = 'reply@web.com'; + + // Create the Mailer using your created Transport + $this->mailer = Swift_Mailer::newInstance($this->transport); + + //if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->mailer->setDebug(true); + try { + $result = $this->mailer->send($this->message); + } catch (Exception $e) { + $this->error = $e->getMessage(); + } + //if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->dump_mail(); + + $res = true; + if (! empty($this->error) && ! $result) { + dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR); + $res=false; + } else { + $this->error = sprintf ("Sent %d messages\n", $result); + } + } else { @@ -1127,5 +1244,39 @@ class CMailFile return $ret; } + + /** + * Return a formatted array of address string for SMTP protocol + * + * @param string $address Example: 'John Doe , Alan Smith ' or 'john@doe.com, alan@smith.com' + * @return array array of email => name + */ + function getArrayAddress($address) + { + global $conf; + + $ret=array(); + + $arrayaddress=explode(',',$address); + + // Boucle sur chaque composant de l'adresse + foreach($arrayaddress as $val) + { + if (preg_match('/^(.*)<(.*)>$/i',trim($val),$regs)) + { + $name = trim($regs[1]); + $email = trim($regs[2]); + } + else + { + $name = null; + $email = trim($val); + } + + $ret[$email]=empty($conf->global->MAIN_MAIL_NO_FULL_EMAIL)?$name:null; + } + + return $ret; + } } diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index b784577bce3..83e30a05413 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -1607,14 +1607,17 @@ class SMTPs $_retVal = true; $server_response = ''; + // avoid infinite loop + $limit=0; - while ( substr($server_response,3,1) != ' ' ) + while ( substr($server_response,3,1) != ' ' && $limit<100) { if( !( $server_response = fgets($socket, 256) ) ) { $this->_setErr(121, "Couldn't get mail server response codes"); $_retVal = false; } + $limit++; } if( !( substr($server_response, 0, 3) == $response ) ) diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift.php b/htdocs/includes/swiftmailer/lib/classes/Swift.php new file mode 100644 index 00000000000..72419b334b7 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift.php @@ -0,0 +1,80 @@ +createDependenciesFor('mime.attachment') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) { + $this->setContentType($contentType); + } + } + + /** + * Create a new Attachment. + * + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * + * @return Swift_Mime_Attachment + */ + public static function newInstance($data = null, $filename = null, $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new Attachment from a filesystem path. + * + * @param string $path + * @param string $contentType optional + * + * @return Swift_Mime_Attachment + */ + public static function fromPath($path, $contentType = null) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path), + $contentType + ); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php new file mode 100644 index 00000000000..a7b0e3a6207 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php @@ -0,0 +1,181 @@ +_filters[$key] = $filter; + } + + /** + * Remove an already present StreamFilter based on its $key. + * + * @param string $key + */ + public function removeFilter($key) + { + unset($this->_filters[$key]); + } + + /** + * Writes $bytes to the end of the stream. + * + * @param string $bytes + * + * @throws Swift_IoException + * + * @return int + */ + public function write($bytes) + { + $this->_writeBuffer .= $bytes; + foreach ($this->_filters as $filter) { + if ($filter->shouldBuffer($this->_writeBuffer)) { + return; + } + } + $this->_doWrite($this->_writeBuffer); + + return ++$this->_sequence; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + $this->_doWrite($this->_writeBuffer); + } + + /** + * Attach $is to this stream. + * + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) { + if ($is === $stream) { + if ($this->_writeBuffer !== '') { + $stream->write($this->_writeBuffer); + } + unset($this->_mirrors[$k]); + } + } + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * + * @throws Swift_IoException + */ + public function flushBuffers() + { + if ($this->_writeBuffer !== '') { + $this->_doWrite($this->_writeBuffer); + } + $this->_flush(); + + foreach ($this->_mirrors as $stream) { + $stream->flushBuffers(); + } + } + + /** Run $bytes through all filters */ + private function _filter($bytes) + { + foreach ($this->_filters as $filter) { + $bytes = $filter->filter($bytes); + } + + return $bytes; + } + + /** Just write the bytes to the stream */ + private function _doWrite($bytes) + { + $this->_commit($this->_filter($bytes)); + + foreach ($this->_mirrors as $stream) { + $stream->write($bytes); + } + + $this->_writeBuffer = ''; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php new file mode 100644 index 00000000000..ef05a6d5e6e --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php @@ -0,0 +1,182 @@ +_array = $stack; + $this->_arraySize = count($stack); + } elseif (is_string($stack)) { + $this->write($stack); + } else { + $this->_array = array(); + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. + * + * If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * + * @param int $length + * + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_arraySize) { + return false; + } + + // Don't use array slice + $end = $length + $this->_offset; + $end = $this->_arraySize < $end ? $this->_arraySize : $end; + $ret = ''; + for (; $this->_offset < $end; ++$this->_offset) { + $ret .= $this->_array[$this->_offset]; + } + + return $ret; + } + + /** + * Writes $bytes to the end of the stream. + * + * @param string $bytes + */ + public function write($bytes) + { + $to_add = str_split($bytes); + foreach ($to_add as $value) { + $this->_array[] = $value; + } + $this->_arraySize = count($this->_array); + + foreach ($this->_mirrors as $stream) { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) { + if ($is === $stream) { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * + * @param int $byteOffset + * + * @return bool + */ + public function setReadPointer($byteOffset) + { + if ($byteOffset > $this->_arraySize) { + $byteOffset = $this->_arraySize; + } elseif ($byteOffset < 0) { + $byteOffset = 0; + } + + $this->_offset = $byteOffset; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_offset = 0; + $this->_array = array(); + $this->_arraySize = 0; + + foreach ($this->_mirrors as $stream) { + $stream->flushBuffers(); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php new file mode 100644 index 00000000000..406104371e8 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php @@ -0,0 +1,229 @@ +_path = $path; + $this->_mode = $writable ? 'w+b' : 'rb'; + + if (function_exists('get_magic_quotes_runtime') && @get_magic_quotes_runtime() == 1) { + $this->_quotes = true; + } + } + + /** + * Get the complete path to the file. + * + * @return string + */ + public function getPath() + { + return $this->_path; + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. + * + * If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * + * @param int $length + * + * @throws Swift_IoException + * + * @return string|bool + */ + public function read($length) + { + $fp = $this->_getReadHandle(); + if (!feof($fp)) { + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 0); + } + $bytes = fread($fp, $length); + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 1); + } + $this->_offset = ftell($fp); + + // If we read one byte after reaching the end of the file + // feof() will return false and an empty string is returned + if ($bytes === '' && feof($fp)) { + $this->_resetReadHandle(); + + return false; + } + + return $bytes; + } + + $this->_resetReadHandle(); + + return false; + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * + * @param int $byteOffset + * + * @return bool + */ + public function setReadPointer($byteOffset) + { + if (isset($this->_reader)) { + $this->_seekReadStreamToPosition($byteOffset); + } + $this->_offset = $byteOffset; + } + + /** Just write the bytes to the file */ + protected function _commit($bytes) + { + fwrite($this->_getWriteHandle(), $bytes); + $this->_resetReadHandle(); + } + + /** Not used */ + protected function _flush() + { + } + + /** Get the resource for reading */ + private function _getReadHandle() + { + if (!isset($this->_reader)) { + if (!$this->_reader = fopen($this->_path, 'rb')) { + throw new Swift_IoException( + 'Unable to open file for reading ['.$this->_path.']' + ); + } + if ($this->_offset != 0) { + $this->_getReadStreamSeekableStatus(); + $this->_seekReadStreamToPosition($this->_offset); + } + } + + return $this->_reader; + } + + /** Get the resource for writing */ + private function _getWriteHandle() + { + if (!isset($this->_writer)) { + if (!$this->_writer = fopen($this->_path, $this->_mode)) { + throw new Swift_IoException( + 'Unable to open file for writing ['.$this->_path.']' + ); + } + } + + return $this->_writer; + } + + /** Force a reload of the resource for reading */ + private function _resetReadHandle() + { + if (isset($this->_reader)) { + fclose($this->_reader); + $this->_reader = null; + } + } + + /** Check if ReadOnly Stream is seekable */ + private function _getReadStreamSeekableStatus() + { + $metas = stream_get_meta_data($this->_reader); + $this->_seekable = $metas['seekable']; + } + + /** Streams in a readOnly stream ensuring copy if needed */ + private function _seekReadStreamToPosition($offset) + { + if ($this->_seekable === null) { + $this->_getReadStreamSeekableStatus(); + } + if ($this->_seekable === false) { + $currentPos = ftell($this->_reader); + if ($currentPos < $offset) { + $toDiscard = $offset - $currentPos; + fread($this->_reader, $toDiscard); + + return; + } + $this->_copyReadStream(); + } + fseek($this->_reader, $offset, SEEK_SET); + } + + /** Copy a readOnly Stream to ensure seekability */ + private function _copyReadStream() + { + if ($tmpFile = fopen('php://temp/maxmemory:4096', 'w+b')) { + /* We have opened a php:// Stream Should work without problem */ + } elseif (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir()) && ($tmpFile = tmpfile())) { + /* We have opened a tmpfile */ + } else { + throw new Swift_IoException('Unable to copy the file to make it seekable, sys_temp_dir is not writable, php://memory not available'); + } + $currentPos = ftell($this->_reader); + fclose($this->_reader); + $source = fopen($this->_path, 'rb'); + if (!$source) { + throw new Swift_IoException('Unable to open file for copying ['.$this->_path.']'); + } + fseek($tmpFile, 0, SEEK_SET); + while (!feof($source)) { + fwrite($tmpFile, fread($source, 4096)); + } + fseek($tmpFile, $currentPos, SEEK_SET); + fclose($source); + $this->_reader = $tmpFile; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php new file mode 100644 index 00000000000..1c9a80c0376 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php @@ -0,0 +1,42 @@ +getPath())) === false) { + throw new Swift_IoException('Failed to get temporary file content.'); + } + + return $content; + } + + public function __destruct() + { + if (file_exists($this->getPath())) { + @unlink($this->getPath()); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader.php new file mode 100644 index 00000000000..3d5e854a884 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader.php @@ -0,0 +1,67 @@ + + */ +interface Swift_CharacterReader +{ + const MAP_TYPE_INVALID = 0x01; + const MAP_TYPE_FIXED_LEN = 0x02; + const MAP_TYPE_POSITIONS = 0x03; + + /** + * Returns the complete character map. + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); + + /** + * Returns the mapType, see constants. + * + * @return int + */ + public function getMapType(); + + /** + * Returns an integer which specifies how many more bytes to read. + * + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * + * @param integer[] $bytes + * @param int $size + * + * @return int + */ + public function validateByteSequence($bytes, $size); + + /** + * Returns the number of bytes which should be read to start each character. + * + * For fixed width character sets this should be the number of octets-per-character. + * For multibyte character sets this will probably be 1. + * + * @return int + */ + public function getInitialByteSize(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php new file mode 100644 index 00000000000..ab8ebfda708 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php @@ -0,0 +1,97 @@ + + */ +class Swift_CharacterReader_GenericFixedWidthReader implements Swift_CharacterReader +{ + /** + * The number of bytes in a single character. + * + * @var int + */ + private $_width; + + /** + * Creates a new GenericFixedWidthReader using $width bytes per character. + * + * @param int $width + */ + public function __construct($width) + { + $this->_width = $width; + } + + /** + * Returns the complete character map. + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + $strlen = strlen($string); + // % and / are CPU intensive, so, maybe find a better way + $ignored = $strlen % $this->_width; + $ignoredChars = substr($string, -$ignored); + $currentMap = $this->_width; + + return ($strlen - $ignored) / $this->_width; + } + + /** + * Returns the mapType. + * + * @return int + */ + public function getMapType() + { + return self::MAP_TYPE_FIXED_LEN; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * + * @param string $bytes + * @param int $size + * + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $needed = $this->_width - $size; + + return $needed > -1 ? $needed : -1; + } + + /** + * Returns the number of bytes which should be read to start each character. + * + * @return int + */ + public function getInitialByteSize() + { + return $this->_width; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php new file mode 100644 index 00000000000..67da48f6cb0 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php @@ -0,0 +1,84 @@ + "\x07F") { + // Invalid char + $currentMap[$i + $startOffset] = $string[$i]; + } + } + + return $strlen; + } + + /** + * Returns mapType. + * + * @return int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_INVALID; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * + * @param string $bytes + * @param int $size + * + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $byte = reset($bytes); + if (1 == count($bytes) && $byte >= 0x00 && $byte <= 0x7F) { + return 0; + } + + return -1; + } + + /** + * Returns the number of bytes which should be read to start each character. + * + * @return int + */ + public function getInitialByteSize() + { + return 1; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php new file mode 100644 index 00000000000..7379bda258f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php @@ -0,0 +1,176 @@ + + */ +class Swift_CharacterReader_Utf8Reader implements Swift_CharacterReader +{ + /** Pre-computed for optimization */ + private static $length_map = array( + // N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x0N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x1N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x2N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x3N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x4N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x5N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x6N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0x7N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0x8N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0x9N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0xAN + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 0xBN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // 0xCN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // 0xDN + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, // 0xEN + 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0, // 0xFN + ); + + private static $s_length_map = array( + "\x00" => 1, "\x01" => 1, "\x02" => 1, "\x03" => 1, "\x04" => 1, "\x05" => 1, "\x06" => 1, "\x07" => 1, + "\x08" => 1, "\x09" => 1, "\x0a" => 1, "\x0b" => 1, "\x0c" => 1, "\x0d" => 1, "\x0e" => 1, "\x0f" => 1, + "\x10" => 1, "\x11" => 1, "\x12" => 1, "\x13" => 1, "\x14" => 1, "\x15" => 1, "\x16" => 1, "\x17" => 1, + "\x18" => 1, "\x19" => 1, "\x1a" => 1, "\x1b" => 1, "\x1c" => 1, "\x1d" => 1, "\x1e" => 1, "\x1f" => 1, + "\x20" => 1, "\x21" => 1, "\x22" => 1, "\x23" => 1, "\x24" => 1, "\x25" => 1, "\x26" => 1, "\x27" => 1, + "\x28" => 1, "\x29" => 1, "\x2a" => 1, "\x2b" => 1, "\x2c" => 1, "\x2d" => 1, "\x2e" => 1, "\x2f" => 1, + "\x30" => 1, "\x31" => 1, "\x32" => 1, "\x33" => 1, "\x34" => 1, "\x35" => 1, "\x36" => 1, "\x37" => 1, + "\x38" => 1, "\x39" => 1, "\x3a" => 1, "\x3b" => 1, "\x3c" => 1, "\x3d" => 1, "\x3e" => 1, "\x3f" => 1, + "\x40" => 1, "\x41" => 1, "\x42" => 1, "\x43" => 1, "\x44" => 1, "\x45" => 1, "\x46" => 1, "\x47" => 1, + "\x48" => 1, "\x49" => 1, "\x4a" => 1, "\x4b" => 1, "\x4c" => 1, "\x4d" => 1, "\x4e" => 1, "\x4f" => 1, + "\x50" => 1, "\x51" => 1, "\x52" => 1, "\x53" => 1, "\x54" => 1, "\x55" => 1, "\x56" => 1, "\x57" => 1, + "\x58" => 1, "\x59" => 1, "\x5a" => 1, "\x5b" => 1, "\x5c" => 1, "\x5d" => 1, "\x5e" => 1, "\x5f" => 1, + "\x60" => 1, "\x61" => 1, "\x62" => 1, "\x63" => 1, "\x64" => 1, "\x65" => 1, "\x66" => 1, "\x67" => 1, + "\x68" => 1, "\x69" => 1, "\x6a" => 1, "\x6b" => 1, "\x6c" => 1, "\x6d" => 1, "\x6e" => 1, "\x6f" => 1, + "\x70" => 1, "\x71" => 1, "\x72" => 1, "\x73" => 1, "\x74" => 1, "\x75" => 1, "\x76" => 1, "\x77" => 1, + "\x78" => 1, "\x79" => 1, "\x7a" => 1, "\x7b" => 1, "\x7c" => 1, "\x7d" => 1, "\x7e" => 1, "\x7f" => 1, + "\x80" => 0, "\x81" => 0, "\x82" => 0, "\x83" => 0, "\x84" => 0, "\x85" => 0, "\x86" => 0, "\x87" => 0, + "\x88" => 0, "\x89" => 0, "\x8a" => 0, "\x8b" => 0, "\x8c" => 0, "\x8d" => 0, "\x8e" => 0, "\x8f" => 0, + "\x90" => 0, "\x91" => 0, "\x92" => 0, "\x93" => 0, "\x94" => 0, "\x95" => 0, "\x96" => 0, "\x97" => 0, + "\x98" => 0, "\x99" => 0, "\x9a" => 0, "\x9b" => 0, "\x9c" => 0, "\x9d" => 0, "\x9e" => 0, "\x9f" => 0, + "\xa0" => 0, "\xa1" => 0, "\xa2" => 0, "\xa3" => 0, "\xa4" => 0, "\xa5" => 0, "\xa6" => 0, "\xa7" => 0, + "\xa8" => 0, "\xa9" => 0, "\xaa" => 0, "\xab" => 0, "\xac" => 0, "\xad" => 0, "\xae" => 0, "\xaf" => 0, + "\xb0" => 0, "\xb1" => 0, "\xb2" => 0, "\xb3" => 0, "\xb4" => 0, "\xb5" => 0, "\xb6" => 0, "\xb7" => 0, + "\xb8" => 0, "\xb9" => 0, "\xba" => 0, "\xbb" => 0, "\xbc" => 0, "\xbd" => 0, "\xbe" => 0, "\xbf" => 0, + "\xc0" => 2, "\xc1" => 2, "\xc2" => 2, "\xc3" => 2, "\xc4" => 2, "\xc5" => 2, "\xc6" => 2, "\xc7" => 2, + "\xc8" => 2, "\xc9" => 2, "\xca" => 2, "\xcb" => 2, "\xcc" => 2, "\xcd" => 2, "\xce" => 2, "\xcf" => 2, + "\xd0" => 2, "\xd1" => 2, "\xd2" => 2, "\xd3" => 2, "\xd4" => 2, "\xd5" => 2, "\xd6" => 2, "\xd7" => 2, + "\xd8" => 2, "\xd9" => 2, "\xda" => 2, "\xdb" => 2, "\xdc" => 2, "\xdd" => 2, "\xde" => 2, "\xdf" => 2, + "\xe0" => 3, "\xe1" => 3, "\xe2" => 3, "\xe3" => 3, "\xe4" => 3, "\xe5" => 3, "\xe6" => 3, "\xe7" => 3, + "\xe8" => 3, "\xe9" => 3, "\xea" => 3, "\xeb" => 3, "\xec" => 3, "\xed" => 3, "\xee" => 3, "\xef" => 3, + "\xf0" => 4, "\xf1" => 4, "\xf2" => 4, "\xf3" => 4, "\xf4" => 4, "\xf5" => 4, "\xf6" => 4, "\xf7" => 4, + "\xf8" => 5, "\xf9" => 5, "\xfa" => 5, "\xfb" => 5, "\xfc" => 6, "\xfd" => 6, "\xfe" => 0, "\xff" => 0, + ); + + /** + * Returns the complete character map. + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + if (!isset($currentMap['i']) || !isset($currentMap['p'])) { + $currentMap['p'] = $currentMap['i'] = array(); + } + + $strlen = strlen($string); + $charPos = count($currentMap['p']); + $foundChars = 0; + $invalid = false; + for ($i = 0; $i < $strlen; ++$i) { + $char = $string[$i]; + $size = self::$s_length_map[$char]; + if ($size == 0) { + /* char is invalid, we must wait for a resync */ + $invalid = true; + continue; + } else { + if ($invalid == true) { + /* We mark the chars as invalid and start a new char */ + $currentMap['p'][$charPos + $foundChars] = $startOffset + $i; + $currentMap['i'][$charPos + $foundChars] = true; + ++$foundChars; + $invalid = false; + } + if (($i + $size) > $strlen) { + $ignoredChars = substr($string, $i); + break; + } + for ($j = 1; $j < $size; ++$j) { + $char = $string[$i + $j]; + if ($char > "\x7F" && $char < "\xC0") { + // Valid - continue parsing + } else { + /* char is invalid, we must wait for a resync */ + $invalid = true; + continue 2; + } + } + /* Ok we got a complete char here */ + $currentMap['p'][$charPos + $foundChars] = $startOffset + $i + $size; + $i += $j - 1; + ++$foundChars; + } + } + + return $foundChars; + } + + /** + * Returns mapType. + * + * @return int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_POSITIONS; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * + * @param string $bytes + * @param int $size + * + * @return int + */ + public function validateByteSequence($bytes, $size) + { + if ($size < 1) { + return -1; + } + $needed = self::$length_map[$bytes[0]] - $size; + + return $needed > -1 ? $needed : -1; + } + + /** + * Returns the number of bytes which should be read to start each character. + * + * @return int + */ + public function getInitialByteSize() + { + return 1; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php new file mode 100644 index 00000000000..15b6c6920f4 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php @@ -0,0 +1,26 @@ +init(); + } + + public function __wakeup() + { + $this->init(); + } + + public function init() + { + if (count(self::$_map) > 0) { + return; + } + + $prefix = 'Swift_CharacterReader_'; + + $singleByte = array( + 'class' => $prefix.'GenericFixedWidthReader', + 'constructor' => array(1), + ); + + $doubleByte = array( + 'class' => $prefix.'GenericFixedWidthReader', + 'constructor' => array(2), + ); + + $fourBytes = array( + 'class' => $prefix.'GenericFixedWidthReader', + 'constructor' => array(4), + ); + + // Utf-8 + self::$_map['utf-?8'] = array( + 'class' => $prefix.'Utf8Reader', + 'constructor' => array(), + ); + + //7-8 bit charsets + self::$_map['(us-)?ascii'] = $singleByte; + self::$_map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; + self::$_map['windows-?125[0-9]'] = $singleByte; + self::$_map['cp-?[0-9]+'] = $singleByte; + self::$_map['ansi'] = $singleByte; + self::$_map['macintosh'] = $singleByte; + self::$_map['koi-?7'] = $singleByte; + self::$_map['koi-?8-?.+'] = $singleByte; + self::$_map['mik'] = $singleByte; + self::$_map['(cork|t1)'] = $singleByte; + self::$_map['v?iscii'] = $singleByte; + + //16 bits + self::$_map['(ucs-?2|utf-?16)'] = $doubleByte; + + //32 bits + self::$_map['(ucs-?4|utf-?32)'] = $fourBytes; + + // Fallback + self::$_map['.*'] = $singleByte; + } + + /** + * Returns a CharacterReader suitable for the charset applied. + * + * @param string $charset + * + * @return Swift_CharacterReader + */ + public function getReaderFor($charset) + { + $charset = trim(strtolower($charset)); + foreach (self::$_map as $pattern => $spec) { + $re = '/^'.$pattern.'$/D'; + if (preg_match($re, $charset)) { + if (!array_key_exists($pattern, self::$_loaded)) { + $reflector = new ReflectionClass($spec['class']); + if ($reflector->getConstructor()) { + $reader = $reflector->newInstanceArgs($spec['constructor']); + } else { + $reader = $reflector->newInstance(); + } + self::$_loaded[$pattern] = $reader; + } + + return self::$_loaded[$pattern]; + } + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream.php new file mode 100644 index 00000000000..717924f5d63 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream.php @@ -0,0 +1,89 @@ +setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /** + * Set the character set used in this CharacterStream. + * + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory(Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * Overwrite this character stream using the byte sequence in the byte stream. + * + * @param Swift_OutputByteStream $os output stream to read from + */ + public function importByteStream(Swift_OutputByteStream $os) + { + if (!isset($this->_charReader)) { + $this->_charReader = $this->_charReaderFactory + ->getReaderFor($this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + while (false !== $bytes = $os->read($startLength)) { + $c = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) { + $c[] = self::$_byteMap[$bytes[$i]]; + } + $size = count($c); + $need = $this->_charReader + ->validateByteSequence($c, $size); + if ($need > 0 && + false !== $bytes = $os->read($need)) { + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) { + $c[] = self::$_byteMap[$bytes[$i]]; + } + } + $this->_array[] = $c; + ++$this->_array_size; + } + } + + /** + * Import a string a bytes into this CharacterStream, overwriting any existing + * data in the stream. + * + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * Read $length characters from the stream and move the internal pointer + * $length further into the stream. + * + * @param int $length + * + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_array_size) { + return false; + } + + // Don't use array slice + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) { + if (!isset($this->_array[$i])) { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += $i - $this->_offset; // Limit function calls + $chars = false; + foreach ($arrays as $array) { + $chars .= implode('', array_map('chr', $array)); + } + + return $chars; + } + + /** + * Read $length characters from the stream and return a 1-dimensional array + * containing there octet values. + * + * @param int $length + * + * @return integer[] + */ + public function readBytes($length) + { + if ($this->_offset == $this->_array_size) { + return false; + } + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) { + if (!isset($this->_array[$i])) { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += ($i - $this->_offset); // Limit function calls + + return call_user_func_array('array_merge', $arrays); + } + + /** + * Write $chars to the end of the stream. + * + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + + $fp = fopen('php://memory', 'w+b'); + fwrite($fp, $chars); + unset($chars); + fseek($fp, 0, SEEK_SET); + + $buffer = array(0); + $buf_pos = 1; + $buf_len = 1; + $has_datas = true; + do { + $bytes = array(); + // Buffer Filing + if ($buf_len - $buf_pos < $startLength) { + $buf = array_splice($buffer, $buf_pos); + $new = $this->_reloadBuffer($fp, 100); + if ($new) { + $buffer = array_merge($buf, $new); + $buf_len = count($buffer); + $buf_pos = 0; + } else { + $has_datas = false; + } + } + if ($buf_len - $buf_pos > 0) { + $size = 0; + for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) { + ++$size; + $bytes[] = $buffer[$buf_pos++]; + } + $need = $this->_charReader->validateByteSequence( + $bytes, $size); + if ($need > 0) { + if ($buf_len - $buf_pos < $need) { + $new = $this->_reloadBuffer($fp, $need); + + if ($new) { + $buffer = array_merge($buffer, $new); + $buf_len = count($buffer); + } + } + for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) { + $bytes[] = $buffer[$buf_pos++]; + } + } + $this->_array[] = $bytes; + ++$this->_array_size; + } + } while ($has_datas); + + fclose($fp); + } + + /** + * Move the internal pointer to $charOffset in the stream. + * + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($charOffset > $this->_array_size) { + $charOffset = $this->_array_size; + } elseif ($charOffset < 0) { + $charOffset = 0; + } + $this->_offset = $charOffset; + } + + /** + * Empty the stream and reset the internal pointer. + */ + public function flushContents() + { + $this->_offset = 0; + $this->_array = array(); + $this->_array_size = 0; + } + + private function _reloadBuffer($fp, $len) + { + if (!feof($fp) && ($bytes = fread($fp, $len)) !== false) { + $buf = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) { + $buf[] = self::$_byteMap[$bytes[$i]]; + } + + return $buf; + } + + return false; + } + + private static function _initializeMaps() + { + if (!isset(self::$_charMap)) { + self::$_charMap = array(); + for ($byte = 0; $byte < 256; ++$byte) { + self::$_charMap[$byte] = chr($byte); + } + self::$_byteMap = array_flip(self::$_charMap); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php new file mode 100644 index 00000000000..1e8e2899672 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php @@ -0,0 +1,267 @@ + + */ +class Swift_CharacterStream_NgCharacterStream implements Swift_CharacterStream +{ + /** + * The char reader (lazy-loaded) for the current charset. + * + * @var Swift_CharacterReader + */ + private $_charReader; + + /** + * A factory for creating CharacterReader instances. + * + * @var Swift_CharacterReaderFactory + */ + private $_charReaderFactory; + + /** + * The character set this stream is using. + * + * @var string + */ + private $_charset; + + /** + * The data's stored as-is. + * + * @var string + */ + private $_datas = ''; + + /** + * Number of bytes in the stream. + * + * @var int + */ + private $_datasSize = 0; + + /** + * Map. + * + * @var mixed + */ + private $_map; + + /** + * Map Type. + * + * @var int + */ + private $_mapType = 0; + + /** + * Number of characters in the stream. + * + * @var int + */ + private $_charCount = 0; + + /** + * Position in the stream. + * + * @var int + */ + private $_currentPos = 0; + + /** + * Constructor. + * + * @param Swift_CharacterReaderFactory $factory + * @param string $charset + */ + public function __construct(Swift_CharacterReaderFactory $factory, $charset) + { + $this->setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /* -- Changing parameters of the stream -- */ + + /** + * Set the character set used in this CharacterStream. + * + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + $this->_mapType = 0; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory(Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * @see Swift_CharacterStream::flushContents() + */ + public function flushContents() + { + $this->_datas = null; + $this->_map = null; + $this->_charCount = 0; + $this->_currentPos = 0; + $this->_datasSize = 0; + } + + /** + * @see Swift_CharacterStream::importByteStream() + * + * @param Swift_OutputByteStream $os + */ + public function importByteStream(Swift_OutputByteStream $os) + { + $this->flushContents(); + $blocks = 512; + $os->setReadPointer(0); + while (false !== ($read = $os->read($blocks))) { + $this->write($read); + } + } + + /** + * @see Swift_CharacterStream::importString() + * + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * @see Swift_CharacterStream::read() + * + * @param int $length + * + * @return string + */ + public function read($length) + { + if ($this->_currentPos >= $this->_charCount) { + return false; + } + $ret = false; + $length = $this->_currentPos + $length > $this->_charCount ? $this->_charCount - $this->_currentPos : $length; + switch ($this->_mapType) { + case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: + $len = $length * $this->_map; + $ret = substr($this->_datas, + $this->_currentPos * $this->_map, + $len); + $this->_currentPos += $length; + break; + + case Swift_CharacterReader::MAP_TYPE_INVALID: + $ret = ''; + for (; $this->_currentPos < $length; ++$this->_currentPos) { + if (isset($this->_map[$this->_currentPos])) { + $ret .= '?'; + } else { + $ret .= $this->_datas[$this->_currentPos]; + } + } + break; + + case Swift_CharacterReader::MAP_TYPE_POSITIONS: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount ? $this->_charCount : $end; + $ret = ''; + $start = 0; + if ($this->_currentPos > 0) { + $start = $this->_map['p'][$this->_currentPos - 1]; + } + $to = $start; + for (; $this->_currentPos < $end; ++$this->_currentPos) { + if (isset($this->_map['i'][$this->_currentPos])) { + $ret .= substr($this->_datas, $start, $to - $start).'?'; + $start = $this->_map['p'][$this->_currentPos]; + } else { + $to = $this->_map['p'][$this->_currentPos]; + } + } + $ret .= substr($this->_datas, $start, $to - $start); + break; + } + + return $ret; + } + + /** + * @see Swift_CharacterStream::readBytes() + * + * @param int $length + * + * @return integer[] + */ + public function readBytes($length) + { + $read = $this->read($length); + if ($read !== false) { + $ret = array_map('ord', str_split($read, 1)); + + return $ret; + } + + return false; + } + + /** + * @see Swift_CharacterStream::setPointer() + * + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($this->_charCount < $charOffset) { + $charOffset = $this->_charCount; + } + $this->_currentPos = $charOffset; + } + + /** + * @see Swift_CharacterStream::write() + * + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + $this->_map = array(); + $this->_mapType = $this->_charReader->getMapType(); + } + $ignored = ''; + $this->_datas .= $chars; + $this->_charCount += $this->_charReader->getCharPositions(substr($this->_datas, $this->_datasSize), $this->_datasSize, $this->_map, $ignored); + if ($ignored !== false) { + $this->_datasSize = strlen($this->_datas) - strlen($ignored); + } else { + $this->_datasSize = strlen($this->_datas); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ConfigurableSpool.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ConfigurableSpool.php new file mode 100644 index 00000000000..4ae5bacfc40 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ConfigurableSpool.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for Spools (implements time and message limits). + * + * @author Fabien Potencier + */ +abstract class Swift_ConfigurableSpool implements Swift_Spool +{ + /** The maximum number of messages to send per flush */ + private $_message_limit; + + /** The time limit per flush */ + private $_time_limit; + + /** + * Sets the maximum number of messages to send per flush. + * + * @param int $limit + */ + public function setMessageLimit($limit) + { + $this->_message_limit = (int) $limit; + } + + /** + * Gets the maximum number of messages to send per flush. + * + * @return int The limit + */ + public function getMessageLimit() + { + return $this->_message_limit; + } + + /** + * Sets the time limit (in seconds) per flush. + * + * @param int $limit The limit + */ + public function setTimeLimit($limit) + { + $this->_time_limit = (int) $limit; + } + + /** + * Gets the time limit (in seconds) per flush. + * + * @return int The limit + */ + public function getTimeLimit() + { + return $this->_time_limit; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyContainer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyContainer.php new file mode 100644 index 00000000000..8c1074a3a37 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyContainer.php @@ -0,0 +1,373 @@ +_store); + } + + /** + * Test if an item is registered in this container with the given name. + * + * @see register() + * + * @param string $itemName + * + * @return bool + */ + public function has($itemName) + { + return array_key_exists($itemName, $this->_store) + && isset($this->_store[$itemName]['lookupType']); + } + + /** + * Lookup the item with the given $itemName. + * + * @see register() + * + * @param string $itemName + * + * @throws Swift_DependencyException If the dependency is not found + * + * @return mixed + */ + public function lookup($itemName) + { + if (!$this->has($itemName)) { + throw new Swift_DependencyException( + 'Cannot lookup dependency "'.$itemName.'" since it is not registered.' + ); + } + + switch ($this->_store[$itemName]['lookupType']) { + case self::TYPE_ALIAS: + return $this->_createAlias($itemName); + case self::TYPE_VALUE: + return $this->_getValue($itemName); + case self::TYPE_INSTANCE: + return $this->_createNewInstance($itemName); + case self::TYPE_SHARED: + return $this->_createSharedInstance($itemName); + } + } + + /** + * Create an array of arguments passed to the constructor of $itemName. + * + * @param string $itemName + * + * @return array + */ + public function createDependenciesFor($itemName) + { + $args = array(); + if (isset($this->_store[$itemName]['args'])) { + $args = $this->_resolveArgs($this->_store[$itemName]['args']); + } + + return $args; + } + + /** + * Register a new dependency with $itemName. + * + * This method returns the current DependencyContainer instance because it + * requires the use of the fluid interface to set the specific details for the + * dependency. + * + * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() + * + * @param string $itemName + * + * @return Swift_DependencyContainer + */ + public function register($itemName) + { + $this->_store[$itemName] = array(); + $this->_endPoint = &$this->_store[$itemName]; + + return $this; + } + + /** + * Specify the previously registered item as a literal value. + * + * {@link register()} must be called before this will work. + * + * @param mixed $value + * + * @return Swift_DependencyContainer + */ + public function asValue($value) + { + $endPoint = &$this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_VALUE; + $endPoint['value'] = $value; + + return $this; + } + + /** + * Specify the previously registered item as an alias of another item. + * + * @param string $lookup + * + * @return Swift_DependencyContainer + */ + public function asAliasOf($lookup) + { + $endPoint = &$this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_ALIAS; + $endPoint['ref'] = $lookup; + + return $this; + } + + /** + * Specify the previously registered item as a new instance of $className. + * + * {@link register()} must be called before this will work. + * Any arguments can be set with {@link withDependencies()}, + * {@link addConstructorValue()} or {@link addConstructorLookup()}. + * + * @see withDependencies(), addConstructorValue(), addConstructorLookup() + * + * @param string $className + * + * @return Swift_DependencyContainer + */ + public function asNewInstanceOf($className) + { + $endPoint = &$this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_INSTANCE; + $endPoint['className'] = $className; + + return $this; + } + + /** + * Specify the previously registered item as a shared instance of $className. + * + * {@link register()} must be called before this will work. + * + * @param string $className + * + * @return Swift_DependencyContainer + */ + public function asSharedInstanceOf($className) + { + $endPoint = &$this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_SHARED; + $endPoint['className'] = $className; + + return $this; + } + + /** + * Specify a list of injected dependencies for the previously registered item. + * + * This method takes an array of lookup names. + * + * @see addConstructorValue(), addConstructorLookup() + * + * @param array $lookups + * + * @return Swift_DependencyContainer + */ + public function withDependencies(array $lookups) + { + $endPoint = &$this->_getEndPoint(); + $endPoint['args'] = array(); + foreach ($lookups as $lookup) { + $this->addConstructorLookup($lookup); + } + + return $this; + } + + /** + * Specify a literal (non looked up) value for the constructor of the + * previously registered item. + * + * @see withDependencies(), addConstructorLookup() + * + * @param mixed $value + * + * @return Swift_DependencyContainer + */ + public function addConstructorValue($value) + { + $endPoint = &$this->_getEndPoint(); + if (!isset($endPoint['args'])) { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'value', 'item' => $value); + + return $this; + } + + /** + * Specify a dependency lookup for the constructor of the previously + * registered item. + * + * @see withDependencies(), addConstructorValue() + * + * @param string $lookup + * + * @return Swift_DependencyContainer + */ + public function addConstructorLookup($lookup) + { + $endPoint = &$this->_getEndPoint(); + if (!isset($this->_endPoint['args'])) { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'lookup', 'item' => $lookup); + + return $this; + } + + /** Get the literal value with $itemName */ + private function _getValue($itemName) + { + return $this->_store[$itemName]['value']; + } + + /** Resolve an alias to another item */ + private function _createAlias($itemName) + { + return $this->lookup($this->_store[$itemName]['ref']); + } + + /** Create a fresh instance of $itemName */ + private function _createNewInstance($itemName) + { + $reflector = new ReflectionClass($this->_store[$itemName]['className']); + if ($reflector->getConstructor()) { + return $reflector->newInstanceArgs( + $this->createDependenciesFor($itemName) + ); + } + + return $reflector->newInstance(); + } + + /** Create and register a shared instance of $itemName */ + private function _createSharedInstance($itemName) + { + if (!isset($this->_store[$itemName]['instance'])) { + $this->_store[$itemName]['instance'] = $this->_createNewInstance($itemName); + } + + return $this->_store[$itemName]['instance']; + } + + /** Get the current endpoint in the store */ + private function &_getEndPoint() + { + if (!isset($this->_endPoint)) { + throw new BadMethodCallException( + 'Component must first be registered by calling register()' + ); + } + + return $this->_endPoint; + } + + /** Get an argument list with dependencies resolved */ + private function _resolveArgs(array $args) + { + $resolved = array(); + foreach ($args as $argDefinition) { + switch ($argDefinition['type']) { + case 'lookup': + $resolved[] = $this->_lookupRecursive($argDefinition['item']); + break; + case 'value': + $resolved[] = $argDefinition['item']; + break; + } + } + + return $resolved; + } + + /** Resolve a single dependency with an collections */ + private function _lookupRecursive($item) + { + if (is_array($item)) { + $collection = array(); + foreach ($item as $k => $v) { + $collection[$k] = $this->_lookupRecursive($v); + } + + return $collection; + } + + return $this->lookup($item); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyException.php b/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyException.php new file mode 100644 index 00000000000..799d38d8334 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/DependencyException.php @@ -0,0 +1,27 @@ +createDependenciesFor('mime.embeddedfile') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) { + $this->setContentType($contentType); + } + } + + /** + * Create a new EmbeddedFile. + * + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * + * @return Swift_Mime_EmbeddedFile + */ + public static function newInstance($data = null, $filename = null, $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new EmbeddedFile from a filesystem path. + * + * @param string $path + * + * @return Swift_Mime_EmbeddedFile + */ + public static function fromPath($path) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path) + ); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder.php new file mode 100644 index 00000000000..2073abca1b1 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder.php @@ -0,0 +1,28 @@ += $maxLineLength || 76 < $maxLineLength) { + $maxLineLength = 76; + } + + $encodedString = base64_encode($string); + $firstLine = ''; + + if (0 != $firstLineOffset) { + $firstLine = substr( + $encodedString, 0, $maxLineLength - $firstLineOffset + )."\r\n"; + $encodedString = substr( + $encodedString, $maxLineLength - $firstLineOffset + ); + } + + return $firstLine.trim(chunk_split($encodedString, $maxLineLength, "\r\n")); + } + + /** + * Does nothing. + */ + public function charsetChanged($charset) + { + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php new file mode 100644 index 00000000000..8a81fe39709 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php @@ -0,0 +1,300 @@ + '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', + 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', + 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', + 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', + 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', + 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', + 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', + 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', + 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', + 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', + 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', + 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', + 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', + 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', + 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', + 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', + 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', + 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', + 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', + 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', + 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', + 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', + 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', + 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', + 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', + 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', + 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', + 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', + 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', + 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', + 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', + 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', + 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', + 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', + 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', + 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', + 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', + 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', + 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', + 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', + 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', + 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', + 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', + 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', + 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', + 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', + 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', + 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', + 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', + 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', + 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', + 255 => '=FF', + ); + + protected static $_safeMapShare = array(); + + /** + * A map of non-encoded ascii characters. + * + * @var string[] + */ + protected $_safeMap = array(); + + /** + * Creates a new QpEncoder for the given CharacterStream. + * + * @param Swift_CharacterStream $charStream to use for reading characters + * @param Swift_StreamFilter $filter if input should be canonicalized + */ + public function __construct(Swift_CharacterStream $charStream, Swift_StreamFilter $filter = null) + { + $this->_charStream = $charStream; + if (!isset(self::$_safeMapShare[$this->getSafeMapShareId()])) { + $this->initSafeMap(); + self::$_safeMapShare[$this->getSafeMapShareId()] = $this->_safeMap; + } else { + $this->_safeMap = self::$_safeMapShare[$this->getSafeMapShareId()]; + } + $this->_filter = $filter; + } + + public function __sleep() + { + return array('_charStream', '_filter'); + } + + public function __wakeup() + { + if (!isset(self::$_safeMapShare[$this->getSafeMapShareId()])) { + $this->initSafeMap(); + self::$_safeMapShare[$this->getSafeMapShareId()] = $this->_safeMap; + } else { + $this->_safeMap = self::$_safeMapShare[$this->getSafeMapShareId()]; + } + } + + protected function getSafeMapShareId() + { + return get_class($this); + } + + protected function initSafeMap() + { + foreach (array_merge( + array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) { + $this->_safeMap[$byte] = chr($byte); + } + } + + /** + * Takes an unencoded string and produces a QP encoded string from it. + * + * QP encoded strings have a maximum line length of 76 characters. + * If the first line needs to be shorter, indicate the difference with + * $firstLineOffset. + * + * @param string $string to encode + * @param int $firstLineOffset, optional + * @param int $maxLineLength, optional 0 indicates the default of 76 chars + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + if ($maxLineLength > 76 || $maxLineLength <= 0) { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $lines = array(); + $lNo = 0; + $lines[$lNo] = ''; + $currentLine = &$lines[$lNo++]; + $size = $lineLen = 0; + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + // Fetching more than 4 chars at one is slower, as is fetching fewer bytes + // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 + // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes + while (false !== $bytes = $this->_nextSequence()) { + // If we're filtering the input + if (isset($this->_filter)) { + // If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) { + // Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) { + break; + } + + foreach ($moreBytes as $b) { + $bytes[] = $b; + } + } + // And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + + $i = strpos($enc, '=0D=0A'); + $newLineLength = $lineLen + ($i === false ? $size : $i); + + if ($currentLine && $newLineLength >= $thisLineLength) { + $lines[$lNo] = ''; + $currentLine = &$lines[$lNo++]; + $thisLineLength = $maxLineLength; + $lineLen = 0; + } + + $currentLine .= $enc; + + if ($i === false) { + $lineLen += $size; + } else { + // 6 is the length of '=0D=0A'. + $lineLen = $size - strrpos($enc, '=0D=0A') - 6; + } + } + + return $this->_standardize(implode("=\r\n", $lines)); + } + + /** + * Updates the charset used. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + + /** + * Encode the given byte array into a verbatim QP form. + * + * @param integer[] $bytes + * @param int $size + * + * @return string + */ + protected function _encodeByteSequence(array $bytes, &$size) + { + $ret = ''; + $size = 0; + foreach ($bytes as $b) { + if (isset($this->_safeMap[$b])) { + $ret .= $this->_safeMap[$b]; + ++$size; + } else { + $ret .= self::$_qpMap[$b]; + $size += 3; + } + } + + return $ret; + } + + /** + * Get the next sequence of bytes to read from the char stream. + * + * @param int $size number of bytes to read + * + * @return integer[] + */ + protected function _nextSequence($size = 4) + { + return $this->_charStream->readBytes($size); + } + + /** + * Make sure CRLF is correct and HT/SPACE are in valid places. + * + * @param string $string + * + * @return string + */ + protected function _standardize($string) + { + $string = str_replace(array("\t=0D=0A", ' =0D=0A', '=0D=0A'), + array("=09\r\n", "=20\r\n", "\r\n"), $string + ); + switch ($end = ord(substr($string, -1))) { + case 0x09: + case 0x20: + $string = substr_replace($string, self::$_qpMap[$end], -1); + } + + return $string; + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->_charStream = clone $this->_charStream; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php new file mode 100644 index 00000000000..b0215e88380 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php @@ -0,0 +1,92 @@ +_charStream = $charStream; + } + + /** + * Takes an unencoded string and produces a string encoded according to + * RFC 2231 from it. + * + * @param string $string + * @param int $firstLineOffset + * @param int $maxLineLength optional, 0 indicates the default of 75 bytes + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + $lines = array(); + $lineCount = 0; + $lines[] = ''; + $currentLine = &$lines[$lineCount++]; + + if (0 >= $maxLineLength) { + $maxLineLength = 75; + } + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + $thisLineLength = $maxLineLength - $firstLineOffset; + + while (false !== $char = $this->_charStream->read(4)) { + $encodedChar = rawurlencode($char); + if (0 != strlen($currentLine) + && strlen($currentLine.$encodedChar) > $thisLineLength) { + $lines[] = ''; + $currentLine = &$lines[$lineCount++]; + $thisLineLength = $maxLineLength; + } + $currentLine .= $encodedChar; + } + + return implode("\r\n", $lines); + } + + /** + * Updates the charset used. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->_charStream = clone $this->_charStream; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Encoding.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoding.php new file mode 100644 index 00000000000..253977b608e --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Encoding.php @@ -0,0 +1,64 @@ +lookup($key); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandEvent.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandEvent.php new file mode 100644 index 00000000000..7dc381d9844 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandEvent.php @@ -0,0 +1,65 @@ +_command = $command; + $this->_successCodes = $successCodes; + } + + /** + * Get the command which was sent to the server. + * + * @return string + */ + public function getCommand() + { + return $this->_command; + } + + /** + * Get the numeric response codes which indicate success for this command. + * + * @return integer[] + */ + public function getSuccessCodes() + { + return $this->_successCodes; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandListener.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandListener.php new file mode 100644 index 00000000000..7545404e765 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/CommandListener.php @@ -0,0 +1,24 @@ +_source = $source; + } + + /** + * Get the source object of this event. + * + * @return object + */ + public function getSource() + { + return $this->_source; + } + + /** + * Prevent this Event from bubbling any further up the stack. + * + * @param bool $cancel, optional + */ + public function cancelBubble($cancel = true) + { + $this->_bubbleCancelled = $cancel; + } + + /** + * Returns true if this Event will not bubble any further up the stack. + * + * @return bool + */ + public function bubbleCancelled() + { + return $this->_bubbleCancelled; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php new file mode 100644 index 00000000000..2e92ba9404f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php @@ -0,0 +1,65 @@ +_response = $response; + $this->_valid = $valid; + } + + /** + * Get the response which was received from the server. + * + * @return string + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Get the success status of this Event. + * + * @return bool + */ + public function isValid() + { + return $this->_valid; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseListener.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseListener.php new file mode 100644 index 00000000000..c40919d210f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/ResponseListener.php @@ -0,0 +1,24 @@ +_message = $message; + $this->_result = self::RESULT_PENDING; + } + + /** + * Get the Transport used to send the Message. + * + * @return Swift_Transport + */ + public function getTransport() + { + return $this->getSource(); + } + + /** + * Get the Message being sent. + * + * @return Swift_Mime_Message + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set the array of addresses that failed in sending. + * + * @param array $recipients + */ + public function setFailedRecipients($recipients) + { + $this->_failedRecipients = $recipients; + } + + /** + * Get an recipient addresses which were not accepted for delivery. + * + * @return string[] + */ + public function getFailedRecipients() + { + return $this->_failedRecipients; + } + + /** + * Set the result of sending. + * + * @param int $result + */ + public function setResult($result) + { + $this->_result = $result; + } + + /** + * Get the result of this Event. + * + * The return value is a bitmask from + * {@see RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} + * + * @return int + */ + public function getResult() + { + return $this->_result; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/SendListener.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/SendListener.php new file mode 100644 index 00000000000..d922e1bfa96 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/SendListener.php @@ -0,0 +1,31 @@ +_eventMap = array( + 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', + 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', + 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', + 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', + 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener', + ); + } + + /** + * Create a new SendEvent for $source and $message. + * + * @param Swift_Transport $source + * @param Swift_Mime_Message + * + * @return Swift_Events_SendEvent + */ + public function createSendEvent(Swift_Transport $source, Swift_Mime_Message $message) + { + return new Swift_Events_SendEvent($source, $message); + } + + /** + * Create a new CommandEvent for $source and $command. + * + * @param Swift_Transport $source + * @param string $command That will be executed + * @param array $successCodes That are needed + * + * @return Swift_Events_CommandEvent + */ + public function createCommandEvent(Swift_Transport $source, $command, $successCodes = array()) + { + return new Swift_Events_CommandEvent($source, $command, $successCodes); + } + + /** + * Create a new ResponseEvent for $source and $response. + * + * @param Swift_Transport $source + * @param string $response + * @param bool $valid If the response is valid + * + * @return Swift_Events_ResponseEvent + */ + public function createResponseEvent(Swift_Transport $source, $response, $valid) + { + return new Swift_Events_ResponseEvent($source, $response, $valid); + } + + /** + * Create a new TransportChangeEvent for $source. + * + * @param Swift_Transport $source + * + * @return Swift_Events_TransportChangeEvent + */ + public function createTransportChangeEvent(Swift_Transport $source) + { + return new Swift_Events_TransportChangeEvent($source); + } + + /** + * Create a new TransportExceptionEvent for $source. + * + * @param Swift_Transport $source + * @param Swift_TransportException $ex + * + * @return Swift_Events_TransportExceptionEvent + */ + public function createTransportExceptionEvent(Swift_Transport $source, Swift_TransportException $ex) + { + return new Swift_Events_TransportExceptionEvent($source, $ex); + } + + /** + * Bind an event listener to this dispatcher. + * + * @param Swift_Events_EventListener $listener + */ + public function bindEventListener(Swift_Events_EventListener $listener) + { + foreach ($this->_listeners as $l) { + // Already loaded + if ($l === $listener) { + return; + } + } + $this->_listeners[] = $listener; + } + + /** + * Dispatch the given Event to all suitable listeners. + * + * @param Swift_Events_EventObject $evt + * @param string $target method + */ + public function dispatchEvent(Swift_Events_EventObject $evt, $target) + { + $this->_prepareBubbleQueue($evt); + $this->_bubble($evt, $target); + } + + /** Queue listeners on a stack ready for $evt to be bubbled up it */ + private function _prepareBubbleQueue(Swift_Events_EventObject $evt) + { + $this->_bubbleQueue = array(); + $evtClass = get_class($evt); + foreach ($this->_listeners as $listener) { + if (array_key_exists($evtClass, $this->_eventMap) + && ($listener instanceof $this->_eventMap[$evtClass])) { + $this->_bubbleQueue[] = $listener; + } + } + } + + /** Bubble $evt up the stack calling $target() on each listener */ + private function _bubble(Swift_Events_EventObject $evt, $target) + { + if (!$evt->bubbleCancelled() && $listener = array_shift($this->_bubbleQueue)) { + $listener->$target($evt); + $this->_bubble($evt, $target); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php new file mode 100644 index 00000000000..a8972fda9a4 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php @@ -0,0 +1,27 @@ +getSource(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php new file mode 100644 index 00000000000..253165de89f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php @@ -0,0 +1,45 @@ +_exception = $ex; + } + + /** + * Get the TransportException thrown. + * + * @return Swift_TransportException + */ + public function getException() + { + return $this->_exception; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php new file mode 100644 index 00000000000..cc3c0993793 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php @@ -0,0 +1,24 @@ +createDependenciesFor('transport.failover') + ); + + $this->setTransports($transports); + } + + /** + * Create a new FailoverTransport instance. + * + * @param Swift_Transport[] $transports + * + * @return Swift_FailoverTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/FileSpool.php b/htdocs/includes/swiftmailer/lib/classes/Swift/FileSpool.php new file mode 100644 index 00000000000..220853989d3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/FileSpool.php @@ -0,0 +1,208 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages on the filesystem. + * + * @author Fabien Potencier + * @author Xavier De Cock + */ +class Swift_FileSpool extends Swift_ConfigurableSpool +{ + /** The spool directory */ + private $_path; + + /** + * File WriteRetry Limit. + * + * @var int + */ + private $_retryLimit = 10; + + /** + * Create a new FileSpool. + * + * @param string $path + * + * @throws Swift_IoException + */ + public function __construct($path) + { + $this->_path = $path; + + if (!file_exists($this->_path)) { + if (!mkdir($this->_path, 0777, true)) { + throw new Swift_IoException('Unable to create Path ['.$this->_path.']'); + } + } + } + + /** + * Tests if this Spool mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Spool mechanism. + */ + public function start() + { + } + + /** + * Stops this Spool mechanism. + */ + public function stop() + { + } + + /** + * Allow to manage the enqueuing retry limit. + * + * Default, is ten and allows over 64^20 different fileNames + * + * @param int $limit + */ + public function setRetryLimit($limit) + { + $this->_retryLimit = $limit; + } + + /** + * Queues a message. + * + * @param Swift_Mime_Message $message The message to store + * + * @throws Swift_IoException + * + * @return bool + */ + public function queueMessage(Swift_Mime_Message $message) + { + $ser = serialize($message); + $fileName = $this->_path.'/'.$this->getRandomString(10); + for ($i = 0; $i < $this->_retryLimit; ++$i) { + /* We try an exclusive creation of the file. This is an atomic operation, it avoid locking mechanism */ + $fp = @fopen($fileName.'.message', 'x'); + if (false !== $fp) { + if (false === fwrite($fp, $ser)) { + return false; + } + + return fclose($fp); + } else { + /* The file already exists, we try a longer fileName */ + $fileName .= $this->getRandomString(1); + } + } + + throw new Swift_IoException('Unable to create a file for enqueuing Message'); + } + + /** + * Execute a recovery if for any reason a process is sending for too long. + * + * @param int $timeout in second Defaults is for very slow smtp responses + */ + public function recover($timeout = 900) + { + foreach (new DirectoryIterator($this->_path) as $file) { + $file = $file->getRealPath(); + + if (substr($file, -16) == '.message.sending') { + $lockedtime = filectime($file); + if ((time() - $lockedtime) > $timeout) { + rename($file, substr($file, 0, -8)); + } + } + } + } + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent e-mail's + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) + { + $directoryIterator = new DirectoryIterator($this->_path); + + /* Start the transport only if there are queued files to send */ + if (!$transport->isStarted()) { + foreach ($directoryIterator as $file) { + if (substr($file->getRealPath(), -8) == '.message') { + $transport->start(); + break; + } + } + } + + $failedRecipients = (array) $failedRecipients; + $count = 0; + $time = time(); + foreach ($directoryIterator as $file) { + $file = $file->getRealPath(); + + if (substr($file, -8) != '.message') { + continue; + } + + /* We try a rename, it's an atomic operation, and avoid locking the file */ + if (rename($file, $file.'.sending')) { + $message = unserialize(file_get_contents($file.'.sending')); + + $count += $transport->send($message, $failedRecipients); + + unlink($file.'.sending'); + } else { + /* This message has just been catched by another process */ + continue; + } + + if ($this->getMessageLimit() && $count >= $this->getMessageLimit()) { + break; + } + + if ($this->getTimeLimit() && (time() - $time) >= $this->getTimeLimit()) { + break; + } + } + + return $count; + } + + /** + * Returns a random string needed to generate a fileName for the queue. + * + * @param int $count + * + * @return string + */ + protected function getRandomString($count) + { + // This string MUST stay FS safe, avoid special chars + $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'; + $ret = ''; + $strlen = strlen($base); + for ($i = 0; $i < $count; ++$i) { + $ret .= $base[((int) rand(0, $strlen - 1))]; + } + + return $ret; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/FileStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/FileStream.php new file mode 100644 index 00000000000..0b24db1ce41 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/FileStream.php @@ -0,0 +1,24 @@ +setFile( + new Swift_ByteStream_FileByteStream($path) + ); + + return $image; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/InputByteStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/InputByteStream.php new file mode 100644 index 00000000000..56efc7593ac --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/InputByteStream.php @@ -0,0 +1,75 @@ +_stream = $stream; + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * + * @see MODE_WRITE, MODE_APPEND + * + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) { + case self::MODE_WRITE: + $this->_contents[$nsKey][$itemKey] = $string; + break; + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) { + $this->_contents[$nsKey][$itemKey] = ''; + } + $this->_contents[$nsKey][$itemKey] .= $string; + break; + default: + throw new Swift_SwiftException( + 'Invalid mode ['.$mode.'] used to set nsKey='. + $nsKey.', itemKey='.$itemKey + ); + } + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * + * @see MODE_WRITE, MODE_APPEND + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) { + case self::MODE_WRITE: + $this->clearKey($nsKey, $itemKey); + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) { + $this->_contents[$nsKey][$itemKey] = ''; + } + while (false !== $bytes = $os->read(8192)) { + $this->_contents[$nsKey][$itemKey] .= $bytes; + } + break; + default: + throw new Swift_SwiftException( + 'Invalid mode ['.$mode.'] used to set nsKey='. + $nsKey.', itemKey='.$itemKey + ); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * + * NOTE: The stream will always write in append mode. + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $writeThrough + * + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) { + $is->setWriteThroughStream($writeThrough); + } + + return $is; + } + + /** + * Get data back out of the cache as a string. + * + * @param string $nsKey + * @param string $itemKey + * + * @return string + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) { + return $this->_contents[$nsKey][$itemKey]; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + $this->_prepareCache($nsKey); + $is->write($this->getString($nsKey, $itemKey)); + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * + * @param string $nsKey + * @param string $itemKey + * + * @return bool + */ + public function hasKey($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + + return array_key_exists($itemKey, $this->_contents[$nsKey]); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + unset($this->_contents[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * + * @param string $nsKey + */ + public function clearAll($nsKey) + { + unset($this->_contents[$nsKey]); + } + + /** + * Initialize the namespace of $nsKey if needed. + * + * @param string $nsKey + */ + private function _prepareCache($nsKey) + { + if (!array_key_exists($nsKey, $this->_contents)) { + $this->_contents[$nsKey] = array(); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php b/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php new file mode 100644 index 00000000000..453f50a15db --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php @@ -0,0 +1,321 @@ +_stream = $stream; + $this->_path = $path; + + if (function_exists('get_magic_quotes_runtime') && @get_magic_quotes_runtime() == 1) { + $this->_quotes = true; + } + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * + * @see MODE_WRITE, MODE_APPEND + * + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * + * @throws Swift_IoException + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode ['.$mode.'] used to set nsKey='. + $nsKey.', itemKey='.$itemKey + ); + break; + } + fwrite($fp, $string); + $this->_freeHandle($nsKey, $itemKey); + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * + * @see MODE_WRITE, MODE_APPEND + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * + * @throws Swift_IoException + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode ['.$mode.'] used to set nsKey='. + $nsKey.', itemKey='.$itemKey + ); + break; + } + while (false !== $bytes = $os->read(8192)) { + fwrite($fp, $bytes); + } + $this->_freeHandle($nsKey, $itemKey); + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * + * NOTE: The stream will always write in append mode. + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $writeThrough + * + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) { + $is->setWriteThroughStream($writeThrough); + } + + return $is; + } + + /** + * Get data back out of the cache as a string. + * + * @param string $nsKey + * @param string $itemKey + * + * @throws Swift_IoException + * + * @return string + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 0); + } + $str = ''; + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) { + $str .= $bytes; + } + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 1); + } + $this->_freeHandle($nsKey, $itemKey); + + return $str; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + if ($this->hasKey($nsKey, $itemKey)) { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 0); + } + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) { + $is->write($bytes); + } + if ($this->_quotes) { + ini_set('magic_quotes_runtime', 1); + } + $this->_freeHandle($nsKey, $itemKey); + } + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * + * @param string $nsKey + * @param string $itemKey + * + * @return bool + */ + public function hasKey($nsKey, $itemKey) + { + return is_file($this->_path.'/'.$nsKey.'/'.$itemKey); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + if ($this->hasKey($nsKey, $itemKey)) { + $this->_freeHandle($nsKey, $itemKey); + unlink($this->_path.'/'.$nsKey.'/'.$itemKey); + } + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * + * @param string $nsKey + */ + public function clearAll($nsKey) + { + if (array_key_exists($nsKey, $this->_keys)) { + foreach ($this->_keys[$nsKey] as $itemKey => $null) { + $this->clearKey($nsKey, $itemKey); + } + if (is_dir($this->_path.'/'.$nsKey)) { + rmdir($this->_path.'/'.$nsKey); + } + unset($this->_keys[$nsKey]); + } + } + + /** + * Initialize the namespace of $nsKey if needed. + * + * @param string $nsKey + */ + private function _prepareCache($nsKey) + { + $cacheDir = $this->_path.'/'.$nsKey; + if (!is_dir($cacheDir)) { + if (!mkdir($cacheDir)) { + throw new Swift_IoException('Failed to create cache directory '.$cacheDir); + } + $this->_keys[$nsKey] = array(); + } + } + + /** + * Get a file handle on the cache item. + * + * @param string $nsKey + * @param string $itemKey + * @param int $position + * + * @return resource + */ + private function _getHandle($nsKey, $itemKey, $position) + { + if (!isset($this->_keys[$nsKey][$itemKey])) { + $openMode = $this->hasKey($nsKey, $itemKey) ? 'r+b' : 'w+b'; + $fp = fopen($this->_path.'/'.$nsKey.'/'.$itemKey, $openMode); + $this->_keys[$nsKey][$itemKey] = $fp; + } + if (self::POSITION_START == $position) { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_SET); + } elseif (self::POSITION_END == $position) { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_END); + } + + return $this->_keys[$nsKey][$itemKey]; + } + + private function _freeHandle($nsKey, $itemKey) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_CURRENT); + fclose($fp); + $this->_keys[$nsKey][$itemKey] = null; + } + + /** + * Destructor. + */ + public function __destruct() + { + foreach ($this->_keys as $nsKey => $null) { + $this->clearAll($nsKey); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php new file mode 100644 index 00000000000..af80bdca6bf --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php @@ -0,0 +1,51 @@ +_keyCache = $keyCache; + } + + /** + * Specify a stream to write through for each write(). + * + * @param Swift_InputByteStream $is + */ + public function setWriteThroughStream(Swift_InputByteStream $is) + { + $this->_writeThrough = $is; + } + + /** + * Writes $bytes to the end of the stream. + * + * @param string $bytes + * @param Swift_InputByteStream $is optional + */ + public function write($bytes, Swift_InputByteStream $is = null) + { + $this->_keyCache->setString( + $this->_nsKey, $this->_itemKey, $bytes, Swift_KeyCache::MODE_APPEND + ); + if (isset($is)) { + $is->write($bytes); + } + if (isset($this->_writeThrough)) { + $this->_writeThrough->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Not used. + */ + public function bind(Swift_InputByteStream $is) + { + } + + /** + * Not used. + */ + public function unbind(Swift_InputByteStream $is) + { + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_keyCache->clearKey($this->_nsKey, $this->_itemKey); + } + + /** + * Set the nsKey which will be written to. + * + * @param string $nsKey + */ + public function setNsKey($nsKey) + { + $this->_nsKey = $nsKey; + } + + /** + * Set the itemKey which will be written to. + * + * @param string $itemKey + */ + public function setItemKey($itemKey) + { + $this->_itemKey = $itemKey; + } + + /** + * Any implementation should be cloneable, allowing the clone to access a + * separate $nsKey and $itemKey. + */ + public function __clone() + { + $this->_writeThrough = null; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php new file mode 100644 index 00000000000..fdba9df50dc --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php @@ -0,0 +1,45 @@ +createDependenciesFor('transport.loadbalanced') + ); + + $this->setTransports($transports); + } + + /** + * Create a new LoadBalancedTransport instance. + * + * @param array $transports + * + * @return Swift_LoadBalancedTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/MailTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/MailTransport.php new file mode 100644 index 00000000000..858ca814792 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/MailTransport.php @@ -0,0 +1,45 @@ +createDependenciesFor('transport.mail') + ); + + $this->setExtraParams($extraParams); + } + + /** + * Create a new MailTransport instance. + * + * @param string $extraParams To be passed to mail() + * + * @return Swift_MailTransport + */ + public static function newInstance($extraParams = '-f%s') + { + return new self($extraParams); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer.php new file mode 100644 index 00000000000..34a78d47b54 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer.php @@ -0,0 +1,114 @@ +_transport = $transport; + } + + /** + * Create a new Mailer instance. + * + * @param Swift_Transport $transport + * + * @return Swift_Mailer + */ + public static function newInstance(Swift_Transport $transport) + { + return new self($transport); + } + + /** + * Create a new class instance of one of the message services. + * + * For example 'mimepart' would create a 'message.mimepart' instance + * + * @param string $service + * + * @return object + */ + public function createMessage($service = 'message') + { + return Swift_DependencyContainer::getInstance() + ->lookup('message.'.$service); + } + + /** + * Send the given Message like it would be sent in a mail client. + * + * All recipients (with the exception of Bcc) will be able to see the other + * recipients this message was sent to. + * + * Recipient/sender data will be retrieved from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if (!$this->_transport->isStarted()) { + $this->_transport->start(); + } + + $sent = 0; + + try { + $sent = $this->_transport->send($message, $failedRecipients); + } catch (Swift_RfcComplianceException $e) { + foreach ($message->getTo() as $address => $name) { + $failedRecipients[] = $address; + } + } + + return $sent; + } + + /** + * Register a plugin using a known unique key (e.g. myPlugin). + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_transport->registerPlugin($plugin); + } + + /** + * The Transport used to send messages. + * + * @return Swift_Transport + */ + public function getTransport() + { + return $this->_transport; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php new file mode 100644 index 00000000000..e3e6cad05bd --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php @@ -0,0 +1,55 @@ +_recipients = $recipients; + } + + /** + * Returns true only if there are more recipients to send to. + * + * @return bool + */ + public function hasNext() + { + return !empty($this->_recipients); + } + + /** + * Returns an array where the keys are the addresses of recipients and the + * values are the names. e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL). + * + * @return array + */ + public function nextRecipient() + { + return array_splice($this->_recipients, 0, 1); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php new file mode 100644 index 00000000000..650f3ec3df4 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php @@ -0,0 +1,32 @@ + 'Foo') or ('foo@bar' => NULL). + * + * @return array + */ + public function nextRecipient(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/MemorySpool.php b/htdocs/includes/swiftmailer/lib/classes/Swift/MemorySpool.php new file mode 100644 index 00000000000..5b239694d81 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/MemorySpool.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in memory. + * + * @author Fabien Potencier + */ +class Swift_MemorySpool implements Swift_Spool +{ + protected $messages = array(); + + /** + * Tests if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Stores a message in the queue. + * + * @param Swift_Mime_Message $message The message to store + * + * @return bool Whether the operation has succeeded + */ + public function queueMessage(Swift_Mime_Message $message) + { + //clone the message to make sure it is not changed while in the queue + $this->messages[] = clone $message; + + return true; + } + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) + { + if (!$this->messages) { + return 0; + } + + if (!$transport->isStarted()) { + $transport->start(); + } + + $count = 0; + while ($message = array_pop($this->messages)) { + $count += $transport->send($message, $failedRecipients); + } + + return $count; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Message.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Message.php new file mode 100644 index 00000000000..11aa5a9a06a --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Message.php @@ -0,0 +1,291 @@ +createDependenciesFor('mime.message') + ); + + if (!isset($charset)) { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setSubject($subject); + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) { + $this->setContentType($contentType); + } + } + + /** + * Create a new Message. + * + * @param string $subject + * @param string $body + * @param string $contentType + * @param string $charset + * + * @return Swift_Message + */ + public static function newInstance($subject = null, $body = null, $contentType = null, $charset = null) + { + return new self($subject, $body, $contentType, $charset); + } + + /** + * Add a MimePart to this Message. + * + * @param string|Swift_OutputByteStream $body + * @param string $contentType + * @param string $charset + * + * @return Swift_Mime_SimpleMessage + */ + public function addPart($body, $contentType = null, $charset = null) + { + return $this->attach(Swift_MimePart::newInstance( + $body, $contentType, $charset + )); + } + + /** + * Attach a new signature handler to the message. + * + * @param Swift_Signer $signer + * + * @return Swift_Message + */ + public function attachSigner(Swift_Signer $signer) + { + if ($signer instanceof Swift_Signers_HeaderSigner) { + $this->headerSigners[] = $signer; + } elseif ($signer instanceof Swift_Signers_BodySigner) { + $this->bodySigners[] = $signer; + } + + return $this; + } + + /** + * Attach a new signature handler to the message. + * + * @param Swift_Signer $signer + * + * @return Swift_Message + */ + public function detachSigner(Swift_Signer $signer) + { + if ($signer instanceof Swift_Signers_HeaderSigner) { + foreach ($this->headerSigners as $k => $headerSigner) { + if ($headerSigner === $signer) { + unset($this->headerSigners[$k]); + + return $this; + } + } + } elseif ($signer instanceof Swift_Signers_BodySigner) { + foreach ($this->bodySigners as $k => $bodySigner) { + if ($bodySigner === $signer) { + unset($this->bodySigners[$k]); + + return $this; + } + } + } + + return $this; + } + + /** + * Get this message as a complete string. + * + * @return string + */ + public function toString() + { + if (empty($this->headerSigners) && empty($this->bodySigners)) { + return parent::toString(); + } + + $this->saveMessage(); + + $this->doSign(); + + $string = parent::toString(); + + $this->restoreMessage(); + + return $string; + } + + /** + * Write this message to a {@link Swift_InputByteStream}. + * + * @param Swift_InputByteStream $is + */ + public function toByteStream(Swift_InputByteStream $is) + { + if (empty($this->headerSigners) && empty($this->bodySigners)) { + parent::toByteStream($is); + + return; + } + + $this->saveMessage(); + + $this->doSign(); + + parent::toByteStream($is); + + $this->restoreMessage(); + } + + public function __wakeup() + { + Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message'); + } + + /** + * loops through signers and apply the signatures. + */ + protected function doSign() + { + foreach ($this->bodySigners as $signer) { + $altered = $signer->getAlteredHeaders(); + $this->saveHeaders($altered); + $signer->signMessage($this); + } + + foreach ($this->headerSigners as $signer) { + $altered = $signer->getAlteredHeaders(); + $this->saveHeaders($altered); + $signer->reset(); + + $signer->setHeaders($this->getHeaders()); + + $signer->startBody(); + $this->_bodyToByteStream($signer); + $signer->endBody(); + + $signer->addSignature($this->getHeaders()); + } + } + + /** + * save the message before any signature is applied. + */ + protected function saveMessage() + { + $this->savedMessage = array('headers' => array()); + $this->savedMessage['body'] = $this->getBody(); + $this->savedMessage['children'] = $this->getChildren(); + if (count($this->savedMessage['children']) > 0 && $this->getBody() != '') { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $this->savedMessage['children'])); + $this->setBody(''); + } + } + + /** + * save the original headers. + * + * @param array $altered + */ + protected function saveHeaders(array $altered) + { + foreach ($altered as $head) { + $lc = strtolower($head); + + if (!isset($this->savedMessage['headers'][$lc])) { + $this->savedMessage['headers'][$lc] = $this->getHeaders()->getAll($head); + } + } + } + + /** + * Remove or restore altered headers. + */ + protected function restoreHeaders() + { + foreach ($this->savedMessage['headers'] as $name => $savedValue) { + $headers = $this->getHeaders()->getAll($name); + + foreach ($headers as $key => $value) { + if (!isset($savedValue[$key])) { + $this->getHeaders()->remove($name, $key); + } + } + } + } + + /** + * Restore message body. + */ + protected function restoreMessage() + { + $this->setBody($this->savedMessage['body']); + $this->setChildren($this->savedMessage['children']); + + $this->restoreHeaders(); + $this->savedMessage = array(); + } + + /** + * Clone Message Signers. + * + * @see Swift_Mime_SimpleMimeEntity::__clone() + */ + public function __clone() + { + parent::__clone(); + foreach ($this->bodySigners as $key => $bodySigner) { + $this->bodySigners[$key] = clone($bodySigner); + } + + foreach ($this->headerSigners as $key => $headerSigner) { + $this->headerSigners[$key] = clone($headerSigner); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Attachment.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Attachment.php new file mode 100644 index 00000000000..46a5e8da946 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Attachment.php @@ -0,0 +1,149 @@ +setDisposition('attachment'); + $this->setContentType('application/octet-stream'); + $this->_mimeTypes = $mimeTypes; + } + + /** + * Get the nesting level used for this attachment. + * + * Always returns {@link LEVEL_MIXED}. + * + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_MIXED; + } + + /** + * Get the Content-Disposition of this attachment. + * + * By default attachments have a disposition of "attachment". + * + * @return string + */ + public function getDisposition() + { + return $this->_getHeaderFieldModel('Content-Disposition'); + } + + /** + * Set the Content-Disposition of this attachment. + * + * @param string $disposition + * + * @return Swift_Mime_Attachment + */ + public function setDisposition($disposition) + { + if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) { + $this->getHeaders()->addParameterizedHeader('Content-Disposition', $disposition); + } + + return $this; + } + + /** + * Get the filename of this attachment when downloaded. + * + * @return string + */ + public function getFilename() + { + return $this->_getHeaderParameter('Content-Disposition', 'filename'); + } + + /** + * Set the filename of this attachment. + * + * @param string $filename + * + * @return Swift_Mime_Attachment + */ + public function setFilename($filename) + { + $this->_setHeaderParameter('Content-Disposition', 'filename', $filename); + $this->_setHeaderParameter('Content-Type', 'name', $filename); + + return $this; + } + + /** + * Get the file size of this attachment. + * + * @return int + */ + public function getSize() + { + return $this->_getHeaderParameter('Content-Disposition', 'size'); + } + + /** + * Set the file size of this attachment. + * + * @param int $size + * + * @return Swift_Mime_Attachment + */ + public function setSize($size) + { + $this->_setHeaderParameter('Content-Disposition', 'size', $size); + + return $this; + } + + /** + * Set the file that this attachment is for. + * + * @param Swift_FileStream $file + * @param string $contentType optional + * + * @return Swift_Mime_Attachment + */ + public function setFile(Swift_FileStream $file, $contentType = null) + { + $this->setFilename(basename($file->getPath())); + $this->setBody($file, $contentType); + if (!isset($contentType)) { + $extension = strtolower(substr($file->getPath(), strrpos($file->getPath(), '.') + 1)); + + if (array_key_exists($extension, $this->_mimeTypes)) { + $this->setContentType($this->_mimeTypes[$extension]); + } + } + + return $this; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php new file mode 100644 index 00000000000..b49c3a873b1 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php @@ -0,0 +1,24 @@ += $maxLineLength || 76 < $maxLineLength) { + $maxLineLength = 76; + } + + $remainder = 0; + $base64ReadBufferRemainderBytes = null; + + // To reduce memory usage, the output buffer is streamed to the input buffer like so: + // Output Stream => base64encode => wrap line length => Input Stream + // HOWEVER it's important to note that base64_encode() should only be passed whole triplets of data (except for the final chunk of data) + // otherwise it will assume the input data has *ended* and it will incorrectly pad/terminate the base64 data mid-stream. + // We use $base64ReadBufferRemainderBytes to carry over 1-2 "remainder" bytes from the each chunk from OutputStream and pre-pend those onto the + // chunk of bytes read in the next iteration. + // When the OutputStream is empty, we must flush any remainder bytes. + while (true) { + $readBytes = $os->read(8192); + $atEOF = ($readBytes === false); + + if ($atEOF) { + $streamTheseBytes = $base64ReadBufferRemainderBytes; + } else { + $streamTheseBytes = $base64ReadBufferRemainderBytes.$readBytes; + } + $base64ReadBufferRemainderBytes = null; + $bytesLength = strlen($streamTheseBytes); + + if ($bytesLength === 0) { // no data left to encode + break; + } + + // if we're not on the last block of the ouput stream, make sure $streamTheseBytes ends with a complete triplet of data + // and carry over remainder 1-2 bytes to the next loop iteration + if (!$atEOF) { + $excessBytes = $bytesLength % 3; + if ($excessBytes !== 0) { + $base64ReadBufferRemainderBytes = substr($streamTheseBytes, -$excessBytes); + $streamTheseBytes = substr($streamTheseBytes, 0, $bytesLength - $excessBytes); + } + } + + $encoded = base64_encode($streamTheseBytes); + $encodedTransformed = ''; + $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; + + while ($thisMaxLineLength < strlen($encoded)) { + $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength)."\r\n"; + $firstLineOffset = 0; + $encoded = substr($encoded, $thisMaxLineLength); + $thisMaxLineLength = $maxLineLength; + $remainder = 0; + } + + if (0 < $remainingLength = strlen($encoded)) { + $remainder += $remainingLength; + $encodedTransformed .= $encoded; + $encoded = null; + } + + $is->write($encodedTransformed); + + if ($atEOF) { + break; + } + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'base64'. + * + * @return string + */ + public function getName() + { + return 'base64'; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php new file mode 100644 index 00000000000..710b5ac9edc --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php @@ -0,0 +1,123 @@ +charset = $charset ? $charset : 'utf-8'; + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->charset = $charset; + } + + /** + * Encode $in to $out. + * + * @param Swift_OutputByteStream $os to read from + * @param Swift_InputByteStream $is to write to + * @param int $firstLineOffset + * @param int $maxLineLength 0 indicates the default length for this encoding + * + * @throws RuntimeException + */ + public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) + { + if ($this->charset !== 'utf-8') { + throw new RuntimeException( + sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset)); + } + + $string = ''; + + while (false !== $bytes = $os->read(8192)) { + $string .= $bytes; + } + + $is->write($this->encodeString($string)); + } + + /** + * Get the MIME name of this content encoding scheme. + * + * @return string + */ + public function getName() + { + return 'quoted-printable'; + } + + /** + * Encode a given string to produce an encoded string. + * + * @param string $string + * @param int $firstLineOffset if first line needs to be shorter + * @param int $maxLineLength 0 indicates the default length for this encoding + * + * @throws RuntimeException + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + if ($this->charset !== 'utf-8') { + throw new RuntimeException( + sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset)); + } + + return $this->_standardize(quoted_printable_encode($string)); + } + + /** + * Make sure CRLF is correct and HT/SPACE are in valid places. + * + * @param string $string + * + * @return string + */ + protected function _standardize($string) + { + // transform CR or LF to CRLF + $string = preg_replace('~=0D(?!=0A)|(?_name = $name; + $this->_canonical = $canonical; + } + + /** + * Encode a given string to produce an encoded string. + * + * @param string $string + * @param int $firstLineOffset ignored + * @param int $maxLineLength - 0 means no wrapping will occur + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + if ($this->_canonical) { + $string = $this->_canonicalize($string); + } + + return $this->_safeWordWrap($string, $maxLineLength, "\r\n"); + } + + /** + * Encode stream $in to stream $out. + * + * @param Swift_OutputByteStream $os + * @param Swift_InputByteStream $is + * @param int $firstLineOffset ignored + * @param int $maxLineLength optional, 0 means no wrapping will occur + */ + public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) + { + $leftOver = ''; + while (false !== $bytes = $os->read(8192)) { + $toencode = $leftOver.$bytes; + if ($this->_canonical) { + $toencode = $this->_canonicalize($toencode); + } + $wrapped = $this->_safeWordWrap($toencode, $maxLineLength, "\r\n"); + $lastLinePos = strrpos($wrapped, "\r\n"); + $leftOver = substr($wrapped, $lastLinePos); + $wrapped = substr($wrapped, 0, $lastLinePos); + + $is->write($wrapped); + } + if (strlen($leftOver)) { + $is->write($leftOver); + } + } + + /** + * Get the name of this encoding scheme. + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Not used. + */ + public function charsetChanged($charset) + { + } + + /** + * A safer (but weaker) wordwrap for unicode. + * + * @param string $string + * @param int $length + * @param string $le + * + * @return string + */ + private function _safeWordwrap($string, $length = 75, $le = "\r\n") + { + if (0 >= $length) { + return $string; + } + + $originalLines = explode($le, $string); + + $lines = array(); + $lineCount = 0; + + foreach ($originalLines as $originalLine) { + $lines[] = ''; + $currentLine = &$lines[$lineCount++]; + + //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); + $chunks = preg_split('/(?<=\s)/', $originalLine); + + foreach ($chunks as $chunk) { + if (0 != strlen($currentLine) + && strlen($currentLine.$chunk) > $length) { + $lines[] = ''; + $currentLine = &$lines[$lineCount++]; + } + $currentLine .= $chunk; + } + } + + return implode("\r\n", $lines); + } + + /** + * Canonicalize string input (fix CRLF). + * + * @param string $string + * + * @return string + */ + private function _canonicalize($string) + { + return str_replace( + array("\r\n", "\r", "\n"), + array("\n", "\n", "\r\n"), + $string + ); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php new file mode 100644 index 00000000000..5cc907b8e7e --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php @@ -0,0 +1,134 @@ +_dotEscape = $dotEscape; + parent::__construct($charStream, $filter); + } + + public function __sleep() + { + return array('_charStream', '_filter', '_dotEscape'); + } + + protected function getSafeMapShareId() + { + return get_class($this).($this->_dotEscape ? '.dotEscape' : ''); + } + + protected function initSafeMap() + { + parent::initSafeMap(); + if ($this->_dotEscape) { + /* Encode . as =2e for buggy remote servers */ + unset($this->_safeMap[0x2e]); + } + } + + /** + * Encode stream $in to stream $out. + * + * QP encoded strings have a maximum line length of 76 characters. + * If the first line needs to be shorter, indicate the difference with + * $firstLineOffset. + * + * @param Swift_OutputByteStream $os output stream + * @param Swift_InputByteStream $is input stream + * @param int $firstLineOffset + * @param int $maxLineLength + */ + public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) + { + if ($maxLineLength > 76 || $maxLineLength <= 0) { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $this->_charStream->flushContents(); + $this->_charStream->importByteStream($os); + + $currentLine = ''; + $prepend = ''; + $size = $lineLen = 0; + + while (false !== $bytes = $this->_nextSequence()) { + // If we're filtering the input + if (isset($this->_filter)) { + // If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) { + // Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) { + break; + } + + foreach ($moreBytes as $b) { + $bytes[] = $b; + } + } + // And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + + $i = strpos($enc, '=0D=0A'); + $newLineLength = $lineLen + ($i === false ? $size : $i); + + if ($currentLine && $newLineLength >= $thisLineLength) { + $is->write($prepend.$this->_standardize($currentLine)); + $currentLine = ''; + $prepend = "=\r\n"; + $thisLineLength = $maxLineLength; + $lineLen = 0; + } + + $currentLine .= $enc; + + if ($i === false) { + $lineLen += $size; + } else { + // 6 is the length of '=0D=0A'. + $lineLen = $size - strrpos($enc, '=0D=0A') - 6; + } + } + if (strlen($currentLine)) { + $is->write($prepend.$this->_standardize($currentLine)); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'quoted-printable'. + * + * @return string + */ + public function getName() + { + return 'quoted-printable'; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php new file mode 100644 index 00000000000..3214e1cf3fd --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php @@ -0,0 +1,98 @@ + + */ +class Swift_Mime_ContentEncoder_QpContentEncoderProxy implements Swift_Mime_ContentEncoder +{ + /** + * @var Swift_Mime_ContentEncoder_QpContentEncoder + */ + private $safeEncoder; + + /** + * @var Swift_Mime_ContentEncoder_NativeQpContentEncoder + */ + private $nativeEncoder; + + /** + * @var null|string + */ + private $charset; + + /** + * Constructor. + * + * @param Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder + * @param Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder + * @param string|null $charset + */ + public function __construct(Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder, Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder, $charset) + { + $this->safeEncoder = $safeEncoder; + $this->nativeEncoder = $nativeEncoder; + $this->charset = $charset; + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->safeEncoder = clone $this->safeEncoder; + $this->nativeEncoder = clone $this->nativeEncoder; + } + + /** + * {@inheritdoc} + */ + public function charsetChanged($charset) + { + $this->charset = $charset; + $this->safeEncoder->charsetChanged($charset); + } + + /** + * {@inheritdoc} + */ + public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) + { + $this->getEncoder()->encodeByteStream($os, $is, $firstLineOffset, $maxLineLength); + } + + /** + * {@inheritdoc} + */ + public function getName() + { + return 'quoted-printable'; + } + + /** + * {@inheritdoc} + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + return $this->getEncoder()->encodeString($string, $firstLineOffset, $maxLineLength); + } + + /** + * @return Swift_Mime_ContentEncoder + */ + private function getEncoder() + { + return 'utf-8' === $this->charset ? $this->nativeEncoder : $this->safeEncoder; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php new file mode 100644 index 00000000000..0b8526e38c3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php @@ -0,0 +1,64 @@ + + */ +class Swift_Mime_ContentEncoder_RawContentEncoder implements Swift_Mime_ContentEncoder +{ + /** + * Encode a given string to produce an encoded string. + * + * @param string $string + * @param int $firstLineOffset ignored + * @param int $maxLineLength ignored + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + return $string; + } + + /** + * Encode stream $in to stream $out. + * + * @param Swift_OutputByteStream $in + * @param Swift_InputByteStream $out + * @param int $firstLineOffset ignored + * @param int $maxLineLength ignored + */ + public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) + { + while (false !== ($bytes = $os->read(8192))) { + $is->write($bytes); + } + } + + /** + * Get the name of this encoding scheme. + * + * @return string + */ + public function getName() + { + return 'raw'; + } + + /** + * Not used. + */ + public function charsetChanged($charset) + { + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php new file mode 100644 index 00000000000..6af757124d3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php @@ -0,0 +1,45 @@ +setDisposition('inline'); + $this->setId($this->getId()); + } + + /** + * Get the nesting level of this EmbeddedFile. + * + * Returns {@see LEVEL_RELATED}. + * + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_RELATED; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php new file mode 100644 index 00000000000..cc44a6efb97 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php @@ -0,0 +1,24 @@ +init(); + } + + public function __wakeup() + { + $this->init(); + } + + protected function init() + { + if (count(self::$_specials) > 0) { + return; + } + + self::$_specials = array( + '(', ')', '<', '>', '[', ']', + ':', ';', '@', ',', '.', '"', + ); + + /*** Refer to RFC 2822 for ABNF grammar ***/ + + // All basic building blocks + self::$_grammar['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; + self::$_grammar['WSP'] = '[ \t]'; + self::$_grammar['CRLF'] = '(?:\r\n)'; + self::$_grammar['FWS'] = '(?:(?:'.self::$_grammar['WSP'].'*'. + self::$_grammar['CRLF'].')?'.self::$_grammar['WSP'].')'; + self::$_grammar['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; + self::$_grammar['quoted-pair'] = '(?:\\\\'.self::$_grammar['text'].')'; + self::$_grammar['ctext'] = '(?:'.self::$_grammar['NO-WS-CTL']. + '|[\x21-\x27\x2A-\x5B\x5D-\x7E])'; + // Uses recursive PCRE (?1) -- could be a weak point?? + self::$_grammar['ccontent'] = '(?:'.self::$_grammar['ctext'].'|'. + self::$_grammar['quoted-pair'].'|(?1))'; + self::$_grammar['comment'] = '(\((?:'.self::$_grammar['FWS'].'|'. + self::$_grammar['ccontent'].')*'.self::$_grammar['FWS'].'?\))'; + self::$_grammar['CFWS'] = '(?:(?:'.self::$_grammar['FWS'].'?'. + self::$_grammar['comment'].')*(?:(?:'.self::$_grammar['FWS'].'?'. + self::$_grammar['comment'].')|'.self::$_grammar['FWS'].'))'; + self::$_grammar['qtext'] = '(?:'.self::$_grammar['NO-WS-CTL']. + '|[\x21\x23-\x5B\x5D-\x7E])'; + self::$_grammar['qcontent'] = '(?:'.self::$_grammar['qtext'].'|'. + self::$_grammar['quoted-pair'].')'; + self::$_grammar['quoted-string'] = '(?:'.self::$_grammar['CFWS'].'?"'. + '('.self::$_grammar['FWS'].'?'.self::$_grammar['qcontent'].')*'. + self::$_grammar['FWS'].'?"'.self::$_grammar['CFWS'].'?)'; + self::$_grammar['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; + self::$_grammar['atom'] = '(?:'.self::$_grammar['CFWS'].'?'. + self::$_grammar['atext'].'+'.self::$_grammar['CFWS'].'?)'; + self::$_grammar['dot-atom-text'] = '(?:'.self::$_grammar['atext'].'+'. + '(\.'.self::$_grammar['atext'].'+)*)'; + self::$_grammar['dot-atom'] = '(?:'.self::$_grammar['CFWS'].'?'. + self::$_grammar['dot-atom-text'].'+'.self::$_grammar['CFWS'].'?)'; + self::$_grammar['word'] = '(?:'.self::$_grammar['atom'].'|'. + self::$_grammar['quoted-string'].')'; + self::$_grammar['phrase'] = '(?:'.self::$_grammar['word'].'+?)'; + self::$_grammar['no-fold-quote'] = '(?:"(?:'.self::$_grammar['qtext']. + '|'.self::$_grammar['quoted-pair'].')*")'; + self::$_grammar['dtext'] = '(?:'.self::$_grammar['NO-WS-CTL']. + '|[\x21-\x5A\x5E-\x7E])'; + self::$_grammar['no-fold-literal'] = '(?:\[(?:'.self::$_grammar['dtext']. + '|'.self::$_grammar['quoted-pair'].')*\])'; + + // Message IDs + self::$_grammar['id-left'] = '(?:'.self::$_grammar['dot-atom-text'].'|'. + self::$_grammar['no-fold-quote'].')'; + self::$_grammar['id-right'] = '(?:'.self::$_grammar['dot-atom-text'].'|'. + self::$_grammar['no-fold-literal'].')'; + + // Addresses, mailboxes and paths + self::$_grammar['local-part'] = '(?:'.self::$_grammar['dot-atom'].'|'. + self::$_grammar['quoted-string'].')'; + self::$_grammar['dcontent'] = '(?:'.self::$_grammar['dtext'].'|'. + self::$_grammar['quoted-pair'].')'; + self::$_grammar['domain-literal'] = '(?:'.self::$_grammar['CFWS'].'?\[('. + self::$_grammar['FWS'].'?'.self::$_grammar['dcontent'].')*?'. + self::$_grammar['FWS'].'?\]'.self::$_grammar['CFWS'].'?)'; + self::$_grammar['domain'] = '(?:'.self::$_grammar['dot-atom'].'|'. + self::$_grammar['domain-literal'].')'; + self::$_grammar['addr-spec'] = '(?:'.self::$_grammar['local-part'].'@'. + self::$_grammar['domain'].')'; + } + + /** + * Get the grammar defined for $name token. + * + * @param string $name exactly as written in the RFC + * + * @return string + */ + public function getDefinition($name) + { + if (array_key_exists($name, self::$_grammar)) { + return self::$_grammar[$name]; + } + + throw new Swift_RfcComplianceException( + "No such grammar '".$name."' defined." + ); + } + + /** + * Returns the tokens defined in RFC 2822 (and some related RFCs). + * + * @return array + */ + public function getGrammarDefinitions() + { + return self::$_grammar; + } + + /** + * Returns the current special characters used in the syntax which need to be escaped. + * + * @return array + */ + public function getSpecials() + { + return self::$_specials; + } + + /** + * Escape special characters in a string (convert to quoted-pairs). + * + * @param string $token + * @param string[] $include additional chars to escape + * @param string[] $exclude chars from escaping + * + * @return string + */ + public function escapeSpecials($token, $include = array(), $exclude = array()) + { + foreach (array_merge(array('\\'), array_diff(self::$_specials, $exclude), $include) as $char) { + $token = str_replace($char, '\\'.$char, $token); + } + + return $token; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Header.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Header.php new file mode 100644 index 00000000000..a8ddd272165 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Header.php @@ -0,0 +1,93 @@ +getName(), "\r\n"); + mb_internal_encoding($old); + + return $newstring; + } + + return parent::encodeString($string, $firstLineOffset, $maxLineLength); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php new file mode 100644 index 00000000000..510dd6637b3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php @@ -0,0 +1,65 @@ +_safeMap[$byte] = chr($byte); + } + } + + /** + * Get the name of this encoding scheme. + * + * Returns the string 'Q'. + * + * @return string + */ + public function getName() + { + return 'Q'; + } + + /** + * Takes an unencoded string and produces a QP encoded string from it. + * + * @param string $string string to encode + * @param int $firstLineOffset optional + * @param int $maxLineLength optional, 0 indicates the default of 76 chars + * + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) + { + return str_replace(array(' ', '=20', "=\r\n"), array('_', '_', "\r\n"), + parent::encodeString($string, $firstLineOffset, $maxLineLength) + ); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php new file mode 100644 index 00000000000..c65f26d7213 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php @@ -0,0 +1,78 @@ +setGrammar($grammar); + } + + /** + * Set the character set used in this Header. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->clearCachedValueIf($charset != $this->_charset); + $this->_charset = $charset; + if (isset($this->_encoder)) { + $this->_encoder->charsetChanged($charset); + } + } + + /** + * Get the character set used in this Header. + * + * @return string + */ + public function getCharset() + { + return $this->_charset; + } + + /** + * Set the language used in this Header. + * + * For example, for US English, 'en-us'. + * This can be unspecified. + * + * @param string $lang + */ + public function setLanguage($lang) + { + $this->clearCachedValueIf($this->_lang != $lang); + $this->_lang = $lang; + } + + /** + * Get the language used in this Header. + * + * @return string + */ + public function getLanguage() + { + return $this->_lang; + } + + /** + * Set the encoder used for encoding the header. + * + * @param Swift_Mime_HeaderEncoder $encoder + */ + public function setEncoder(Swift_Mime_HeaderEncoder $encoder) + { + $this->_encoder = $encoder; + $this->setCachedValue(null); + } + + /** + * Get the encoder used for encoding this Header. + * + * @return Swift_Mime_HeaderEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Set the grammar used for the header. + * + * @param Swift_Mime_Grammar $grammar + */ + public function setGrammar(Swift_Mime_Grammar $grammar) + { + $this->_grammar = $grammar; + $this->setCachedValue(null); + } + + /** + * Get the grammar used for this Header. + * + * @return Swift_Mime_Grammar + */ + public function getGrammar() + { + return $this->_grammar; + } + + /** + * Get the name of this header (e.g. charset). + * + * @return string + */ + public function getFieldName() + { + return $this->_name; + } + + /** + * Set the maximum length of lines in the header (excluding EOL). + * + * @param int $lineLength + */ + public function setMaxLineLength($lineLength) + { + $this->clearCachedValueIf($this->_lineLength != $lineLength); + $this->_lineLength = $lineLength; + } + + /** + * Get the maximum permitted length of lines in this Header. + * + * @return int + */ + public function getMaxLineLength() + { + return $this->_lineLength; + } + + /** + * Get this Header rendered as a RFC 2822 compliant string. + * + * @throws Swift_RfcComplianceException + * + * @return string + */ + public function toString() + { + return $this->_tokensToString($this->toTokens()); + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Points of extension + + /** + * Set the name of this Header field. + * + * @param string $name + */ + protected function setFieldName($name) + { + $this->_name = $name; + } + + /** + * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. + * + * @param Swift_Mime_Header $header + * @param string $string as displayed + * @param string $charset of the text + * @param Swift_Mime_HeaderEncoder $encoder + * @param bool $shorten the first line to make remove for header name + * + * @return string + */ + protected function createPhrase(Swift_Mime_Header $header, $string, $charset, Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) + { + // Treat token as exactly what was given + $phraseStr = $string; + // If it's not valid + if (!preg_match('/^'.$this->getGrammar()->getDefinition('phrase').'$/D', $phraseStr)) { + // .. but it is just ascii text, try escaping some characters + // and make it a quoted-string + if (preg_match('/^'.$this->getGrammar()->getDefinition('text').'*$/D', $phraseStr)) { + $phraseStr = $this->getGrammar()->escapeSpecials( + $phraseStr, array('"'), $this->getGrammar()->getSpecials() + ); + $phraseStr = '"'.$phraseStr.'"'; + } else { + // ... otherwise it needs encoding + // Determine space remaining on line if first line + if ($shorten) { + $usedLength = strlen($header->getFieldName().': '); + } else { + $usedLength = 0; + } + $phraseStr = $this->encodeWords($header, $string, $usedLength); + } + } + + return $phraseStr; + } + + /** + * Encode needed word tokens within a string of input. + * + * @param Swift_Mime_Header $header + * @param string $input + * @param string $usedLength optional + * + * @return string + */ + protected function encodeWords(Swift_Mime_Header $header, $input, $usedLength = -1) + { + $value = ''; + + $tokens = $this->getEncodableWordTokens($input); + + foreach ($tokens as $token) { + // See RFC 2822, Sect 2.2 (really 2.2 ??) + if ($this->tokenNeedsEncoding($token)) { + // Don't encode starting WSP + $firstChar = substr($token, 0, 1); + switch ($firstChar) { + case ' ': + case "\t": + $value .= $firstChar; + $token = substr($token, 1); + } + + if (-1 == $usedLength) { + $usedLength = strlen($header->getFieldName().': ') + strlen($value); + } + $value .= $this->getTokenAsEncodedWord($token, $usedLength); + + $header->setMaxLineLength(76); // Forcefully override + } else { + $value .= $token; + } + } + + return $value; + } + + /** + * Test if a token needs to be encoded or not. + * + * @param string $token + * + * @return bool + */ + protected function tokenNeedsEncoding($token) + { + return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); + } + + /** + * Splits a string into tokens in blocks of words which can be encoded quickly. + * + * @param string $string + * + * @return string[] + */ + protected function getEncodableWordTokens($string) + { + $tokens = array(); + + $encodedToken = ''; + // Split at all whitespace boundaries + foreach (preg_split('~(?=[\t ])~', $string) as $token) { + if ($this->tokenNeedsEncoding($token)) { + $encodedToken .= $token; + } else { + if (strlen($encodedToken) > 0) { + $tokens[] = $encodedToken; + $encodedToken = ''; + } + $tokens[] = $token; + } + } + if (strlen($encodedToken)) { + $tokens[] = $encodedToken; + } + + return $tokens; + } + + /** + * Get a token as an encoded word for safe insertion into headers. + * + * @param string $token token to encode + * @param int $firstLineOffset optional + * + * @return string + */ + protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) + { + // Adjust $firstLineOffset to account for space needed for syntax + $charsetDecl = $this->_charset; + if (isset($this->_lang)) { + $charsetDecl .= '*'.$this->_lang; + } + $encodingWrapperLength = strlen( + '=?'.$charsetDecl.'?'.$this->_encoder->getName().'??=' + ); + + if ($firstLineOffset >= 75) { + //Does this logic need to be here? + $firstLineOffset = 0; + } + + $encodedTextLines = explode("\r\n", + $this->_encoder->encodeString( + $token, $firstLineOffset, 75 - $encodingWrapperLength, $this->_charset + ) + ); + + if (strtolower($this->_charset) !== 'iso-2022-jp') { + // special encoding for iso-2022-jp using mb_encode_mimeheader + foreach ($encodedTextLines as $lineNum => $line) { + $encodedTextLines[$lineNum] = '=?'.$charsetDecl. + '?'.$this->_encoder->getName(). + '?'.$line.'?='; + } + } + + return implode("\r\n ", $encodedTextLines); + } + + /** + * Generates tokens from the given string which include CRLF as individual tokens. + * + * @param string $token + * + * @return string[] + */ + protected function generateTokenLines($token) + { + return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE); + } + + /** + * Set a value into the cache. + * + * @param string $value + */ + protected function setCachedValue($value) + { + $this->_cachedValue = $value; + } + + /** + * Get the value in the cache. + * + * @return string + */ + protected function getCachedValue() + { + return $this->_cachedValue; + } + + /** + * Clear the cached value if $condition is met. + * + * @param bool $condition + */ + protected function clearCachedValueIf($condition) + { + if ($condition) { + $this->setCachedValue(null); + } + } + + /** + * Generate a list of all tokens in the final header. + * + * @param string $string The string to tokenize + * + * @return array An array of tokens as strings + */ + protected function toTokens($string = null) + { + if (is_null($string)) { + $string = $this->getFieldBody(); + } + + $tokens = array(); + + // Generate atoms; split at all invisible boundaries followed by WSP + foreach (preg_split('~(?=[ \t])~', $string) as $token) { + $newTokens = $this->generateTokenLines($token); + foreach ($newTokens as $newToken) { + $tokens[] = $newToken; + } + } + + return $tokens; + } + + /** + * Takes an array of tokens which appear in the header and turns them into + * an RFC 2822 compliant string, adding FWSP where needed. + * + * @param string[] $tokens + * + * @return string + */ + private function _tokensToString(array $tokens) + { + $lineCount = 0; + $headerLines = array(); + $headerLines[] = $this->_name.': '; + $currentLine = &$headerLines[$lineCount++]; + + // Build all tokens back into compliant header + foreach ($tokens as $i => $token) { + // Line longer than specified maximum or token was just a new line + if (("\r\n" == $token) || + ($i > 0 && strlen($currentLine.$token) > $this->_lineLength) + && 0 < strlen($currentLine)) { + $headerLines[] = ''; + $currentLine = &$headerLines[$lineCount++]; + } + + // Append token to the line + if ("\r\n" != $token) { + $currentLine .= $token; + } + } + + // Implode with FWS (RFC 2822, 2.2.3) + return implode("\r\n", $headerLines)."\r\n"; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php new file mode 100644 index 00000000000..4fd6674296e --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php @@ -0,0 +1,125 @@ + + * + * + * + * @param string $name of Header + * @param Swift_Mime_Grammar $grammar + */ + public function __construct($name, Swift_Mime_Grammar $grammar) + { + $this->setFieldName($name); + parent::__construct($grammar); + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_DATE; + } + + /** + * Set the model for the field body. + * + * This method takes a UNIX timestamp. + * + * @param int $model + */ + public function setFieldBodyModel($model) + { + $this->setTimestamp($model); + } + + /** + * Get the model for the field body. + * + * This method returns a UNIX timestamp. + * + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getTimestamp(); + } + + /** + * Get the UNIX timestamp of the Date in this Header. + * + * @return int + */ + public function getTimestamp() + { + return $this->_timestamp; + } + + /** + * Set the UNIX timestamp of the Date in this Header. + * + * @param int $timestamp + */ + public function setTimestamp($timestamp) + { + if (!is_null($timestamp)) { + $timestamp = (int) $timestamp; + } + $this->clearCachedValueIf($this->_timestamp != $timestamp); + $this->_timestamp = $timestamp; + } + + /** + * Get the string value of the body in this Header. + * + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * + * @see toString() + * + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) { + if (isset($this->_timestamp)) { + $this->setCachedValue(date('r', $this->_timestamp)); + } + } + + return $this->getCachedValue(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php new file mode 100644 index 00000000000..b114506b4a4 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php @@ -0,0 +1,180 @@ +setFieldName($name); + parent::__construct($grammar); + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_ID; + } + + /** + * Set the model for the field body. + * + * This method takes a string ID, or an array of IDs. + * + * @param mixed $model + * + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setId($model); + } + + /** + * Get the model for the field body. + * + * This method returns an array of IDs + * + * @return array + */ + public function getFieldBodyModel() + { + return $this->getIds(); + } + + /** + * Set the ID used in the value of this header. + * + * @param string|array $id + * + * @throws Swift_RfcComplianceException + */ + public function setId($id) + { + $this->setIds(is_array($id) ? $id : array($id)); + } + + /** + * Get the ID used in the value of this Header. + * + * If multiple IDs are set only the first is returned. + * + * @return string + */ + public function getId() + { + if (count($this->_ids) > 0) { + return $this->_ids[0]; + } + } + + /** + * Set a collection of IDs to use in the value of this Header. + * + * @param string[] $ids + * + * @throws Swift_RfcComplianceException + */ + public function setIds(array $ids) + { + $actualIds = array(); + + foreach ($ids as $id) { + $this->_assertValidId($id); + $actualIds[] = $id; + } + + $this->clearCachedValueIf($this->_ids != $actualIds); + $this->_ids = $actualIds; + } + + /** + * Get the list of IDs used in this Header. + * + * @return string[] + */ + public function getIds() + { + return $this->_ids; + } + + /** + * Get the string value of the body in this Header. + * + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@see toString()} for that). + * + * @see toString() + * + * @throws Swift_RfcComplianceException + * + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) { + $angleAddrs = array(); + + foreach ($this->_ids as $id) { + $angleAddrs[] = '<'.$id.'>'; + } + + $this->setCachedValue(implode(' ', $angleAddrs)); + } + + return $this->getCachedValue(); + } + + /** + * Throws an Exception if the id passed does not comply with RFC 2822. + * + * @param string $id + * + * @throws Swift_RfcComplianceException + */ + private function _assertValidId($id) + { + if (!preg_match( + '/^'.$this->getGrammar()->getDefinition('id-left').'@'. + $this->getGrammar()->getDefinition('id-right').'$/D', + $id + )) { + throw new Swift_RfcComplianceException( + 'Invalid ID given <'.$id.'>' + ); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php new file mode 100644 index 00000000000..798e7f42ace --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php @@ -0,0 +1,354 @@ +setFieldName($name); + $this->setEncoder($encoder); + parent::__construct($grammar); + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_MAILBOX; + } + + /** + * Set the model for the field body. + * + * This method takes a string, or an array of addresses. + * + * @param mixed $model + * + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setNameAddresses($model); + } + + /** + * Get the model for the field body. + * + * This method returns an associative array like {@link getNameAddresses()} + * + * @throws Swift_RfcComplianceException + * + * @return array + */ + public function getFieldBodyModel() + { + return $this->getNameAddresses(); + } + + /** + * Set a list of mailboxes to be shown in this Header. + * + * The mailboxes can be a simple array of addresses, or an array of + * key=>value pairs where (email => personalName). + * Example: + * + * setNameAddresses(array( + * 'chris@swiftmailer.org' => 'Chris Corbyn', + * 'mark@swiftmailer.org' //No associated personal name + * )); + * ?> + * + * + * @see __construct() + * @see setAddresses() + * @see setValue() + * + * @param string|string[] $mailboxes + * + * @throws Swift_RfcComplianceException + */ + public function setNameAddresses($mailboxes) + { + $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes); + $this->setCachedValue(null); //Clear any cached value + } + + /** + * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. + * + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddressStrings()); + * // array ( + * // 0 => Chris Corbyn , + * // 1 => Mark Corbyn + * // ) + * ?> + * + * + * @see getNameAddresses() + * @see toString() + * + * @throws Swift_RfcComplianceException + * + * @return string[] + */ + public function getNameAddressStrings() + { + return $this->_createNameAddressStrings($this->getNameAddresses()); + } + + /** + * Get all mailboxes in this Header as key=>value pairs. + * + * The key is the address and the value is the name (or null if none set). + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddresses()); + * // array ( + * // chris@swiftmailer.org => Chris Corbyn, + * // mark@swiftmailer.org => Mark Corbyn + * // ) + * ?> + * + * + * @see getAddresses() + * @see getNameAddressStrings() + * + * @return string[] + */ + public function getNameAddresses() + { + return $this->_mailboxes; + } + + /** + * Makes this Header represent a list of plain email addresses with no names. + * + * Example: + * + * setAddresses( + * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') + * ); + * ?> + * + * + * @see setNameAddresses() + * @see setValue() + * + * @param string[] $addresses + * + * @throws Swift_RfcComplianceException + */ + public function setAddresses($addresses) + { + $this->setNameAddresses(array_values((array) $addresses)); + } + + /** + * Get all email addresses in this Header. + * + * @see getNameAddresses() + * + * @return string[] + */ + public function getAddresses() + { + return array_keys($this->_mailboxes); + } + + /** + * Remove one or more addresses from this Header. + * + * @param string|string[] $addresses + */ + public function removeAddresses($addresses) + { + $this->setCachedValue(null); + foreach ((array) $addresses as $address) { + unset($this->_mailboxes[$address]); + } + } + + /** + * Get the string value of the body in this Header. + * + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * + * @see toString() + * + * @throws Swift_RfcComplianceException + * + * @return string + */ + public function getFieldBody() + { + // Compute the string value of the header only if needed + if (is_null($this->getCachedValue())) { + $this->setCachedValue($this->createMailboxListString($this->_mailboxes)); + } + + return $this->getCachedValue(); + } + + // -- Points of extension + + /** + * Normalizes a user-input list of mailboxes into consistent key=>value pairs. + * + * @param string[] $mailboxes + * + * @return string[] + */ + protected function normalizeMailboxes(array $mailboxes) + { + $actualMailboxes = array(); + + foreach ($mailboxes as $key => $value) { + if (is_string($key)) { + //key is email addr + $address = $key; + $name = $value; + } else { + $address = $value; + $name = null; + } + $this->_assertValidAddress($address); + $actualMailboxes[$address] = $name; + } + + return $actualMailboxes; + } + + /** + * Produces a compliant, formatted display-name based on the string given. + * + * @param string $displayName as displayed + * @param bool $shorten the first line to make remove for header name + * + * @return string + */ + protected function createDisplayNameString($displayName, $shorten = false) + { + return $this->createPhrase($this, $displayName, + $this->getCharset(), $this->getEncoder(), $shorten + ); + } + + /** + * Creates a string form of all the mailboxes in the passed array. + * + * @param string[] $mailboxes + * + * @throws Swift_RfcComplianceException + * + * @return string + */ + protected function createMailboxListString(array $mailboxes) + { + return implode(', ', $this->_createNameAddressStrings($mailboxes)); + } + + /** + * Redefine the encoding requirements for mailboxes. + * + * Commas and semicolons are used to separate + * multiple addresses, and should therefore be encoded + * + * @param string $token + * + * @return bool + */ + protected function tokenNeedsEncoding($token) + { + return preg_match('/[,;]/', $token) || parent::tokenNeedsEncoding($token); + } + + /** + * Return an array of strings conforming the the name-addr spec of RFC 2822. + * + * @param string[] $mailboxes + * + * @return string[] + */ + private function _createNameAddressStrings(array $mailboxes) + { + $strings = array(); + + foreach ($mailboxes as $email => $name) { + $mailboxStr = $email; + if (!is_null($name)) { + $nameStr = $this->createDisplayNameString($name, empty($strings)); + $mailboxStr = $nameStr.' <'.$mailboxStr.'>'; + } + $strings[] = $mailboxStr; + } + + return $strings; + } + + /** + * Throws an Exception if the address passed does not comply with RFC 2822. + * + * @param string $address + * + * @throws Swift_RfcComplianceException If invalid. + */ + private function _assertValidAddress($address) + { + if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D', + $address)) { + throw new Swift_RfcComplianceException( + 'Address in mailbox given ['.$address. + '] does not comply with RFC 2822, 3.6.2.' + ); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php new file mode 100644 index 00000000000..b52b964b773 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php @@ -0,0 +1,137 @@ + + */ +class Swift_Mime_Headers_OpenDKIMHeader implements Swift_Mime_Header +{ + /** + * The value of this Header. + * + * @var string + */ + private $_value; + + /** + * The name of this Header. + * + * @var string + */ + private $_fieldName; + + /** + * Creates a new SimpleHeader with $name. + * + * @param string $name + * @param Swift_Mime_HeaderEncoder $encoder + * @param Swift_Mime_Grammar $grammar + */ + public function __construct($name) + { + $this->_fieldName = $name; + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_TEXT; + } + + /** + * Set the model for the field body. + * + * This method takes a string for the field value. + * + * @param string $model + */ + public function setFieldBodyModel($model) + { + $this->setValue($model); + } + + /** + * Get the model for the field body. + * + * This method returns a string. + * + * @return string + */ + public function getFieldBodyModel() + { + return $this->getValue(); + } + + /** + * Get the (unencoded) value of this header. + * + * @return string + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the (unencoded) value of this header. + * + * @param string $value + */ + public function setValue($value) + { + $this->_value = $value; + } + + /** + * Get the value of this header prepared for rendering. + * + * @return string + */ + public function getFieldBody() + { + return $this->_value; + } + + /** + * Get this Header rendered as a RFC 2822 compliant string. + * + * @return string + */ + public function toString() + { + return $this->_fieldName.': '.$this->_value; + } + + /** + * Set the Header FieldName. + * + * @see Swift_Mime_Header::getFieldName() + */ + public function getFieldName() + { + return $this->_fieldName; + } + + /** + * Ignored. + */ + public function setCharset($charset) + { + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php new file mode 100644 index 00000000000..c506daec146 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php @@ -0,0 +1,258 @@ +_paramEncoder = $paramEncoder; + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_PARAMETERIZED; + } + + /** + * Set the character set used in this Header. + * + * @param string $charset + */ + public function setCharset($charset) + { + parent::setCharset($charset); + if (isset($this->_paramEncoder)) { + $this->_paramEncoder->charsetChanged($charset); + } + } + + /** + * Set the value of $parameter. + * + * @param string $parameter + * @param string $value + */ + public function setParameter($parameter, $value) + { + $this->setParameters(array_merge($this->getParameters(), array($parameter => $value))); + } + + /** + * Get the value of $parameter. + * + * @param string $parameter + * + * @return string + */ + public function getParameter($parameter) + { + $params = $this->getParameters(); + + return array_key_exists($parameter, $params) ? $params[$parameter] : null; + } + + /** + * Set an associative array of parameter names mapped to values. + * + * @param string[] $parameters + */ + public function setParameters(array $parameters) + { + $this->clearCachedValueIf($this->_params != $parameters); + $this->_params = $parameters; + } + + /** + * Returns an associative array of parameter names mapped to values. + * + * @return string[] + */ + public function getParameters() + { + return $this->_params; + } + + /** + * Get the value of this header prepared for rendering. + * + * @return string + */ + public function getFieldBody() //TODO: Check caching here + { + $body = parent::getFieldBody(); + foreach ($this->_params as $name => $value) { + if (!is_null($value)) { + // Add the parameter + $body .= '; '.$this->_createParameter($name, $value); + } + } + + return $body; + } + + /** + * Generate a list of all tokens in the final header. + * + * This doesn't need to be overridden in theory, but it is for implementation + * reasons to prevent potential breakage of attributes. + * + * @param string $string The string to tokenize + * + * @return array An array of tokens as strings + */ + protected function toTokens($string = null) + { + $tokens = parent::toTokens(parent::getFieldBody()); + + // Try creating any parameters + foreach ($this->_params as $name => $value) { + if (!is_null($value)) { + // Add the semi-colon separator + $tokens[count($tokens) - 1] .= ';'; + $tokens = array_merge($tokens, $this->generateTokenLines( + ' '.$this->_createParameter($name, $value) + )); + } + } + + return $tokens; + } + + /** + * Render a RFC 2047 compliant header parameter from the $name and $value. + * + * @param string $name + * @param string $value + * + * @return string + */ + private function _createParameter($name, $value) + { + $origValue = $value; + + $encoded = false; + // Allow room for parameter name, indices, "=" and DQUOTEs + $maxValueLength = $this->getMaxLineLength() - strlen($name.'=*N"";') - 1; + $firstLineOffset = 0; + + // If it's not already a valid parameter value... + if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) { + // TODO: text, or something else?? + // ... and it's not ascii + if (!preg_match('/^'.$this->getGrammar()->getDefinition('text').'*$/D', $value)) { + $encoded = true; + // Allow space for the indices, charset and language + $maxValueLength = $this->getMaxLineLength() - strlen($name.'*N*="";') - 1; + $firstLineOffset = strlen( + $this->getCharset()."'".$this->getLanguage()."'" + ); + } + } + + // Encode if we need to + if ($encoded || strlen($value) > $maxValueLength) { + if (isset($this->_paramEncoder)) { + $value = $this->_paramEncoder->encodeString( + $origValue, $firstLineOffset, $maxValueLength, $this->getCharset() + ); + } else { + // We have to go against RFC 2183/2231 in some areas for interoperability + $value = $this->getTokenAsEncodedWord($origValue); + $encoded = false; + } + } + + $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value); + + // Need to add indices + if (count($valueLines) > 1) { + $paramLines = array(); + foreach ($valueLines as $i => $line) { + $paramLines[] = $name.'*'.$i. + $this->_getEndOfParameterValue($line, true, $i == 0); + } + + return implode(";\r\n ", $paramLines); + } else { + return $name.$this->_getEndOfParameterValue( + $valueLines[0], $encoded, true + ); + } + } + + /** + * Returns the parameter value from the "=" and beyond. + * + * @param string $value to append + * @param bool $encoded + * @param bool $firstLine + * + * @return string + */ + private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false) + { + if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) { + $value = '"'.$value.'"'; + } + $prepend = '='; + if ($encoded) { + $prepend = '*='; + if ($firstLine) { + $prepend = '*='.$this->getCharset()."'".$this->getLanguage(). + "'"; + } + } + + return $prepend.$value; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php new file mode 100644 index 00000000000..2fffc7b4aac --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php @@ -0,0 +1,143 @@ +setFieldName($name); + parent::__construct($grammar); + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_PATH; + } + + /** + * Set the model for the field body. + * This method takes a string for an address. + * + * @param string $model + * + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setAddress($model); + } + + /** + * Get the model for the field body. + * This method returns a string email address. + * + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getAddress(); + } + + /** + * Set the Address which should appear in this Header. + * + * @param string $address + * + * @throws Swift_RfcComplianceException + */ + public function setAddress($address) + { + if (is_null($address)) { + $this->_address = null; + } elseif ('' == $address) { + $this->_address = ''; + } else { + $this->_assertValidAddress($address); + $this->_address = $address; + } + $this->setCachedValue(null); + } + + /** + * Get the address which is used in this Header (if any). + * + * Null is returned if no address is set. + * + * @return string + */ + public function getAddress() + { + return $this->_address; + } + + /** + * Get the string value of the body in this Header. + * + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * + * @see toString() + * + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) { + if (isset($this->_address)) { + $this->setCachedValue('<'.$this->_address.'>'); + } + } + + return $this->getCachedValue(); + } + + /** + * Throws an Exception if the address passed does not comply with RFC 2822. + * + * @param string $address + * + * @throws Swift_RfcComplianceException If address is invalid + */ + private function _assertValidAddress($address) + { + if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D', + $address)) { + throw new Swift_RfcComplianceException( + 'Address set in PathHeader does not comply with addr-spec of RFC 2822.' + ); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php new file mode 100644 index 00000000000..86177f14a1f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php @@ -0,0 +1,112 @@ +setFieldName($name); + $this->setEncoder($encoder); + parent::__construct($grammar); + } + + /** + * Get the type of Header that this instance represents. + * + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + * + * @return int + */ + public function getFieldType() + { + return self::TYPE_TEXT; + } + + /** + * Set the model for the field body. + * + * This method takes a string for the field value. + * + * @param string $model + */ + public function setFieldBodyModel($model) + { + $this->setValue($model); + } + + /** + * Get the model for the field body. + * + * This method returns a string. + * + * @return string + */ + public function getFieldBodyModel() + { + return $this->getValue(); + } + + /** + * Get the (unencoded) value of this header. + * + * @return string + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the (unencoded) value of this header. + * + * @param string $value + */ + public function setValue($value) + { + $this->clearCachedValueIf($this->_value != $value); + $this->_value = $value; + } + + /** + * Get the value of this header prepared for rendering. + * + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) { + $this->setCachedValue( + $this->encodeWords($this, $this->_value) + ); + } + + return $this->getCachedValue(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Message.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Message.php new file mode 100644 index 00000000000..9b36d216271 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/Message.php @@ -0,0 +1,223 @@ + 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $address + * @param string $name optional + */ + public function setSender($address, $name = null); + + /** + * Get the sender address for this message. + * + * This has a higher significance than the From address. + * + * @return string + */ + public function getSender(); + + /** + * Set the From address of this message. + * + * It is permissible for multiple From addresses to be set using an array. + * + * If multiple From addresses are used, you SHOULD set the Sender address and + * according to RFC 2822, MUST set the sender address. + * + * An array can be used if display names are to be provided: i.e. + * array('email@address.com' => 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null); + + /** + * Get the From address(es) of this message. + * + * This method always returns an associative array where the keys are the + * addresses. + * + * @return string[] + */ + public function getFrom(); + + /** + * Set the Reply-To address(es). + * + * Any replies from the receiver will be sent to this address. + * + * It is permissible for multiple reply-to addresses to be set using an array. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null); + + /** + * Get the Reply-To addresses for this message. + * + * This method always returns an associative array where the keys provide the + * email addresses. + * + * @return string[] + */ + public function getReplyTo(); + + /** + * Set the To address(es). + * + * Recipients set in this field will receive a copy of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setCc()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null); + + /** + * Get the To addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getTo(); + + /** + * Set the Cc address(es). + * + * Recipients set in this field will receive a 'carbon-copy' of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null); + + /** + * Get the Cc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getCc(); + + /** + * Set the Bcc address(es). + * + * Recipients set in this field will receive a 'blind-carbon-copy' of this + * message. + * + * In other words, they will get the message, but any other recipients of the + * message will have no such knowledge of their receipt of it. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null); + + /** + * Get the Bcc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getBcc(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php new file mode 100644 index 00000000000..30f460cdcdb --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php @@ -0,0 +1,117 @@ +setContentType('text/plain'); + if (!is_null($charset)) { + $this->setCharset($charset); + } + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * + * @param mixed $body + * @param string $contentType optional + * @param string $charset optional + * + * @return Swift_Mime_MimePart + */ + public function setBody($body, $contentType = null, $charset = null) + { + if (isset($charset)) { + $this->setCharset($charset); + } + $body = $this->_convertString($body); + + parent::setBody($body, $contentType); + + return $this; + } + + /** + * Get the character set of this entity. + * + * @return string + */ + public function getCharset() + { + return $this->_getHeaderParameter('Content-Type', 'charset'); + } + + /** + * Set the character set of this entity. + * + * @param string $charset + * + * @return Swift_Mime_MimePart + */ + public function setCharset($charset) + { + $this->_setHeaderParameter('Content-Type', 'charset', $charset); + if ($charset !== $this->_userCharset) { + $this->_clearCache(); + } + $this->_userCharset = $charset; + parent::charsetChanged($charset); + + return $this; + } + + /** + * Get the format of this entity (i.e. flowed or fixed). + * + * @return string + */ + public function getFormat() + { + return $this->_getHeaderParameter('Content-Type', 'format'); + } + + /** + * Set the format of this entity (flowed or fixed). + * + * @param string $format + * + * @return Swift_Mime_MimePart + */ + public function setFormat($format) + { + $this->_setHeaderParameter('Content-Type', 'format', $format); + $this->_userFormat = $format; + + return $this; + } + + /** + * Test if delsp is being used for this entity. + * + * @return bool + */ + public function getDelSp() + { + return 'yes' == $this->_getHeaderParameter('Content-Type', 'delsp') ? true : false; + } + + /** + * Turn delsp on or off for this entity. + * + * @param bool $delsp + * + * @return Swift_Mime_MimePart + */ + public function setDelSp($delsp = true) + { + $this->_setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); + $this->_userDelSp = $delsp; + + return $this; + } + + /** + * Get the nesting level of this entity. + * + * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED + * + * @return int + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Receive notification that the charset has changed on this document, or a + * parent document. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + /** Fix the content-type and encoding of this entity */ + protected function _fixHeaders() + { + parent::_fixHeaders(); + if (count($this->getChildren())) { + $this->_setHeaderParameter('Content-Type', 'charset', null); + $this->_setHeaderParameter('Content-Type', 'format', null); + $this->_setHeaderParameter('Content-Type', 'delsp', null); + } else { + $this->setCharset($this->_userCharset); + $this->setFormat($this->_userFormat); + $this->setDelSp($this->_userDelSp); + } + } + + /** Set the nesting level of this entity */ + protected function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + + /** Encode charset when charset is not utf-8 */ + protected function _convertString($string) + { + $charset = strtolower($this->getCharset()); + if (!in_array($charset, array('utf-8', 'iso-8859-1', ''))) { + // mb_convert_encoding must be the first one to check, since iconv cannot convert some words. + if (function_exists('mb_convert_encoding')) { + $string = mb_convert_encoding($string, $charset, 'utf-8'); + } elseif (function_exists('iconv')) { + $string = iconv('utf-8//TRANSLIT//IGNORE', $charset, $string); + } else { + throw new Swift_SwiftException('No suitable convert encoding function (use UTF-8 as your charset or install the mbstring or iconv extension).'); + } + + return $string; + } + + return $string; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php new file mode 100644 index 00000000000..e15c6ef95b1 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php @@ -0,0 +1,34 @@ +_encoder = $encoder; + $this->_paramEncoder = $paramEncoder; + $this->_grammar = $grammar; + $this->_charset = $charset; + } + + /** + * Create a new Mailbox Header with a list of $addresses. + * + * @param string $name + * @param array|string|null $addresses + * + * @return Swift_Mime_Header + */ + public function createMailboxHeader($name, $addresses = null) + { + $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder, $this->_grammar); + if (isset($addresses)) { + $header->setFieldBodyModel($addresses); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Create a new Date header using $timestamp (UNIX time). + * + * @param string $name + * @param int|null $timestamp + * + * @return Swift_Mime_Header + */ + public function createDateHeader($name, $timestamp = null) + { + $header = new Swift_Mime_Headers_DateHeader($name, $this->_grammar); + if (isset($timestamp)) { + $header->setFieldBodyModel($timestamp); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Create a new basic text header with $name and $value. + * + * @param string $name + * @param string $value + * + * @return Swift_Mime_Header + */ + public function createTextHeader($name, $value = null) + { + $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder, $this->_grammar); + if (isset($value)) { + $header->setFieldBodyModel($value); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Create a new ParameterizedHeader with $name, $value and $params. + * + * @param string $name + * @param string $value + * @param array $params + * + * @return Swift_Mime_ParameterizedHeader + */ + public function createParameterizedHeader($name, $value = null, + $params = array()) + { + $header = new Swift_Mime_Headers_ParameterizedHeader($name, $this->_encoder, strtolower($name) == 'content-disposition' ? $this->_paramEncoder : null, $this->_grammar); + if (isset($value)) { + $header->setFieldBodyModel($value); + } + foreach ($params as $k => $v) { + $header->setParameter($k, $v); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Create a new ID header for Message-ID or Content-ID. + * + * @param string $name + * @param string|array $ids + * + * @return Swift_Mime_Header + */ + public function createIdHeader($name, $ids = null) + { + $header = new Swift_Mime_Headers_IdentificationHeader($name, $this->_grammar); + if (isset($ids)) { + $header->setFieldBodyModel($ids); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Create a new Path header with an address (path) in it. + * + * @param string $name + * @param string $path + * + * @return Swift_Mime_Header + */ + public function createPathHeader($name, $path = null) + { + $header = new Swift_Mime_Headers_PathHeader($name, $this->_grammar); + if (isset($path)) { + $header->setFieldBodyModel($path); + } + $this->_setHeaderCharset($header); + + return $header; + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charset = $charset; + $this->_encoder->charsetChanged($charset); + $this->_paramEncoder->charsetChanged($charset); + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->_encoder = clone $this->_encoder; + $this->_paramEncoder = clone $this->_paramEncoder; + } + + /** Apply the charset to the Header */ + private function _setHeaderCharset(Swift_Mime_Header $header) + { + if (isset($this->_charset)) { + $header->setCharset($this->_charset); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php new file mode 100644 index 00000000000..cf8bf14a750 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php @@ -0,0 +1,397 @@ +_factory = $factory; + if (isset($charset)) { + $this->setCharset($charset); + } + } + + /** + * Set the charset used by these headers. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_charset = $charset; + $this->_factory->charsetChanged($charset); + $this->_notifyHeadersOfCharset($charset); + } + + /** + * Add a new Mailbox Header with a list of $addresses. + * + * @param string $name + * @param array|string $addresses + */ + public function addMailboxHeader($name, $addresses = null) + { + $this->_storeHeader($name, + $this->_factory->createMailboxHeader($name, $addresses)); + } + + /** + * Add a new Date header using $timestamp (UNIX time). + * + * @param string $name + * @param int $timestamp + */ + public function addDateHeader($name, $timestamp = null) + { + $this->_storeHeader($name, + $this->_factory->createDateHeader($name, $timestamp)); + } + + /** + * Add a new basic text header with $name and $value. + * + * @param string $name + * @param string $value + */ + public function addTextHeader($name, $value = null) + { + $this->_storeHeader($name, + $this->_factory->createTextHeader($name, $value)); + } + + /** + * Add a new ParameterizedHeader with $name, $value and $params. + * + * @param string $name + * @param string $value + * @param array $params + */ + public function addParameterizedHeader($name, $value = null, $params = array()) + { + $this->_storeHeader($name, $this->_factory->createParameterizedHeader($name, $value, $params)); + } + + /** + * Add a new ID header for Message-ID or Content-ID. + * + * @param string $name + * @param string|array $ids + */ + public function addIdHeader($name, $ids = null) + { + $this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids)); + } + + /** + * Add a new Path header with an address (path) in it. + * + * @param string $name + * @param string $path + */ + public function addPathHeader($name, $path = null) + { + $this->_storeHeader($name, $this->_factory->createPathHeader($name, $path)); + } + + /** + * Returns true if at least one header with the given $name exists. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + * + * @return bool + */ + public function has($name, $index = 0) + { + $lowerName = strtolower($name); + + return array_key_exists($lowerName, $this->_headers) && array_key_exists($index, $this->_headers[$lowerName]); + } + + /** + * Set a header in the HeaderSet. + * + * The header may be a previously fetched header via {@link get()} or it may + * be one that has been created separately. + * + * If $index is specified, the header will be inserted into the set at this + * offset. + * + * @param Swift_Mime_Header $header + * @param int $index + */ + public function set(Swift_Mime_Header $header, $index = 0) + { + $this->_storeHeader($header->getFieldName(), $header, $index); + } + + /** + * Get the header with the given $name. + * + * If multiple headers match, the actual one may be specified by $index. + * Returns NULL if none present. + * + * @param string $name + * @param int $index + * + * @return Swift_Mime_Header + */ + public function get($name, $index = 0) + { + if ($this->has($name, $index)) { + $lowerName = strtolower($name); + + return $this->_headers[$lowerName][$index]; + } + } + + /** + * Get all headers with the given $name. + * + * @param string $name + * + * @return array + */ + public function getAll($name = null) + { + if (!isset($name)) { + $headers = array(); + foreach ($this->_headers as $collection) { + $headers = array_merge($headers, $collection); + } + + return $headers; + } + + $lowerName = strtolower($name); + if (!array_key_exists($lowerName, $this->_headers)) { + return array(); + } + + return $this->_headers[$lowerName]; + } + + /** + * Return the name of all Headers. + * + * @return array + */ + public function listAll() + { + $headers = $this->_headers; + if ($this->_canSort()) { + uksort($headers, array($this, '_sortHeaders')); + } + + return array_keys($headers); + } + + /** + * Remove the header with the given $name if it's set. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + */ + public function remove($name, $index = 0) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName][$index]); + } + + /** + * Remove all headers with the given $name. + * + * @param string $name + */ + public function removeAll($name) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName]); + } + + /** + * Create a new instance of this HeaderSet. + * + * @return Swift_Mime_HeaderSet + */ + public function newInstance() + { + return new self($this->_factory); + } + + /** + * Define a list of Header names as an array in the correct order. + * + * These Headers will be output in the given order where present. + * + * @param array $sequence + */ + public function defineOrdering(array $sequence) + { + $this->_order = array_flip(array_map('strtolower', $sequence)); + } + + /** + * Set a list of header names which must always be displayed when set. + * + * Usually headers without a field value won't be output unless set here. + * + * @param array $names + */ + public function setAlwaysDisplayed(array $names) + { + $this->_required = array_flip(array_map('strtolower', $names)); + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + /** + * Returns a string with a representation of all headers. + * + * @return string + */ + public function toString() + { + $string = ''; + $headers = $this->_headers; + if ($this->_canSort()) { + uksort($headers, array($this, '_sortHeaders')); + } + foreach ($headers as $collection) { + foreach ($collection as $header) { + if ($this->_isDisplayed($header) || $header->getFieldBody() != '') { + $string .= $header->toString(); + } + } + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** Save a Header to the internal collection */ + private function _storeHeader($name, Swift_Mime_Header $header, $offset = null) + { + if (!isset($this->_headers[strtolower($name)])) { + $this->_headers[strtolower($name)] = array(); + } + if (!isset($offset)) { + $this->_headers[strtolower($name)][] = $header; + } else { + $this->_headers[strtolower($name)][$offset] = $header; + } + } + + /** Test if the headers can be sorted */ + private function _canSort() + { + return count($this->_order) > 0; + } + + /** uksort() algorithm for Header ordering */ + private function _sortHeaders($a, $b) + { + $lowerA = strtolower($a); + $lowerB = strtolower($b); + $aPos = array_key_exists($lowerA, $this->_order) ? $this->_order[$lowerA] : -1; + $bPos = array_key_exists($lowerB, $this->_order) ? $this->_order[$lowerB] : -1; + + if (-1 === $aPos && -1 === $bPos) { + // just be sure to be determinist here + return $a > $b ? -1 : 1; + } + + if ($aPos == -1) { + return 1; + } elseif ($bPos == -1) { + return -1; + } + + return $aPos < $bPos ? -1 : 1; + } + + /** Test if the given Header is always displayed */ + private function _isDisplayed(Swift_Mime_Header $header) + { + return array_key_exists(strtolower($header->getFieldName()), $this->_required); + } + + /** Notify all Headers of the new charset */ + private function _notifyHeadersOfCharset($charset) + { + foreach ($this->_headers as $headerGroup) { + foreach ($headerGroup as $header) { + $header->setCharset($charset); + } + } + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->_factory = clone $this->_factory; + foreach ($this->_headers as $groupKey => $headerGroup) { + foreach ($headerGroup as $key => $header) { + $this->_headers[$groupKey][$key] = clone $header; + } + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php new file mode 100644 index 00000000000..124644b5a93 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php @@ -0,0 +1,649 @@ +getHeaders()->defineOrdering(array( + 'Return-Path', + 'Received', + 'DKIM-Signature', + 'DomainKey-Signature', + 'Sender', + 'Message-ID', + 'Date', + 'Subject', + 'From', + 'Reply-To', + 'To', + 'Cc', + 'Bcc', + 'MIME-Version', + 'Content-Type', + 'Content-Transfer-Encoding', + )); + $this->getHeaders()->setAlwaysDisplayed(array('Date', 'Message-ID', 'From')); + $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); + $this->setDate(time()); + $this->setId($this->getId()); + $this->getHeaders()->addMailboxHeader('From'); + } + + /** + * Always returns {@link LEVEL_TOP} for a message instance. + * + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_TOP; + } + + /** + * Set the subject of this message. + * + * @param string $subject + * + * @return Swift_Mime_SimpleMessage + */ + public function setSubject($subject) + { + if (!$this->_setHeaderFieldModel('Subject', $subject)) { + $this->getHeaders()->addTextHeader('Subject', $subject); + } + + return $this; + } + + /** + * Get the subject of this message. + * + * @return string + */ + public function getSubject() + { + return $this->_getHeaderFieldModel('Subject'); + } + + /** + * Set the date at which this message was created. + * + * @param int $date + * + * @return Swift_Mime_SimpleMessage + */ + public function setDate($date) + { + if (!$this->_setHeaderFieldModel('Date', $date)) { + $this->getHeaders()->addDateHeader('Date', $date); + } + + return $this; + } + + /** + * Get the date at which this message was created. + * + * @return int + */ + public function getDate() + { + return $this->_getHeaderFieldModel('Date'); + } + + /** + * Set the return-path (the bounce address) of this message. + * + * @param string $address + * + * @return Swift_Mime_SimpleMessage + */ + public function setReturnPath($address) + { + if (!$this->_setHeaderFieldModel('Return-Path', $address)) { + $this->getHeaders()->addPathHeader('Return-Path', $address); + } + + return $this; + } + + /** + * Get the return-path (bounce address) of this message. + * + * @return string + */ + public function getReturnPath() + { + return $this->_getHeaderFieldModel('Return-Path'); + } + + /** + * Set the sender of this message. + * + * This does not override the From field, but it has a higher significance. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setSender($address, $name = null) + { + if (!is_array($address) && isset($name)) { + $address = array($address => $name); + } + + if (!$this->_setHeaderFieldModel('Sender', (array) $address)) { + $this->getHeaders()->addMailboxHeader('Sender', (array) $address); + } + + return $this; + } + + /** + * Get the sender of this message. + * + * @return string + */ + public function getSender() + { + return $this->_getHeaderFieldModel('Sender'); + } + + /** + * Add a From: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function addFrom($address, $name = null) + { + $current = $this->getFrom(); + $current[$address] = $name; + + return $this->setFrom($current); + } + + /** + * Set the from address of this message. + * + * You may pass an array of addresses if this message is from multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string|array $addresses + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setFrom($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('From', (array) $addresses)) { + $this->getHeaders()->addMailboxHeader('From', (array) $addresses); + } + + return $this; + } + + /** + * Get the from address of this message. + * + * @return mixed + */ + public function getFrom() + { + return $this->_getHeaderFieldModel('From'); + } + + /** + * Add a Reply-To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function addReplyTo($address, $name = null) + { + $current = $this->getReplyTo(); + $current[$address] = $name; + + return $this->setReplyTo($current); + } + + /** + * Set the reply-to address of this message. + * + * You may pass an array of addresses if replies will go to multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param mixed $addresses + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setReplyTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) { + $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); + } + + return $this; + } + + /** + * Get the reply-to address of this message. + * + * @return string + */ + public function getReplyTo() + { + return $this->_getHeaderFieldModel('Reply-To'); + } + + /** + * Add a To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function addTo($address, $name = null) + { + $current = $this->getTo(); + $current[$address] = $name; + + return $this->setTo($current); + } + + /** + * Set the to addresses of this message. + * + * If multiple recipients will receive the message an array should be used. + * Example: array('receiver@domain.org', 'other@domain.org' => 'A name') + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param mixed $addresses + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('To', (array) $addresses)) { + $this->getHeaders()->addMailboxHeader('To', (array) $addresses); + } + + return $this; + } + + /** + * Get the To addresses of this message. + * + * @return array + */ + public function getTo() + { + return $this->_getHeaderFieldModel('To'); + } + + /** + * Add a Cc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function addCc($address, $name = null) + { + $current = $this->getCc(); + $current[$address] = $name; + + return $this->setCc($current); + } + + /** + * Set the Cc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param mixed $addresses + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setCc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) { + $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); + } + + return $this; + } + + /** + * Get the Cc address of this message. + * + * @return array + */ + public function getCc() + { + return $this->_getHeaderFieldModel('Cc'); + } + + /** + * Add a Bcc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function addBcc($address, $name = null) + { + $current = $this->getBcc(); + $current[$address] = $name; + + return $this->setBcc($current); + } + + /** + * Set the Bcc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param mixed $addresses + * @param string $name optional + * + * @return Swift_Mime_SimpleMessage + */ + public function setBcc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) { + $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); + } + + return $this; + } + + /** + * Get the Bcc addresses of this message. + * + * @return array + */ + public function getBcc() + { + return $this->_getHeaderFieldModel('Bcc'); + } + + /** + * Set the priority of this message. + * + * The value is an integer where 1 is the highest priority and 5 is the lowest. + * + * @param int $priority + * + * @return Swift_Mime_SimpleMessage + */ + public function setPriority($priority) + { + $priorityMap = array( + 1 => 'Highest', + 2 => 'High', + 3 => 'Normal', + 4 => 'Low', + 5 => 'Lowest', + ); + $pMapKeys = array_keys($priorityMap); + if ($priority > max($pMapKeys)) { + $priority = max($pMapKeys); + } elseif ($priority < min($pMapKeys)) { + $priority = min($pMapKeys); + } + if (!$this->_setHeaderFieldModel('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority]))) { + $this->getHeaders()->addTextHeader('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority])); + } + + return $this; + } + + /** + * Get the priority of this message. + * + * The returned value is an integer where 1 is the highest priority and 5 + * is the lowest. + * + * @return int + */ + public function getPriority() + { + list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'), + '%[1-5]' + ); + + return isset($priority) ? $priority : 3; + } + + /** + * Ask for a delivery receipt from the recipient to be sent to $addresses. + * + * @param array $addresses + * + * @return Swift_Mime_SimpleMessage + */ + public function setReadReceiptTo($addresses) + { + if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) { + $this->getHeaders() + ->addMailboxHeader('Disposition-Notification-To', $addresses); + } + + return $this; + } + + /** + * Get the addresses to which a read-receipt will be sent. + * + * @return string + */ + public function getReadReceiptTo() + { + return $this->_getHeaderFieldModel('Disposition-Notification-To'); + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart. + * + * @param Swift_Mime_MimeEntity $entity + * + * @return Swift_Mime_SimpleMessage + */ + public function attach(Swift_Mime_MimeEntity $entity) + { + $this->setChildren(array_merge($this->getChildren(), array($entity))); + + return $this; + } + + /** + * Remove an already attached entity. + * + * @param Swift_Mime_MimeEntity $entity + * + * @return Swift_Mime_SimpleMessage + */ + public function detach(Swift_Mime_MimeEntity $entity) + { + $newChildren = array(); + foreach ($this->getChildren() as $child) { + if ($entity !== $child) { + $newChildren[] = $child; + } + } + $this->setChildren($newChildren); + + return $this; + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source. + * This method should be used when embedding images or other data in a message. + * + * @param Swift_Mime_MimeEntity $entity + * + * @return string + */ + public function embed(Swift_Mime_MimeEntity $entity) + { + $this->attach($entity); + + return 'cid:'.$entity->getId(); + } + + /** + * Get this message as a complete string. + * + * @return string + */ + public function toString() + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + $string = parent::toString(); + $this->setChildren($children); + } else { + $string = parent::toString(); + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @see toString() + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this message to a {@link Swift_InputByteStream}. + * + * @param Swift_InputByteStream $is + */ + public function toByteStream(Swift_InputByteStream $is) + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + parent::toByteStream($is); + $this->setChildren($children); + } else { + parent::toByteStream($is); + } + } + + /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */ + protected function _getIdField() + { + return 'Message-ID'; + } + + /** Turn the body of this message into a child of itself if needed */ + protected function _becomeMimePart() + { + $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), + $this->_getCache(), $this->_getGrammar(), $this->_userCharset + ); + $part->setContentType($this->_userContentType); + $part->setBody($this->getBody()); + $part->setFormat($this->_userFormat); + $part->setDelSp($this->_userDelSp); + $part->_setNestingLevel($this->_getTopNestingLevel()); + + return $part; + } + + /** Get the highest nesting level nested inside this message */ + private function _getTopNestingLevel() + { + $highestLevel = $this->getNestingLevel(); + foreach ($this->getChildren() as $child) { + $childLevel = $child->getNestingLevel(); + if ($highestLevel < $childLevel) { + $highestLevel = $childLevel; + } + } + + return $highestLevel; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php new file mode 100644 index 00000000000..6b91718fb85 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php @@ -0,0 +1,843 @@ + array(self::LEVEL_TOP, self::LEVEL_MIXED), + 'multipart/alternative' => array(self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE), + 'multipart/related' => array(self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED), + ); + + /** A set of filter rules to define what level an entity should be nested at */ + private $_compoundLevelFilters = array(); + + /** The nesting level of this entity */ + private $_nestingLevel = self::LEVEL_ALTERNATIVE; + + /** A KeyCache instance used during encoding and streaming */ + private $_cache; + + /** Direct descendants of this entity */ + private $_immediateChildren = array(); + + /** All descendants of this entity */ + private $_children = array(); + + /** The maximum line length of the body of this entity */ + private $_maxLineLength = 78; + + /** The order in which alternative mime types should appear */ + private $_alternativePartOrder = array( + 'text/plain' => 1, + 'text/html' => 2, + 'multipart/related' => 3, + ); + + /** The CID of this entity */ + private $_id; + + /** The key used for accessing the cache */ + private $_cacheKey; + + protected $_userContentType; + + /** + * Create a new SimpleMimeEntity with $headers, $encoder and $cache. + * + * @param Swift_Mime_HeaderSet $headers + * @param Swift_Mime_ContentEncoder $encoder + * @param Swift_KeyCache $cache + * @param Swift_Mime_Grammar $grammar + */ + public function __construct(Swift_Mime_HeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_Mime_Grammar $grammar) + { + $this->_cacheKey = md5(uniqid(getmypid().mt_rand(), true)); + $this->_cache = $cache; + $this->_headers = $headers; + $this->_grammar = $grammar; + $this->setEncoder($encoder); + $this->_headers->defineOrdering(array('Content-Type', 'Content-Transfer-Encoding')); + + // This array specifies that, when the entire MIME document contains + // $compoundLevel, then for each child within $level, if its Content-Type + // is $contentType then it should be treated as if it's level is + // $neededLevel instead. I tried to write that unambiguously! :-\ + // Data Structure: + // array ( + // $compoundLevel => array( + // $level => array( + // $contentType => $neededLevel + // ) + // ) + // ) + + $this->_compoundLevelFilters = array( + (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => array( + self::LEVEL_ALTERNATIVE => array( + 'text/plain' => self::LEVEL_ALTERNATIVE, + 'text/html' => self::LEVEL_RELATED, + ), + ), + ); + + $this->_id = $this->getRandomId(); + } + + /** + * Generate a new Content-ID or Message-ID for this MIME entity. + * + * @return string + */ + public function generateId() + { + $this->setId($this->getRandomId()); + + return $this->_id; + } + + /** + * Get the {@link Swift_Mime_HeaderSet} for this entity. + * + * @return Swift_Mime_HeaderSet + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Get the nesting level of this entity. + * + * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE + * + * @return int + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Get the Content-type of this entity. + * + * @return string + */ + public function getContentType() + { + return $this->_getHeaderFieldModel('Content-Type'); + } + + /** + * Set the Content-type of this entity. + * + * @param string $type + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setContentType($type) + { + $this->_setContentTypeInHeaders($type); + // Keep track of the value so that if the content-type changes automatically + // due to added child entities, it can be restored if they are later removed + $this->_userContentType = $type; + + return $this; + } + + /** + * Get the CID of this entity. + * + * The CID will only be present in headers if a Content-ID header is present. + * + * @return string + */ + public function getId() + { + $tmp = (array) $this->_getHeaderFieldModel($this->_getIdField()); + + return $this->_headers->has($this->_getIdField()) ? current($tmp) : $this->_id; + } + + /** + * Set the CID of this entity. + * + * @param string $id + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setId($id) + { + if (!$this->_setHeaderFieldModel($this->_getIdField(), $id)) { + $this->_headers->addIdHeader($this->_getIdField(), $id); + } + $this->_id = $id; + + return $this; + } + + /** + * Get the description of this entity. + * + * This value comes from the Content-Description header if set. + * + * @return string + */ + public function getDescription() + { + return $this->_getHeaderFieldModel('Content-Description'); + } + + /** + * Set the description of this entity. + * + * This method sets a value in the Content-ID header. + * + * @param string $description + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setDescription($description) + { + if (!$this->_setHeaderFieldModel('Content-Description', $description)) { + $this->_headers->addTextHeader('Content-Description', $description); + } + + return $this; + } + + /** + * Get the maximum line length of the body of this entity. + * + * @return int + */ + public function getMaxLineLength() + { + return $this->_maxLineLength; + } + + /** + * Set the maximum line length of lines in this body. + * + * Though not enforced by the library, lines should not exceed 1000 chars. + * + * @param int $length + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setMaxLineLength($length) + { + $this->_maxLineLength = $length; + + return $this; + } + + /** + * Get all children added to this entity. + * + * @return Swift_Mime_MimeEntity[] + */ + public function getChildren() + { + return $this->_children; + } + + /** + * Set all children of this entity. + * + * @param Swift_Mime_MimeEntity[] $children + * @param int $compoundLevel For internal use only + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setChildren(array $children, $compoundLevel = null) + { + // TODO: Try to refactor this logic + + $compoundLevel = isset($compoundLevel) ? $compoundLevel : $this->_getCompoundLevel($children); + $immediateChildren = array(); + $grandchildren = array(); + $newContentType = $this->_userContentType; + + foreach ($children as $child) { + $level = $this->_getNeededChildLevel($child, $compoundLevel); + if (empty($immediateChildren)) { + //first iteration + $immediateChildren = array($child); + } else { + $nextLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + if ($nextLevel == $level) { + $immediateChildren[] = $child; + } elseif ($level < $nextLevel) { + // Re-assign immediateChildren to grandchildren + $grandchildren = array_merge($grandchildren, $immediateChildren); + // Set new children + $immediateChildren = array($child); + } else { + $grandchildren[] = $child; + } + } + } + + if ($immediateChildren) { + $lowestLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + + // Determine which composite media type is needed to accommodate the + // immediate children + foreach ($this->_compositeRanges as $mediaType => $range) { + if ($lowestLevel > $range[0] && $lowestLevel <= $range[1]) { + $newContentType = $mediaType; + + break; + } + } + + // Put any grandchildren in a subpart + if (!empty($grandchildren)) { + $subentity = $this->_createChild(); + $subentity->_setNestingLevel($lowestLevel); + $subentity->setChildren($grandchildren, $compoundLevel); + array_unshift($immediateChildren, $subentity); + } + } + + $this->_immediateChildren = $immediateChildren; + $this->_children = $children; + $this->_setContentTypeInHeaders($newContentType); + $this->_fixHeaders(); + $this->_sortChildren(); + + return $this; + } + + /** + * Get the body of this entity as a string. + * + * @return string + */ + public function getBody() + { + return $this->_body instanceof Swift_OutputByteStream ? $this->_readStream($this->_body) : $this->_body; + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * + * @param mixed $body + * @param string $contentType optional + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setBody($body, $contentType = null) + { + if ($body !== $this->_body) { + $this->_clearCache(); + } + + $this->_body = $body; + if (isset($contentType)) { + $this->setContentType($contentType); + } + + return $this; + } + + /** + * Get the encoder used for the body of this entity. + * + * @return Swift_Mime_ContentEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Set the encoder used for the body of this entity. + * + * @param Swift_Mime_ContentEncoder $encoder + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setEncoder(Swift_Mime_ContentEncoder $encoder) + { + if ($encoder !== $this->_encoder) { + $this->_clearCache(); + } + + $this->_encoder = $encoder; + $this->_setEncoding($encoder->getName()); + $this->_notifyEncoderChanged($encoder); + + return $this; + } + + /** + * Get the boundary used to separate children in this entity. + * + * @return string + */ + public function getBoundary() + { + if (!isset($this->_boundary)) { + $this->_boundary = '_=_swift_v4_'.time().'_'.md5(getmypid().mt_rand().uniqid('', true)).'_=_'; + } + + return $this->_boundary; + } + + /** + * Set the boundary used to separate children in this entity. + * + * @param string $boundary + * + * @throws Swift_RfcComplianceException + * + * @return Swift_Mime_SimpleMimeEntity + */ + public function setBoundary($boundary) + { + $this->_assertValidBoundary($boundary); + $this->_boundary = $boundary; + + return $this; + } + + /** + * Receive notification that the charset of this entity, or a parent entity + * has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_notifyCharsetChanged($charset); + } + + /** + * Receive notification that the encoder of this entity or a parent entity + * has changed. + * + * @param Swift_Mime_ContentEncoder $encoder + */ + public function encoderChanged(Swift_Mime_ContentEncoder $encoder) + { + $this->_notifyEncoderChanged($encoder); + } + + /** + * Get this entire entity as a string. + * + * @return string + */ + public function toString() + { + $string = $this->_headers->toString(); + $string .= $this->_bodyToString(); + + return $string; + } + + /** + * Get this entire entity as a string. + * + * @return string + */ + protected function _bodyToString() + { + $string = ''; + + if (isset($this->_body) && empty($this->_immediateChildren)) { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) { + $body = $this->_cache->getString($this->_cacheKey, 'body'); + } else { + $body = "\r\n".$this->_encoder->encodeString($this->getBody(), 0, $this->getMaxLineLength()); + $this->_cache->setString($this->_cacheKey, 'body', $body, Swift_KeyCache::MODE_WRITE); + } + $string .= $body; + } + + if (!empty($this->_immediateChildren)) { + foreach ($this->_immediateChildren as $child) { + $string .= "\r\n\r\n--".$this->getBoundary()."\r\n"; + $string .= $child->toString(); + } + $string .= "\r\n\r\n--".$this->getBoundary()."--\r\n"; + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @see toString() + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this entire entity to a {@see Swift_InputByteStream}. + * + * @param Swift_InputByteStream + */ + public function toByteStream(Swift_InputByteStream $is) + { + $is->write($this->_headers->toString()); + $is->commit(); + + $this->_bodyToByteStream($is); + } + + /** + * Write this entire entity to a {@link Swift_InputByteStream}. + * + * @param Swift_InputByteStream + */ + protected function _bodyToByteStream(Swift_InputByteStream $is) + { + if (empty($this->_immediateChildren)) { + if (isset($this->_body)) { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) { + $this->_cache->exportToByteStream($this->_cacheKey, 'body', $is); + } else { + $cacheIs = $this->_cache->getInputByteStream($this->_cacheKey, 'body'); + if ($cacheIs) { + $is->bind($cacheIs); + } + + $is->write("\r\n"); + + if ($this->_body instanceof Swift_OutputByteStream) { + $this->_body->setReadPointer(0); + + $this->_encoder->encodeByteStream($this->_body, $is, 0, $this->getMaxLineLength()); + } else { + $is->write($this->_encoder->encodeString($this->getBody(), 0, $this->getMaxLineLength())); + } + + if ($cacheIs) { + $is->unbind($cacheIs); + } + } + } + } + + if (!empty($this->_immediateChildren)) { + foreach ($this->_immediateChildren as $child) { + $is->write("\r\n\r\n--".$this->getBoundary()."\r\n"); + $child->toByteStream($is); + } + $is->write("\r\n\r\n--".$this->getBoundary()."--\r\n"); + } + } + + /** + * Get the name of the header that provides the ID of this entity. + */ + protected function _getIdField() + { + return 'Content-ID'; + } + + /** + * Get the model data (usually an array or a string) for $field. + */ + protected function _getHeaderFieldModel($field) + { + if ($this->_headers->has($field)) { + return $this->_headers->get($field)->getFieldBodyModel(); + } + } + + /** + * Set the model data for $field. + */ + protected function _setHeaderFieldModel($field, $model) + { + if ($this->_headers->has($field)) { + $this->_headers->get($field)->setFieldBodyModel($model); + + return true; + } + + return false; + } + + /** + * Get the parameter value of $parameter on $field header. + */ + protected function _getHeaderParameter($field, $parameter) + { + if ($this->_headers->has($field)) { + return $this->_headers->get($field)->getParameter($parameter); + } + } + + /** + * Set the parameter value of $parameter on $field header. + */ + protected function _setHeaderParameter($field, $parameter, $value) + { + if ($this->_headers->has($field)) { + $this->_headers->get($field)->setParameter($parameter, $value); + + return true; + } + + return false; + } + + /** + * Re-evaluate what content type and encoding should be used on this entity. + */ + protected function _fixHeaders() + { + if (count($this->_immediateChildren)) { + $this->_setHeaderParameter('Content-Type', 'boundary', + $this->getBoundary() + ); + $this->_headers->remove('Content-Transfer-Encoding'); + } else { + $this->_setHeaderParameter('Content-Type', 'boundary', null); + $this->_setEncoding($this->_encoder->getName()); + } + } + + /** + * Get the KeyCache used in this entity. + * + * @return Swift_KeyCache + */ + protected function _getCache() + { + return $this->_cache; + } + + /** + * Get the grammar used for validation. + * + * @return Swift_Mime_Grammar + */ + protected function _getGrammar() + { + return $this->_grammar; + } + + /** + * Empty the KeyCache for this entity. + */ + protected function _clearCache() + { + $this->_cache->clearKey($this->_cacheKey, 'body'); + } + + /** + * Returns a random Content-ID or Message-ID. + * + * @return string + */ + protected function getRandomId() + { + $idLeft = md5(getmypid().'.'.time().'.'.uniqid(mt_rand(), true)); + $idRight = !empty($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'swift.generated'; + $id = $idLeft.'@'.$idRight; + + try { + $this->_assertValidId($id); + } catch (Swift_RfcComplianceException $e) { + $id = $idLeft.'@swift.generated'; + } + + return $id; + } + + private function _readStream(Swift_OutputByteStream $os) + { + $string = ''; + while (false !== $bytes = $os->read(8192)) { + $string .= $bytes; + } + + $os->setReadPointer(0); + + return $string; + } + + private function _setEncoding($encoding) + { + if (!$this->_setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) { + $this->_headers->addTextHeader('Content-Transfer-Encoding', $encoding); + } + } + + private function _assertValidBoundary($boundary) + { + if (!preg_match('/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', $boundary)) { + throw new Swift_RfcComplianceException('Mime boundary set is not RFC 2046 compliant.'); + } + } + + private function _setContentTypeInHeaders($type) + { + if (!$this->_setHeaderFieldModel('Content-Type', $type)) { + $this->_headers->addParameterizedHeader('Content-Type', $type); + } + } + + private function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + + private function _getCompoundLevel($children) + { + $level = 0; + foreach ($children as $child) { + $level |= $child->getNestingLevel(); + } + + return $level; + } + + private function _getNeededChildLevel($child, $compoundLevel) + { + $filter = array(); + foreach ($this->_compoundLevelFilters as $bitmask => $rules) { + if (($compoundLevel & $bitmask) === $bitmask) { + $filter = $rules + $filter; + } + } + + $realLevel = $child->getNestingLevel(); + $lowercaseType = strtolower($child->getContentType()); + + if (isset($filter[$realLevel]) && isset($filter[$realLevel][$lowercaseType])) { + return $filter[$realLevel][$lowercaseType]; + } + + return $realLevel; + } + + private function _createChild() + { + return new self($this->_headers->newInstance(), $this->_encoder, $this->_cache, $this->_grammar); + } + + private function _notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) + { + foreach ($this->_immediateChildren as $child) { + $child->encoderChanged($encoder); + } + } + + private function _notifyCharsetChanged($charset) + { + $this->_encoder->charsetChanged($charset); + $this->_headers->charsetChanged($charset); + foreach ($this->_immediateChildren as $child) { + $child->charsetChanged($charset); + } + } + + private function _sortChildren() + { + $shouldSort = false; + foreach ($this->_immediateChildren as $child) { + // NOTE: This include alternative parts moved into a related part + if ($child->getNestingLevel() == self::LEVEL_ALTERNATIVE) { + $shouldSort = true; + break; + } + } + + // Sort in order of preference, if there is one + if ($shouldSort) { + usort($this->_immediateChildren, array($this, '_childSortAlgorithm')); + } + } + + private function _childSortAlgorithm($a, $b) + { + $typePrefs = array(); + $types = array(strtolower($a->getContentType()), strtolower($b->getContentType())); + + foreach ($types as $type) { + $typePrefs[] = array_key_exists($type, $this->_alternativePartOrder) ? $this->_alternativePartOrder[$type] : max($this->_alternativePartOrder) + 1; + } + + return $typePrefs[0] >= $typePrefs[1] ? 1 : -1; + } + + // -- Destructor + + /** + * Empties it's own contents from the cache. + */ + public function __destruct() + { + $this->_cache->clearAll($this->_cacheKey); + } + + /** + * Throws an Exception if the id passed does not comply with RFC 2822. + * + * @param string $id + * + * @throws Swift_RfcComplianceException + */ + private function _assertValidId($id) + { + if (!preg_match('/^'.$this->_grammar->getDefinition('id-left').'@'.$this->_grammar->getDefinition('id-right').'$/D', $id)) { + throw new Swift_RfcComplianceException('Invalid ID given <'.$id.'>'); + } + } + + /** + * Make a deep copy of object. + */ + public function __clone() + { + $this->_headers = clone $this->_headers; + $this->_encoder = clone $this->_encoder; + $this->_cacheKey = uniqid(); + $children = array(); + foreach ($this->_children as $pos => $child) { + $children[$pos] = clone $child; + } + $this->setChildren($children); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/MimePart.php b/htdocs/includes/swiftmailer/lib/classes/Swift/MimePart.php new file mode 100644 index 00000000000..215f8db348a --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/MimePart.php @@ -0,0 +1,59 @@ +createDependenciesFor('mime.part') + ); + + if (!isset($charset)) { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) { + $this->setContentType($contentType); + } + } + + /** + * Create a new MimePart. + * + * @param string $body + * @param string $contentType + * @param string $charset + * + * @return Swift_Mime_MimePart + */ + public static function newInstance($body = null, $contentType = null, $charset = null) + { + return new self($body, $contentType, $charset); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/NullTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/NullTransport.php new file mode 100644 index 00000000000..b38e1cf7697 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/NullTransport.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * + * @author Fabien Potencier + */ +class Swift_NullTransport extends Swift_Transport_NullTransport +{ + /** + * Create a new NullTransport. + */ + public function __construct() + { + call_user_func_array( + array($this, 'Swift_Transport_NullTransport::__construct'), + Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.null') + ); + } + + /** + * Create a new NullTransport instance. + * + * @return Swift_NullTransport + */ + public static function newInstance() + { + return new self(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/OutputByteStream.php b/htdocs/includes/swiftmailer/lib/classes/Swift/OutputByteStream.php new file mode 100644 index 00000000000..1f26f9be529 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/OutputByteStream.php @@ -0,0 +1,46 @@ +setThreshold($threshold); + $this->setSleepTime($sleep); + $this->_sleeper = $sleeper; + } + + /** + * Set the number of emails to send before restarting. + * + * @param int $threshold + */ + public function setThreshold($threshold) + { + $this->_threshold = $threshold; + } + + /** + * Get the number of emails to send before restarting. + * + * @return int + */ + public function getThreshold() + { + return $this->_threshold; + } + + /** + * Set the number of seconds to sleep for during a restart. + * + * @param int $sleep time + */ + public function setSleepTime($sleep) + { + $this->_sleep = $sleep; + } + + /** + * Get the number of seconds to sleep for during a restart. + * + * @return int + */ + public function getSleepTime() + { + return $this->_sleep; + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + ++$this->_counter; + if ($this->_counter >= $this->_threshold) { + $transport = $evt->getTransport(); + $transport->stop(); + if ($this->_sleep) { + $this->sleep($this->_sleep); + } + $transport->start(); + $this->_counter = 0; + } + } + + /** + * Sleep for $seconds. + * + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) { + $this->_sleeper->sleep($seconds); + } else { + sleep($seconds); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php new file mode 100644 index 00000000000..f7e18d0ebea --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php @@ -0,0 +1,164 @@ +getMessage(); + $message->toByteStream($this); + } + + /** + * Invoked immediately following a command being sent. + * + * @param Swift_Events_CommandEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_out += strlen($command); + } + + /** + * Invoked immediately following a response coming back. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_in += strlen($response); + } + + /** + * Called when a message is sent so that the outgoing counter can be increased. + * + * @param string $bytes + */ + public function write($bytes) + { + $this->_out += strlen($bytes); + foreach ($this->_mirrors as $stream) { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) { + if ($is === $stream) { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Not used. + */ + public function flushBuffers() + { + foreach ($this->_mirrors as $stream) { + $stream->flushBuffers(); + } + } + + /** + * Get the total number of bytes sent to the server. + * + * @return int + */ + public function getBytesOut() + { + return $this->_out; + } + + /** + * Get the total number of bytes received from the server. + * + * @return int + */ + public function getBytesIn() + { + return $this->_in; + } + + /** + * Reset the internal counters to zero. + */ + public function reset() + { + $this->_out = 0; + $this->_in = 0; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php new file mode 100644 index 00000000000..9f9f08b5674 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php @@ -0,0 +1,31 @@ + + * $replacements = array( + * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), + * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") + * ) + * + * + * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, + * the object should return just the array of replacements for the address + * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. + * + * @param mixed $replacements Array or Swift_Plugins_Decorator_Replacements + */ + public function __construct($replacements) + { + $this->setReplacements($replacements); + } + + /** + * Sets replacements. + * + * @param mixed $replacements Array or Swift_Plugins_Decorator_Replacements + * + * @see __construct() + */ + public function setReplacements($replacements) + { + if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) { + $this->_replacements = (array) $replacements; + } else { + $this->_replacements = $replacements; + } + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $this->_restoreMessage($message); + $to = array_keys($message->getTo()); + $address = array_shift($to); + if ($replacements = $this->getReplacementsFor($address)) { + $body = $message->getBody(); + $search = array_keys($replacements); + $replace = array_values($replacements); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) { + $this->_originalBody = $body; + $message->setBody($bodyReplaced); + } + + foreach ($message->getHeaders()->getAll() as $header) { + $body = $header->getFieldBodyModel(); + $count = 0; + if (is_array($body)) { + $bodyReplaced = array(); + foreach ($body as $key => $value) { + $count1 = 0; + $count2 = 0; + $key = is_string($key) ? str_replace($search, $replace, $key, $count1) : $key; + $value = is_string($value) ? str_replace($search, $replace, $value, $count2) : $value; + $bodyReplaced[$key] = $value; + + if (!$count && ($count1 || $count2)) { + $count = 1; + } + } + } else { + $bodyReplaced = str_replace($search, $replace, $body, $count); + } + + if ($count) { + $this->_originalHeaders[$header->getFieldName()] = $body; + $header->setFieldBodyModel($bodyReplaced); + } + } + + $children = (array) $message->getChildren(); + foreach ($children as $child) { + list($type) = sscanf($child->getContentType(), '%[^/]/%s'); + if ('text' == $type) { + $body = $child->getBody(); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) { + $child->setBody($bodyReplaced); + $this->_originalChildBodies[$child->getId()] = $body; + } + } + } + $this->_lastMessage = $message; + } + } + + /** + * Find a map of replacements for the address. + * + * If this plugin was provided with a delegate instance of + * {@link Swift_Plugins_Decorator_Replacements} then the call will be + * delegated to it. Otherwise, it will attempt to find the replacements + * from the array provided in the constructor. + * + * If no replacements can be found, an empty value (NULL) is returned. + * + * @param string $address + * + * @return array + */ + public function getReplacementsFor($address) + { + if ($this->_replacements instanceof Swift_Plugins_Decorator_Replacements) { + return $this->_replacements->getReplacementsFor($address); + } + + return isset($this->_replacements[$address]) ? $this->_replacements[$address] : null; + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + /** Restore a changed message back to its original state */ + private function _restoreMessage(Swift_Mime_Message $message) + { + if ($this->_lastMessage === $message) { + if (isset($this->_originalBody)) { + $message->setBody($this->_originalBody); + $this->_originalBody = null; + } + if (!empty($this->_originalHeaders)) { + foreach ($message->getHeaders()->getAll() as $header) { + if (array_key_exists($header->getFieldName(), $this->_originalHeaders)) { + $header->setFieldBodyModel($this->_originalHeaders[$header->getFieldName()]); + } + } + $this->_originalHeaders = array(); + } + if (!empty($this->_originalChildBodies)) { + $children = (array) $message->getChildren(); + foreach ($children as $child) { + $id = $child->getId(); + if (array_key_exists($id, $this->_originalChildBodies)) { + $child->setBody($this->_originalChildBodies[$id]); + } + } + $this->_originalChildBodies = array(); + } + $this->_lastMessage = null; + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php new file mode 100644 index 00000000000..7552b67a2f7 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php @@ -0,0 +1,69 @@ +_sender = $sender; + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $headers = $message->getHeaders(); + + // save current recipients + $headers->addPathHeader('X-Swift-Return-Path', $message->getReturnPath()); + + // replace them with the one to send to + $message->setReturnPath($this->_sender); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + + // restore original headers + $headers = $message->getHeaders(); + + if ($headers->has('X-Swift-Return-Path')) { + $message->setReturnPath($headers->get('X-Swift-Return-Path')->getAddress()); + $headers->removeAll('X-Swift-Return-Path'); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Logger.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Logger.php new file mode 100644 index 00000000000..d9bce8935d5 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Logger.php @@ -0,0 +1,36 @@ +_logger = $logger; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + $this->_logger->add($entry); + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_logger->clear(); + } + + /** + * Get this log as a string. + * + * @return string + */ + public function dump() + { + return $this->_logger->dump(); + } + + /** + * Invoked immediately following a command being sent. + * + * @param Swift_Events_CommandEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_logger->add(sprintf('>> %s', $command)); + } + + /** + * Invoked immediately following a response coming back. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_logger->add(sprintf('<< %s', $response)); + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf('++ Starting %s', $transportName)); + } + + /** + * Invoked immediately after the Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf('++ %s started', $transportName)); + } + + /** + * Invoked just before a Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf('++ Stopping %s', $transportName)); + } + + /** + * Invoked immediately after the Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf('++ %s stopped', $transportName)); + } + + /** + * Invoked as a TransportException is thrown in the Transport system. + * + * @param Swift_Events_TransportExceptionEvent $evt + */ + public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) + { + $e = $evt->getException(); + $message = $e->getMessage(); + $code = $e->getCode(); + $this->_logger->add(sprintf('!! %s (code: %s)', $message, $code)); + $message .= PHP_EOL; + $message .= 'Log data:'.PHP_EOL; + $message .= $this->_logger->dump(); + $evt->cancelBubble(); + throw new Swift_TransportException($message, $code, $e->getPrevious()); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php new file mode 100644 index 00000000000..865bb0aa3b9 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php @@ -0,0 +1,72 @@ +_size = $size; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + $this->_log[] = $entry; + while (count($this->_log) > $this->_size) { + array_shift($this->_log); + } + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_log = array(); + } + + /** + * Get this log as a string. + * + * @return string + */ + public function dump() + { + return implode(PHP_EOL, $this->_log); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php new file mode 100644 index 00000000000..3583297ab10 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php @@ -0,0 +1,58 @@ +_isHtml = $isHtml; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + if ($this->_isHtml) { + printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
    ', PHP_EOL); + } else { + printf('%s%s', $entry, PHP_EOL); + } + } + + /** + * Not implemented. + */ + public function clear() + { + } + + /** + * Not implemented. + */ + public function dump() + { + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php new file mode 100644 index 00000000000..e622cb37d16 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php @@ -0,0 +1,74 @@ +messages = array(); + } + + /** + * Get the message list. + * + * @return array + */ + public function getMessages() + { + return $this->messages; + } + + /** + * Get the message count. + * + * @return int count + */ + public function countMessages() + { + return count($this->messages); + } + + /** + * Empty the message list. + */ + public function clear() + { + $this->messages = array(); + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $this->messages[] = clone $evt->getMessage(); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php new file mode 100644 index 00000000000..fb99e4c942b --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php @@ -0,0 +1,31 @@ +_host = $host; + $this->_port = $port; + $this->_crypto = $crypto; + } + + /** + * Create a new PopBeforeSmtpPlugin for $host and $port. + * + * @param string $host + * @param int $port + * @param string $crypto as "tls" or "ssl" + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public static function newInstance($host, $port = 110, $crypto = null) + { + return new self($host, $port, $crypto); + } + + /** + * Set a Pop3Connection to delegate to instead of connecting directly. + * + * @param Swift_Plugins_Pop_Pop3Connection $connection + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) + { + $this->_connection = $connection; + + return $this; + } + + /** + * Bind this plugin to a specific SMTP transport instance. + * + * @param Swift_Transport + */ + public function bindSmtp(Swift_Transport $smtp) + { + $this->_transport = $smtp; + } + + /** + * Set the connection timeout in seconds (default 10). + * + * @param int $timeout + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public function setTimeout($timeout) + { + $this->_timeout = (int) $timeout; + + return $this; + } + + /** + * Set the username to use when connecting (if needed). + * + * @param string $username + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public function setUsername($username) + { + $this->_username = $username; + + return $this; + } + + /** + * Set the password to use when connecting (if needed). + * + * @param string $password + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public function setPassword($password) + { + $this->_password = $password; + + return $this; + } + + /** + * Connect to the POP3 host and authenticate. + * + * @throws Swift_Plugins_Pop_Pop3Exception if connection fails + */ + public function connect() + { + if (isset($this->_connection)) { + $this->_connection->connect(); + } else { + if (!isset($this->_socket)) { + if (!$socket = fsockopen( + $this->_getHostString(), $this->_port, $errno, $errstr, $this->_timeout)) { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]: %s', $this->_host, $errstr) + ); + } + $this->_socket = $socket; + + if (false === $greeting = fgets($this->_socket)) { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]', trim($greeting)) + ); + } + + $this->_assertOk($greeting); + + if ($this->_username) { + $this->_command(sprintf("USER %s\r\n", $this->_username)); + $this->_command(sprintf("PASS %s\r\n", $this->_password)); + } + } + } + } + + /** + * Disconnect from the POP3 host. + */ + public function disconnect() + { + if (isset($this->_connection)) { + $this->_connection->disconnect(); + } else { + $this->_command("QUIT\r\n"); + if (!fclose($this->_socket)) { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 host [%s] connection could not be stopped', $this->_host) + ); + } + $this->_socket = null; + } + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + if (isset($this->_transport)) { + if ($this->_transport !== $evt->getTransport()) { + return; + } + } + + $this->connect(); + $this->disconnect(); + } + + /** + * Not used. + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + private function _command($command) + { + if (!fwrite($this->_socket, $command)) { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to write command [%s] to POP3 host', trim($command)) + ); + } + + if (false === $response = fgets($this->_socket)) { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to read from POP3 host after command [%s]', trim($command)) + ); + } + + $this->_assertOk($response); + + return $response; + } + + private function _assertOk($response) + { + if (substr($response, 0, 3) != '+OK') { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 command failed [%s]', trim($response)) + ); + } + } + + private function _getHostString() + { + $host = $this->_host; + switch (strtolower($this->_crypto)) { + case 'ssl': + $host = 'ssl://'.$host; + break; + + case 'tls': + $host = 'tls://'.$host; + break; + } + + return $host; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php new file mode 100644 index 00000000000..c3a1f868544 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php @@ -0,0 +1,213 @@ +_recipient = $recipient; + $this->_whitelist = $whitelist; + } + + /** + * Set the recipient of all messages. + * + * @param mixed $recipient + */ + public function setRecipient($recipient) + { + $this->_recipient = $recipient; + } + + /** + * Get the recipient of all messages. + * + * @return mixed + */ + public function getRecipient() + { + return $this->_recipient; + } + + /** + * Set a list of regular expressions to whitelist certain recipients. + * + * @param array $whitelist + */ + public function setWhitelist(array $whitelist) + { + $this->_whitelist = $whitelist; + } + + /** + * Get the whitelist. + * + * @return array + */ + public function getWhitelist() + { + return $this->_whitelist; + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $headers = $message->getHeaders(); + + // conditionally save current recipients + + if ($headers->has('to')) { + $headers->addMailboxHeader('X-Swift-To', $message->getTo()); + } + + if ($headers->has('cc')) { + $headers->addMailboxHeader('X-Swift-Cc', $message->getCc()); + } + + if ($headers->has('bcc')) { + $headers->addMailboxHeader('X-Swift-Bcc', $message->getBcc()); + } + + // Filter remaining headers against whitelist + $this->_filterHeaderSet($headers, 'To'); + $this->_filterHeaderSet($headers, 'Cc'); + $this->_filterHeaderSet($headers, 'Bcc'); + + // Add each hard coded recipient + $to = $message->getTo(); + if (null === $to) { + $to = array(); + } + + foreach ((array) $this->_recipient as $recipient) { + if (!array_key_exists($recipient, $to)) { + $message->addTo($recipient); + } + } + } + + /** + * Filter header set against a whitelist of regular expressions. + * + * @param Swift_Mime_HeaderSet $headerSet + * @param string $type + */ + private function _filterHeaderSet(Swift_Mime_HeaderSet $headerSet, $type) + { + foreach ($headerSet->getAll($type) as $headers) { + $headers->setNameAddresses($this->_filterNameAddresses($headers->getNameAddresses())); + } + } + + /** + * Filtered list of addresses => name pairs. + * + * @param array $recipients + * + * @return array + */ + private function _filterNameAddresses(array $recipients) + { + $filtered = array(); + + foreach ($recipients as $address => $name) { + if ($this->_isWhitelisted($address)) { + $filtered[$address] = $name; + } + } + + return $filtered; + } + + /** + * Matches address against whitelist of regular expressions. + * + * @param $recipient + * + * @return bool + */ + protected function _isWhitelisted($recipient) + { + if (in_array($recipient, (array) $this->_recipient)) { + return true; + } + + foreach ($this->_whitelist as $pattern) { + if (preg_match($pattern, $recipient)) { + return true; + } + } + + return false; + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + private function _restoreMessage(Swift_Mime_Message $message) + { + // restore original headers + $headers = $message->getHeaders(); + + if ($headers->has('X-Swift-To')) { + $message->setTo($headers->get('X-Swift-To')->getNameAddresses()); + $headers->removeAll('X-Swift-To'); + } else { + $message->setTo(null); + } + + if ($headers->has('X-Swift-Cc')) { + $message->setCc($headers->get('X-Swift-Cc')->getNameAddresses()); + $headers->removeAll('X-Swift-Cc'); + } + + if ($headers->has('X-Swift-Bcc')) { + $message->setBcc($headers->get('X-Swift-Bcc')->getNameAddresses()); + $headers->removeAll('X-Swift-Bcc'); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporter.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporter.php new file mode 100644 index 00000000000..0f21b7d6052 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporter.php @@ -0,0 +1,32 @@ +_reporter = $reporter; + } + + /** + * Not used. + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $failures = array_flip($evt->getFailedRecipients()); + foreach ((array) $message->getTo() as $address => $null) { + $this->_reporter->notify($message, $address, array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS); + } + foreach ((array) $message->getCc() as $address => $null) { + $this->_reporter->notify($message, $address, array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS); + } + foreach ((array) $message->getBcc() as $address => $null) { + $this->_reporter->notify($message, $address, array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php new file mode 100644 index 00000000000..cad9d168ef2 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php @@ -0,0 +1,59 @@ +_failures_cache[$address])) { + $this->_failures[] = $address; + $this->_failures_cache[$address] = true; + } + } + + /** + * Get an array of addresses for which delivery failed. + * + * @return array + */ + public function getFailedRecipients() + { + return $this->_failures; + } + + /** + * Clear the buffer (empty the list). + */ + public function clear() + { + $this->_failures = $this->_failures_cache = array(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php new file mode 100644 index 00000000000..c62593557e3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php @@ -0,0 +1,39 @@ +'.PHP_EOL; + echo 'PASS '.$address.PHP_EOL; + echo ''.PHP_EOL; + flush(); + } else { + echo '
    '.PHP_EOL; + echo 'FAIL '.$address.PHP_EOL; + echo '
    '.PHP_EOL; + flush(); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php new file mode 100644 index 00000000000..595c0f603b0 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php @@ -0,0 +1,24 @@ +_rate = $rate; + $this->_mode = $mode; + $this->_sleeper = $sleeper; + $this->_timer = $timer; + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $time = $this->getTimestamp(); + if (!isset($this->_start)) { + $this->_start = $time; + } + $duration = $time - $this->_start; + + switch ($this->_mode) { + case self::BYTES_PER_MINUTE : + $sleep = $this->_throttleBytesPerMinute($duration); + break; + case self::MESSAGES_PER_SECOND : + $sleep = $this->_throttleMessagesPerSecond($duration); + break; + case self::MESSAGES_PER_MINUTE : + $sleep = $this->_throttleMessagesPerMinute($duration); + break; + default : + $sleep = 0; + break; + } + + if ($sleep > 0) { + $this->sleep($sleep); + } + } + + /** + * Invoked when a Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + parent::sendPerformed($evt); + ++$this->_messages; + } + + /** + * Sleep for $seconds. + * + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) { + $this->_sleeper->sleep($seconds); + } else { + sleep($seconds); + } + } + + /** + * Get the current UNIX timestamp. + * + * @return int + */ + public function getTimestamp() + { + if (isset($this->_timer)) { + return $this->_timer->getTimestamp(); + } + + return time(); + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleBytesPerMinute($timePassed) + { + $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); + + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleMessagesPerSecond($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate); + + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleMessagesPerMinute($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate / 60); + + return (int) ceil($expectedDuration - $timePassed); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Timer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Timer.php new file mode 100644 index 00000000000..9c8deb38ac4 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Plugins/Timer.php @@ -0,0 +1,24 @@ +register('properties.charset')->asValue($charset); + + return $this; + } + + /** + * Set the directory where temporary files can be saved. + * + * @param string $dir + * + * @return Swift_Preferences + */ + public function setTempDir($dir) + { + Swift_DependencyContainer::getInstance() + ->register('tempdir')->asValue($dir); + + return $this; + } + + /** + * Set the type of cache to use (i.e. "disk" or "array"). + * + * @param string $type + * + * @return Swift_Preferences + */ + public function setCacheType($type) + { + Swift_DependencyContainer::getInstance() + ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); + + return $this; + } + + /** + * Set the QuotedPrintable dot escaper preference. + * + * @param bool $dotEscape + * + * @return Swift_Preferences + */ + public function setQPDotEscape($dotEscape) + { + $dotEscape = !empty($dotEscape); + Swift_DependencyContainer::getInstance() + ->register('mime.qpcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + ->withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + ->addConstructorValue($dotEscape); + + return $this; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php b/htdocs/includes/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php new file mode 100644 index 00000000000..2897474e7b3 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php @@ -0,0 +1,27 @@ +createDependenciesFor('transport.sendmail') + ); + + $this->setCommand($command); + } + + /** + * Create a new SendmailTransport instance. + * + * @param string $command + * + * @return Swift_SendmailTransport + */ + public static function newInstance($command = '/usr/sbin/sendmail -bs') + { + return new self($command); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/SignedMessage.php b/htdocs/includes/swiftmailer/lib/classes/Swift/SignedMessage.php new file mode 100644 index 00000000000..2e7a8726d21 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/SignedMessage.php @@ -0,0 +1,23 @@ + + * + * @deprecated + */ +class Swift_SignedMessage extends Swift_Message +{ +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signer.php new file mode 100644 index 00000000000..2d8176d905c --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signer.php @@ -0,0 +1,20 @@ + + */ +interface Swift_Signer +{ + public function reset(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/BodySigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/BodySigner.php new file mode 100644 index 00000000000..9ffcef39c9f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/BodySigner.php @@ -0,0 +1,33 @@ + + */ +interface Swift_Signers_BodySigner extends Swift_Signer +{ + /** + * Change the Swift_Signed_Message to apply the singing. + * + * @param Swift_Message $message + * + * @return Swift_Signers_BodySigner + */ + public function signMessage(Swift_Message $message); + + /** + * Return the list of header a signer might tamper. + * + * @return array + */ + public function getAlteredHeaders(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php new file mode 100644 index 00000000000..6040b2856f2 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php @@ -0,0 +1,698 @@ + + */ +class Swift_Signers_DKIMSigner implements Swift_Signers_HeaderSigner +{ + /** + * PrivateKey. + * + * @var string + */ + protected $_privateKey; + + /** + * DomainName. + * + * @var string + */ + protected $_domainName; + + /** + * Selector. + * + * @var string + */ + protected $_selector; + + /** + * Hash algorithm used. + * + * @var string + */ + protected $_hashAlgorithm = 'rsa-sha1'; + + /** + * Body canon method. + * + * @var string + */ + protected $_bodyCanon = 'simple'; + + /** + * Header canon method. + * + * @var string + */ + protected $_headerCanon = 'simple'; + + /** + * Headers not being signed. + * + * @var array + */ + protected $_ignoredHeaders = array('return-path' => true); + + /** + * Signer identity. + * + * @var string + */ + protected $_signerIdentity; + + /** + * BodyLength. + * + * @var int + */ + protected $_bodyLen = 0; + + /** + * Maximum signedLen. + * + * @var int + */ + protected $_maxLen = PHP_INT_MAX; + + /** + * Embbed bodyLen in signature. + * + * @var bool + */ + protected $_showLen = false; + + /** + * When the signature has been applied (true means time()), false means not embedded. + * + * @var mixed + */ + protected $_signatureTimestamp = true; + + /** + * When will the signature expires false means not embedded, if sigTimestamp is auto + * Expiration is relative, otherwhise it's absolute. + * + * @var int + */ + protected $_signatureExpiration = false; + + /** + * Must we embed signed headers? + * + * @var bool + */ + protected $_debugHeaders = false; + + // work variables + /** + * Headers used to generate hash. + * + * @var array + */ + protected $_signedHeaders = array(); + + /** + * If debugHeaders is set store debugDatas here. + * + * @var string + */ + private $_debugHeadersData = ''; + + /** + * Stores the bodyHash. + * + * @var string + */ + private $_bodyHash = ''; + + /** + * Stores the signature header. + * + * @var Swift_Mime_Headers_ParameterizedHeader + */ + protected $_dkimHeader; + + private $_bodyHashHandler; + + private $_headerHash; + + private $_headerCanonData = ''; + + private $_bodyCanonEmptyCounter = 0; + + private $_bodyCanonIgnoreStart = 2; + + private $_bodyCanonSpace = false; + + private $_bodyCanonLastChar = null; + + private $_bodyCanonLine = ''; + + private $_bound = array(); + + /** + * Constructor. + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + */ + public function __construct($privateKey, $domainName, $selector) + { + $this->_privateKey = $privateKey; + $this->_domainName = $domainName; + $this->_signerIdentity = '@'.$domainName; + $this->_selector = $selector; + } + + /** + * Instanciate DKIMSigner. + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + * + * @return Swift_Signers_DKIMSigner + */ + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + /** + * Reset the Signer. + * + * @see Swift_Signer::reset() + */ + public function reset() + { + $this->_headerHash = null; + $this->_signedHeaders = array(); + $this->_bodyHash = null; + $this->_bodyHashHandler = null; + $this->_bodyCanonIgnoreStart = 2; + $this->_bodyCanonEmptyCounter = 0; + $this->_bodyCanonLastChar = null; + $this->_bodyCanonSpace = false; + } + + /** + * Writes $bytes to the end of the stream. + * + * Writing may not happen immediately if the stream chooses to buffer. If + * you want to write these bytes with immediate effect, call {@link commit()} + * after calling write(). + * + * This method returns the sequence ID of the write (i.e. 1 for first, 2 for + * second, etc etc). + * + * @param string $bytes + * + * @throws Swift_IoException + * + * @return int + */ + public function write($bytes) + { + $this->_canonicalizeBody($bytes); + foreach ($this->_bound as $is) { + $is->write($bytes); + } + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + // Nothing to do + return; + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + $this->_bound[] = $is; + + return; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + foreach ($this->_bound as $k => $stream) { + if ($stream === $is) { + unset($this->_bound[$k]); + + return; + } + } + + return; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * + * @throws Swift_IoException + */ + public function flushBuffers() + { + $this->reset(); + } + + /** + * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1 defaults to rsa-sha256. + * + * @param string $hash + * + * @return Swift_Signers_DKIMSigner + */ + public function setHashAlgorithm($hash) + { + // Unable to sign with rsa-sha256 + if ($hash == 'rsa-sha1') { + $this->_hashAlgorithm = 'rsa-sha1'; + } else { + $this->_hashAlgorithm = 'rsa-sha256'; + } + + return $this; + } + + /** + * Set the body canonicalization algorithm. + * + * @param string $canon + * + * @return Swift_Signers_DKIMSigner + */ + public function setBodyCanon($canon) + { + if ($canon == 'relaxed') { + $this->_bodyCanon = 'relaxed'; + } else { + $this->_bodyCanon = 'simple'; + } + + return $this; + } + + /** + * Set the header canonicalization algorithm. + * + * @param string $canon + * + * @return Swift_Signers_DKIMSigner + */ + public function setHeaderCanon($canon) + { + if ($canon == 'relaxed') { + $this->_headerCanon = 'relaxed'; + } else { + $this->_headerCanon = 'simple'; + } + + return $this; + } + + /** + * Set the signer identity. + * + * @param string $identity + * + * @return Swift_Signers_DKIMSigner + */ + public function setSignerIdentity($identity) + { + $this->_signerIdentity = $identity; + + return $this; + } + + /** + * Set the length of the body to sign. + * + * @param mixed $len (bool or int) + * + * @return Swift_Signers_DKIMSigner + */ + public function setBodySignedLen($len) + { + if ($len === true) { + $this->_showLen = true; + $this->_maxLen = PHP_INT_MAX; + } elseif ($len === false) { + $this->showLen = false; + $this->_maxLen = PHP_INT_MAX; + } else { + $this->_showLen = true; + $this->_maxLen = (int) $len; + } + + return $this; + } + + /** + * Set the signature timestamp. + * + * @param int $time A timestamp + * + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureTimestamp($time) + { + $this->_signatureTimestamp = $time; + + return $this; + } + + /** + * Set the signature expiration timestamp. + * + * @param int $time A timestamp + * + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureExpiration($time) + { + $this->_signatureExpiration = $time; + + return $this; + } + + /** + * Enable / disable the DebugHeaders. + * + * @param bool $debug + * + * @return Swift_Signers_DKIMSigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + /** + * Start Body. + */ + public function startBody() + { + // Init + switch ($this->_hashAlgorithm) { + case 'rsa-sha256' : + $this->_bodyHashHandler = hash_init('sha256'); + break; + case 'rsa-sha1' : + $this->_bodyHashHandler = hash_init('sha1'); + break; + } + $this->_bodyCanonLine = ''; + } + + /** + * End Body. + */ + public function endBody() + { + $this->_endOfBody(); + } + + /** + * Returns the list of Headers Tampered by this plugin. + * + * @return array + */ + public function getAlteredHeaders() + { + if ($this->_debugHeaders) { + return array('DKIM-Signature', 'X-DebugHash'); + } else { + return array('DKIM-Signature'); + } + } + + /** + * Adds an ignored Header. + * + * @param string $header_name + * + * @return Swift_Signers_DKIMSigner + */ + public function ignoreHeader($header_name) + { + $this->_ignoredHeaders[strtolower($header_name)] = true; + + return $this; + } + + /** + * Set the headers to sign. + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_DKIMSigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $this->_headerCanonData = ''; + // Loop through Headers + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (!isset($this->_ignoredHeaders[strtolower($hName)])) { + if ($headers->has($hName)) { + $tmp = $headers->getAll($hName); + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $this->_addHeader($header->toString()); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + + return $this; + } + + /** + * Add the signature to the given Headers. + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_DKIMSigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers) + { + // Prepare the DKIM-Signature + $params = array('v' => '1', 'a' => $this->_hashAlgorithm, 'bh' => base64_encode($this->_bodyHash), 'd' => $this->_domainName, 'h' => implode(': ', $this->_signedHeaders), 'i' => $this->_signerIdentity, 's' => $this->_selector); + if ($this->_bodyCanon != 'simple') { + $params['c'] = $this->_headerCanon.'/'.$this->_bodyCanon; + } elseif ($this->_headerCanon != 'simple') { + $params['c'] = $this->_headerCanon; + } + if ($this->_showLen) { + $params['l'] = $this->_bodyLen; + } + if ($this->_signatureTimestamp === true) { + $params['t'] = time(); + if ($this->_signatureExpiration !== false) { + $params['x'] = $params['t'] + $this->_signatureExpiration; + } + } else { + if ($this->_signatureTimestamp !== false) { + $params['t'] = $this->_signatureTimestamp; + } + if ($this->_signatureExpiration !== false) { + $params['x'] = $this->_signatureExpiration; + } + } + if ($this->_debugHeaders) { + $params['z'] = implode('|', $this->_debugHeadersData); + } + $string = ''; + foreach ($params as $k => $v) { + $string .= $k.'='.$v.'; '; + } + $string = trim($string); + $headers->addTextHeader('DKIM-Signature', $string); + // Add the last DKIM-Signature + $tmp = $headers->getAll('DKIM-Signature'); + $this->_dkimHeader = end($tmp); + $this->_addHeader(trim($this->_dkimHeader->toString())."\r\n b=", true); + $this->_endOfHeaders(); + if ($this->_debugHeaders) { + $headers->addTextHeader('X-DebugHash', base64_encode($this->_headerHash)); + } + $this->_dkimHeader->setValue($string.' b='.trim(chunk_split(base64_encode($this->_getEncryptedHash()), 73, ' '))); + + return $this; + } + + /* Private helpers */ + + protected function _addHeader($header, $is_sig = false) + { + switch ($this->_headerCanon) { + case 'relaxed' : + // Prepare Header and cascade + $exploded = explode(':', $header, 2); + $name = strtolower(trim($exploded[0])); + $value = str_replace("\r\n", '', $exploded[1]); + $value = preg_replace("/[ \t][ \t]+/", ' ', $value); + $header = $name.':'.trim($value).($is_sig ? '' : "\r\n"); + case 'simple' : + // Nothing to do + } + $this->_addToHeaderHash($header); + } + + /** + * @deprecated This method is currently useless in this class but it must be + * kept for BC reasons due to its "protected" scope. This method + * might be overriden by custom client code. + */ + protected function _endOfHeaders() + { + } + + protected function _canonicalizeBody($string) + { + $len = strlen($string); + $canon = ''; + $method = ($this->_bodyCanon == 'relaxed'); + for ($i = 0; $i < $len; ++$i) { + if ($this->_bodyCanonIgnoreStart > 0) { + --$this->_bodyCanonIgnoreStart; + continue; + } + switch ($string[$i]) { + case "\r" : + $this->_bodyCanonLastChar = "\r"; + break; + case "\n" : + if ($this->_bodyCanonLastChar == "\r") { + if ($method) { + $this->_bodyCanonSpace = false; + } + if ($this->_bodyCanonLine == '') { + ++$this->_bodyCanonEmptyCounter; + } else { + $this->_bodyCanonLine = ''; + $canon .= "\r\n"; + } + } else { + // Wooops Error + // todo handle it but should never happen + } + break; + case ' ' : + case "\t" : + if ($method) { + $this->_bodyCanonSpace = true; + break; + } + default : + if ($this->_bodyCanonEmptyCounter > 0) { + $canon .= str_repeat("\r\n", $this->_bodyCanonEmptyCounter); + $this->_bodyCanonEmptyCounter = 0; + } + if ($this->_bodyCanonSpace) { + $this->_bodyCanonLine .= ' '; + $canon .= ' '; + $this->_bodyCanonSpace = false; + } + $this->_bodyCanonLine .= $string[$i]; + $canon .= $string[$i]; + } + } + $this->_addToBodyHash($canon); + } + + protected function _endOfBody() + { + // Add trailing Line return if last line is non empty + if (strlen($this->_bodyCanonLine) > 0) { + $this->_addToBodyHash("\r\n"); + } + $this->_bodyHash = hash_final($this->_bodyHashHandler, true); + } + + private function _addToBodyHash($string) + { + $len = strlen($string); + if ($len > ($new_len = ($this->_maxLen - $this->_bodyLen))) { + $string = substr($string, 0, $new_len); + $len = $new_len; + } + hash_update($this->_bodyHashHandler, $string); + $this->_bodyLen += $len; + } + + private function _addToHeaderHash($header) + { + if ($this->_debugHeaders) { + $this->_debugHeadersData[] = trim($header); + } + $this->_headerCanonData .= $header; + } + + /** + * @throws Swift_SwiftException + * + * @return string + */ + private function _getEncryptedHash() + { + $signature = ''; + switch ($this->_hashAlgorithm) { + case 'rsa-sha1': + $algorithm = OPENSSL_ALGO_SHA1; + break; + case 'rsa-sha256': + $algorithm = OPENSSL_ALGO_SHA256; + break; + } + $pkeyId = openssl_get_privatekey($this->_privateKey); + if (!$pkeyId) { + throw new Swift_SwiftException('Unable to load DKIM Private Key ['.openssl_error_string().']'); + } + if (openssl_sign($this->_headerCanonData, $signature, $pkeyId, $algorithm)) { + return $signature; + } + throw new Swift_SwiftException('Unable to sign DKIM Hash ['.openssl_error_string().']'); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php new file mode 100644 index 00000000000..3f42d3f6e90 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php @@ -0,0 +1,525 @@ + + */ +class Swift_Signers_DomainKeySigner implements Swift_Signers_HeaderSigner +{ + /** + * PrivateKey. + * + * @var string + */ + protected $_privateKey; + + /** + * DomainName. + * + * @var string + */ + protected $_domainName; + + /** + * Selector. + * + * @var string + */ + protected $_selector; + + /** + * Hash algorithm used. + * + * @var string + */ + protected $_hashAlgorithm = 'rsa-sha1'; + + /** + * Canonisation method. + * + * @var string + */ + protected $_canon = 'simple'; + + /** + * Headers not being signed. + * + * @var array + */ + protected $_ignoredHeaders = array(); + + /** + * Signer identity. + * + * @var string + */ + protected $_signerIdentity; + + /** + * Must we embed signed headers? + * + * @var bool + */ + protected $_debugHeaders = false; + + // work variables + /** + * Headers used to generate hash. + * + * @var array + */ + private $_signedHeaders = array(); + + /** + * Stores the signature header. + * + * @var Swift_Mime_Headers_ParameterizedHeader + */ + protected $_domainKeyHeader; + + /** + * Hash Handler. + * + * @var resource|null + */ + private $_hashHandler; + + private $_hash; + + private $_canonData = ''; + + private $_bodyCanonEmptyCounter = 0; + + private $_bodyCanonIgnoreStart = 2; + + private $_bodyCanonSpace = false; + + private $_bodyCanonLastChar = null; + + private $_bodyCanonLine = ''; + + private $_bound = array(); + + /** + * Constructor. + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + */ + public function __construct($privateKey, $domainName, $selector) + { + $this->_privateKey = $privateKey; + $this->_domainName = $domainName; + $this->_signerIdentity = '@'.$domainName; + $this->_selector = $selector; + } + + /** + * Instanciate DomainKeySigner. + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + * + * @return Swift_Signers_DomainKeySigner + */ + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + /** + * Resets internal states. + * + * @return Swift_Signers_DomainKeySigner + */ + public function reset() + { + $this->_hash = null; + $this->_hashHandler = null; + $this->_bodyCanonIgnoreStart = 2; + $this->_bodyCanonEmptyCounter = 0; + $this->_bodyCanonLastChar = null; + $this->_bodyCanonSpace = false; + + return $this; + } + + /** + * Writes $bytes to the end of the stream. + * + * Writing may not happen immediately if the stream chooses to buffer. If + * you want to write these bytes with immediate effect, call {@link commit()} + * after calling write(). + * + * This method returns the sequence ID of the write (i.e. 1 for first, 2 for + * second, etc etc). + * + * @param string $bytes + * + * @throws Swift_IoException + * + * @return int + * @return Swift_Signers_DomainKeySigner + */ + public function write($bytes) + { + $this->_canonicalizeBody($bytes); + foreach ($this->_bound as $is) { + $is->write($bytes); + } + + return $this; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + * + * @return Swift_Signers_DomainKeySigner + */ + public function commit() + { + // Nothing to do + return $this; + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + * + * @return Swift_Signers_DomainKeySigner + */ + public function bind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + $this->_bound[] = $is; + + return $this; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + * + * @return Swift_Signers_DomainKeySigner + */ + public function unbind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + foreach ($this->_bound as $k => $stream) { + if ($stream === $is) { + unset($this->_bound[$k]); + + return; + } + } + + return $this; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * + * @throws Swift_IoException + * + * @return Swift_Signers_DomainKeySigner + */ + public function flushBuffers() + { + $this->reset(); + + return $this; + } + + /** + * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1 defaults to rsa-sha256. + * + * @param string $hash + * + * @return Swift_Signers_DomainKeySigner + */ + public function setHashAlgorithm($hash) + { + $this->_hashAlgorithm = 'rsa-sha1'; + + return $this; + } + + /** + * Set the canonicalization algorithm. + * + * @param string $canon simple | nofws defaults to simple + * + * @return Swift_Signers_DomainKeySigner + */ + public function setCanon($canon) + { + if ($canon == 'nofws') { + $this->_canon = 'nofws'; + } else { + $this->_canon = 'simple'; + } + + return $this; + } + + /** + * Set the signer identity. + * + * @param string $identity + * + * @return Swift_Signers_DomainKeySigner + */ + public function setSignerIdentity($identity) + { + $this->_signerIdentity = $identity; + + return $this; + } + + /** + * Enable / disable the DebugHeaders. + * + * @param bool $debug + * + * @return Swift_Signers_DomainKeySigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + /** + * Start Body. + */ + public function startBody() + { + } + + /** + * End Body. + */ + public function endBody() + { + $this->_endOfBody(); + } + + /** + * Returns the list of Headers Tampered by this plugin. + * + * @return array + */ + public function getAlteredHeaders() + { + if ($this->_debugHeaders) { + return array('DomainKey-Signature', 'X-DebugHash'); + } + + return array('DomainKey-Signature'); + } + + /** + * Adds an ignored Header. + * + * @param string $header_name + * + * @return Swift_Signers_DomainKeySigner + */ + public function ignoreHeader($header_name) + { + $this->_ignoredHeaders[strtolower($header_name)] = true; + + return $this; + } + + /** + * Set the headers to sign. + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_DomainKeySigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $this->_startHash(); + $this->_canonData = ''; + // Loop through Headers + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (!isset($this->_ignoredHeaders[strtolower($hName)])) { + if ($headers->has($hName)) { + $tmp = $headers->getAll($hName); + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $this->_addHeader($header->toString()); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + $this->_endOfHeaders(); + + return $this; + } + + /** + * Add the signature to the given Headers. + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_DomainKeySigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers) + { + // Prepare the DomainKey-Signature Header + $params = array('a' => $this->_hashAlgorithm, 'b' => chunk_split(base64_encode($this->_getEncryptedHash()), 73, ' '), 'c' => $this->_canon, 'd' => $this->_domainName, 'h' => implode(': ', $this->_signedHeaders), 'q' => 'dns', 's' => $this->_selector); + $string = ''; + foreach ($params as $k => $v) { + $string .= $k.'='.$v.'; '; + } + $string = trim($string); + $headers->addTextHeader('DomainKey-Signature', $string); + + return $this; + } + + /* Private helpers */ + + protected function _addHeader($header) + { + switch ($this->_canon) { + case 'nofws' : + // Prepare Header and cascade + $exploded = explode(':', $header, 2); + $name = strtolower(trim($exploded[0])); + $value = str_replace("\r\n", '', $exploded[1]); + $value = preg_replace("/[ \t][ \t]+/", ' ', $value); + $header = $name.':'.trim($value)."\r\n"; + case 'simple' : + // Nothing to do + } + $this->_addToHash($header); + } + + protected function _endOfHeaders() + { + $this->_bodyCanonEmptyCounter = 1; + } + + protected function _canonicalizeBody($string) + { + $len = strlen($string); + $canon = ''; + $nofws = ($this->_canon == 'nofws'); + for ($i = 0; $i < $len; ++$i) { + if ($this->_bodyCanonIgnoreStart > 0) { + --$this->_bodyCanonIgnoreStart; + continue; + } + switch ($string[$i]) { + case "\r" : + $this->_bodyCanonLastChar = "\r"; + break; + case "\n" : + if ($this->_bodyCanonLastChar == "\r") { + if ($nofws) { + $this->_bodyCanonSpace = false; + } + if ($this->_bodyCanonLine == '') { + ++$this->_bodyCanonEmptyCounter; + } else { + $this->_bodyCanonLine = ''; + $canon .= "\r\n"; + } + } else { + // Wooops Error + throw new Swift_SwiftException('Invalid new line sequence in mail found \n without preceding \r'); + } + break; + case ' ' : + case "\t" : + case "\x09": //HTAB + if ($nofws) { + $this->_bodyCanonSpace = true; + break; + } + default : + if ($this->_bodyCanonEmptyCounter > 0) { + $canon .= str_repeat("\r\n", $this->_bodyCanonEmptyCounter); + $this->_bodyCanonEmptyCounter = 0; + } + $this->_bodyCanonLine .= $string[$i]; + $canon .= $string[$i]; + } + } + $this->_addToHash($canon); + } + + protected function _endOfBody() + { + if (strlen($this->_bodyCanonLine) > 0) { + $this->_addToHash("\r\n"); + } + $this->_hash = hash_final($this->_hashHandler, true); + } + + private function _addToHash($string) + { + $this->_canonData .= $string; + hash_update($this->_hashHandler, $string); + } + + private function _startHash() + { + // Init + switch ($this->_hashAlgorithm) { + case 'rsa-sha1' : + $this->_hashHandler = hash_init('sha1'); + break; + } + $this->_canonLine = ''; + } + + /** + * @throws Swift_SwiftException + * + * @return string + */ + private function _getEncryptedHash() + { + $signature = ''; + $pkeyId = openssl_get_privatekey($this->_privateKey); + if (!$pkeyId) { + throw new Swift_SwiftException('Unable to load DomainKey Private Key ['.openssl_error_string().']'); + } + if (openssl_sign($this->_canonData, $signature, $pkeyId, OPENSSL_ALGO_SHA1)) { + return $signature; + } + throw new Swift_SwiftException('Unable to sign DomainKey Hash ['.openssl_error_string().']'); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php new file mode 100644 index 00000000000..c75cb08a518 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php @@ -0,0 +1,65 @@ + + */ +interface Swift_Signers_HeaderSigner extends Swift_Signer, Swift_InputByteStream +{ + /** + * Exclude an header from the signed headers. + * + * @param string $header_name + * + * @return Swift_Signers_HeaderSigner + */ + public function ignoreHeader($header_name); + + /** + * Prepare the Signer to get a new Body. + * + * @return Swift_Signers_HeaderSigner + */ + public function startBody(); + + /** + * Give the signal that the body has finished streaming. + * + * @return Swift_Signers_HeaderSigner + */ + public function endBody(); + + /** + * Give the headers already given. + * + * @param Swift_Mime_SimpleHeaderSet $headers + * + * @return Swift_Signers_HeaderSigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers); + + /** + * Add the header(s) to the headerSet. + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_HeaderSigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers); + + /** + * Return the list of header a signer might tamper. + * + * @return array + */ + public function getAlteredHeaders(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php new file mode 100644 index 00000000000..3a35ad55d07 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php @@ -0,0 +1,190 @@ + + */ +class Swift_Signers_OpenDKIMSigner extends Swift_Signers_DKIMSigner +{ + private $_peclLoaded = false; + + private $_dkimHandler = null; + + private $dropFirstLF = true; + + const CANON_RELAXED = 1; + const CANON_SIMPLE = 2; + const SIG_RSA_SHA1 = 3; + const SIG_RSA_SHA256 = 4; + + public function __construct($privateKey, $domainName, $selector) + { + if (!extension_loaded('opendkim')) { + throw new Swift_SwiftException('php-opendkim extension not found'); + } + + $this->_peclLoaded = true; + + parent::__construct($privateKey, $domainName, $selector); + } + + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + public function addSignature(Swift_Mime_HeaderSet $headers) + { + $header = new Swift_Mime_Headers_OpenDKIMHeader('DKIM-Signature'); + $headerVal = $this->_dkimHandler->getSignatureHeader(); + if (!$headerVal) { + throw new Swift_SwiftException('OpenDKIM Error: '.$this->_dkimHandler->getError()); + } + $header->setValue($headerVal); + $headers->set($header); + + return $this; + } + + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $bodyLen = $this->_bodyLen; + if (is_bool($bodyLen)) { + $bodyLen = -1; + } + $hash = $this->_hashAlgorithm == 'rsa-sha1' ? OpenDKIMSign::ALG_RSASHA1 : OpenDKIMSign::ALG_RSASHA256; + $bodyCanon = $this->_bodyCanon == 'simple' ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; + $headerCanon = $this->_headerCanon == 'simple' ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; + $this->_dkimHandler = new OpenDKIMSign($this->_privateKey, $this->_selector, $this->_domainName, $headerCanon, $bodyCanon, $hash, $bodyLen); + // Hardcode signature Margin for now + $this->_dkimHandler->setMargin(78); + + if (!is_numeric($this->_signatureTimestamp)) { + OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, time()); + } else { + if (!OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, $this->_signatureTimestamp)) { + throw new Swift_SwiftException('Unable to force signature timestamp ['.openssl_error_string().']'); + } + } + if (isset($this->_signerIdentity)) { + $this->_dkimHandler->setSigner($this->_signerIdentity); + } + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (!isset($this->_ignoredHeaders[strtolower($hName)])) { + $tmp = $headers->getAll($hName); + if ($headers->has($hName)) { + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $htosign = $header->toString(); + $this->_dkimHandler->header($htosign); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + + return $this; + } + + public function startBody() + { + if (!$this->_peclLoaded) { + return parent::startBody(); + } + $this->dropFirstLF = true; + $this->_dkimHandler->eoh(); + + return $this; + } + + public function endBody() + { + if (!$this->_peclLoaded) { + return parent::endBody(); + } + $this->_dkimHandler->eom(); + + return $this; + } + + public function reset() + { + $this->_dkimHandler = null; + parent::reset(); + + return $this; + } + + /** + * Set the signature timestamp. + * + * @param int $time + * + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureTimestamp($time) + { + $this->_signatureTimestamp = $time; + + return $this; + } + + /** + * Set the signature expiration timestamp. + * + * @param int $time + * + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureExpiration($time) + { + $this->_signatureExpiration = $time; + + return $this; + } + + /** + * Enable / disable the DebugHeaders. + * + * @param bool $debug + * + * @return Swift_Signers_DKIMSigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + // Protected + + protected function _canonicalizeBody($string) + { + if (!$this->_peclLoaded) { + return parent::_canonicalizeBody($string); + } + if (false && $this->dropFirstLF === true) { + if ($string[0] == "\r" && $string[1] == "\n") { + $string = substr($string, 2); + } + } + $this->dropFirstLF = false; + if (strlen($string)) { + $this->_dkimHandler->body($string); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php new file mode 100644 index 00000000000..b267099a860 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php @@ -0,0 +1,436 @@ + + */ +class Swift_Signers_SMimeSigner implements Swift_Signers_BodySigner +{ + protected $signCertificate; + protected $signPrivateKey; + protected $encryptCert; + protected $signThenEncrypt = true; + protected $signLevel; + protected $encryptLevel; + protected $signOptions; + protected $encryptOptions; + protected $encryptCipher; + protected $extraCerts = null; + + /** + * @var Swift_StreamFilters_StringReplacementFilterFactory + */ + protected $replacementFactory; + + /** + * @var Swift_Mime_HeaderFactory + */ + protected $headerFactory; + + /** + * Constructor. + * + * @param string|null $signCertificate + * @param string|null $signPrivateKey + * @param string|null $encryptCertificate + */ + public function __construct($signCertificate = null, $signPrivateKey = null, $encryptCertificate = null) + { + if (null !== $signPrivateKey) { + $this->setSignCertificate($signCertificate, $signPrivateKey); + } + + if (null !== $encryptCertificate) { + $this->setEncryptCertificate($encryptCertificate); + } + + $this->replacementFactory = Swift_DependencyContainer::getInstance() + ->lookup('transport.replacementfactory'); + + $this->signOptions = PKCS7_DETACHED; + + // Supported since php5.4 + if (defined('OPENSSL_CIPHER_AES_128_CBC')) { + $this->encryptCipher = OPENSSL_CIPHER_AES_128_CBC; + } else { + $this->encryptCipher = OPENSSL_CIPHER_RC2_128; + } + } + + /** + * Returns an new Swift_Signers_SMimeSigner instance. + * + * @param string $certificate + * @param string $privateKey + * + * @return Swift_Signers_SMimeSigner + */ + public static function newInstance($certificate = null, $privateKey = null) + { + return new self($certificate, $privateKey); + } + + /** + * Set the certificate location to use for signing. + * + * @link http://www.php.net/manual/en/openssl.pkcs7.flags.php + * + * @param string $certificate + * @param string|array $privateKey If the key needs an passphrase use array('file-location', 'passphrase') instead + * @param int $signOptions Bitwise operator options for openssl_pkcs7_sign() + * @param string $extraCerts A file containing intermediate certificates needed by the signing certificate + * + * @return Swift_Signers_SMimeSigner + */ + public function setSignCertificate($certificate, $privateKey = null, $signOptions = PKCS7_DETACHED, $extraCerts = null) + { + $this->signCertificate = 'file://'.str_replace('\\', '/', realpath($certificate)); + + if (null !== $privateKey) { + if (is_array($privateKey)) { + $this->signPrivateKey = $privateKey; + $this->signPrivateKey[0] = 'file://'.str_replace('\\', '/', realpath($privateKey[0])); + } else { + $this->signPrivateKey = 'file://'.str_replace('\\', '/', realpath($privateKey)); + } + } + + $this->signOptions = $signOptions; + if (null !== $extraCerts) { + $this->extraCerts = str_replace('\\', '/', realpath($extraCerts)); + } + + return $this; + } + + /** + * Set the certificate location to use for encryption. + * + * @link http://www.php.net/manual/en/openssl.pkcs7.flags.php + * @link http://nl3.php.net/manual/en/openssl.ciphers.php + * + * @param string|array $recipientCerts Either an single X.509 certificate, or an assoc array of X.509 certificates. + * @param int $cipher + * + * @return Swift_Signers_SMimeSigner + */ + public function setEncryptCertificate($recipientCerts, $cipher = null) + { + if (is_array($recipientCerts)) { + $this->encryptCert = array(); + + foreach ($recipientCerts as $cert) { + $this->encryptCert[] = 'file://'.str_replace('\\', '/', realpath($cert)); + } + } else { + $this->encryptCert = 'file://'.str_replace('\\', '/', realpath($recipientCerts)); + } + + if (null !== $cipher) { + $this->encryptCipher = $cipher; + } + + return $this; + } + + /** + * @return string + */ + public function getSignCertificate() + { + return $this->signCertificate; + } + + /** + * @return string + */ + public function getSignPrivateKey() + { + return $this->signPrivateKey; + } + + /** + * Set perform signing before encryption. + * + * The default is to first sign the message and then encrypt. + * But some older mail clients, namely Microsoft Outlook 2000 will work when the message first encrypted. + * As this goes against the official specs, its recommended to only use 'encryption -> signing' when specifically targeting these 'broken' clients. + * + * @param bool $signThenEncrypt + * + * @return Swift_Signers_SMimeSigner + */ + public function setSignThenEncrypt($signThenEncrypt = true) + { + $this->signThenEncrypt = $signThenEncrypt; + + return $this; + } + + /** + * @return bool + */ + public function isSignThenEncrypt() + { + return $this->signThenEncrypt; + } + + /** + * Resets internal states. + * + * @return Swift_Signers_SMimeSigner + */ + public function reset() + { + return $this; + } + + /** + * Change the Swift_Message to apply the signing. + * + * @param Swift_Message $message + * + * @return Swift_Signers_SMimeSigner + */ + public function signMessage(Swift_Message $message) + { + if (null === $this->signCertificate && null === $this->encryptCert) { + return $this; + } + + // Store the message using ByteStream to a file{1} + // Remove all Children + // Sign file{1}, parse the new MIME headers and set them on the primary MimeEntity + // Set the singed-body as the new body (without boundary) + + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + $this->toSMimeByteStream($messageStream, $message); + $message->setEncoder(Swift_DependencyContainer::getInstance()->lookup('mime.rawcontentencoder')); + + $message->setChildren(array()); + $this->streamToMime($messageStream, $message); + } + + /** + * Return the list of header a signer might tamper. + * + * @return array + */ + public function getAlteredHeaders() + { + return array('Content-Type', 'Content-Transfer-Encoding', 'Content-Disposition'); + } + + /** + * @param Swift_InputByteStream $inputStream + * @param Swift_Message $mimeEntity + */ + protected function toSMimeByteStream(Swift_InputByteStream $inputStream, Swift_Message $message) + { + $mimeEntity = $this->createMessage($message); + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + $mimeEntity->toByteStream($messageStream); + $messageStream->commit(); + + if (null !== $this->signCertificate && null !== $this->encryptCert) { + $temporaryStream = new Swift_ByteStream_TemporaryFileByteStream(); + + if ($this->signThenEncrypt) { + $this->messageStreamToSignedByteStream($messageStream, $temporaryStream); + $this->messageStreamToEncryptedByteStream($temporaryStream, $inputStream); + } else { + $this->messageStreamToEncryptedByteStream($messageStream, $temporaryStream); + $this->messageStreamToSignedByteStream($temporaryStream, $inputStream); + } + } elseif ($this->signCertificate !== null) { + $this->messageStreamToSignedByteStream($messageStream, $inputStream); + } else { + $this->messageStreamToEncryptedByteStream($messageStream, $inputStream); + } + } + + /** + * @param Swift_Message $message + * + * @return Swift_Message + */ + protected function createMessage(Swift_Message $message) + { + $mimeEntity = new Swift_Message('', $message->getBody(), $message->getContentType(), $message->getCharset()); + $mimeEntity->setChildren($message->getChildren()); + + $messageHeaders = $mimeEntity->getHeaders(); + $messageHeaders->remove('Message-ID'); + $messageHeaders->remove('Date'); + $messageHeaders->remove('Subject'); + $messageHeaders->remove('MIME-Version'); + $messageHeaders->remove('To'); + $messageHeaders->remove('From'); + + return $mimeEntity; + } + + /** + * @param Swift_FileStream $outputStream + * @param Swift_InputByteStream $inputStream + * + * @throws Swift_IoException + */ + protected function messageStreamToSignedByteStream(Swift_FileStream $outputStream, Swift_InputByteStream $inputStream) + { + $signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + $args = array($outputStream->getPath(), $signedMessageStream->getPath(), $this->signCertificate, $this->signPrivateKey, array(), $this->signOptions); + if (null !== $this->extraCerts) { + $args[] = $this->extraCerts; + } + + if (!call_user_func_array('openssl_pkcs7_sign', $args)) { + throw new Swift_IoException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string())); + } + + $this->copyFromOpenSSLOutput($signedMessageStream, $inputStream); + } + + /** + * @param Swift_FileStream $outputStream + * @param Swift_InputByteStream $is + * + * @throws Swift_IoException + */ + protected function messageStreamToEncryptedByteStream(Swift_FileStream $outputStream, Swift_InputByteStream $is) + { + $encryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + if (!openssl_pkcs7_encrypt($outputStream->getPath(), $encryptedMessageStream->getPath(), $this->encryptCert, array(), 0, $this->encryptCipher)) { + throw new Swift_IoException(sprintf('Failed to encrypt S/Mime message. Error: "%s".', openssl_error_string())); + } + + $this->copyFromOpenSSLOutput($encryptedMessageStream, $is); + } + + /** + * @param Swift_OutputByteStream $fromStream + * @param Swift_InputByteStream $toStream + */ + protected function copyFromOpenSSLOutput(Swift_OutputByteStream $fromStream, Swift_InputByteStream $toStream) + { + $bufferLength = 4096; + $filteredStream = new Swift_ByteStream_TemporaryFileByteStream(); + $filteredStream->addFilter($this->replacementFactory->createFilter("\r\n", "\n"), 'CRLF to LF'); + $filteredStream->addFilter($this->replacementFactory->createFilter("\n", "\r\n"), 'LF to CRLF'); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $filteredStream->write($buffer); + } + + $filteredStream->flushBuffers(); + + while (false !== ($buffer = $filteredStream->read($bufferLength))) { + $toStream->write($buffer); + } + + $toStream->commit(); + } + + /** + * Merges an OutputByteStream to Swift_Message. + * + * @param Swift_OutputByteStream $fromStream + * @param Swift_Message $message + */ + protected function streamToMime(Swift_OutputByteStream $fromStream, Swift_Message $message) + { + $bufferLength = 78; + $headerData = ''; + + $fromStream->setReadPointer(0); + + while (($buffer = $fromStream->read($bufferLength)) !== false) { + $headerData .= $buffer; + + if (false !== strpos($buffer, "\r\n\r\n")) { + break; + } + } + + $headersPosEnd = strpos($headerData, "\r\n\r\n"); + $headerData = trim($headerData); + $headerData = substr($headerData, 0, $headersPosEnd); + $headerLines = explode("\r\n", $headerData); + unset($headerData); + + $headers = array(); + $currentHeaderName = ''; + + foreach ($headerLines as $headerLine) { + // Line separated + if (ctype_space($headerLines[0]) || false === strpos($headerLine, ':')) { + $headers[$currentHeaderName] .= ' '.trim($headerLine); + continue; + } + + $header = explode(':', $headerLine, 2); + $currentHeaderName = strtolower($header[0]); + $headers[$currentHeaderName] = trim($header[1]); + } + + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + $messageStream->addFilter($this->replacementFactory->createFilter("\r\n", "\n"), 'CRLF to LF'); + $messageStream->addFilter($this->replacementFactory->createFilter("\n", "\r\n"), 'LF to CRLF'); + + $messageHeaders = $message->getHeaders(); + + // No need to check for 'application/pkcs7-mime', as this is always base64 + if ('multipart/signed;' === substr($headers['content-type'], 0, 17)) { + if (!preg_match('/boundary=("[^"]+"|(?:[^\s]+|$))/is', $headers['content-type'], $contentTypeData)) { + throw new Swift_SwiftException('Failed to find Boundary parameter'); + } + + $boundary = trim($contentTypeData['1'], '"'); + + // Skip the header and CRLF CRLF + $fromStream->setReadPointer($headersPosEnd + 4); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $messageStream->write($buffer); + } + + $messageStream->commit(); + + $messageHeaders->remove('Content-Transfer-Encoding'); + $message->setContentType($headers['content-type']); + $message->setBoundary($boundary); + $message->setBody($messageStream); + } else { + $fromStream->setReadPointer($headersPosEnd + 4); + + if (null === $this->headerFactory) { + $this->headerFactory = Swift_DependencyContainer::getInstance()->lookup('mime.headerfactory'); + } + + $message->setContentType($headers['content-type']); + $messageHeaders->set($this->headerFactory->createTextHeader('Content-Transfer-Encoding', $headers['content-transfer-encoding'])); + $messageHeaders->set($this->headerFactory->createTextHeader('Content-Disposition', $headers['content-disposition'])); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $messageStream->write($buffer); + } + + $messageStream->commit(); + $message->setBody($messageStream); + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/SmtpTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/SmtpTransport.php new file mode 100644 index 00000000000..62516114019 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/SmtpTransport.php @@ -0,0 +1,58 @@ +createDependenciesFor('transport.smtp') + ); + + $this->setHost($host); + $this->setPort($port); + $this->setEncryption($security); + } + + /** + * Create a new SmtpTransport instance. + * + * @param string $host + * @param int $port + * @param string $security + * + * @return Swift_SmtpTransport + */ + public static function newInstance($host = 'localhost', $port = 25, $security = null) + { + return new self($host, $port, $security); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Spool.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Spool.php new file mode 100644 index 00000000000..c16ab4b38eb --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Spool.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Interface for spools. + * + * @author Fabien Potencier + */ +interface Swift_Spool +{ + /** + * Starts this Spool mechanism. + */ + public function start(); + + /** + * Stops this Spool mechanism. + */ + public function stop(); + + /** + * Tests if this Spool mechanism has started. + * + * @return bool + */ + public function isStarted(); + + /** + * Queues a message. + * + * @param Swift_Mime_Message $message The message to store + * + * @return bool Whether the operation has succeeded + */ + public function queueMessage(Swift_Mime_Message $message); + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/SpoolTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/SpoolTransport.php new file mode 100644 index 00000000000..cf9bf78fb8f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/SpoolTransport.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * + * @author Fabien Potencier + */ +class Swift_SpoolTransport extends Swift_Transport_SpoolTransport +{ + /** + * Create a new SpoolTransport. + * + * @param Swift_Spool $spool + */ + public function __construct(Swift_Spool $spool) + { + $arguments = Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.spool'); + + $arguments[] = $spool; + + call_user_func_array( + array($this, 'Swift_Transport_SpoolTransport::__construct'), + $arguments + ); + } + + /** + * Create a new SpoolTransport instance. + * + * @param Swift_Spool $spool + * + * @return Swift_SpoolTransport + */ + public static function newInstance(Swift_Spool $spool) + { + return new self($spool); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilter.php b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilter.php new file mode 100644 index 00000000000..362be2e8d47 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilter.php @@ -0,0 +1,35 @@ +_search = $search; + $this->_index = array(); + $this->_tree = array(); + $this->_replace = array(); + $this->_repSize = array(); + + $tree = null; + $i = null; + $last_size = $size = 0; + foreach ($search as $i => $search_element) { + if ($tree !== null) { + $tree[-1] = min(count($replace) - 1, $i - 1); + $tree[-2] = $last_size; + } + $tree = &$this->_tree; + if (is_array($search_element)) { + foreach ($search_element as $k => $char) { + $this->_index[$char] = true; + if (!isset($tree[$char])) { + $tree[$char] = array(); + } + $tree = &$tree[$char]; + } + $last_size = $k + 1; + $size = max($size, $last_size); + } else { + $last_size = 1; + if (!isset($tree[$search_element])) { + $tree[$search_element] = array(); + } + $tree = &$tree[$search_element]; + $size = max($last_size, $size); + $this->_index[$search_element] = true; + } + } + if ($i !== null) { + $tree[-1] = min(count($replace) - 1, $i); + $tree[-2] = $last_size; + $this->_treeMaxLen = $size; + } + foreach ($replace as $rep) { + if (!is_array($rep)) { + $rep = array($rep); + } + $this->_replace[] = $rep; + } + for ($i = count($this->_replace) - 1; $i >= 0; --$i) { + $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); + $this->_repSize[$i] = count($rep); + } + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * + * @param array $buffer + * + * @return bool + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = end($buffer); + + return isset($this->_index[$endOfBuffer]); + } + + /** + * Perform the actual replacements on $buffer and return the result. + * + * @param array $buffer + * @param int $_minReplaces + * + * @return array + */ + public function filter($buffer, $_minReplaces = -1) + { + if ($this->_treeMaxLen == 0) { + return $buffer; + } + + $newBuffer = array(); + $buf_size = count($buffer); + for ($i = 0; $i < $buf_size; ++$i) { + $search_pos = $this->_tree; + $last_found = PHP_INT_MAX; + // We try to find if the next byte is part of a search pattern + for ($j = 0; $j <= $this->_treeMaxLen; ++$j) { + // We have a new byte for a search pattern + if (isset($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) { + $search_pos = $search_pos[$buffer[$p]]; + // We have a complete pattern, save, in case we don't find a better match later + if (isset($search_pos[-1]) && $search_pos[-1] < $last_found + && $search_pos[-1] > $_minReplaces) { + $last_found = $search_pos[-1]; + $last_size = $search_pos[-2]; + } + } + // We got a complete pattern + elseif ($last_found !== PHP_INT_MAX) { + // Adding replacement datas to output buffer + $rep_size = $this->_repSize[$last_found]; + for ($j = 0; $j < $rep_size; ++$j) { + $newBuffer[] = $this->_replace[$last_found][$j]; + } + // We Move cursor forward + $i += $last_size - 1; + // Edge Case, last position in buffer + if ($i >= $buf_size) { + $newBuffer[] = $buffer[$i]; + } + + // We start the next loop + continue 2; + } else { + // this byte is not in a pattern and we haven't found another pattern + break; + } + } + // Normal byte, move it to output buffer + $newBuffer[] = $buffer[$i]; + } + + return $newBuffer; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php new file mode 100644 index 00000000000..d0db8b96197 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php @@ -0,0 +1,66 @@ +_search = $search; + $this->_replace = $replace; + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * + * @param string $buffer + * + * @return bool + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = substr($buffer, -1); + foreach ((array) $this->_search as $needle) { + if (false !== strpos($needle, $endOfBuffer)) { + return true; + } + } + + return false; + } + + /** + * Perform the actual replacements on $buffer and return the result. + * + * @param string $buffer + * + * @return string + */ + public function filter($buffer) + { + return str_replace($this->_search, $this->_replace, $buffer); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php new file mode 100644 index 00000000000..e98240b5bc5 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php @@ -0,0 +1,45 @@ +_filters[$search][$replace])) { + if (!isset($this->_filters[$search])) { + $this->_filters[$search] = array(); + } + + if (!isset($this->_filters[$search][$replace])) { + $this->_filters[$search][$replace] = array(); + } + + $this->_filters[$search][$replace] = new Swift_StreamFilters_StringReplacementFilter($search, $replace); + } + + return $this->_filters[$search][$replace]; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/SwiftException.php b/htdocs/includes/swiftmailer/lib/classes/Swift/SwiftException.php new file mode 100644 index 00000000000..db3d31093ef --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/SwiftException.php @@ -0,0 +1,29 @@ +_eventDispatcher = $dispatcher; + $this->_buffer = $buf; + $this->_lookupHostname(); + } + + /** + * Set the name of the local domain which Swift will identify itself as. + * + * This should be a fully-qualified domain name and should be truly the domain + * you're using. + * + * If your server doesn't have a domain name, use the IP in square + * brackets (i.e. [127.0.0.1]). + * + * @param string $domain + * + * @return Swift_Transport_AbstractSmtpTransport + */ + public function setLocalDomain($domain) + { + $this->_domain = $domain; + + return $this; + } + + /** + * Get the name of the domain Swift will identify as. + * + * @return string + */ + public function getLocalDomain() + { + return $this->_domain; + } + + /** + * Sets the source IP. + * + * @param string $source + */ + public function setSourceIp($source) + { + $this->_sourceIp = $source; + } + + /** + * Returns the IP used to connect to the destination. + * + * @return string + */ + public function getSourceIp() + { + return $this->_sourceIp; + } + + /** + * Start the SMTP connection. + */ + public function start() + { + if (!$this->_started) { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); + if ($evt->bubbleCancelled()) { + return; + } + } + + try { + $this->_buffer->initialize($this->_getBufferParams()); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + $this->_readGreeting(); + $this->_doHeloCommand(); + + if ($evt) { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); + } + + $this->_started = true; + } + } + + /** + * Test if an SMTP connection has been established. + * + * @return bool + */ + public function isStarted() + { + return $this->_started; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $sent = 0; + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if (!$reversePath = $this->_getReversePath($message)) { + $this->_throwException(new Swift_TransportException( + 'Cannot send message without a sender address' + ) + ); + } + + $to = (array) $message->getTo(); + $cc = (array) $message->getCc(); + $tos = array_merge($to, $cc); + $bcc = (array) $message->getBcc(); + + $message->setBcc(array()); + + try { + $sent += $this->_sendTo($message, $reversePath, $tos, $failedRecipients); + $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); + } catch (Exception $e) { + $message->setBcc($bcc); + throw $e; + } + + $message->setBcc($bcc); + + if ($evt) { + if ($sent == count($to) + count($cc) + count($bcc)) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + } elseif ($sent > 0) { + $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); + } else { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + } + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); //Make sure a new Message ID is used + + return $sent; + } + + /** + * Stop the SMTP connection. + */ + public function stop() + { + if ($this->_started) { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); + if ($evt->bubbleCancelled()) { + return; + } + } + + try { + $this->executeCommand("QUIT\r\n", array(221)); + } catch (Swift_TransportException $e) { + } + + try { + $this->_buffer->terminate(); + + if ($evt) { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); + } + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + } + $this->_started = false; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** + * Reset the current mail transaction. + */ + public function reset() + { + $this->executeCommand("RSET\r\n", array(250)); + } + + /** + * Get the IoBuffer where read/writes are occurring. + * + * @return Swift_Transport_IoBuffer + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] $failures An array of failures by-reference + * + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $seq = $this->_buffer->write($command); + $response = $this->_getFullResponse($seq); + if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) { + $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); + } + $this->_assertResponseCode($response, $codes); + + return $response; + } + + /** Read the opening SMTP greeting */ + protected function _readGreeting() + { + $this->_assertResponseCode($this->_getFullResponse(0), array(220)); + } + + /** Send the HELO welcome */ + protected function _doHeloCommand() + { + $this->executeCommand( + sprintf("HELO %s\r\n", $this->_domain), array(250) + ); + } + + /** Send the MAIL FROM command */ + protected function _doMailFromCommand($address) + { + $this->executeCommand( + sprintf("MAIL FROM:<%s>\r\n", $address), array(250) + ); + } + + /** Send the RCPT TO command */ + protected function _doRcptToCommand($address) + { + $this->executeCommand( + sprintf("RCPT TO:<%s>\r\n", $address), array(250, 251, 252) + ); + } + + /** Send the DATA command */ + protected function _doDataCommand() + { + $this->executeCommand("DATA\r\n", array(354)); + } + + /** Stream the contents of the message over the buffer */ + protected function _streamMessage(Swift_Mime_Message $message) + { + $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); + try { + $message->toByteStream($this->_buffer); + $this->_buffer->flushBuffers(); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + $this->_buffer->setWriteTranslations(array()); + $this->executeCommand("\r\n.\r\n", array(250)); + } + + /** Determine the best-use reverse path for this message */ + protected function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) { + $path = $return; + } elseif (!empty($sender)) { + // Don't use array_keys + reset($sender); // Reset Pointer to first pos + $path = key($sender); // Get key + } elseif (!empty($from)) { + reset($from); // Reset Pointer to first pos + $path = key($from); // Get key + } + + return $path; + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) { + throw $e; + } + } else { + throw $e; + } + } + + /** Throws an Exception if a response code is incorrect */ + protected function _assertResponseCode($response, $wanted) + { + list($code) = sscanf($response, '%3d'); + $valid = (empty($wanted) || in_array($code, $wanted)); + + if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, + $valid)) { + $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); + } + + if (!$valid) { + $this->_throwException( + new Swift_TransportException( + 'Expected response code '.implode('/', $wanted).' but got code '. + '"'.$code.'", with message "'.$response.'"', + $code) + ); + } + } + + /** Get an entire multi-line response using its sequence number */ + protected function _getFullResponse($seq) + { + $response = ''; + try { + do { + $line = $this->_buffer->readLine($seq); + $response .= $line; + } while (null !== $line && false !== $line && ' ' != $line{3}); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } catch (Swift_IoException $e) { + $this->_throwException( + new Swift_TransportException( + $e->getMessage()) + ); + } + + return $response; + } + + /** Send an email to the given recipients from the given reverse path */ + private function _doMailTransaction($message, $reversePath, array $recipients, array &$failedRecipients) + { + $sent = 0; + $this->_doMailFromCommand($reversePath); + foreach ($recipients as $forwardPath) { + try { + $this->_doRcptToCommand($forwardPath); + ++$sent; + } catch (Swift_TransportException $e) { + $failedRecipients[] = $forwardPath; + } + } + + if ($sent != 0) { + $this->_doDataCommand(); + $this->_streamMessage($message); + } else { + $this->reset(); + } + + return $sent; + } + + /** Send a message to the given To: recipients */ + private function _sendTo(Swift_Mime_Message $message, $reversePath, array $to, array &$failedRecipients) + { + if (empty($to)) { + return 0; + } + + return $this->_doMailTransaction($message, $reversePath, array_keys($to), + $failedRecipients); + } + + /** Send a message to all Bcc: recipients */ + private function _sendBcc(Swift_Mime_Message $message, $reversePath, array $bcc, array &$failedRecipients) + { + $sent = 0; + foreach ($bcc as $forwardPath => $name) { + $message->setBcc(array($forwardPath => $name)); + $sent += $this->_doMailTransaction( + $message, $reversePath, array($forwardPath), $failedRecipients + ); + } + + return $sent; + } + + /** Try to determine the hostname of the server this is run on */ + private function _lookupHostname() + { + if (!empty($_SERVER['SERVER_NAME']) + && $this->_isFqdn($_SERVER['SERVER_NAME'])) { + $this->_domain = $_SERVER['SERVER_NAME']; + } elseif (!empty($_SERVER['SERVER_ADDR'])) { + $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); + } + } + + /** Determine is the $hostname is a fully-qualified name */ + private function _isFqdn($hostname) + { + // We could do a really thorough check, but there's really no point + if (false !== $dotPos = strpos($hostname, '.')) { + return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); + } + + return false; + } + + /** + * Destructor. + */ + public function __destruct() + { + $this->stop(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php new file mode 100644 index 00000000000..53f721d03c6 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php @@ -0,0 +1,81 @@ +executeCommand("AUTH CRAM-MD5\r\n", array(334)); + $challenge = base64_decode(substr($challenge, 4)); + $message = base64_encode( + $username.' '.$this->_getResponse($password, $challenge) + ); + $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + /** + * Generate a CRAM-MD5 response from a server challenge. + * + * @param string $secret + * @param string $challenge + * + * @return string + */ + private function _getResponse($secret, $challenge) + { + if (strlen($secret) > 64) { + $secret = pack('H32', md5($secret)); + } + + if (strlen($secret) < 64) { + $secret = str_pad($secret, 64, chr(0)); + } + + $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad.$challenge)); + $digest = md5($k_opad.$inner); + + return $digest; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php new file mode 100644 index 00000000000..6ab6e3337e2 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php @@ -0,0 +1,51 @@ +executeCommand("AUTH LOGIN\r\n", array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php new file mode 100644 index 00000000000..d8331316963 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php @@ -0,0 +1,726 @@ + + */ +class Swift_Transport_Esmtp_Auth_NTLMAuthenticator implements Swift_Transport_Esmtp_Authenticator +{ + const NTLMSIG = "NTLMSSP\x00"; + const DESCONST = 'KGS!@#$%'; + + /** + * Get the name of the AUTH mechanism this Authenticator handles. + * + * @return string + */ + public function getAuthKeyword() + { + return 'NTLM'; + } + + /** + * Try to authenticate the user with $username and $password. + * + * @param Swift_Transport_SmtpAgent $agent + * @param string $username + * @param string $password + * + * @return bool + */ + public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password) + { + if (!function_exists('mcrypt_module_open')) { + throw new LogicException('The mcrypt functions need to be enabled to use the NTLM authenticator.'); + } + + if (!function_exists('openssl_random_pseudo_bytes')) { + throw new LogicException('The OpenSSL extension must be enabled to use the NTLM authenticator.'); + } + + if (!function_exists('bcmul')) { + throw new LogicException('The BCMatch functions must be enabled to use the NTLM authenticator.'); + } + + try { + // execute AUTH command and filter out the code at the beginning + // AUTH NTLM xxxx + $response = base64_decode(substr(trim($this->sendMessage1($agent)), 4)); + + // extra parameters for our unit cases + $timestamp = func_num_args() > 3 ? func_get_arg(3) : $this->getCorrectTimestamp(bcmul(microtime(true), '1000')); + $client = func_num_args() > 4 ? func_get_arg(4) : $this->getRandomBytes(8); + + // Message 3 response + $this->sendMessage3($response, $username, $password, $timestamp, $client, $agent); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + protected function si2bin($si, $bits = 32) + { + $bin = null; + if ($si >= -pow(2, $bits - 1) && ($si <= pow(2, $bits - 1))) { + // positive or zero + if ($si >= 0) { + $bin = base_convert($si, 10, 2); + // pad to $bits bit + $bin_length = strlen($bin); + if ($bin_length < $bits) { + $bin = str_repeat('0', $bits - $bin_length).$bin; + } + } else { + // negative + $si = -$si - pow(2, $bits); + $bin = base_convert($si, 10, 2); + $bin_length = strlen($bin); + if ($bin_length > $bits) { + $bin = str_repeat('1', $bits - $bin_length).$bin; + } + } + } + + return $bin; + } + + /** + * Send our auth message and returns the response. + * + * @param Swift_Transport_SmtpAgent $agent + * + * @return string SMTP Response + */ + protected function sendMessage1(Swift_Transport_SmtpAgent $agent) + { + $message = $this->createMessage1(); + + return $agent->executeCommand(sprintf("AUTH %s %s\r\n", $this->getAuthKeyword(), base64_encode($message)), array(334)); + } + + /** + * Fetch all details of our response (message 2). + * + * @param string $response + * + * @return array our response parsed + */ + protected function parseMessage2($response) + { + $responseHex = bin2hex($response); + $length = floor(hexdec(substr($responseHex, 28, 4)) / 256) * 2; + $offset = floor(hexdec(substr($responseHex, 32, 4)) / 256) * 2; + $challenge = $this->hex2bin(substr($responseHex, 48, 16)); + $context = $this->hex2bin(substr($responseHex, 64, 16)); + $targetInfoH = $this->hex2bin(substr($responseHex, 80, 16)); + $targetName = $this->hex2bin(substr($responseHex, $offset, $length)); + $offset = floor(hexdec(substr($responseHex, 88, 4)) / 256) * 2; + $targetInfoBlock = substr($responseHex, $offset); + list($domainName, $serverName, $DNSDomainName, $DNSServerName, $terminatorByte) = $this->readSubBlock($targetInfoBlock); + + return array( + $challenge, + $context, + $targetInfoH, + $targetName, + $domainName, + $serverName, + $DNSDomainName, + $DNSServerName, + $this->hex2bin($targetInfoBlock), + $terminatorByte, + ); + } + + /** + * Read the blob information in from message2. + * + * @param $block + * + * @return array + */ + protected function readSubBlock($block) + { + // remove terminatorByte cause it's always the same + $block = substr($block, 0, -8); + + $length = strlen($block); + $offset = 0; + $data = array(); + while ($offset < $length) { + $blockLength = hexdec(substr(substr($block, $offset, 8), -4)) / 256; + $offset += 8; + $data[] = $this->hex2bin(substr($block, $offset, $blockLength * 2)); + $offset += $blockLength * 2; + } + + if (count($data) == 3) { + $data[] = $data[2]; + $data[2] = ''; + } + + $data[] = $this->createByte('00'); + + return $data; + } + + /** + * Send our final message with all our data. + * + * @param string $response Message 1 response (message 2) + * @param string $username + * @param string $password + * @param string $timestamp + * @param string $client + * @param Swift_Transport_SmtpAgent $agent + * @param bool $v2 Use version2 of the protocol + * + * @return string + */ + protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true) + { + list($domain, $username) = $this->getDomainAndUsername($username); + //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter + list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response); + + if (!$v2) { + // LMv1 + $lmResponse = $this->createLMPassword($password, $challenge); + // NTLMv1 + $ntlmResponse = $this->createNTLMPassword($password, $challenge); + } else { + // LMv2 + $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client); + // NTLMv2 + $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client); + } + + $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse); + + return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), array(235)); + } + + /** + * Create our message 1. + * + * @return string + */ + protected function createMessage1() + { + return self::NTLMSIG + .$this->createByte('01') // Message 1 +.$this->createByte('0702'); // Flags + } + + /** + * Create our message 3. + * + * @param string $domain + * @param string $username + * @param string $workstation + * @param string $lmResponse + * @param string $ntlmResponse + * + * @return string + */ + protected function createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse) + { + // Create security buffers + $domainSec = $this->createSecurityBuffer($domain, 64); + $domainInfo = $this->readSecurityBuffer(bin2hex($domainSec)); + $userSec = $this->createSecurityBuffer($username, ($domainInfo[0] + $domainInfo[1]) / 2); + $userInfo = $this->readSecurityBuffer(bin2hex($userSec)); + $workSec = $this->createSecurityBuffer($workstation, ($userInfo[0] + $userInfo[1]) / 2); + $workInfo = $this->readSecurityBuffer(bin2hex($workSec)); + $lmSec = $this->createSecurityBuffer($lmResponse, ($workInfo[0] + $workInfo[1]) / 2, true); + $lmInfo = $this->readSecurityBuffer(bin2hex($lmSec)); + $ntlmSec = $this->createSecurityBuffer($ntlmResponse, ($lmInfo[0] + $lmInfo[1]) / 2, true); + + return self::NTLMSIG + .$this->createByte('03') // TYPE 3 message +.$lmSec // LM response header +.$ntlmSec // NTLM response header +.$domainSec // Domain header +.$userSec // User header +.$workSec // Workstation header +.$this->createByte('000000009a', 8) // session key header (empty) +.$this->createByte('01020000') // FLAGS +.$this->convertTo16bit($domain) // domain name +.$this->convertTo16bit($username) // username +.$this->convertTo16bit($workstation) // workstation +.$lmResponse + .$ntlmResponse; + } + + /** + * @param string $timestamp Epoch timestamp in microseconds + * @param string $client Random bytes + * @param string $targetInfo + * + * @return string + */ + protected function createBlob($timestamp, $client, $targetInfo) + { + return $this->createByte('0101') + .$this->createByte('00') + .$timestamp + .$client + .$this->createByte('00') + .$targetInfo + .$this->createByte('00'); + } + + /** + * Get domain and username from our username. + * + * @example DOMAIN\username + * + * @param string $name + * + * @return array + */ + protected function getDomainAndUsername($name) + { + if (strpos($name, '\\') !== false) { + return explode('\\', $name); + } + + list($user, $domain) = explode('@', $name); + + return array($domain, $user); + } + + /** + * Create LMv1 response. + * + * @param string $password + * @param string $challenge + * + * @return string + */ + protected function createLMPassword($password, $challenge) + { + // FIRST PART + $password = $this->createByte(strtoupper($password), 14, false); + list($key1, $key2) = str_split($password, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + + $constantDecrypt = $this->createByte($this->desEncrypt(self::DESCONST, $desKey1).$this->desEncrypt(self::DESCONST, $desKey2), 21, false); + + // SECOND PART + list($key1, $key2, $key3) = str_split($constantDecrypt, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + $desKey3 = $this->createDesKey($key3); + + return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); + } + + /** + * Create NTLMv1 response. + * + * @param string $password + * @param string $challenge + * + * @return string + */ + protected function createNTLMPassword($password, $challenge) + { + // FIRST PART + $ntlmHash = $this->createByte($this->md4Encrypt($password), 21, false); + list($key1, $key2, $key3) = str_split($ntlmHash, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + $desKey3 = $this->createDesKey($key3); + + return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); + } + + /** + * Convert a normal timestamp to a tenth of a microtime epoch time. + * + * @param string $time + * + * @return string + */ + protected function getCorrectTimestamp($time) + { + // Get our timestamp (tricky!) + bcscale(0); + + $time = number_format($time, 0, '.', ''); // save microtime to string + $time = bcadd($time, '11644473600000'); // add epoch time + $time = bcmul($time, 10000); // tenths of a microsecond. + + $binary = $this->si2bin($time, 64); // create 64 bit binary string + $timestamp = ''; + for ($i = 0; $i < 8; ++$i) { + $timestamp .= chr(bindec(substr($binary, -(($i + 1) * 8), 8))); + } + + return $timestamp; + } + + /** + * Create LMv2 response. + * + * @param string $password + * @param string $username + * @param string $domain + * @param string $challenge NTLM Challenge + * @param string $client Random string + * + * @return string + */ + protected function createLMv2Password($password, $username, $domain, $challenge, $client) + { + $lmPass = '00'; // by default 00 + // if $password > 15 than we can't use this method + if (strlen($password) <= 15) { + $ntlmHash = $this->md4Encrypt($password); + $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); + + $lmPass = bin2hex($this->md5Encrypt($ntml2Hash, $challenge.$client).$client); + } + + return $this->createByte($lmPass, 24); + } + + /** + * Create NTLMv2 response. + * + * @param string $password + * @param string $username + * @param string $domain + * @param string $challenge Hex values + * @param string $targetInfo Hex values + * @param string $timestamp + * @param string $client Random bytes + * + * @return string + * + * @see http://davenport.sourceforge.net/ntlm.html#theNtlmResponse + */ + protected function createNTLMv2Hash($password, $username, $domain, $challenge, $targetInfo, $timestamp, $client) + { + $ntlmHash = $this->md4Encrypt($password); + $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); + + // create blob + $blob = $this->createBlob($timestamp, $client, $targetInfo); + + $ntlmv2Response = $this->md5Encrypt($ntml2Hash, $challenge.$blob); + + return $ntlmv2Response.$blob; + } + + protected function createDesKey($key) + { + $material = array(bin2hex($key[0])); + $len = strlen($key); + for ($i = 1; $i < $len; ++$i) { + list($high, $low) = str_split(bin2hex($key[$i])); + $v = $this->castToByte(ord($key[$i - 1]) << (7 + 1 - $i) | $this->uRShift(hexdec(dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xf)), $i)); + $material[] = str_pad(substr(dechex($v), -2), 2, '0', STR_PAD_LEFT); // cast to byte + } + $material[] = str_pad(substr(dechex($this->castToByte(ord($key[6]) << 1)), -2), 2, '0'); + + // odd parity + foreach ($material as $k => $v) { + $b = $this->castToByte(hexdec($v)); + $needsParity = (($this->uRShift($b, 7) ^ $this->uRShift($b, 6) ^ $this->uRShift($b, 5) + ^ $this->uRShift($b, 4) ^ $this->uRShift($b, 3) ^ $this->uRShift($b, 2) + ^ $this->uRShift($b, 1)) & 0x01) == 0; + + list($high, $low) = str_split($v); + if ($needsParity) { + $material[$k] = dechex(hexdec($high) | 0x0).dechex(hexdec($low) | 0x1); + } else { + $material[$k] = dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xe); + } + } + + return $this->hex2bin(implode('', $material)); + } + + /** HELPER FUNCTIONS */ + /** + * Create our security buffer depending on length and offset. + * + * @param string $value Value we want to put in + * @param int $offset start of value + * @param bool $is16 Do we 16bit string or not? + * + * @return string + */ + protected function createSecurityBuffer($value, $offset, $is16 = false) + { + $length = strlen(bin2hex($value)); + $length = $is16 ? $length / 2 : $length; + $length = $this->createByte(str_pad(dechex($length), 2, '0', STR_PAD_LEFT), 2); + + return $length.$length.$this->createByte(dechex($offset), 4); + } + + /** + * Read our security buffer to fetch length and offset of our value. + * + * @param string $value Securitybuffer in hex + * + * @return array array with length and offset + */ + protected function readSecurityBuffer($value) + { + $length = floor(hexdec(substr($value, 0, 4)) / 256) * 2; + $offset = floor(hexdec(substr($value, 8, 4)) / 256) * 2; + + return array($length, $offset); + } + + /** + * Cast to byte java equivalent to (byte). + * + * @param int $v + * + * @return int + */ + protected function castToByte($v) + { + return (($v + 128) % 256) - 128; + } + + /** + * Java unsigned right bitwise + * $a >>> $b. + * + * @param int $a + * @param int $b + * + * @return int + */ + protected function uRShift($a, $b) + { + if ($b == 0) { + return $a; + } + + return ($a >> $b) & ~(1 << (8 * PHP_INT_SIZE - 1) >> ($b - 1)); + } + + /** + * Right padding with 0 to certain length. + * + * @param string $input + * @param int $bytes Length of bytes + * @param bool $isHex Did we provided hex value + * + * @return string + */ + protected function createByte($input, $bytes = 4, $isHex = true) + { + if ($isHex) { + $byte = $this->hex2bin(str_pad($input, $bytes * 2, '00')); + } else { + $byte = str_pad($input, $bytes, "\x00"); + } + + return $byte; + } + + /** + * Create random bytes. + * + * @param $length + * + * @return string + */ + protected function getRandomBytes($length) + { + $bytes = openssl_random_pseudo_bytes($length, $strong); + + if (false !== $bytes && true === $strong) { + return $bytes; + } + + throw new RuntimeException('OpenSSL did not produce a secure random number.'); + } + + /** ENCRYPTION ALGORITHMS */ + /** + * DES Encryption. + * + * @param string $value + * @param string $key + * + * @return string + */ + protected function desEncrypt($value, $key) + { + $cipher = mcrypt_module_open(MCRYPT_DES, '', 'ecb', ''); + mcrypt_generic_init($cipher, $key, mcrypt_create_iv(mcrypt_enc_get_iv_size($cipher), MCRYPT_DEV_RANDOM)); + + return mcrypt_generic($cipher, $value); + } + + /** + * MD5 Encryption. + * + * @param string $key Encryption key + * @param string $msg Message to encrypt + * + * @return string + */ + protected function md5Encrypt($key, $msg) + { + $blocksize = 64; + if (strlen($key) > $blocksize) { + $key = pack('H*', md5($key)); + } + + $key = str_pad($key, $blocksize, "\0"); + $ipadk = $key ^ str_repeat("\x36", $blocksize); + $opadk = $key ^ str_repeat("\x5c", $blocksize); + + return pack('H*', md5($opadk.pack('H*', md5($ipadk.$msg)))); + } + + /** + * MD4 Encryption. + * + * @param string $input + * + * @return string + * + * @see http://php.net/manual/en/ref.hash.php + */ + protected function md4Encrypt($input) + { + $input = $this->convertTo16bit($input); + + return function_exists('hash') ? $this->hex2bin(hash('md4', $input)) : mhash(MHASH_MD4, $input); + } + + /** + * Convert UTF-8 to UTF-16. + * + * @param string $input + * + * @return string + */ + protected function convertTo16bit($input) + { + return iconv('UTF-8', 'UTF-16LE', $input); + } + + /** + * Hex2bin replacement for < PHP 5.4. + * + * @param string $hex + * + * @return string Binary + */ + protected function hex2bin($hex) + { + if (function_exists('hex2bin')) { + return hex2bin($hex); + } else { + return pack('H*', $hex); + } + } + + /** + * @param string $message + */ + protected function debug($message) + { + $message = bin2hex($message); + $messageId = substr($message, 16, 8); + echo substr($message, 0, 16)." NTLMSSP Signature
    \n"; + echo $messageId." Type Indicator
    \n"; + + if ($messageId == '02000000') { + $map = array( + 'Challenge', + 'Context', + 'Target Information Security Buffer', + 'Target Name Data', + 'NetBIOS Domain Name', + 'NetBIOS Server Name', + 'DNS Domain Name', + 'DNS Server Name', + 'BLOB', + 'Target Information Terminator', + ); + + $data = $this->parseMessage2($this->hex2bin($message)); + + foreach ($map as $key => $value) { + echo bin2hex($data[$key]).' - '.$data[$key].' ||| '.$value."
    \n"; + } + } elseif ($messageId == '03000000') { + $i = 0; + $data[$i++] = substr($message, 24, 16); + list($lmLength, $lmOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 40, 16); + list($ntmlLength, $ntmlOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 56, 16); + list($targetLength, $targetOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 72, 16); + list($userLength, $userOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 88, 16); + list($workLength, $workOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 104, 16); + $data[$i++] = substr($message, 120, 8); + $data[$i++] = substr($message, $targetOffset, $targetLength); + $data[$i++] = substr($message, $userOffset, $userLength); + $data[$i++] = substr($message, $workOffset, $workLength); + $data[$i++] = substr($message, $lmOffset, $lmLength); + $data[$i] = substr($message, $ntmlOffset, $ntmlLength); + + $map = array( + 'LM Response Security Buffer', + 'NTLM Response Security Buffer', + 'Target Name Security Buffer', + 'User Name Security Buffer', + 'Workstation Name Security Buffer', + 'Session Key Security Buffer', + 'Flags', + 'Target Name Data', + 'User Name Data', + 'Workstation Name Data', + 'LM Response Data', + 'NTLM Response Data', + ); + + foreach ($map as $key => $value) { + echo $data[$key].' - '.$this->hex2bin($data[$key]).' ||| '.$value."
    \n"; + } + } + + echo '

    '; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php new file mode 100644 index 00000000000..43219f93445 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php @@ -0,0 +1,50 @@ +executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php new file mode 100644 index 00000000000..ca35e7b83ad --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php @@ -0,0 +1,70 @@ + + * $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') + * ->setAuthMode('XOAUTH2') + * ->setUsername('YOUR_EMAIL_ADDRESS') + * ->setPassword('YOUR_ACCESS_TOKEN'); + * + * + * @author xu.li + * + * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol + */ +class Swift_Transport_Esmtp_Auth_XOAuth2Authenticator implements Swift_Transport_Esmtp_Authenticator +{ + /** + * Get the name of the AUTH mechanism this Authenticator handles. + * + * @return string + */ + public function getAuthKeyword() + { + return 'XOAUTH2'; + } + + /** + * Try to authenticate the user with $email and $token. + * + * @param Swift_Transport_SmtpAgent $agent + * @param string $email + * @param string $token + * + * @return bool + */ + public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token) + { + try { + $param = $this->constructXOAuth2Params($email, $token); + $agent->executeCommand('AUTH XOAUTH2 '.$param."\r\n", array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + /** + * Construct the auth parameter. + * + * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol#the_sasl_xoauth2_mechanism + */ + protected function constructXOAuth2Params($email, $token) + { + return base64_encode("user=$email\1auth=Bearer $token\1\1"); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php new file mode 100644 index 00000000000..cb36133c94d --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php @@ -0,0 +1,263 @@ +setAuthenticators($authenticators); + } + + /** + * Set the Authenticators which can process a login request. + * + * @param Swift_Transport_Esmtp_Authenticator[] $authenticators + */ + public function setAuthenticators(array $authenticators) + { + $this->_authenticators = $authenticators; + } + + /** + * Get the Authenticators which can process a login request. + * + * @return Swift_Transport_Esmtp_Authenticator[] + */ + public function getAuthenticators() + { + return $this->_authenticators; + } + + /** + * Set the username to authenticate with. + * + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + } + + /** + * Get the username to authenticate with. + * + * @return string + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Set the password to authenticate with. + * + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + } + + /** + * Get the password to authenticate with. + * + * @return string + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Set the auth mode to use to authenticate. + * + * @param string $mode + */ + public function setAuthMode($mode) + { + $this->_auth_mode = $mode; + } + + /** + * Get the auth mode to use to authenticate. + * + * @return string + */ + public function getAuthMode() + { + return $this->_auth_mode; + } + + /** + * Get the name of the ESMTP extension this handles. + * + * @return bool + */ + public function getHandledKeyword() + { + return 'AUTH'; + } + + /** + * Set the parameters which the EHLO greeting indicated. + * + * @param string[] $parameters + */ + public function setKeywordParams(array $parameters) + { + $this->_esmtpParams = $parameters; + } + + /** + * Runs immediately after a EHLO has been issued. + * + * @param Swift_Transport_SmtpAgent $agent to read/write + */ + public function afterEhlo(Swift_Transport_SmtpAgent $agent) + { + if ($this->_username) { + $count = 0; + foreach ($this->_getAuthenticatorsForAgent() as $authenticator) { + if (in_array(strtolower($authenticator->getAuthKeyword()), + array_map('strtolower', $this->_esmtpParams))) { + ++$count; + if ($authenticator->authenticate($agent, $this->_username, $this->_password)) { + return; + } + } + } + throw new Swift_TransportException( + 'Failed to authenticate on SMTP server with username "'. + $this->_username.'" using '.$count.' possible authenticators' + ); + } + } + + /** + * Not used. + */ + public function getMailParams() + { + return array(); + } + + /** + * Not used. + */ + public function getRcptParams() + { + return array(); + } + + /** + * Not used. + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false) + { + } + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * + * This method is called to ensure extensions can be execute in an appropriate order. + * + * @param string $esmtpKeyword to compare with + * + * @return int + */ + public function getPriorityOver($esmtpKeyword) + { + return 0; + } + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * + * @return string[] + */ + public function exposeMixinMethods() + { + return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + } + + /** + * Not used. + */ + public function resetState() + { + } + + /** + * Returns the authenticator list for the given agent. + * + * @param Swift_Transport_SmtpAgent $agent + * + * @return array + */ + protected function _getAuthenticatorsForAgent() + { + if (!$mode = strtolower($this->_auth_mode)) { + return $this->_authenticators; + } + + foreach ($this->_authenticators as $authenticator) { + if (strtolower($authenticator->getAuthKeyword()) == $mode) { + return array($authenticator); + } + } + + throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php new file mode 100644 index 00000000000..12a9abf8199 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php @@ -0,0 +1,35 @@ +. + * + * @return string[] + */ + public function getMailParams(); + + /** + * Get params which are appended to RCPT TO:<>. + * + * @return string[] + */ + public function getRcptParams(); + + /** + * Runs when a command is due to be sent. + * + * @param Swift_Transport_SmtpAgent $agent to read/write + * @param string $command to send + * @param int[] $codes expected in response + * @param string[] $failedRecipients to collect failures + * @param bool $stop to be set true by-reference if the command is now sent + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false); + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * + * This method is called to ensure extensions can be execute in an appropriate order. + * + * @param string $esmtpKeyword to compare with + * + * @return int + */ + public function getPriorityOver($esmtpKeyword); + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * + * @return string[] + */ + public function exposeMixinMethods(); + + /** + * Tells this handler to clear any buffers and reset its state. + */ + public function resetState(); +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php new file mode 100644 index 00000000000..a1cd0dcd1de --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php @@ -0,0 +1,412 @@ + 'tcp', + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'blocking' => 1, + 'tls' => false, + 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET, + 'stream_context_options' => array(), + ); + + /** + * Creates a new EsmtpTransport using the given I/O buffer. + * + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Transport_EsmtpHandler[] $extensionHandlers + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + $this->setExtensionHandlers($extensionHandlers); + } + + /** + * Set the host to connect to. + * + * @param string $host + * + * @return Swift_Transport_EsmtpTransport + */ + public function setHost($host) + { + $this->_params['host'] = $host; + + return $this; + } + + /** + * Get the host to connect to. + * + * @return string + */ + public function getHost() + { + return $this->_params['host']; + } + + /** + * Set the port to connect to. + * + * @param int $port + * + * @return Swift_Transport_EsmtpTransport + */ + public function setPort($port) + { + $this->_params['port'] = (int) $port; + + return $this; + } + + /** + * Get the port to connect to. + * + * @return int + */ + public function getPort() + { + return $this->_params['port']; + } + + /** + * Set the connection timeout. + * + * @param int $timeout seconds + * + * @return Swift_Transport_EsmtpTransport + */ + public function setTimeout($timeout) + { + $this->_params['timeout'] = (int) $timeout; + $this->_buffer->setParam('timeout', (int) $timeout); + + return $this; + } + + /** + * Get the connection timeout. + * + * @return int + */ + public function getTimeout() + { + return $this->_params['timeout']; + } + + /** + * Set the encryption type (tls or ssl). + * + * @param string $encryption + * + * @return Swift_Transport_EsmtpTransport + */ + public function setEncryption($encryption) + { + if ('tls' == $encryption) { + $this->_params['protocol'] = 'tcp'; + $this->_params['tls'] = true; + } else { + $this->_params['protocol'] = $encryption; + $this->_params['tls'] = false; + } + + return $this; + } + + /** + * Get the encryption type. + * + * @return string + */ + public function getEncryption() + { + return $this->_params['tls'] ? 'tls' : $this->_params['protocol']; + } + + /** + * Sets the stream context options. + * + * @param array $options + * + * @return Swift_Transport_EsmtpTransport + */ + public function setStreamOptions($options) + { + $this->_params['stream_context_options'] = $options; + + return $this; + } + + /** + * Returns the stream context options. + * + * @return array + */ + public function getStreamOptions() + { + return $this->_params['stream_context_options']; + } + + /** + * Sets the source IP. + * + * @param string $source + * + * @return Swift_Transport_EsmtpTransport + */ + public function setSourceIp($source) + { + $this->_params['sourceIp'] = $source; + + return $this; + } + + /** + * Returns the IP used to connect to the destination. + * + * @return string + */ + public function getSourceIp() + { + return isset($this->_params['sourceIp']) ? $this->_params['sourceIp'] : null; + } + + /** + * Set ESMTP extension handlers. + * + * @param Swift_Transport_EsmtpHandler[] $handlers + * + * @return Swift_Transport_EsmtpTransport + */ + public function setExtensionHandlers(array $handlers) + { + $assoc = array(); + foreach ($handlers as $handler) { + $assoc[$handler->getHandledKeyword()] = $handler; + } + + @uasort($assoc, array($this, '_sortHandlers')); + $this->_handlers = $assoc; + $this->_setHandlerParams(); + + return $this; + } + + /** + * Get ESMTP extension handlers. + * + * @return Swift_Transport_EsmtpHandler[] + */ + public function getExtensionHandlers() + { + return array_values($this->_handlers); + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] $failures An array of failures by-reference + * + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $stopSignal = false; + $response = null; + foreach ($this->_getActiveHandlers() as $handler) { + $response = $handler->onCommand( + $this, $command, $codes, $failures, $stopSignal + ); + if ($stopSignal) { + return $response; + } + } + + return parent::executeCommand($command, $codes, $failures); + } + + // -- Mixin invocation code + + /** Mixin handling method for ESMTP handlers */ + public function __call($method, $args) + { + foreach ($this->_handlers as $handler) { + if (in_array(strtolower($method), + array_map('strtolower', (array) $handler->exposeMixinMethods()) + )) { + $return = call_user_func_array(array($handler, $method), $args); + // Allow fluid method calls + if (is_null($return) && substr($method, 0, 3) == 'set') { + return $this; + } else { + return $return; + } + } + } + trigger_error('Call to undefined method '.$method, E_USER_ERROR); + } + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + + /** Overridden to perform EHLO instead */ + protected function _doHeloCommand() + { + try { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + } catch (Swift_TransportException $e) { + return parent::_doHeloCommand(); + } + + if ($this->_params['tls']) { + try { + $this->executeCommand("STARTTLS\r\n", array(220)); + + if (!$this->_buffer->startTLS()) { + throw new Swift_TransportException('Unable to connect with TLS encryption'); + } + + try { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + } catch (Swift_TransportException $e) { + return parent::_doHeloCommand(); + } + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + } + + $this->_capabilities = $this->_getCapabilities($response); + $this->_setHandlerParams(); + foreach ($this->_getActiveHandlers() as $handler) { + $handler->afterEhlo($this); + } + } + + /** Overridden to add Extension support */ + protected function _doMailFromCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) { + $params = array_merge($params, (array) $handler->getMailParams()); + } + $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; + $this->executeCommand( + sprintf("MAIL FROM:<%s>%s\r\n", $address, $paramStr), array(250) + ); + } + + /** Overridden to add Extension support */ + protected function _doRcptToCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) { + $params = array_merge($params, (array) $handler->getRcptParams()); + } + $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; + $this->executeCommand( + sprintf("RCPT TO:<%s>%s\r\n", $address, $paramStr), array(250, 251, 252) + ); + } + + /** Determine ESMTP capabilities by function group */ + private function _getCapabilities($ehloResponse) + { + $capabilities = array(); + $ehloResponse = trim($ehloResponse); + $lines = explode("\r\n", $ehloResponse); + array_shift($lines); + foreach ($lines as $line) { + if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) { + $keyword = strtoupper($matches[1]); + $paramStr = strtoupper(ltrim($matches[2], ' =')); + $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); + $capabilities[$keyword] = $params; + } + } + + return $capabilities; + } + + /** Set parameters which are used by each extension handler */ + private function _setHandlerParams() + { + foreach ($this->_handlers as $keyword => $handler) { + if (array_key_exists($keyword, $this->_capabilities)) { + $handler->setKeywordParams($this->_capabilities[$keyword]); + } + } + } + + /** Get ESMTP handlers which are currently ok to use */ + private function _getActiveHandlers() + { + $handlers = array(); + foreach ($this->_handlers as $keyword => $handler) { + if (array_key_exists($keyword, $this->_capabilities)) { + $handlers[] = $handler; + } + } + + return $handlers; + } + + /** Custom sort for extension handler ordering */ + private function _sortHandlers($a, $b) + { + return $a->getPriorityOver($b->getHandledKeyword()); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php new file mode 100644 index 00000000000..c039f3beccf --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php @@ -0,0 +1,82 @@ +_transports); + $sent = 0; + $this->_lastUsedTransport = null; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) { + try { + if (!$transport->isStarted()) { + $transport->start(); + } + + if ($sent = $transport->send($message, $failedRecipients)) { + $this->_lastUsedTransport = $transport; + + return $sent; + } + } catch (Swift_TransportException $e) { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) { + throw new Swift_TransportException( + 'All Transports in FailoverTransport failed, or no Transports available' + ); + } + + return $sent; + } + + protected function _getNextTransport() + { + if (!isset($this->_currentTransport)) { + $this->_currentTransport = parent::_getNextTransport(); + } + + return $this->_currentTransport; + } + + protected function _killCurrentTransport() + { + $this->_currentTransport = null; + parent::_killCurrentTransport(); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php new file mode 100644 index 00000000000..af97adf1f8f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php @@ -0,0 +1,67 @@ +_transports = $transports; + $this->_deadTransports = array(); + } + + /** + * Get $transports to delegate to. + * + * @return Swift_Transport[] + */ + public function getTransports() + { + return array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Get the Transport used in the last successful send operation. + * + * @return Swift_Transport + */ + public function getLastUsedTransport() + { + return $this->_lastUsedTransport; + } + + /** + * Test if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return count($this->_transports) > 0; + } + + /** + * Start this Transport mechanism. + */ + public function start() + { + $this->_transports = array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Stop this Transport mechanism. + */ + public function stop() + { + foreach ($this->_transports as $transport) { + $transport->stop(); + } + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $maxTransports = count($this->_transports); + $sent = 0; + $this->_lastUsedTransport = null; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) { + try { + if (!$transport->isStarted()) { + $transport->start(); + } + if ($sent = $transport->send($message, $failedRecipients)) { + $this->_lastUsedTransport = $transport; + break; + } + } catch (Swift_TransportException $e) { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) { + throw new Swift_TransportException( + 'All Transports in LoadBalancedTransport failed, or no Transports available' + ); + } + + return $sent; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + foreach ($this->_transports as $transport) { + $transport->registerPlugin($plugin); + } + } + + /** + * Rotates the transport list around and returns the first instance. + * + * @return Swift_Transport + */ + protected function _getNextTransport() + { + if ($next = array_shift($this->_transports)) { + $this->_transports[] = $next; + } + + return $next; + } + + /** + * Tag the currently used (top of stack) transport as dead/useless. + */ + protected function _killCurrentTransport() + { + if ($transport = array_pop($this->_transports)) { + try { + $transport->stop(); + } catch (Exception $e) { + } + $this->_deadTransports[] = $transport; + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php new file mode 100644 index 00000000000..77489cedc68 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php @@ -0,0 +1,32 @@ +_invoker = $invoker; + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Not used. + */ + public function isStarted() + { + return false; + } + + /** + * Not used. + */ + public function start() + { + } + + /** + * Not used. + */ + public function stop() + { + } + + /** + * Set the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @param string $params + * + * @return Swift_Transport_MailTransport + */ + public function setExtraParams($params) + { + $this->_extraParams = $params; + + return $this; + } + + /** + * Get the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @return string + */ + public function getExtraParams() + { + return $this->_extraParams; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + $toHeader = $message->getHeaders()->get('To'); + $subjectHeader = $message->getHeaders()->get('Subject'); + + if (!$toHeader) { + $this->_throwException(new Swift_TransportException('Cannot send message without a recipient')); + } + $to = $toHeader->getFieldBody(); + $subject = $subjectHeader ? $subjectHeader->getFieldBody() : ''; + + $reversePath = $this->_getReversePath($message); + + // Remove headers that would otherwise be duplicated + $message->getHeaders()->remove('To'); + $message->getHeaders()->remove('Subject'); + + $messageStr = $message->toString(); + + $message->getHeaders()->set($toHeader); + $message->getHeaders()->set($subjectHeader); + + // Separate headers from body + if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) { + $headers = substr($messageStr, 0, $endHeaders)."\r\n"; //Keep last EOL + $body = substr($messageStr, $endHeaders + 4); + } else { + $headers = $messageStr."\r\n"; + $body = ''; + } + + unset($messageStr); + + if ("\r\n" != PHP_EOL) { + // Non-windows (not using SMTP) + $headers = str_replace("\r\n", PHP_EOL, $headers); + $subject = str_replace("\r\n", PHP_EOL, $subject); + $body = str_replace("\r\n", PHP_EOL, $body); + } else { + // Windows, using SMTP + $headers = str_replace("\r\n.", "\r\n..", $headers); + $subject = str_replace("\r\n.", "\r\n..", $subject); + $body = str_replace("\r\n.", "\r\n..", $body); + } + + if ($this->_invoker->mail($to, $subject, $body, $headers, + sprintf($this->_extraParams, escapeshellarg($reversePath)))) { + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + } else { + $failedRecipients = array_merge( + $failedRecipients, + array_keys((array) $message->getTo()), + array_keys((array) $message->getCc()), + array_keys((array) $message->getBcc()) + ); + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + + $count = 0; + } + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) { + throw $e; + } + } else { + throw $e; + } + } + + /** Determine the best-use reverse path for this message */ + private function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) { + $path = $return; + } elseif (!empty($sender)) { + $keys = array_keys($sender); + $path = array_shift($keys); + } elseif (!empty($from)) { + $keys = array_keys($from); + $path = array_shift($keys); + } + + return $path; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/NullTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/NullTransport.php new file mode 100644 index 00000000000..ad20e0e535f --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/NullTransport.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * + * @author Fabien Potencier + */ +class Swift_Transport_NullTransport implements Swift_Transport +{ + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher) + { + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php new file mode 100644 index 00000000000..34ac4ce3af8 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php @@ -0,0 +1,160 @@ + 30, + 'blocking' => 1, + 'command' => '/usr/sbin/sendmail -bs', + 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS, + ); + + /** + * Create a new SendmailTransport with $buf for I/O. + * + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + } + + /** + * Start the standalone SMTP session if running in -bs mode. + */ + public function start() + { + if (false !== strpos($this->getCommand(), ' -bs')) { + parent::start(); + } + } + + /** + * Set the command to invoke. + * + * If using -t mode you are strongly advised to include -oi or -i in the flags. + * For example: /usr/sbin/sendmail -oi -t + * Swift will append a -f flag if one is not present. + * + * The recommended mode is "-bs" since it is interactive and failure notifications + * are hence possible. + * + * @param string $command + * + * @return Swift_Transport_SendmailTransport + */ + public function setCommand($command) + { + $this->_params['command'] = $command; + + return $this; + } + + /** + * Get the sendmail command which will be invoked. + * + * @return string + */ + public function getCommand() + { + return $this->_params['command']; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * + * The return value is the number of recipients who were accepted for delivery. + * NOTE: If using 'sendmail -t' you will not be aware of any failures until + * they bounce (i.e. send() will always return 100% success). + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + $command = $this->getCommand(); + $buffer = $this->getBuffer(); + $count = 0; + + if (false !== strpos($command, ' -t')) { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if (false === strpos($command, ' -f')) { + $command .= ' -f'.escapeshellarg($this->_getReversePath($message)); + } + + $buffer->initialize(array_merge($this->_params, array('command' => $command))); + + if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) { + $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); + } else { + $buffer->setWriteTranslations(array("\r\n" => "\n")); + } + + $count = count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ; + $message->toByteStream($buffer); + $buffer->flushBuffers(); + $buffer->setWriteTranslations(array()); + $buffer->terminate(); + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + } elseif (false !== strpos($command, ' -bs')) { + $count = parent::send($message, $failedRecipients); + } else { + $this->_throwException(new Swift_TransportException( + 'Unsupported sendmail command flags ['.$command.']. '. + 'Must be one of "-bs" or "-t" but can include additional flags.' + )); + } + + return $count; + } + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php new file mode 100644 index 00000000000..4cab66bd6bf --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * + * @author Fabien Potencier + */ +class Swift_Transport_SpoolTransport implements Swift_Transport +{ + /** The spool instance */ + private $_spool; + + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher, Swift_Spool $spool = null) + { + $this->_eventDispatcher = $eventDispatcher; + $this->_spool = $spool; + } + + /** + * Sets the spool object. + * + * @param Swift_Spool $spool + * + * @return Swift_Transport_SpoolTransport + */ + public function setSpool(Swift_Spool $spool) + { + $this->_spool = $spool; + + return $this; + } + + /** + * Get the spool object. + * + * @return Swift_Spool + */ + public function getSpool() + { + return $this->_spool; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent e-mail's + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + $success = $this->_spool->queueMessage($message); + + if ($evt) { + $evt->setResult($success ? Swift_Events_SendEvent::RESULT_SPOOLED : Swift_Events_SendEvent::RESULT_FAILED); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 1; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php new file mode 100644 index 00000000000..5134ea48a45 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php @@ -0,0 +1,325 @@ +_replacementFactory = $replacementFactory; + } + + /** + * Perform any initialization needed, using the given $params. + * + * Parameters will vary depending upon the type of IoBuffer used. + * + * @param array $params + */ + public function initialize(array $params) + { + $this->_params = $params; + switch ($params['type']) { + case self::TYPE_PROCESS: + $this->_establishProcessConnection(); + break; + case self::TYPE_SOCKET: + default: + $this->_establishSocketConnection(); + break; + } + } + + /** + * Set an individual param on the buffer (e.g. switching to SSL). + * + * @param string $param + * @param mixed $value + */ + public function setParam($param, $value) + { + if (isset($this->_stream)) { + switch ($param) { + case 'timeout': + if ($this->_stream) { + stream_set_timeout($this->_stream, $value); + } + break; + + case 'blocking': + if ($this->_stream) { + stream_set_blocking($this->_stream, 1); + } + + } + } + $this->_params[$param] = $value; + } + + public function startTLS() + { + return stream_socket_enable_crypto($this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + } + + /** + * Perform any shutdown logic needed. + */ + public function terminate() + { + if (isset($this->_stream)) { + switch ($this->_params['type']) { + case self::TYPE_PROCESS: + fclose($this->_in); + fclose($this->_out); + proc_close($this->_stream); + break; + case self::TYPE_SOCKET: + default: + fclose($this->_stream); + break; + } + } + $this->_stream = null; + $this->_out = null; + $this->_in = null; + } + + /** + * Set an array of string replacements which should be made on data written + * to the buffer. + * + * This could replace LF with CRLF for example. + * + * @param string[] $replacements + */ + public function setWriteTranslations(array $replacements) + { + foreach ($this->_translations as $search => $replace) { + if (!isset($replacements[$search])) { + $this->removeFilter($search); + unset($this->_translations[$search]); + } + } + + foreach ($replacements as $search => $replace) { + if (!isset($this->_translations[$search])) { + $this->addFilter( + $this->_replacementFactory->createFilter($search, $replace), $search + ); + $this->_translations[$search] = true; + } + } + } + + /** + * Get a line of output (including any CRLF). + * + * The $sequence number comes from any writes and may or may not be used + * depending upon the implementation. + * + * @param int $sequence of last write to scan from + * + * @throws Swift_IoException + * + * @return string + */ + public function readLine($sequence) + { + if (isset($this->_out) && !feof($this->_out)) { + $line = fgets($this->_out); + if (strlen($line) == 0) { + $metas = stream_get_meta_data($this->_out); + if ($metas['timed_out']) { + throw new Swift_IoException( + 'Connection to '. + $this->_getReadConnectionDescription(). + ' Timed Out' + ); + } + } + + return $line; + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. + * + * If less bytes exist than are requested the remaining bytes are given instead. + * If no bytes are remaining at all, boolean false is returned. + * + * @param int $length + * + * @throws Swift_IoException + * + * @return string|bool + */ + public function read($length) + { + if (isset($this->_out) && !feof($this->_out)) { + $ret = fread($this->_out, $length); + if (strlen($ret) == 0) { + $metas = stream_get_meta_data($this->_out); + if ($metas['timed_out']) { + throw new Swift_IoException( + 'Connection to '. + $this->_getReadConnectionDescription(). + ' Timed Out' + ); + } + } + + return $ret; + } + } + + /** Not implemented */ + public function setReadPointer($byteOffset) + { + } + + /** Flush the stream contents */ + protected function _flush() + { + if (isset($this->_in)) { + fflush($this->_in); + } + } + + /** Write this bytes to the stream */ + protected function _commit($bytes) + { + if (isset($this->_in)) { + $bytesToWrite = strlen($bytes); + $totalBytesWritten = 0; + + while ($totalBytesWritten < $bytesToWrite) { + $bytesWritten = fwrite($this->_in, substr($bytes, $totalBytesWritten)); + if (false === $bytesWritten || 0 === $bytesWritten) { + break; + } + + $totalBytesWritten += $bytesWritten; + } + + if ($totalBytesWritten > 0) { + return ++$this->_sequence; + } + } + } + + /** + * Establishes a connection to a remote server. + */ + private function _establishSocketConnection() + { + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) { + $host = $this->_params['protocol'].'://'.$host; + } + $timeout = 15; + if (!empty($this->_params['timeout'])) { + $timeout = $this->_params['timeout']; + } + $options = array(); + if (!empty($this->_params['sourceIp'])) { + $options['socket']['bindto'] = $this->_params['sourceIp'].':0'; + } + if (isset($this->_params['stream_context_options'])) { + $options = array_merge($options, $this->_params['stream_context_options']); + } + $streamContext = stream_context_create($options); + $this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext); + if (false === $this->_stream) { + throw new Swift_TransportException( + 'Connection could not be established with host '.$this->_params['host']. + ' ['.$errstr.' #'.$errno.']' + ); + } + if (!empty($this->_params['blocking'])) { + stream_set_blocking($this->_stream, 1); + } else { + stream_set_blocking($this->_stream, 0); + } + stream_set_timeout($this->_stream, $timeout); + $this->_in = &$this->_stream; + $this->_out = &$this->_stream; + } + + /** + * Opens a process for input/output. + */ + private function _establishProcessConnection() + { + $command = $this->_params['command']; + $descriptorSpec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w'), + ); + $this->_stream = proc_open($command, $descriptorSpec, $pipes); + stream_set_blocking($pipes[2], 0); + if ($err = stream_get_contents($pipes[2])) { + throw new Swift_TransportException( + 'Process could not be started ['.$err.']' + ); + } + $this->_in = &$pipes[0]; + $this->_out = &$pipes[1]; + } + + private function _getReadConnectionDescription() + { + switch ($this->_params['type']) { + case self::TYPE_PROCESS: + return 'Process '.$this->_params['command']; + break; + + case self::TYPE_SOCKET: + default: + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) { + $host = $this->_params['protocol'].'://'.$host; + } + $host .= ':'.$this->_params['port']; + + return $host; + break; + } + } +} diff --git a/htdocs/includes/swiftmailer/lib/classes/Swift/TransportException.php b/htdocs/includes/swiftmailer/lib/classes/Swift/TransportException.php new file mode 100644 index 00000000000..4ae2412e62a --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/classes/Swift/TransportException.php @@ -0,0 +1,29 @@ + + */ +class Swift_Validate +{ + /** + * Grammar Object. + * + * @var Swift_Mime_Grammar + */ + private static $grammar = null; + + /** + * Checks if an e-mail address matches the current grammars. + * + * @param string $email + * + * @return bool + */ + public static function email($email) + { + if (self::$grammar === null) { + self::$grammar = Swift_DependencyContainer::getInstance() + ->lookup('mime.grammar'); + } + + return (bool) preg_match( + '/^'.self::$grammar->getDefinition('addr-spec').'$/D', + $email + ); + } +} diff --git a/htdocs/includes/swiftmailer/lib/dependency_maps/cache_deps.php b/htdocs/includes/swiftmailer/lib/dependency_maps/cache_deps.php new file mode 100644 index 00000000000..6023448e85e --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/dependency_maps/cache_deps.php @@ -0,0 +1,23 @@ +register('cache') + ->asAliasOf('cache.array') + + ->register('tempdir') + ->asValue('/tmp') + + ->register('cache.null') + ->asSharedInstanceOf('Swift_KeyCache_NullKeyCache') + + ->register('cache.array') + ->asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') + ->withDependencies(array('cache.inputstream')) + + ->register('cache.disk') + ->asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') + ->withDependencies(array('cache.inputstream', 'tempdir')) + + ->register('cache.inputstream') + ->asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') +; diff --git a/htdocs/includes/swiftmailer/lib/dependency_maps/message_deps.php b/htdocs/includes/swiftmailer/lib/dependency_maps/message_deps.php new file mode 100644 index 00000000000..64d69d21591 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/dependency_maps/message_deps.php @@ -0,0 +1,9 @@ +register('message.message') + ->asNewInstanceOf('Swift_Message') + + ->register('message.mimepart') + ->asNewInstanceOf('Swift_MimePart') +; diff --git a/htdocs/includes/swiftmailer/lib/dependency_maps/mime_deps.php b/htdocs/includes/swiftmailer/lib/dependency_maps/mime_deps.php new file mode 100644 index 00000000000..04f394b3267 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/dependency_maps/mime_deps.php @@ -0,0 +1,123 @@ +register('properties.charset') + ->asValue('utf-8') + + ->register('mime.grammar') + ->asSharedInstanceOf('Swift_Mime_Grammar') + + ->register('mime.message') + ->asNewInstanceOf('Swift_Mime_SimpleMessage') + ->withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.part') + ->asNewInstanceOf('Swift_Mime_MimePart') + ->withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.attachment') + ->asNewInstanceOf('Swift_Mime_Attachment') + ->withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache', + 'mime.grammar', + )) + ->addConstructorValue($swift_mime_types) + + ->register('mime.embeddedfile') + ->asNewInstanceOf('Swift_Mime_EmbeddedFile') + ->withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache', + 'mime.grammar', + )) + ->addConstructorValue($swift_mime_types) + + ->register('mime.headerfactory') + ->asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') + ->withDependencies(array( + 'mime.qpheaderencoder', + 'mime.rfc2231encoder', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.headerset') + ->asNewInstanceOf('Swift_Mime_SimpleHeaderSet') + ->withDependencies(array('mime.headerfactory', 'properties.charset')) + + ->register('mime.qpheaderencoder') + ->asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + ->withDependencies(array('mime.charstream')) + + ->register('mime.base64headerencoder') + ->asNewInstanceOf('Swift_Mime_HeaderEncoder_Base64HeaderEncoder') + ->withDependencies(array('mime.charstream')) + + ->register('mime.charstream') + ->asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') + ->withDependencies(array('mime.characterreaderfactory', 'properties.charset')) + + ->register('mime.bytecanonicalizer') + ->asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') + ->addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) + ->addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) + + ->register('mime.characterreaderfactory') + ->asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + + ->register('mime.safeqpcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + ->withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + + ->register('mime.rawcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_RawContentEncoder') + + ->register('mime.nativeqpcontentencoder') + ->withDependencies(array('properties.charset')) + ->asNewInstanceOf('Swift_Mime_ContentEncoder_NativeQpContentEncoder') + + ->register('mime.qpcontentencoderproxy') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoderProxy') + ->withDependencies(array('mime.safeqpcontentencoder', 'mime.nativeqpcontentencoder', 'properties.charset')) + + ->register('mime.7bitcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + ->addConstructorValue('7bit') + ->addConstructorValue(true) + + ->register('mime.8bitcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + ->addConstructorValue('8bit') + ->addConstructorValue(true) + + ->register('mime.base64contentencoder') + ->asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') + + ->register('mime.rfc2231encoder') + ->asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') + ->withDependencies(array('mime.charstream')) + + // As of PHP 5.4.7, the quoted_printable_encode() function behaves correctly. + // see https://github.com/php/php-src/commit/18bb426587d62f93c54c40bf8535eb8416603629 + ->register('mime.qpcontentencoder') + ->asAliasOf(version_compare(phpversion(), '5.4.7', '>=') ? 'mime.qpcontentencoderproxy' : 'mime.safeqpcontentencoder') +; + +unset($swift_mime_types); diff --git a/htdocs/includes/swiftmailer/lib/dependency_maps/transport_deps.php b/htdocs/includes/swiftmailer/lib/dependency_maps/transport_deps.php new file mode 100644 index 00000000000..77e432cfac0 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/dependency_maps/transport_deps.php @@ -0,0 +1,76 @@ +register('transport.smtp') + ->asNewInstanceOf('Swift_Transport_EsmtpTransport') + ->withDependencies(array( + 'transport.buffer', + array('transport.authhandler'), + 'transport.eventdispatcher', + )) + + ->register('transport.sendmail') + ->asNewInstanceOf('Swift_Transport_SendmailTransport') + ->withDependencies(array( + 'transport.buffer', + 'transport.eventdispatcher', + )) + + ->register('transport.mail') + ->asNewInstanceOf('Swift_Transport_MailTransport') + ->withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) + + ->register('transport.loadbalanced') + ->asNewInstanceOf('Swift_Transport_LoadBalancedTransport') + + ->register('transport.failover') + ->asNewInstanceOf('Swift_Transport_FailoverTransport') + + ->register('transport.spool') + ->asNewInstanceOf('Swift_Transport_SpoolTransport') + ->withDependencies(array('transport.eventdispatcher')) + + ->register('transport.null') + ->asNewInstanceOf('Swift_Transport_NullTransport') + ->withDependencies(array('transport.eventdispatcher')) + + ->register('transport.mailinvoker') + ->asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') + + ->register('transport.buffer') + ->asNewInstanceOf('Swift_Transport_StreamBuffer') + ->withDependencies(array('transport.replacementfactory')) + + ->register('transport.authhandler') + ->asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') + ->withDependencies(array( + array( + 'transport.crammd5auth', + 'transport.loginauth', + 'transport.plainauth', + 'transport.ntlmauth', + 'transport.xoauth2auth', + ), + )) + + ->register('transport.crammd5auth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + + ->register('transport.loginauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + + ->register('transport.plainauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + + ->register('transport.xoauth2auth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_XOAuth2Authenticator') + + ->register('transport.ntlmauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_NTLMAuthenticator') + + ->register('transport.eventdispatcher') + ->asNewInstanceOf('Swift_Events_SimpleEventDispatcher') + + ->register('transport.replacementfactory') + ->asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') +; diff --git a/htdocs/includes/swiftmailer/lib/mime_types.php b/htdocs/includes/swiftmailer/lib/mime_types.php new file mode 100644 index 00000000000..2d7b98dc1aa --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/mime_types.php @@ -0,0 +1,1007 @@ + 'text/vnd.in3d.3dml', + '3ds' => 'image/x-3ds', + '3g2' => 'video/3gpp2', + '3gp' => 'video/3gpp', + '7z' => 'application/x-7z-compressed', + 'aab' => 'application/x-authorware-bin', + 'aac' => 'audio/x-aac', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'abw' => 'application/x-abiword', + 'ac' => 'application/pkix-attr-cert', + 'acc' => 'application/vnd.americandynamics.acc', + 'ace' => 'application/x-ace-compressed', + 'acu' => 'application/vnd.acucobol', + 'acutc' => 'application/vnd.acucorp', + 'adp' => 'audio/adpcm', + 'aep' => 'application/vnd.audiograph', + 'afm' => 'application/x-font-type1', + 'afp' => 'application/vnd.ibm.modcap', + 'ahead' => 'application/vnd.ahead.space', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'air' => 'application/vnd.adobe.air-application-installer-package+zip', + 'ait' => 'application/vnd.dvb.ait', + 'ami' => 'application/vnd.amiga.ami', + 'apk' => 'application/vnd.android.package-archive', + 'appcache' => 'text/cache-manifest', + 'apr' => 'application/vnd.lotus-approach', + 'aps' => 'application/postscript', + 'arc' => 'application/x-freearc', + 'asc' => 'application/pgp-signature', + 'asf' => 'video/x-ms-asf', + 'asm' => 'text/x-asm', + 'aso' => 'application/vnd.accpac.simply.aso', + 'asx' => 'video/x-ms-asf', + 'atc' => 'application/vnd.acucorp', + 'atom' => 'application/atom+xml', + 'atomcat' => 'application/atomcat+xml', + 'atomsvc' => 'application/atomsvc+xml', + 'atx' => 'application/vnd.antix.game-component', + 'au' => 'audio/basic', + 'avi' => 'video/x-msvideo', + 'aw' => 'application/applixware', + 'azf' => 'application/vnd.airzip.filesecure.azf', + 'azs' => 'application/vnd.airzip.filesecure.azs', + 'azw' => 'application/vnd.amazon.ebook', + 'bat' => 'application/x-msdownload', + 'bcpio' => 'application/x-bcpio', + 'bdf' => 'application/x-font-bdf', + 'bdm' => 'application/vnd.syncml.dm+wbxml', + 'bed' => 'application/vnd.realvnc.bed', + 'bh2' => 'application/vnd.fujitsu.oasysprs', + 'bin' => 'application/octet-stream', + 'blb' => 'application/x-blorb', + 'blorb' => 'application/x-blorb', + 'bmi' => 'application/vnd.bmi', + 'bmp' => 'image/bmp', + 'book' => 'application/vnd.framemaker', + 'box' => 'application/vnd.previewsystems.box', + 'boz' => 'application/x-bzip2', + 'bpk' => 'application/octet-stream', + 'btif' => 'image/prs.btif', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-c', + 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', + 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'cab' => 'application/vnd.ms-cab-compressed', + 'caf' => 'audio/x-caf', + 'cap' => 'application/vnd.tcpdump.pcap', + 'car' => 'application/vnd.curl.car', + 'cat' => 'application/vnd.ms-pki.seccat', + 'cb7' => 'application/x-cbr', + 'cba' => 'application/x-cbr', + 'cbr' => 'application/x-cbr', + 'cbt' => 'application/x-cbr', + 'cbz' => 'application/x-cbr', + 'cc' => 'text/x-c', + 'cct' => 'application/x-director', + 'ccxml' => 'application/ccxml+xml', + 'cdbcmsg' => 'application/vnd.contact.cmsg', + 'cdf' => 'application/x-netcdf', + 'cdkey' => 'application/vnd.mediastation.cdkey', + 'cdmia' => 'application/cdmi-capability', + 'cdmic' => 'application/cdmi-container', + 'cdmid' => 'application/cdmi-domain', + 'cdmio' => 'application/cdmi-object', + 'cdmiq' => 'application/cdmi-queue', + 'cdx' => 'chemical/x-cdx', + 'cdxml' => 'application/vnd.chemdraw+xml', + 'cdy' => 'application/vnd.cinderella', + 'cer' => 'application/pkix-cert', + 'cfs' => 'application/x-cfs-compressed', + 'cgm' => 'image/cgm', + 'chat' => 'application/x-chat', + 'chm' => 'application/vnd.ms-htmlhelp', + 'chrt' => 'application/vnd.kde.kchart', + 'cif' => 'chemical/x-cif', + 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', + 'cil' => 'application/vnd.ms-artgalry', + 'cla' => 'application/vnd.claymore', + 'class' => 'application/java-vm', + 'clkk' => 'application/vnd.crick.clicker.keyboard', + 'clkp' => 'application/vnd.crick.clicker.palette', + 'clkt' => 'application/vnd.crick.clicker.template', + 'clkw' => 'application/vnd.crick.clicker.wordbank', + 'clkx' => 'application/vnd.crick.clicker', + 'clp' => 'application/x-msclip', + 'cmc' => 'application/vnd.cosmocaller', + 'cmdf' => 'chemical/x-cmdf', + 'cml' => 'chemical/x-cml', + 'cmp' => 'application/vnd.yellowriver-custom-menu', + 'cmx' => 'image/x-cmx', + 'cod' => 'application/vnd.rim.cod', + 'com' => 'application/x-msdownload', + 'conf' => 'text/plain', + 'cpio' => 'application/x-cpio', + 'cpp' => 'text/x-c', + 'cpt' => 'application/mac-compactpro', + 'crd' => 'application/x-mscardfile', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-ca-cert', + 'csh' => 'application/x-csh', + 'csml' => 'chemical/x-csml', + 'csp' => 'application/vnd.commonspace', + 'css' => 'text/css', + 'cst' => 'application/x-director', + 'csv' => 'text/csv', + 'cu' => 'application/cu-seeme', + 'curl' => 'text/vnd.curl', + 'cww' => 'application/prs.cww', + 'cxt' => 'application/x-director', + 'cxx' => 'text/x-c', + 'dae' => 'model/vnd.collada+xml', + 'daf' => 'application/vnd.mobius.daf', + 'dart' => 'application/vnd.dart', + 'dataless' => 'application/vnd.fdsn.seed', + 'davmount' => 'application/davmount+xml', + 'dbk' => 'application/docbook+xml', + 'dcr' => 'application/x-director', + 'dcurl' => 'text/vnd.curl.dcurl', + 'dd2' => 'application/vnd.oma.dd2+xml', + 'ddd' => 'application/vnd.fujixerox.ddd', + 'deb' => 'application/x-debian-package', + 'def' => 'text/plain', + 'deploy' => 'application/octet-stream', + 'der' => 'application/x-x509-ca-cert', + 'dfac' => 'application/vnd.dreamfactory', + 'dgc' => 'application/x-dgc-compressed', + 'dic' => 'text/x-c', + 'dir' => 'application/x-director', + 'dis' => 'application/vnd.mobius.dis', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', + 'dll' => 'application/x-msdownload', + 'dmg' => 'application/x-apple-diskimage', + 'dmp' => 'application/vnd.tcpdump.pcap', + 'dms' => 'application/octet-stream', + 'dna' => 'application/vnd.dna', + 'doc' => 'application/msword', + 'docm' => 'application/vnd.ms-word.document.macroenabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dot' => 'application/msword', + 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'dp' => 'application/vnd.osgi.dp', + 'dpg' => 'application/vnd.dpgraph', + 'dra' => 'audio/vnd.dra', + 'dsc' => 'text/prs.lines.tag', + 'dssc' => 'application/dssc+der', + 'dtb' => 'application/x-dtbook+xml', + 'dtd' => 'application/xml-dtd', + 'dts' => 'audio/vnd.dts', + 'dtshd' => 'audio/vnd.dts.hd', + 'dump' => 'application/octet-stream', + 'dvb' => 'video/vnd.dvb.file', + 'dvi' => 'application/x-dvi', + 'dwf' => 'model/vnd.dwf', + 'dwg' => 'image/vnd.dwg', + 'dxf' => 'image/vnd.dxf', + 'dxp' => 'application/vnd.spotfire.dxp', + 'dxr' => 'application/x-director', + 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', + 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', + 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', + 'ecma' => 'application/ecmascript', + 'edm' => 'application/vnd.novadigm.edm', + 'edx' => 'application/vnd.novadigm.edx', + 'efif' => 'application/vnd.picsel', + 'ei6' => 'application/vnd.pg.osasli', + 'elc' => 'application/octet-stream', + 'emf' => 'application/x-msmetafile', + 'eml' => 'message/rfc822', + 'emma' => 'application/emma+xml', + 'emz' => 'application/x-msmetafile', + 'eol' => 'audio/vnd.digital-winds', + 'eot' => 'application/vnd.ms-fontobject', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', + 'es3' => 'application/vnd.eszigno3+xml', + 'esa' => 'application/vnd.osgi.subsystem', + 'esf' => 'application/vnd.epson.esf', + 'et3' => 'application/vnd.eszigno3+xml', + 'etx' => 'text/x-setext', + 'eva' => 'application/x-eva', + 'evy' => 'application/x-envoy', + 'exe' => 'application/x-msdownload', + 'exi' => 'application/exi', + 'ext' => 'application/vnd.novadigm.ext', + 'ez' => 'application/andrew-inset', + 'ez2' => 'application/vnd.ezpix-album', + 'ez3' => 'application/vnd.ezpix-package', + 'f' => 'text/x-fortran', + 'f4v' => 'video/x-f4v', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'fbs' => 'image/vnd.fastbidsheet', + 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', + 'fcs' => 'application/vnd.isac.fcs', + 'fdf' => 'application/vnd.fdf', + 'fe_launch' => 'application/vnd.denovo.fcselayout-link', + 'fg5' => 'application/vnd.fujitsu.oasysgp', + 'fgd' => 'application/x-director', + 'fh' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', + 'fig' => 'application/x-xfig', + 'flac' => 'audio/x-flac', + 'fli' => 'video/x-fli', + 'flo' => 'application/vnd.micrografx.flo', + 'flv' => 'video/x-flv', + 'flw' => 'application/vnd.kde.kivio', + 'flx' => 'text/vnd.fmi.flexstor', + 'fly' => 'text/vnd.fly', + 'fm' => 'application/vnd.framemaker', + 'fnc' => 'application/vnd.frogans.fnc', + 'for' => 'text/x-fortran', + 'fpx' => 'image/vnd.fpx', + 'frame' => 'application/vnd.framemaker', + 'fsc' => 'application/vnd.fsc.weblaunch', + 'fst' => 'image/vnd.fst', + 'ftc' => 'application/vnd.fluxtime.clip', + 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', + 'fvt' => 'video/vnd.fvt', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', + 'fzs' => 'application/vnd.fuzzysheet', + 'g2w' => 'application/vnd.geoplan', + 'g3' => 'image/g3fax', + 'g3w' => 'application/vnd.geospace', + 'gac' => 'application/vnd.groove-account', + 'gam' => 'application/x-tads', + 'gbr' => 'application/rpki-ghostbusters', + 'gca' => 'application/x-gca-compressed', + 'gdl' => 'model/vnd.gdl', + 'geo' => 'application/vnd.dynageo', + 'gex' => 'application/vnd.geometry-explorer', + 'ggb' => 'application/vnd.geogebra.file', + 'ggt' => 'application/vnd.geogebra.tool', + 'ghf' => 'application/vnd.groove-help', + 'gif' => 'image/gif', + 'gim' => 'application/vnd.groove-identity-message', + 'gml' => 'application/gml+xml', + 'gmx' => 'application/vnd.gmx', + 'gnumeric' => 'application/x-gnumeric', + 'gph' => 'application/vnd.flographit', + 'gpx' => 'application/gpx+xml', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gram' => 'application/srgs', + 'gramps' => 'application/x-gramps-xml', + 'gre' => 'application/vnd.geometry-explorer', + 'grv' => 'application/vnd.groove-injector', + 'grxml' => 'application/srgs+xml', + 'gsf' => 'application/x-font-ghostscript', + 'gtar' => 'application/x-gtar', + 'gtm' => 'application/vnd.groove-tool-message', + 'gtw' => 'model/vnd.gtw', + 'gv' => 'text/vnd.graphviz', + 'gxf' => 'application/gxf', + 'gxt' => 'application/vnd.geonext', + 'gz' => 'application/x-gzip', + 'h' => 'text/x-c', + 'h261' => 'video/h261', + 'h263' => 'video/h263', + 'h264' => 'video/h264', + 'hal' => 'application/vnd.hal+xml', + 'hbci' => 'application/vnd.hbci', + 'hdf' => 'application/x-hdf', + 'hh' => 'text/x-c', + 'hlp' => 'application/winhlp', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hpid' => 'application/vnd.hp-hpid', + 'hps' => 'application/vnd.hp-hps', + 'hqx' => 'application/mac-binhex40', + 'htke' => 'application/vnd.kenameaapp', + 'htm' => 'text/html', + 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', + 'hvp' => 'application/vnd.yamaha.hv-voice', + 'hvs' => 'application/vnd.yamaha.hv-script', + 'i2g' => 'application/vnd.intergeo', + 'icc' => 'application/vnd.iccprofile', + 'ice' => 'x-conference/x-cooltalk', + 'icm' => 'application/vnd.iccprofile', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ief' => 'image/ief', + 'ifb' => 'text/calendar', + 'ifm' => 'application/vnd.shana.informed.formdata', + 'iges' => 'model/iges', + 'igl' => 'application/vnd.igloader', + 'igm' => 'application/vnd.insors.igm', + 'igs' => 'model/iges', + 'igx' => 'application/vnd.micrografx.igx', + 'iif' => 'application/vnd.shana.informed.interchange', + 'imp' => 'application/vnd.accpac.simply.imp', + 'ims' => 'application/vnd.ms-ims', + 'in' => 'text/plain', + 'ink' => 'application/inkml+xml', + 'inkml' => 'application/inkml+xml', + 'install' => 'application/x-install-instructions', + 'iota' => 'application/vnd.astraea-software.iota', + 'ipfix' => 'application/ipfix', + 'ipk' => 'application/vnd.shana.informed.package', + 'irm' => 'application/vnd.ibm.rights-management', + 'irp' => 'application/vnd.irepository.package+xml', + 'iso' => 'application/x-iso9660-image', + 'itp' => 'application/vnd.shana.informed.formtemplate', + 'ivp' => 'application/vnd.immervision-ivp', + 'ivu' => 'application/vnd.immervision-ivu', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'jam' => 'application/vnd.jam', + 'jar' => 'application/java-archive', + 'java' => 'text/x-java-source', + 'jisp' => 'application/vnd.jisp', + 'jlt' => 'application/vnd.hp-jlyt', + 'jnlp' => 'application/x-java-jnlp-file', + 'joda' => 'application/vnd.joost.joda-archive', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpgm' => 'video/jpm', + 'jpgv' => 'video/jpeg', + 'jpm' => 'video/jpm', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'jsonml' => 'application/jsonml+json', + 'kar' => 'audio/midi', + 'karbon' => 'application/vnd.kde.karbon', + 'kfo' => 'application/vnd.kde.kformula', + 'kia' => 'application/vnd.kidspiration', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'kon' => 'application/vnd.kde.kontour', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', + 'kpxx' => 'application/vnd.ds-keypoint', + 'ksp' => 'application/vnd.kde.kspread', + 'ktr' => 'application/vnd.kahootz', + 'ktx' => 'image/ktx', + 'ktz' => 'application/vnd.kahootz', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', + 'lasxml' => 'application/vnd.las.las+xml', + 'latex' => 'application/x-latex', + 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', + 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', + 'les' => 'application/vnd.hhe.lesson-player', + 'lha' => 'application/x-lzh-compressed', + 'link66' => 'application/vnd.route66.link66+xml', + 'list' => 'text/plain', + 'list3820' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', + 'lnk' => 'application/x-ms-shortcut', + 'log' => 'text/plain', + 'lostxml' => 'application/lost+xml', + 'lrf' => 'application/octet-stream', + 'lrm' => 'application/vnd.ms-lrm', + 'ltf' => 'application/vnd.frogans.ltf', + 'lvp' => 'audio/vnd.lucent.voice', + 'lwp' => 'application/vnd.lotus-wordpro', + 'lzh' => 'application/x-lzh-compressed', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', + 'm1v' => 'video/mpeg', + 'm21' => 'application/mp21', + 'm2a' => 'audio/mpeg', + 'm2v' => 'video/mpeg', + 'm3a' => 'audio/mpeg', + 'm3u' => 'audio/x-mpegurl', + 'm3u8' => 'application/vnd.apple.mpegurl', + 'm4a' => 'audio/mp4', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/x-m4v', + 'ma' => 'application/mathematica', + 'mads' => 'application/mads+xml', + 'mag' => 'application/vnd.ecowin.chart', + 'maker' => 'application/vnd.framemaker', + 'man' => 'text/troff', + 'mar' => 'application/octet-stream', + 'mathml' => 'application/mathml+xml', + 'mb' => 'application/mathematica', + 'mbk' => 'application/vnd.mobius.mbk', + 'mbox' => 'application/mbox', + 'mc1' => 'application/vnd.medcalcdata', + 'mcd' => 'application/vnd.mcd', + 'mcurl' => 'text/vnd.curl.mcurl', + 'mdb' => 'application/x-msaccess', + 'mdi' => 'image/vnd.ms-modi', + 'me' => 'text/troff', + 'mesh' => 'model/mesh', + 'meta4' => 'application/metalink4+xml', + 'metalink' => 'application/metalink+xml', + 'mets' => 'application/mets+xml', + 'mfm' => 'application/vnd.mfmp', + 'mft' => 'application/rpki-manifest', + 'mgp' => 'application/vnd.osgeo.mapguide.package', + 'mgz' => 'application/vnd.proteus.magazine', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mie' => 'application/x-mie', + 'mif' => 'application/vnd.mif', + 'mime' => 'message/rfc822', + 'mj2' => 'video/mj2', + 'mjp2' => 'video/mj2', + 'mk3d' => 'video/x-matroska', + 'mka' => 'audio/x-matroska', + 'mks' => 'video/x-matroska', + 'mkv' => 'video/x-matroska', + 'mlp' => 'application/vnd.dolby.mlp', + 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', + 'mmf' => 'application/vnd.smaf', + 'mmr' => 'image/vnd.fujixerox.edmics-mmr', + 'mng' => 'video/x-mng', + 'mny' => 'application/x-msmoney', + 'mobi' => 'application/x-mobipocket-ebook', + 'mods' => 'application/mods+xml', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp21' => 'application/mp21', + 'mp2a' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4s' => 'application/mp4', + 'mp4v' => 'video/mp4', + 'mpc' => 'application/vnd.mophun.certificate', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', + 'mpga' => 'audio/mpeg', + 'mpkg' => 'application/vnd.apple.installer+xml', + 'mpm' => 'application/vnd.blueice.multipass', + 'mpn' => 'application/vnd.mophun.application', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/vnd.ms-project', + 'mpy' => 'application/vnd.ibm.minipay', + 'mqy' => 'application/vnd.mobius.mqy', + 'mrc' => 'application/marc', + 'mrcx' => 'application/marcxml+xml', + 'ms' => 'text/troff', + 'mscml' => 'application/mediaservercontrol+xml', + 'mseed' => 'application/vnd.fdsn.mseed', + 'mseq' => 'application/vnd.mseq', + 'msf' => 'application/vnd.epson.msf', + 'msh' => 'model/mesh', + 'msi' => 'application/x-msdownload', + 'msl' => 'application/vnd.mobius.msl', + 'msty' => 'application/vnd.muvee.style', + 'mts' => 'model/vnd.mts', + 'mus' => 'application/vnd.musician', + 'musicxml' => 'application/vnd.recordare.musicxml+xml', + 'mvb' => 'application/x-msmediaview', + 'mwf' => 'application/vnd.mfer', + 'mxf' => 'application/mxf', + 'mxl' => 'application/vnd.recordare.musicxml', + 'mxml' => 'application/xv+xml', + 'mxs' => 'application/vnd.triscape.mxs', + 'mxu' => 'video/vnd.mpegurl', + 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', + 'n3' => 'text/n3', + 'nb' => 'application/mathematica', + 'nbp' => 'application/vnd.wolfram.player', + 'nc' => 'application/x-netcdf', + 'ncx' => 'application/x-dtbncx+xml', + 'nfo' => 'text/x-nfo', + 'ngdat' => 'application/vnd.nokia.n-gage.data', + 'nitf' => 'application/vnd.nitf', + 'nlu' => 'application/vnd.neurolanguage.nlu', + 'nml' => 'application/vnd.enliven', + 'nnd' => 'application/vnd.noblenet-directory', + 'nns' => 'application/vnd.noblenet-sealer', + 'nnw' => 'application/vnd.noblenet-web', + 'npx' => 'image/vnd.net-fpx', + 'nsc' => 'application/x-conference', + 'nsf' => 'application/vnd.lotus-notes', + 'ntf' => 'application/vnd.nitf', + 'nzb' => 'application/x-nzb', + 'oa2' => 'application/vnd.fujitsu.oasys2', + 'oa3' => 'application/vnd.fujitsu.oasys3', + 'oas' => 'application/vnd.fujitsu.oasys', + 'obd' => 'application/x-msbinder', + 'obj' => 'application/x-tgif', + 'oda' => 'application/oda', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odft' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'omdoc' => 'application/omdoc+xml', + 'onepkg' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onetoc' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'opf' => 'application/oebps-package+xml', + 'opml' => 'text/x-opml', + 'oprc' => 'application/vnd.palm', + 'org' => 'application/vnd.lotus-organizer', + 'osf' => 'application/vnd.yamaha.openscoreformat', + 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'otf' => 'application/x-font-otf', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oxps' => 'application/oxps', + 'oxt' => 'application/vnd.openofficeorg.extension', + 'p' => 'text/x-pascal', + 'p10' => 'application/pkcs10', + 'p12' => 'application/x-pkcs12', + 'p7b' => 'application/x-pkcs7-certificates', + 'p7c' => 'application/pkcs7-mime', + 'p7m' => 'application/pkcs7-mime', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'p8' => 'application/pkcs8', + 'pas' => 'text/x-pascal', + 'paw' => 'application/vnd.pawaafile', + 'pbd' => 'application/vnd.powerbuilder6', + 'pbm' => 'image/x-portable-bitmap', + 'pcap' => 'application/vnd.tcpdump.pcap', + 'pcf' => 'application/x-font-pcf', + 'pcl' => 'application/vnd.hp-pcl', + 'pclxl' => 'application/vnd.hp-pclxl', + 'pct' => 'image/x-pict', + 'pcurl' => 'application/vnd.curl.pcurl', + 'pcx' => 'image/x-pcx', + 'pdb' => 'application/vnd.palm', + 'pdf' => 'application/pdf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', + 'pfr' => 'application/font-tdpfr', + 'pfx' => 'application/x-pkcs12', + 'pgm' => 'image/x-portable-graymap', + 'pgn' => 'application/x-chess-pgn', + 'pgp' => 'application/pgp-encrypted', + 'php' => 'application/x-php', + 'php3' => 'application/x-php', + 'php4' => 'application/x-php', + 'php5' => 'application/x-php', + 'pic' => 'image/x-pict', + 'pkg' => 'application/octet-stream', + 'pki' => 'application/pkixcmp', + 'pkipath' => 'application/pkix-pkipath', + 'plb' => 'application/vnd.3gpp.pic-bw-large', + 'plc' => 'application/vnd.mobius.plc', + 'plf' => 'application/vnd.pocketlearn', + 'pls' => 'application/pls+xml', + 'pml' => 'application/vnd.ctc-posml', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'portpkg' => 'application/vnd.macports.portpkg', + 'pot' => 'application/vnd.ms-powerpoint', + 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'ppd' => 'application/vnd.cups-ppd', + 'ppm' => 'image/x-portable-pixmap', + 'pps' => 'application/vnd.ms-powerpoint', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'pqa' => 'application/vnd.palm', + 'prc' => 'application/x-mobipocket-ebook', + 'pre' => 'application/vnd.lotus-freelance', + 'prf' => 'application/pics-rules', + 'ps' => 'application/postscript', + 'psb' => 'application/vnd.3gpp.pic-bw-small', + 'psd' => 'image/vnd.adobe.photoshop', + 'psf' => 'application/x-font-linux-psf', + 'pskcxml' => 'application/pskc+xml', + 'ptid' => 'application/vnd.pvi.ptid1', + 'pub' => 'application/x-mspublisher', + 'pvb' => 'application/vnd.3gpp.pic-bw-var', + 'pwn' => 'application/vnd.3m.post-it-notes', + 'pya' => 'audio/vnd.ms-playready.media.pya', + 'pyv' => 'video/vnd.ms-playready.media.pyv', + 'qam' => 'application/vnd.epson.quickanime', + 'qbo' => 'application/vnd.intu.qbo', + 'qfx' => 'application/vnd.intu.qfx', + 'qps' => 'application/vnd.publishare-delta-tree', + 'qt' => 'video/quicktime', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'ra' => 'audio/x-pn-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rar' => 'application/x-rar-compressed', + 'ras' => 'image/x-cmu-raster', + 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', + 'rdf' => 'application/rdf+xml', + 'rdz' => 'application/vnd.data-vision.rdz', + 'rep' => 'application/vnd.businessobjects', + 'res' => 'application/x-dtbresource+xml', + 'rgb' => 'image/x-rgb', + 'rif' => 'application/reginfo+xml', + 'rip' => 'audio/vnd.rip', + 'ris' => 'application/x-research-info-systems', + 'rl' => 'application/resource-lists+xml', + 'rlc' => 'image/vnd.fujixerox.edmics-rlc', + 'rld' => 'application/resource-lists-diff+xml', + 'rm' => 'application/vnd.rn-realmedia', + 'rmi' => 'audio/midi', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'rms' => 'application/vnd.jcp.javame.midlet-rms', + 'rmvb' => 'application/vnd.rn-realmedia-vbr', + 'rnc' => 'application/relax-ng-compact-syntax', + 'roa' => 'application/rpki-roa', + 'roff' => 'text/troff', + 'rp9' => 'application/vnd.cloanto.rp9', + 'rpss' => 'application/vnd.nokia.radio-presets', + 'rpst' => 'application/vnd.nokia.radio-preset', + 'rq' => 'application/sparql-query', + 'rs' => 'application/rls-services+xml', + 'rsd' => 'application/rsd+xml', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'rtx' => 'text/richtext', + 's' => 'text/x-asm', + 's3m' => 'audio/s3m', + 'saf' => 'application/vnd.yamaha.smaf-audio', + 'sbml' => 'application/sbml+xml', + 'sc' => 'application/vnd.ibm.secure-container', + 'scd' => 'application/x-msschedule', + 'scm' => 'application/vnd.lotus-screencam', + 'scq' => 'application/scvp-cv-request', + 'scs' => 'application/scvp-cv-response', + 'scurl' => 'text/vnd.curl.scurl', + 'sda' => 'application/vnd.stardivision.draw', + 'sdc' => 'application/vnd.stardivision.calc', + 'sdd' => 'application/vnd.stardivision.impress', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'sdkm' => 'application/vnd.solent.sdkm+xml', + 'sdp' => 'application/sdp', + 'sdw' => 'application/vnd.stardivision.writer', + 'see' => 'application/vnd.seemail', + 'seed' => 'application/vnd.fdsn.seed', + 'sema' => 'application/vnd.sema', + 'semd' => 'application/vnd.semd', + 'semf' => 'application/vnd.semf', + 'ser' => 'application/java-serialized-object', + 'setpay' => 'application/set-payment-initiation', + 'setreg' => 'application/set-registration-initiation', + 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', + 'sfs' => 'application/vnd.spotfire.sfs', + 'sfv' => 'text/x-sfv', + 'sgi' => 'image/sgi', + 'sgl' => 'application/vnd.stardivision.writer-global', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'shf' => 'application/shf+xml', + 'sid' => 'image/x-mrsid-image', + 'sig' => 'application/pgp-signature', + 'sil' => 'audio/silk', + 'silo' => 'model/mesh', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', + 'sit' => 'application/x-stuffit', + 'sitx' => 'application/x-stuffitx', + 'skd' => 'application/vnd.koan', + 'skm' => 'application/vnd.koan', + 'skp' => 'application/vnd.koan', + 'skt' => 'application/vnd.koan', + 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'slt' => 'application/vnd.epson.salt', + 'sm' => 'application/vnd.stepmania.stepchart', + 'smf' => 'application/vnd.stardivision.math', + 'smi' => 'application/smil+xml', + 'smil' => 'application/smil+xml', + 'smv' => 'video/x-smv', + 'smzip' => 'application/vnd.stepmania.package', + 'snd' => 'audio/basic', + 'snf' => 'application/x-font-snf', + 'so' => 'application/octet-stream', + 'spc' => 'application/x-pkcs7-certificates', + 'spf' => 'application/vnd.yamaha.smaf-phrase', + 'spl' => 'application/x-futuresplash', + 'spot' => 'text/vnd.in3d.spot', + 'spp' => 'application/scvp-vp-response', + 'spq' => 'application/scvp-vp-request', + 'spx' => 'audio/ogg', + 'sql' => 'application/x-sql', + 'src' => 'application/x-wais-source', + 'srt' => 'application/x-subrip', + 'sru' => 'application/sru+xml', + 'srx' => 'application/sparql-results+xml', + 'ssdl' => 'application/ssdl+xml', + 'sse' => 'application/vnd.kodak-descriptor', + 'ssf' => 'application/vnd.epson.ssf', + 'ssml' => 'application/ssml+xml', + 'st' => 'application/vnd.sailingtracker.track', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'std' => 'application/vnd.sun.xml.draw.template', + 'stf' => 'application/vnd.wt.stf', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'stk' => 'application/hyperstudio', + 'stl' => 'application/vnd.ms-pki.stl', + 'str' => 'application/vnd.pg.format', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sub' => 'text/vnd.dvb.subtitle', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'svc' => 'application/vnd.dvb.service', + 'svd' => 'application/vnd.svd', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'swa' => 'application/x-director', + 'swf' => 'application/x-shockwave-flash', + 'swi' => 'application/vnd.aristanetworks.swi', + 'sxc' => 'application/vnd.sun.xml.calc', + 'sxd' => 'application/vnd.sun.xml.draw', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sxm' => 'application/vnd.sun.xml.math', + 'sxw' => 'application/vnd.sun.xml.writer', + 't' => 'text/troff', + 't3' => 'application/x-t3vm-image', + 'taglet' => 'application/vnd.mynfc', + 'tao' => 'application/vnd.tao.intent-module-archive', + 'tar' => 'application/x-tar', + 'tcap' => 'application/vnd.3gpp2.tcap', + 'tcl' => 'application/x-tcl', + 'teacher' => 'application/vnd.smart.teacher', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', + 'tex' => 'application/x-tex', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'text' => 'text/plain', + 'tfi' => 'application/thraud+xml', + 'tfm' => 'application/x-tex-tfm', + 'tga' => 'image/x-tga', + 'thmx' => 'application/vnd.ms-officetheme', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'tmo' => 'application/vnd.tmobile-livetv', + 'torrent' => 'application/x-bittorrent', + 'tpl' => 'application/vnd.groove-tool-template', + 'tpt' => 'application/vnd.trid.tpt', + 'tr' => 'text/troff', + 'tra' => 'application/vnd.trueapp', + 'trm' => 'application/x-msterminal', + 'tsd' => 'application/timestamped-data', + 'tsv' => 'text/tab-separated-values', + 'ttc' => 'application/x-font-ttf', + 'ttf' => 'application/x-font-ttf', + 'ttl' => 'text/turtle', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', + 'txd' => 'application/vnd.genomatix.tuxedo', + 'txf' => 'application/vnd.mobius.txf', + 'txt' => 'text/plain', + 'u32' => 'application/x-authorware-bin', + 'udeb' => 'application/x-debian-package', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', + 'ulx' => 'application/x-glulx', + 'umj' => 'application/vnd.umajin', + 'unityweb' => 'application/vnd.unity', + 'uoml' => 'application/vnd.uoml+xml', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', + 'ustar' => 'application/x-ustar', + 'utz' => 'application/vnd.uiq.theme', + 'uu' => 'text/x-uuencode', + 'uva' => 'audio/vnd.dece.audio', + 'uvd' => 'application/vnd.dece.data', + 'uvf' => 'application/vnd.dece.data', + 'uvg' => 'image/vnd.dece.graphic', + 'uvh' => 'video/vnd.dece.hd', + 'uvi' => 'image/vnd.dece.graphic', + 'uvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvv' => 'video/vnd.dece.video', + 'uvva' => 'audio/vnd.dece.audio', + 'uvvd' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvvg' => 'image/vnd.dece.graphic', + 'uvvh' => 'video/vnd.dece.hd', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvvp' => 'video/vnd.dece.pd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'uvvv' => 'video/vnd.dece.video', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvvz' => 'application/vnd.dece.zip', + 'uvx' => 'application/vnd.dece.unspecified', + 'uvz' => 'application/vnd.dece.zip', + 'vcard' => 'text/vcard', + 'vcd' => 'application/x-cdlink', + 'vcf' => 'text/x-vcard', + 'vcg' => 'application/vnd.groove-vcard', + 'vcs' => 'text/x-vcalendar', + 'vcx' => 'application/vnd.vcx', + 'vis' => 'application/vnd.visionary', + 'viv' => 'video/vnd.vivo', + 'vob' => 'video/x-ms-vob', + 'vor' => 'application/vnd.stardivision.writer', + 'vox' => 'application/x-authorware-bin', + 'vrml' => 'model/vrml', + 'vsd' => 'application/vnd.visio', + 'vsf' => 'application/vnd.vsf', + 'vss' => 'application/vnd.visio', + 'vst' => 'application/vnd.visio', + 'vsw' => 'application/vnd.visio', + 'vtu' => 'model/vnd.vtu', + 'vxml' => 'application/voicexml+xml', + 'w3d' => 'application/x-director', + 'wad' => 'application/x-doom', + 'wav' => 'audio/x-wav', + 'wax' => 'audio/x-ms-wax', + 'wbmp' => 'image/vnd.wap.wbmp', + 'wbs' => 'application/vnd.criticaltools.wbs+xml', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', + 'wdp' => 'image/vnd.ms-photo', + 'weba' => 'audio/webm', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'wg' => 'application/vnd.pmi.widget', + 'wgt' => 'application/widget', + 'wks' => 'application/vnd.ms-works', + 'wm' => 'video/x-ms-wm', + 'wma' => 'audio/x-ms-wma', + 'wmd' => 'application/x-ms-wmd', + 'wmf' => 'application/x-msmetafile', + 'wml' => 'text/vnd.wap.wml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmls' => 'text/vnd.wap.wmlscript', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wmz' => 'application/x-msmetafile', + 'woff' => 'application/font-woff', + 'wpd' => 'application/vnd.wordperfect', + 'wpl' => 'application/vnd.ms-wpl', + 'wps' => 'application/vnd.ms-works', + 'wqd' => 'application/vnd.wqd', + 'wri' => 'application/x-mswrite', + 'wrl' => 'model/vrml', + 'wsdl' => 'application/wsdl+xml', + 'wspolicy' => 'application/wspolicy+xml', + 'wtb' => 'application/vnd.webturbo', + 'wvx' => 'video/x-ms-wvx', + 'x32' => 'application/x-authorware-bin', + 'x3d' => 'model/x3d+xml', + 'x3db' => 'model/x3d+binary', + 'x3dbz' => 'model/x3d+binary', + 'x3dv' => 'model/x3d+vrml', + 'x3dvz' => 'model/x3d+vrml', + 'x3dz' => 'model/x3d+xml', + 'xaml' => 'application/xaml+xml', + 'xap' => 'application/x-silverlight-app', + 'xar' => 'application/vnd.xara', + 'xbap' => 'application/x-ms-xbap', + 'xbd' => 'application/vnd.fujixerox.docuworks.binder', + 'xbm' => 'image/x-xbitmap', + 'xdf' => 'application/xcap-diff+xml', + 'xdm' => 'application/vnd.syncml.dm+xml', + 'xdp' => 'application/vnd.adobe.xdp+xml', + 'xdssc' => 'application/dssc+xml', + 'xdw' => 'application/vnd.fujixerox.docuworks', + 'xenc' => 'application/xenc+xml', + 'xer' => 'application/patch-ops-error+xml', + 'xfdf' => 'application/vnd.adobe.xfdf', + 'xfdl' => 'application/vnd.xfdl', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xhvml' => 'application/xv+xml', + 'xif' => 'image/vnd.xiff', + 'xla' => 'application/vnd.ms-excel', + 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', + 'xlc' => 'application/vnd.ms-excel', + 'xlf' => 'application/x-xliff+xml', + 'xlm' => 'application/vnd.ms-excel', + 'xls' => 'application/vnd.ms-excel', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xlt' => 'application/vnd.ms-excel', + 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'xlw' => 'application/vnd.ms-excel', + 'xm' => 'audio/xm', + 'xml' => 'application/xml', + 'xo' => 'application/vnd.olpc-sugar', + 'xop' => 'application/xop+xml', + 'xpi' => 'application/x-xpinstall', + 'xpl' => 'application/xproc+xml', + 'xpm' => 'image/x-xpixmap', + 'xpr' => 'application/vnd.is-xpr', + 'xps' => 'application/vnd.ms-xpsdocument', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'xsl' => 'application/xml', + 'xslt' => 'application/xslt+xml', + 'xsm' => 'application/vnd.syncml+xml', + 'xspf' => 'application/xspf+xml', + 'xul' => 'application/vnd.mozilla.xul+xml', + 'xvm' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', + 'xwd' => 'image/x-xwindowdump', + 'xyz' => 'chemical/x-xyz', + 'xz' => 'application/x-xz', + 'yang' => 'application/yang', + 'yin' => 'application/yin+xml', + 'z1' => 'application/x-zmachine', + 'z2' => 'application/x-zmachine', + 'z3' => 'application/x-zmachine', + 'z4' => 'application/x-zmachine', + 'z5' => 'application/x-zmachine', + 'z6' => 'application/x-zmachine', + 'z7' => 'application/x-zmachine', + 'z8' => 'application/x-zmachine', + 'zaz' => 'application/vnd.zzazz.deck+xml', + 'zip' => 'application/zip', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', + 'zmm' => 'application/vnd.handheld-entertainment+xml', + '123' => 'application/vnd.lotus-1-2-3', +); diff --git a/htdocs/includes/swiftmailer/lib/preferences.php b/htdocs/includes/swiftmailer/lib/preferences.php new file mode 100644 index 00000000000..e5195014824 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/preferences.php @@ -0,0 +1,25 @@ +setCharset('utf-8'); + +// Without these lines the default caching mechanism is "array" but this uses a lot of memory. +// If possible, use a disk cache to enable attaching large attachments etc. +// You can override the default temporary directory by setting the TMPDIR environment variable. +if (@is_writable($tmpDir = sys_get_temp_dir())) { + $preferences->setTempDir($tmpDir)->setCacheType('disk'); +} + +// this should only be done when Swiftmailer won't use the native QP content encoder +// see mime_deps.php +if (version_compare(phpversion(), '5.4.7', '<')) { + $preferences->setQPDotEscape(false); +} diff --git a/htdocs/includes/swiftmailer/lib/swift_init.php b/htdocs/includes/swiftmailer/lib/swift_init.php new file mode 100644 index 00000000000..5c4bae4f4f1 --- /dev/null +++ b/htdocs/includes/swiftmailer/lib/swift_init.php @@ -0,0 +1,28 @@ + 'application/x-php', + 'php3' => 'application/x-php', + 'php4' => 'application/x-php', + 'php5' => 'application/x-php', + 'zip' => 'application/zip', + 'gif' => 'image/gif', + 'png' => 'image/png', + 'css' => 'text/css', + 'js' => 'text/javascript', + 'txt' => 'text/plain', + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/avi', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bz2', + 'csv' => 'text/csv', + 'dmg' => 'application/x-apple-diskimage', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'eml' => 'message/rfc822', + 'aps' => 'application/postscript', + 'exe' => 'application/x-ms-dos-executable', + 'flv' => 'video/x-flv', + 'gz' => 'application/x-gzip', + 'hqx' => 'application/stuffit', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jar' => 'application/x-java-archive', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm3u' => 'audio/x-mpegurl', + 'm4a' => 'audio/mp4', + 'mdb' => 'application/x-msaccess', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'odg' => 'vnd.oasis.opendocument.graphics', + 'odp' => 'vnd.oasis.opendocument.presentation', + 'odt' => 'vnd.oasis.opendocument.text', + 'ods' => 'vnd.oasis.opendocument.spreadsheet', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'rar' => 'application/x-rar-compressed', + 'rtf' => 'application/rtf', + 'tar' => 'application/x-tar', + 'sit' => 'application/x-stuffit', + 'svg' => 'image/svg+xml', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'ttf' => 'application/x-font-truetype', + 'vcf' => 'text/x-vcard', + 'wav' => 'audio/wav', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'audio/x-ms-wmv', + 'xls' => 'application/excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + ); + + // wrap array for generating file + foreach ($valid_mime_types_preset as $extension => $mime_type) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + + // collect extensions + $valid_extensions = array(); + + // all extensions from second match + foreach ($matches[2] as $i => $extensions) { + // explode multiple extensions from string + $extensions = explode(' ', strtolower($extensions)); + + // force array for foreach + if (!is_array($extensions)) { + $extensions = array($extensions); + } + + foreach ($extensions as $extension) { + // get mime type + $mime_type = $matches[1][$i]; + + // check if string length lower than 10 + if (strlen($extension) < 10) { + // add extension + $valid_extensions[] = $extension; + + if (!isset($valid_mime_types[$mime_type])) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + } + } + } + } + + $xml = simplexml_load_string($mime_xml); + + foreach ($xml as $node) { + // check if there is no pattern + if (!isset($node->glob['pattern'])) { + continue; + } + + // get all matching extensions from match + foreach ((array) $node->glob['pattern'] as $extension) { + // skip none glob extensions + if (strpos($extension, '.') === false) { + continue; + } + + // remove get only last part + $extension = explode('.', strtolower($extension)); + $extension = end($extension); + + // maximum length in database column + if (strlen($extension) <= 9) { + $valid_extensions[] = $extension; + } + } + + if (isset($node->glob['pattern'][0])) { + // mime type + $mime_type = strtolower((string) $node['type']); + + // get first extension + $extension = strtolower(trim($node->glob['ddpattern'][0], '*.')); + + // skip none glob extensions and check if string length between 1 and 10 + if (strpos($extension, '.') !== false || strlen($extension) < 1 || strlen($extension) > 9) { + continue; + } + + // check if string length lower than 10 + if (!isset($valid_mime_types[$mime_type])) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + } + } + + // full list of valid extensions only + $valid_mime_types = array_unique($valid_mime_types); + ksort($valid_mime_types); + + // combine mime types and extensions array + $output = "$preamble\$swift_mime_types = array(\n ".implode($valid_mime_types, ",\n ")."\n);"; + + // write mime_types.php config file + @file_put_contents('./mime_types.php', $output); +} + +generateUpToDateMimeArray(); 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 205/380] 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 3722fc1014245c2e5622d909fbd5bd1a44228a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 16 Apr 2016 20:16:38 +0200 Subject: [PATCH 206/380] Refactored FormVentilation class --- .../class/html.formventilation.class.php | 344 +++++++----------- 1 file changed, 122 insertions(+), 222 deletions(-) diff --git a/htdocs/accountancy/class/html.formventilation.class.php b/htdocs/accountancy/class/html.formventilation.class.php index b0b58a7a921..e17e4406376 100644 --- a/htdocs/accountancy/class/html.formventilation.class.php +++ b/htdocs/accountancy/class/html.formventilation.class.php @@ -3,6 +3,7 @@ * Copyright (C) 2013-2014 Olivier Geffroy * Copyright (C) 2013-2016 Alexandre Spangaro * Copyright (C) 2015 Ari Elbaz (elarifr) + * Copyright (C) 2016 Marcos García * * 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 @@ -29,18 +30,6 @@ */ class FormVentilation extends Form { - var $db; - var $error; - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) { - $this->db = $db; - } - /** * Return select filter with date of transaction * @@ -49,38 +38,25 @@ class FormVentilation extends Form * @return string HTML edit field */ function select_bookkeeping_importkey($htmlname = 'importkey', $selectedkey = '') { + $options = array(); + $sql = 'SELECT DISTINCT import_key from ' . MAIN_DB_PREFIX . 'accounting_bookkeeping'; $sql .= ' ORDER BY import_key DESC'; - - $out = ''; - - return $out; + + while ($obj = $this->db->fetch_object($resql)) { + $options[$obj->import_key] = dol_print_date($obj->import_key, 'dayhourtext'); + } + + return Form::selectarray($htmlname, $options, $selectedkey); } /** @@ -100,8 +76,8 @@ class FormVentilation extends Form global $conf; require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; - - $out = ''; + + $trunclength = defined('ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT') ? $conf->global->ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT : 50; $sql = "SELECT DISTINCT aa.account_number, aa.label, aa.rowid, aa.fk_pcg_version"; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa"; @@ -110,49 +86,44 @@ class FormVentilation extends Form $sql .= " AND aa.active = 1"; $sql .= " ORDER BY aa.account_number"; - dol_syslog(get_class($this) . "::select_account sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this) . "::select_account", LOG_DEBUG); $resql = $this->db->query($sql); - if ($resql) { - - $out .= ajax_combobox($htmlname, $event); - $out .= ''; - } else { + + if (!$resql) { $this->error = "Error " . $this->db->lasterror(); dol_syslog(get_class($this) . "::select_account " . $this->error, LOG_ERR); - return - 1; + return -1; } + + $out = ajax_combobox($htmlname, $event); + + $options = array(); + $selected = null; + + while ($obj = $this->db->fetch_object($resql)) { + $label = length_accountg($obj->account_number) . ' - ' . $obj->label; + $label = dol_trunc($label, $trunclength); + + $select_value_in = $obj->rowid; + $select_value_out = $obj->rowid; + + if ($select_in == 1) { + $select_value_in = $obj->account_number; + } + if ($select_out == 1) { + $select_value_out = $obj->account_number; + } + + // Remember guy's we store in database llx_facturedet the rowid of accounting_account and not the account_number + // Because same account_number can be share between different accounting_system and do have the same meaning + if (($selectid != '') && $selectid == $select_value_in) { + $selected = $select_value_out; + } + + $options[$select_value_out] = $label; + } + + $out .= Form::selectarray($htmlname, $options, $selected, $showempty); $this->db->free($resql); return $out; } @@ -170,44 +141,30 @@ class FormVentilation extends Form function select_pcgtype($selectid, $htmlname = 'pcg_type', $showempty = 0, $event = array()) { global $conf; - $out = ''; - $sql = "SELECT DISTINCT pcg_type "; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa"; $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version"; $sql .= " AND asy.rowid = " . $conf->global->CHARTOFACCOUNTS; $sql .= " ORDER BY pcg_type"; - dol_syslog(get_class($this) . "::select_pcgtype sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this) . "::select_pcgtype", LOG_DEBUG); $resql = $this->db->query($sql); - if ($resql) { - - $out .= ajax_combobox($htmlname, $event); - - $out .= ''; - } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::select_pcgtype " . $this->error, LOG_ERR); - return - 1; + + if (!$resql) { + $this->error = "Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::select_pcgtype ".$this->error, LOG_ERR); + return -1; } + + $options = array(); + $out = ajax_combobox($htmlname, $event); + + while ($obj = $this->db->fetch_object($resql)) { + $options[$obj->pcg_type] = $obj->pcg_type; + } + + $out .= Form::selectarray($htmlname, $options, $selectid, $showempty); + $this->db->free($resql); return $out; } @@ -225,44 +182,30 @@ class FormVentilation extends Form function select_pcgsubtype($selectid, $htmlname = 'pcg_subtype', $showempty = 0, $event = array()) { global $conf; - $out = ''; - $sql = "SELECT DISTINCT pcg_subtype "; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa"; $sql .= " INNER JOIN " . MAIN_DB_PREFIX . "accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version"; $sql .= " AND asy.rowid = " . $conf->global->CHARTOFACCOUNTS; $sql .= " ORDER BY pcg_subtype"; - dol_syslog(get_class($this) . "::select_pcgsubtype sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this) . "::select_pcgsubtype", LOG_DEBUG); $resql = $this->db->query($sql); - if ($resql) { - - $out .= ajax_combobox($htmlname, $event); - - $out .= ''; - } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::select_pcgsubtype " . $this->error, LOG_ERR); - return - 1; + + if (!$resql) { + $this->error = "Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::select_pcgsubtype ".$this->error, LOG_ERR); + return -1; } + + $options = array(); + $out = ajax_combobox($htmlname, $event); + + while ($obj = $this->db->fetch_object($resql)) { + $options[$obj->pcg_subtype] = $obj->pcg_subtype; + } + + $out .= Form::selectarray($htmlname, $options, $selectid, $showempty); + $this->db->free($resql); return $out; } @@ -278,68 +221,51 @@ class FormVentilation extends Form * @return string String with HTML select */ function select_auxaccount($selectid, $htmlname = 'account_num_aux', $showempty = 0, $event = array()) { - global $conf; - - $out = ''; - - $aux_account = array (); - + + $aux_account = array(); + // Auxiliary customer account $sql = "SELECT DISTINCT code_compta, nom "; - $sql .= " FROM " . MAIN_DB_PREFIX . "societe"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe"; $sql .= " ORDER BY code_compta"; - dol_syslog(get_class($this) . "::select_auxaccount", LOG_DEBUG); + dol_syslog(get_class($this)."::select_auxaccount", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - while ( $obj = $this->db->fetch_object($resql) ) { - if (! empty($obj->code_compta)) { - $aux_account[$obj->code_compta] = $obj->code_compta . ' (' . $obj->nom . ')'; + while ($obj = $this->db->fetch_object($resql)) { + if (!empty($obj->code_compta)) { + $aux_account[$obj->code_compta] = $obj->code_compta.' ('.$obj->nom.')'; } } } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::select_pcgsubtype " . $this->error, LOG_ERR); - return - 1; + $this->error = "Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::select_pcgsubtype ".$this->error, LOG_ERR); + return -1; } $this->db->free($resql); - + // Auxiliary supplier account $sql = "SELECT DISTINCT code_compta_fournisseur, nom "; - $sql .= " FROM " . MAIN_DB_PREFIX . "societe"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe"; $sql .= " ORDER BY code_compta"; - dol_syslog(get_class($this) . "::select_auxaccount", LOG_DEBUG); + dol_syslog(get_class($this)."::select_auxaccount", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - while ( $obj = $this->db->fetch_object($resql) ) { - if (! empty($obj->code_compta_fournisseur)) { - $aux_account[$obj->code_compta_fournisseur] = $obj->code_compta_fournisseur . ' (' . $obj->nom . ')'; + while ($obj = $this->db->fetch_object($resql)) { + if (!empty($obj->code_compta_fournisseur)) { + $aux_account[$obj->code_compta_fournisseur] = $obj->code_compta_fournisseur.' ('.$obj->nom.')'; } } } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::select_pcgsubtype " . $this->error, LOG_ERR); - return - 1; + $this->error = "Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::select_pcgsubtype ".$this->error, LOG_ERR); + return -1; } $this->db->free($resql); - + // Build select - if (count($aux_account) > 0) { - - $out .= ajax_combobox($htmlname, $event); - - $out .= ''; - } - + $out = ajax_combobox($htmlname, $event); + $out .= Form::selectarray($htmlname, $aux_account, $selectid, $showempty); + return $out; } @@ -352,55 +278,29 @@ class FormVentilation extends Form * @param string $output_format (html/opton (for option html only)/array (to return options arrays * @return string/array */ - function selectyear_accountancy_bookkepping($selected = '', $htmlname = 'yearid', $useempty = 0, $output_format = 'html') { - $out = ''; - $out_array = array (); - - if ($output_format == 'html') { - $out .= '\n"; - } - - if ($output_format == 'html' || $output_format == 'options') { - return $out; - } elseif ($output_format == 'array') { + return Form::selectarray($htmlname, $out_array, $selected, $useempty, 0, 0, 'placeholder="aa"'); + } else { return $out_array; } } From 863efcbc5d4b96d1212ca3babee9f379d15ad1ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 16 Apr 2016 21:33:23 +0200 Subject: [PATCH 207/380] NEW Removed unused FormOrder::selectSourcesCommande function Also refactored select functions to avoid using HTML and encourage using Form::selectarray function --- htdocs/core/class/dolreceiptprinter.class.php | 44 +++---- htdocs/core/class/html.formcompany.class.php | 33 +++--- htdocs/core/class/html.formmailing.class.php | 34 +----- htdocs/core/class/html.formorder.class.php | 111 ++++++------------ htdocs/margin/admin/margin.php | 21 ++-- htdocs/product/document.php | 36 +----- .../canvas/actions_card_common.class.php | 12 +- 7 files changed, 91 insertions(+), 200 deletions(-) diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 90bf948e215..2499176b58b 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -300,17 +300,17 @@ class dolReceiptPrinter extends Escpos function selectTypePrinter($selected='', $htmlname='printertypeid') { global $langs; - $error = 0; - $html = ''; - - $this->resprint = $html; - return $error; + + $options = array( + 1 => $langs->trans('CONNECTOR_DUMMY'), + 2 => $langs->trans('CONNECTOR_FILE_PRINT'), + 3 => $langs->trans('CONNECTOR_NETWORK_PRINT'), + 4 => $langs->trans('CONNECTOR_WINDOWS_PRINT') + ); + + $this->resprint = Form::selectarray($htmlname, $options, $selected); + + return 0; } @@ -324,17 +324,17 @@ class dolReceiptPrinter extends Escpos function selectProfilePrinter($selected='', $htmlname='printerprofileid') { global $langs; - $error = 0; - $html = ''; - - $this->profileresprint = $html; - return $error; + + $options = array( + 0 => $langs->trans('PROFILE_DEFAULT'), + 1 => $langs->trans('PROFILE_SIMPLE'), + 2 => $langs->trans('PROFILE_EPOSTEP'), + 3 => $langs->trans('PROFILE_P822D'), + 4 => $langs->trans('PROFILE_STAR') + ); + + $this->profileresprint = Form::selectarray($htmlname, $options, $selected); + return 0; } diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index 9091b4aead0..d51765e2a16 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -146,9 +146,6 @@ class FormCompany print ''; print ''; print ''; diff --git a/htdocs/core/class/html.formmailing.class.php b/htdocs/core/class/html.formmailing.class.php index 3c47aceee8a..0c63049f9d8 100644 --- a/htdocs/core/class/html.formmailing.class.php +++ b/htdocs/core/class/html.formmailing.class.php @@ -27,22 +27,8 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/html.form.class.php'; */ class FormMailing extends Form { - public $db; - public $error; public $errors=array(); - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - $this->db = $db; - return 1; - } - /** * Output a select with destinaries status * @@ -59,26 +45,14 @@ class FormMailing extends Form require_once DOL_DOCUMENT_ROOT.'/comm/mailing/class/mailing.class.php'; $mailing = new Mailing($this->db); - - $array = $mailing->statut_dest; - //Cannot use form->selectarray because empty value is defaulted to -1 in this method and we use here status -1... - - $out = ''; - return $out; + return Form::selectarray($htmlname, $options, $selectedid, 0, 0, 0, '', 1); } } diff --git a/htdocs/core/class/html.formorder.class.php b/htdocs/core/class/html.formorder.class.php index 4ecbef60b58..68fa96e03ee 100644 --- a/htdocs/core/class/html.formorder.class.php +++ b/htdocs/core/class/html.formorder.class.php @@ -1,5 +1,6 @@ + * Copyright (C) 2016 Marcos García * * 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 @@ -21,29 +22,14 @@ * \brief File of predefined functions for HTML forms for order module */ +require_once DOL_DOCUMENT_ROOT .'/core/class/html.form.class.php'; /** * Class to manage HTML output components for orders * Before adding component here, check they are not into common part Form.class.php */ -class FormOrder +class FormOrder extends Form { - var $db; - var $error; - - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - $this->db = $db; - return 1; - } - /** * Return combo list of differents status of a orders @@ -53,51 +39,32 @@ class FormOrder * @param string $hmlname Name of HTML select element * @return void */ - function selectSupplierOrderStatus($selected='', $short=0, $hmlname='order_status') + public function selectSupplierOrderStatus($selected='', $short=0, $hmlname='order_status') { - $tmpsupplierorder=new CommandeFournisseur($db); - - print ''; + // 7 is same label than 6. 8 does not exists (billed is another field) + $statustohow = array( + '0' => '0', + '1' => '1', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6,7', + '9' => '9' + ); + + $tmpsupplierorder = new CommandeFournisseur($this->db); + + foreach ($statustohow as $key => $value) { + $tmpsupplierorder->statut = $key; + $options[$value] = $tmpsupplierorder->getLibStatut($short); + } + + print Form::selectarray($hmlname, $options, $selected, 1); } - /** - * Return list of way to order - * - * @param string $selected Id of preselected order origin - * @param string $htmlname Name of HTML select list - * @param int $addempty 0=liste sans valeur nulle, 1=ajoute valeur inconnue - * @return array Tableau des sources de commandes - */ - function selectSourcesCommande($selected='',$htmlname='source_id',$addempty=0) - { - global $conf,$langs; - print ''; - } - - /** * Return list of input method (mode used to receive order, like order received by email, fax, online) * List found into table c_input_method. @@ -107,11 +74,9 @@ class FormOrder * @param int $addempty 0=list with no empty value, 1=list with empty value * @return array Tableau des sources de commandes */ - function selectInputMethod($selected='',$htmlname='source_id',$addempty=0) + public function selectInputMethod($selected='',$htmlname='source_id',$addempty=0) { - global $conf,$langs,$form; - - if (! is_object($form)) $form=new Form($this->db); + global $langs; $listofmethods=array(); @@ -121,24 +86,18 @@ class FormOrder dol_syslog(get_class($this)."::selectInputMethod", LOG_DEBUG); $resql=$this->db->query($sql); - if ($resql) - { - $i = 0; - $num = $this->db->num_rows($resql); - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - $listofmethods[$obj->rowid] = $langs->trans($obj->code)!=$obj->code?$langs->trans($obj->code):$obj->label; - $i++; - } - } - else - { + + if (!$resql) { dol_print_error($this->db); return -1; } - print $form->selectarray($htmlname,$listofmethods,$selected,$addempty); + while ($obj = $this->db->fetch_object($resql)) { + $listofmethods[$obj->rowid] = $langs->trans($obj->code) != $obj->code ? $langs->trans($obj->code) : $obj->label; + } + + print Form::selectarray($htmlname,$listofmethods,$selected,$addempty); + return 1; } diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index 6e84b13e286..3a61ee0e72e 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -236,6 +236,12 @@ print ''; print ''; // GLOBAL DISCOUNT MANAGEMENT +$methods = array( + 1 => $langs->trans('UseDiscountAsProduct'), + 2 => $langs->trans('UseDiscountAsService'), + 3 => $langs->trans('UseDiscountOnTotal') +); + $var=!$var; print ''; print ''; @@ -243,20 +249,7 @@ print ""; print ''; print ''; print ''; print '"; - print ''; + print ''; // Delivery address if (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT)) diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php index 1e5ace7353e..91972673201 100644 --- a/htdocs/comm/propal/note.php +++ b/htdocs/comm/propal/note.php @@ -99,10 +99,10 @@ if ($id > 0 || ! empty($ref)) print ''; // Customer - if ( is_null($object->client) ) + if ( is_null($object->thirdparty) ) $object->fetch_thirdparty(); print ""; - print ''; + print ''; // Discounts print ''; // Customer - if (is_null($object->client)) $object->fetch_thirdparty(); + if (is_null($object->thirdparty)) $object->fetch_thirdparty(); print ""; - print ''; + print ''; // Delivery address if (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT)) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 4d216a80264..d89871674b7 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1932,7 +1932,7 @@ class Facture extends CommonInvoice $this->date=dol_now(); $this->date_lim_reglement=$this->calculate_date_lim_reglement(); } - $num = $this->getNextNumRef($this->client); + $num = $this->getNextNumRef($this->thirdparty); } else { @@ -1971,7 +1971,7 @@ class Facture extends CommonInvoice if (! $error) { // Define third party as a customer - $result=$this->client->set_as_client(); + $result=$this->thirdparty->set_as_client(); // Si active on decremente le produit principal et ses composants a la validation de facture if ($this->type != self::TYPE_DEPOSIT && $result >= 0 && ! empty($conf->stock->enabled) && ! empty($conf->global->STOCK_CALCULATE_ON_BILL) && $idwarehouse > 0) @@ -3085,7 +3085,7 @@ class Facture extends CommonInvoice // If not a draft invoice and not temporary invoice if ($facref != 'PROV') { - $maxfacnumber = $this->getNextNumRef($this->client,'last'); + $maxfacnumber = $this->getNextNumRef($this->thirdparty,'last'); $ventilExportCompta = $this->getVentilExportCompta(); // If there is no invoice into the reset range and not already dispatched, we can delete if ($maxfacnumber == '' && $ventilExportCompta == 0) return 1; diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php index b07a8f8c2d4..c5a7cfcdab2 100644 --- a/htdocs/compta/facture/contact.php +++ b/htdocs/compta/facture/contact.php @@ -175,7 +175,7 @@ if ($id > 0 || ! empty($ref)) // Customer print ""; - print ''; + print ''; print "
    '; - print ''; print ''.$langs->trans('ForceBuyingPriceIfNullDetails').'
    '.$langs->trans("MARGIN_METHODE_FOR_DISCOUNT").''; -print ''; +print Form::selectarray('MARGIN_METHODE_FOR_DISCOUNT', $methods, $conf->global->MARGIN_METHODE_FOR_DISCOUNT); print ''; print ''; diff --git a/htdocs/product/document.php b/htdocs/product/document.php index facff9f9a52..ca207f8429f 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -262,43 +262,11 @@ if ($object->id) print '
    '; - $delauft_lang = (empty($lang_id)) ? $langs->getDefaultLang() : $lang_id; + $delauft_lang = empty($lang_id) ? $langs->getDefaultLang() : $lang_id; $langs_available = $langs->get_available_languages(DOL_DOCUMENT_ROOT, 12); - print ''; + print Form::selectarray('lang_id', $langs_available, $delauft_lang, 0, 0, 0, '', 0, 0, 0, 'ASC'); if ($conf->global->MAIN_MULTILANGS) { print ''; diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 782a7f070c4..74a05cba39d 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -439,12 +439,12 @@ abstract class ActionsCardCommon if ($modCodeClient->code_auto) $this->tpl['prefix_customercode'] = $modCodeClient->verif_prefixIsUsed(); // TODO create a function - $this->tpl['select_customertype'] = ''; + $this->tpl['select_customertype'] = Form::selectarray('client', array( + 0 => $langs->trans('NorProspectNorCustomer'), + 1 => $langs->trans('Customer'), + 2 => $langs->trans('Prospect'), + 3 => $langs->trans('ProspectCustomer') + ), $this->object->client); // Customer $this->tpl['customercode'] = $this->object->code_client; From 84b58d27e680d3f59eb53ef44dec27678dcb3cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 16 Apr 2016 21:41:06 +0200 Subject: [PATCH 208/380] NEW Renamed ActionComm::add function to ActionComm::create --- htdocs/comm/action/card.php | 2 +- htdocs/comm/action/class/actioncomm.class.php | 20 ++++++++++++++++--- ...terface_50_modAgenda_ActionsAuto.class.php | 2 +- htdocs/webservices/server_actioncomm.php | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 62798371a58..4ca75ade9b9 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -318,7 +318,7 @@ if ($action == 'add') $db->begin(); // On cree l'action - $idaction=$object->add($user); + $idaction=$object->create($user); if ($idaction > 0) { diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index d4e56bb2715..c0e1f11579c 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -173,7 +173,7 @@ class ActionComm extends CommonObject * * @param DoliDB $db Database handler */ - function __construct($db) + public function __construct(DoliDB $db) { $this->db = $db; @@ -189,7 +189,7 @@ class ActionComm extends CommonObject * @param int $notrigger 1 = disable triggers, 0 = enable triggers * @return int Id of created event, < 0 if KO */ - function add($user,$notrigger=0) + public function create(User $user, $notrigger = 0) { global $langs,$conf,$hookmanager; @@ -395,6 +395,20 @@ class ActionComm extends CommonObject } + /** + * Add an action/event into database. + * $this->type_id OR $this->type_code must be set. + * + * @param User $user Object user making action + * @param int $notrigger 1 = disable triggers, 0 = enable triggers + * @return int Id of created event, < 0 if KO + * @deprecated Use create instead + */ + public function add(User $user, $notrigger = 0) + { + $this->create($user, $notrigger); + } + /** * Load an object from its id and create a new one in database * @@ -436,7 +450,7 @@ class ActionComm extends CommonObject } // Create clone - $result=$this->add($fuser); + $result=$this->create($fuser); if ($result < 0) $error++; if (! $error) diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 0a5d4a81ed6..5c85309ed8c 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -803,7 +803,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $actioncomm->fk_element = $object->id; $actioncomm->elementtype = $object->element; - $ret=$actioncomm->add($user); // User creating action + $ret=$actioncomm->create($user); // User creating action unset($object->actionmsg); unset($object->actionmsg2); unset($object->actiontypecode); // When several action are called on same object, we must be sure to not reuse value of first action. diff --git a/htdocs/webservices/server_actioncomm.php b/htdocs/webservices/server_actioncomm.php index dc07bc156ec..a5df31c2a7e 100644 --- a/htdocs/webservices/server_actioncomm.php +++ b/htdocs/webservices/server_actioncomm.php @@ -459,7 +459,7 @@ function createActionComm($authentication,$actioncomm) $db->begin(); - $result=$newobject->add($fuser); + $result=$newobject->create($fuser); if ($result <= 0) { $error++; From 21ba24a0cdfd3452f21dac5026e0f6e8585e5d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 16 Apr 2016 22:13:28 +0200 Subject: [PATCH 209/380] NEW Deprecated Societe::set_prospect_level, Societe::set_commnucation_level, Societe::set_OutstandingBill functions --- htdocs/comm/card.php | 6 +- htdocs/societe/class/societe.class.php | 80 ++++---------------------- htdocs/societe/list.php | 2 +- 3 files changed, 14 insertions(+), 74 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 62b251ac01d..a5c4d4980e8 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -146,7 +146,7 @@ if (empty($reshook)) { $object->fetch($id); $object->fk_prospectlevel=GETPOST('prospect_level_id','alpha'); - $result=$object->set_prospect_level($user); + $result=$object->update($object->id, $user); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } @@ -155,7 +155,7 @@ if (empty($reshook)) { $object->fetch($id); $object->stcomm_id=dol_getIdFromCode($db, GETPOST('stcomm','alpha'), 'c_stcomm'); - $result=$object->set_commnucation_level($user); + $result=$object->update($object->id, $user); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } @@ -164,7 +164,7 @@ if (empty($reshook)) { $object->fetch($id); $object->outstanding_limit=GETPOST('outstanding_limit'); - $result=$object->set_OutstandingBill($user); + $result=$object->update($object->id, $user); if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); } } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 1005b8c3c8d..60e954c9f6e 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -678,6 +678,7 @@ class Societe extends CommonObject $this->idprof5 = (! empty($this->idprof5)?trim($this->idprof5):''); $this->idprof6 = (! empty($this->idprof6)?trim($this->idprof6):''); $this->prefix_comm = trim($this->prefix_comm); + $this->outstanding_limit = price2num($this->outstanding_limit); $this->tva_assuj = trim($this->tva_assuj); $this->tva_intra = dol_sanitizeFileName($this->tva_intra,''); @@ -831,7 +832,7 @@ 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."'"; $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"); @@ -847,6 +848,8 @@ 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 .= ",fk_prospectlevel='".$this->fk_prospectlevel."'"; $sql .= ",webservices_url = ".(! empty($this->webservices_url)?"'".$this->db->escape($this->webservices_url)."'":"null"); $sql .= ",webservices_key = ".(! empty($this->webservices_key)?"'".$this->db->escape($this->webservices_key)."'":"null"); @@ -3178,30 +3181,11 @@ class Societe extends CommonObject * * @param User $user Utilisateur qui definie la remise * @return int <0 if KO, >0 if OK + * @deprecated Use update function instead */ function set_prospect_level(User $user) { - if ($this->id) - { - $this->db->begin(); - - // Positionne remise courante - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET "; - $sql.= " fk_prospectlevel='".$this->fk_prospectlevel."'"; - $sql.= ",fk_user_modif='".$user->id."'"; - $sql.= " WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::set_prospect_level", LOG_DEBUG); - $resql=$this->db->query($sql); - if (! $resql) - { - $this->db->rollback(); - $this->error=$this->db->error(); - return -1; - } - - $this->db->commit(); - return 1; - } + return $this->update($this->id, $user); } /** @@ -3274,31 +3258,11 @@ class Societe extends CommonObject * * @param User $user User making change * @return int <0 if KO, >0 if OK + * @deprecated Use update function instead */ function set_commnucation_level($user) { - if ($this->id) - { - $this->db->begin(); - - // Positionne remise courante - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET "; - $sql.= " fk_stcomm='".$this->stcomm_id."'"; - $sql.= ",fk_user_modif='".$user->id."'"; - $sql.= " WHERE rowid = ".$this->id; - - dol_syslog(get_class($this)."::set_commnucation_level", LOG_DEBUG); - $resql=$this->db->query($sql); - if (! $resql) - { - $this->db->rollback(); - $this->error=$this->db->lasterror(); - return -1; - } - - $this->db->commit(); - return 1; - } + return $this->update($this->id, $user); } /** @@ -3306,35 +3270,11 @@ class Societe extends CommonObject * * @param User $user User making change * @return int <0 if KO, >0 if OK + * @deprecated Use update function instead */ function set_OutstandingBill(User $user) { - if ($this->id) - { - $this->db->begin(); - - // Clean parameters - $outstanding = price2num($this->outstanding_limit); - - // Set outstanding amount - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET "; - $sql.= " outstanding_limit= '".($outstanding!=''?$outstanding:'null')."'"; - $sql.= " WHERE rowid = ".$this->id; - - dol_syslog(get_class($this)."::set_outstanding", LOG_DEBUG); - $resql=$this->db->query($sql); - if ($resql) - { - $this->db->commit(); - return 1; - } - else - { - $this->db->rollback(); - $this->error=$this->db->lasterror(); - return -1; - } - } + return $this->update($this->id, $user); } /** diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index e01331617ea..4e9d0b1ed18 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -191,7 +191,7 @@ if (empty($reshook)) $object = new Client($db); $result=$object->fetch(GETPOST('stcommsocid')); $object->stcomm_id=dol_getIdFromCode($db, GETPOST('stcomm','alpha'), 'c_stcomm'); - $result=$object->set_commnucation_level($user); + $result=$object->update($object->id, $user); if ($result < 0) setEventMessages($object->error,$object->errors,'errors'); $action=''; From 8428b791f8d4588254f2be422bb350e1e1a40349 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 16 Apr 2016 22:25:47 +0200 Subject: [PATCH 210/380] Add logger to dump smtp dialog --- htdocs/core/class/CMailFile.class.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 44e61b3f219..8592c3e005c 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -628,13 +628,20 @@ class CMailFile // Create the Mailer using your created Transport $this->mailer = Swift_Mailer::newInstance($this->transport); - //if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->mailer->setDebug(true); + if (! empty($conf->global->MAIN_MAIL_DEBUG)) { + // To use the ArrayLogger + $this->logger = new Swift_Plugins_Loggers_ArrayLogger(); + // Or to use the Echo Logger + //$this->logger = new Swift_Plugins_Loggers_EchoLogger(); + $this->mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($this->logger)); + } + // send mail try { $result = $this->mailer->send($this->message); } catch (Exception $e) { $this->error = $e->getMessage(); } - //if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->dump_mail(); + if (! empty($conf->global->MAIN_MAIL_DEBUG)) $this->dump_mail(); $res = true; if (! empty($this->error) && ! $result) { @@ -728,6 +735,10 @@ class CMailFile { fputs($fp, $this->smtps->log); // this->smtps->log is filled only if MAIN_MAIL_DEBUG was set to on } + elseif ($conf->global->MAIN_MAIL_SENDMODE == 'swiftmailer') + { + fputs($fp, $this->logger->dump()); // this->logger is filled only if MAIN_MAIL_DEBUG was set to on + } fclose($fp); if (! empty($conf->global->MAIN_UMASK)) From 75127638a4405e891a3620c2251734b71073cf4a Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sun, 17 Apr 2016 10:28:21 +0200 Subject: [PATCH 211/380] Embed images --- htdocs/admin/mails.php | 2 +- htdocs/core/class/CMailFile.class.php | 37 ++++++++++++++++----------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index deaff88f50f..24155b8a65c 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -207,7 +207,7 @@ if (($action == 'send' || $action == 'sendhtml') && ! GETPOST('addfile') && ! GE $msgishtml, $errors_to, '', - $trackid + $trackid ); $result=$mailfile->sendfile(); diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 8592c3e005c..3f78a4ba078 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -361,6 +361,14 @@ class CMailFile // Create the message $this->message = Swift_Message::newInstance(); + // Adding a trackid header to a message + $headers = $this->message->getHeaders(); + $headers->addTextHeader('X-Dolibarr-TRACKID', $trackid); + $headerID = time() . '.swiftmailer-dolibarr-' . $trackid . '@' . $conf->global->MAIN_MAIL_SMTP_SERVER; + $msgid = $headers->get('Message-ID'); + $msgid->setId($headerID); + $headers->addIdHeader('References', $headerID); + // Give the message a subject $this->message->setSubject($this->encodetorfc2822($subject)); @@ -375,8 +383,6 @@ class CMailFile $this->message->setCharSet($conf->file->character_set_client); - // TODO Add trackid into smtp header - if (! empty($this->html)) { if (!empty($css)) @@ -388,6 +394,19 @@ class CMailFile $msg = $this->checkIfHTML($msg); } + if ($this->atleastoneimage) + { + foreach ($this->images_encoded as $img) + { + //$img['fullpath'],$img['image_encoded'],$img['name'],$img['content_type'],$img['cid'] + $attachment = Swift_Image::fromPath($img['fullpath'], $img['content_type']); + // embed image + $imgcid = $this->message->embed($attachment); + // replace cid by the one created by swiftmail in html message + $msg = str_replace("cid:".$img['cid'], $imgcid, $msg); + } + } + if ($this->msgishtml) { $this->message->setBody($msg,'text/html'); // And optionally an alternative body @@ -398,19 +417,6 @@ class CMailFile //$this->message->addPart('Here is the message itself', 'text/html'); } - if ($this->atleastoneimage) - { - foreach ($this->images_encoded as $img) - { - //$img['fullpath'],$img['image_encoded'],$img['name'],$img['content_type'],$img['cid'] - // TODO this part is not tested - //$attachment = Swift_Attachment::fromPath($img['fullpath'], 'image/jpeg'); - //$attachment->setFilename($img['name']); - //$attachment->setDisposition('inline'); - //$message->attach($attachment); - } - } - if ($this->atleastonefile) { foreach ($filename_list as $i => $val) @@ -1175,6 +1181,7 @@ class CMailFile $imgName = $regs[1]; $this->images_encoded[$i]['name'] = $imgName; + $this->images_encoded[$i]['fullpath'] = $fullpath; $this->images_encoded[$i]['content_type'] = $img["content_type"]; $this->images_encoded[$i]['cid'] = $img["cid"]; // Encodage de l'image From d5980a5bf8039a4f86a400387841488d03abf5e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 17 Apr 2016 12:20:45 +0200 Subject: [PATCH 212/380] Update html.formmail.class.php --- htdocs/core/class/html.formmail.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 46b485d8a3c..23b0fc5d6e2 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -920,6 +920,7 @@ class FormMail extends Form */ function setSubstitFromObject($object) { + global $user; $this->substit['__REF__'] = $object->ref; $this->substit['__SIGNATURE__'] = $user->signature; $this->substit['__REFCLIENT__'] = $object->ref_client; From 54dd1763fe56fba7f4f9360a167430e2ef704a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 17 Apr 2016 15:05:54 +0200 Subject: [PATCH 213/380] Little refactor --- htdocs/core/lib/company.lib.php | 20 ++++++++++---------- htdocs/core/lib/functions.lib.php | 7 ++----- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index e2d63d6d151..8631c576576 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -57,17 +57,17 @@ function societe_prepare_head(Societe $object) if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && ($object->client==1 || $object->client==3)) $head[$h][1] .= $langs->trans("Customer"); $head[$h][2] = 'customer'; $h++; - } - if (($object->client==1 || $object->client==2 || $object->client==3) && (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))) - { - $langs->load("products"); - // price - $head[$h][0] = DOL_URL_ROOT.'/societe/price.php?socid='.$object->id; - $head[$h][1] = $langs->trans("CustomerPrices"); - $head[$h][2] = 'price'; - $h++; - } + if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) + { + $langs->load("products"); + // price + $head[$h][0] = DOL_URL_ROOT.'/societe/price.php?socid='.$object->id; + $head[$h][1] = $langs->trans("CustomerPrices"); + $head[$h][2] = 'price'; + $h++; + } + } if (! empty($conf->fournisseur->enabled) && $object->fournisseur && ! empty($user->rights->fournisseur->lire)) { $head[$h][0] = DOL_URL_ROOT.'/fourn/card.php?socid='.$object->id; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 6b69427eacd..befcf4ef4ff 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3929,13 +3929,10 @@ function get_product_localtax_for_country($idprod, $local, $thirdparty_seller) * @return float Taux de tva a appliquer, -1 si ne peut etre determine * @see get_default_npr, get_default_localtax */ -function get_default_tva($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idprodfournprice=0) +function get_default_tva(Societe $thirdparty_seller, Societe $thirdparty_buyer, $idprod=0, $idprodfournprice=0) { global $conf; - if (!is_object($thirdparty_seller)) return -1; - if (!is_object($thirdparty_buyer)) return -1; - // Note: possible values for tva_assuj are 0/1 or franchise/reel $seller_use_vat=((is_numeric($thirdparty_seller->tva_assuj) && ! $thirdparty_seller->tva_assuj) || (! is_numeric($thirdparty_seller->tva_assuj) && $thirdparty_seller->tva_assuj=='franchise'))?0:1; @@ -4012,7 +4009,7 @@ function get_default_tva($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idpr * @return float 0 or 1 * @see get_default_tva, get_default_localtax */ -function get_default_npr($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idprodfournprice=0) +function get_default_npr(Societe $thirdparty_seller, Societe $thirdparty_buyer, $idprod=0, $idprodfournprice=0) { global $db; From e2c86d3fd856644adb0e12aec226a3ea1bc54a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 17 Apr 2016 15:24:22 +0200 Subject: [PATCH 214/380] NEW Removed deprecated CommonObject::client property. Please use CommonObject::thirdparty instead --- htdocs/comm/propal/class/propal.class.php | 14 +++++------ htdocs/comm/propal/contact.php | 2 +- htdocs/comm/propal/note.php | 4 ++-- htdocs/commande/class/commande.class.php | 12 +++++----- htdocs/commande/contact.php | 4 ++-- htdocs/compta/facture/class/facture.class.php | 6 ++--- htdocs/compta/facture/contact.php | 2 +- htdocs/compta/facture/fiche-rec.php | 2 +- htdocs/compta/facture/list.php | 2 +- htdocs/compta/paiement.php | 4 ++-- htdocs/core/class/commonobject.class.php | 8 ------- htdocs/core/lib/files.lib.php | 2 +- .../doc/doc_generic_order_odt.modules.php | 4 ++-- .../contract/doc/pdf_strato.modules.php | 12 +++++----- .../doc/doc_generic_shipment_odt.modules.php | 4 ++-- .../doc/doc_generic_invoice_odt.modules.php | 4 ++-- .../pdf/pdf_canelle.modules.php | 2 +- .../pdf/pdf_muscadet.modules.php | 6 ++--- ..._generic_supplier_proposal_odt.modules.php | 4 ++-- htdocs/don/card.php | 2 +- htdocs/expedition/card.php | 6 ++--- htdocs/expedition/shipment.php | 2 +- htdocs/fichinter/card.php | 24 +++++++++---------- htdocs/fichinter/contact.php | 4 ++-- htdocs/fichinter/document.php | 2 +- .../fourn/class/fournisseur.facture.class.php | 2 +- htdocs/fourn/commande/card.php | 6 ++--- htdocs/fourn/facture/card.php | 8 +++---- htdocs/livraison/card.php | 6 ++--- htdocs/product/card.php | 2 +- .../class/supplier_proposal.class.php | 16 ++++++------- htdocs/supplier_proposal/note.php | 4 ++-- 32 files changed, 87 insertions(+), 95 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index a83600072d4..99f5058ad3f 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -247,16 +247,16 @@ class Propal extends CommonObject $productdesc = $prod->description; - $tva_tx = get_default_tva($mysoc,$this->client,$prod->id); - $tva_npr = get_default_npr($mysoc,$this->client,$prod->id); + $tva_tx = get_default_tva($mysoc,$this->thirdparty,$prod->id); + $tva_npr = get_default_npr($mysoc,$this->thirdparty,$prod->id); if (empty($tva_tx)) $tva_npr=0; - $localtax1_tx = get_localtax($tva_tx,1,$mysoc,$this->client,$tva_npr); - $localtax2_tx = get_localtax($tva_tx,2,$mysoc,$this->client,$tva_npr); + $localtax1_tx = get_localtax($tva_tx,1,$mysoc,$this->thirdparty,$tva_npr); + $localtax2_tx = get_localtax($tva_tx,2,$mysoc,$this->thirdparty,$tva_npr); // multiprix - if($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) + if($conf->global->PRODUIT_MULTIPRICES && $this->thirdparty->price_level) { - $price = $prod->multiprices[$this->client->price_level]; + $price = $prod->multiprices[$this->thirdparty->price_level]; } else { @@ -1975,7 +1975,7 @@ class Propal extends CommonObject if (! empty($conf->global->MAIN_MULTILANGS)) { $outputlangs = new Translate("",$conf); - $newlang=(GETPOST('lang_id') ? GETPOST('lang_id') : $this->client->default_lang); + $newlang=(GETPOST('lang_id') ? GETPOST('lang_id') : $this->thirdparty->default_lang); $outputlangs->setDefaultLang($newlang); } //$ret=$object->fetch($id); // Reload to get new records diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php index 544c5ab27e3..33504a1d27b 100644 --- a/htdocs/comm/propal/contact.php +++ b/htdocs/comm/propal/contact.php @@ -177,7 +177,7 @@ if ($object->id > 0) // Customer print "
    ".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
    '.$object->thirdparty->getNomUrl(1).'
    ".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
    '.$object->thirdparty->getNomUrl(1).'
    '.$langs->trans('Discounts').''; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index ae7c18ac077..827f3976fc8 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1420,15 +1420,15 @@ class Commande extends CommonOrder $prod=new Product($this->db); $prod->fetch($idproduct); - $tva_tx = get_default_tva($mysoc,$this->client,$prod->id); - $tva_npr = get_default_npr($mysoc,$this->client,$prod->id); + $tva_tx = get_default_tva($mysoc,$this->thirdparty,$prod->id); + $tva_npr = get_default_npr($mysoc,$this->thirdparty,$prod->id); if (empty($tva_tx)) $tva_npr=0; - $localtax1_tx=get_localtax($tva_tx,1,$this->client,$mysoc,$tva_npr); - $localtax2_tx=get_localtax($tva_tx,2,$this->client,$mysoc,$tva_npr); + $localtax1_tx=get_localtax($tva_tx,1,$this->thirdparty,$mysoc,$tva_npr); + $localtax2_tx=get_localtax($tva_tx,2,$this->thirdparty,$mysoc,$tva_npr); // multiprix - if($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) - $price = $prod->multiprices[$this->client->price_level]; + if($conf->global->PRODUIT_MULTIPRICES && $this->thirdparty->price_level) + $price = $prod->multiprices[$this->thirdparty->price_level]; else $price = $prod->price; diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index 93d46c05997..da584f9197c 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -171,10 +171,10 @@ if ($id > 0 || ! empty($ref)) print '
    ".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
    '.$object->thirdparty->getNomUrl(1).'
    ".$langs->trans("Company")."'.$object->client->getNomUrl(1,'compta').'
    '.$object->thirdparty->getNomUrl(1,'compta').'
    "; dol_fiche_end(); diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 9b381c1af04..275724d3012 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -281,7 +281,7 @@ if ($action == 'create') $object->fetch_thirdparty(); // Third party - print '
    '.$langs->trans("Customer").''.$object->client->getNomUrl(1,'customer').'
    '.$langs->trans("Customer").''.$object->thirdparty->getNomUrl(1,'customer').''; print $langs->trans("Comment"); print '
    '; // Third party - print '\n"; + print '\n"; // Date payment print ''; // Third party - print ""; + print ""; if (empty($conf->global->FICHINTER_DISABLE_DETAILS)) { @@ -1824,7 +1824,7 @@ else if ($id > 0 || ! empty($ref)) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang = $_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) - $newlang = $object->client->default_lang; + $newlang = $object->thirdparty->default_lang; if (!empty($newlang)) { diff --git a/htdocs/fichinter/contact.php b/htdocs/fichinter/contact.php index b92c1442d14..b64a16f91ba 100644 --- a/htdocs/fichinter/contact.php +++ b/htdocs/fichinter/contact.php @@ -133,11 +133,11 @@ if ($id > 0 || ! empty($ref)) print ""; // Customer - if ( is_null($object->client) ) + if ( is_null($object->thirdparty) ) $object->fetch_thirdparty(); print ""; - print ''; + print ''; print "
    '.$langs->trans('Company').''.$facture->client->getNomUrl(4)."
    '.$langs->trans('Company').''.$facture->thirdparty->getNomUrl(4)."
    '.$langs->trans('Date').''; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7de64135245..7cc889a67e9 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -130,12 +130,6 @@ abstract class CommonObject * @see fetch_thirdparty() */ public $thirdparty; - /** - * @deprecated - * @var Societe A related customer - * @see thirdparty - */ - public $client; /** * @var User A related user @@ -1016,12 +1010,10 @@ abstract class CommonObject if ($idtofetch) { $thirdparty = new Societe($this->db); $result = $thirdparty->fetch($idtofetch); - $this->client = $thirdparty; // deprecated $this->thirdparty = $thirdparty; // Use first price level if level not defined for third party if (!empty($conf->global->PRODUIT_MULTIPRICES) && empty($this->thirdparty->price_level)) { - $this->client->price_level = 1; // deprecated $this->thirdparty->price_level = 1; } diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 7d8ac5f1750..9be021b975e 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1358,7 +1358,7 @@ function dol_meta_create($object) if (is_dir($dir)) { $nblignes = count($object->lines); - $client = $object->client->name . " " . $object->client->address . " " . $object->client->zip . " " . $object->client->town; + $client = $object->thirdparty->name . " " . $object->thirdparty->address . " " . $object->thirdparty->zip . " " . $object->thirdparty->town; $meta = "REFERENCE=\"" . $object->ref . "\" DATE=\"" . dol_print_date($object->date,'') . "\" NB_ITEMS=\"" . $nblignes . "\" diff --git a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php index 84dec7b817e..9e26b31b0ce 100644 --- a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php +++ b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php @@ -289,11 +289,11 @@ class doc_generic_order_odt extends ModelePDFCommandes { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else $socobject = $object->thirdparty; } else { - $socobject=$object->client; + $socobject=$object->thirdparty; } // Make substitution diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 25ae8c7f015..f8097249a5b 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -556,12 +556,12 @@ class pdf_strato extends ModelePDFContract $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Date")." : " . dol_print_date($object->date_creation,"day",false,$outputlangs,true), '', 'R'); - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $posy+=4; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } if ($showaddress) @@ -576,7 +576,7 @@ class pdf_strato extends ModelePDFContract $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; } - $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -614,19 +614,19 @@ class pdf_strato extends ModelePDFContract $result=$object->fetch_contact($arrayidcontact[0]); } - $this->recipient = $object->client; + $this->recipient = $object->thirdparty; //Recipient name // On peut utiliser le nom de la societe du contact if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $this->recipient->name = pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->client, (isset($object->contact)?$object->contact:''), $usecontact, 'target', $object); + $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, (isset($object->contact)?$object->contact:''), $usecontact, 'target', $object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php index c2fcf108c10..2693a4f013a 100644 --- a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php +++ b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php @@ -289,11 +289,11 @@ class doc_generic_shipment_odt extends ModelePdfExpedition { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else $socobject = $object->thirdparty; } else { - $socobject=$object->client; + $socobject=$object->thirdparty; } // Make substitution diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index 2cd392a0bd6..a8baaab2282 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -291,14 +291,14 @@ class doc_generic_invoice_odt extends ModelePDFFactures // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; else { - $socobject = $object->client; + $socobject = $object->thirdparty; // if we have a BILLING contact and we dont use it as recipient we store the contact object for later use $contactobject = $object->contact; } } else { - $socobject=$object->client; + $socobject=$object->thirdparty; } // Fetch info for linked propal diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index ae96756b9f0..ddbea30e833 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -1061,7 +1061,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; 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 2d30037878d..225ff02e629 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -1113,7 +1113,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -1158,12 +1158,12 @@ class pdf_muscadet extends ModelePDFSuppliersOrders if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target',$object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php index d1386d646a5..212685ba519 100644 --- a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php @@ -320,11 +320,11 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; - else $socobject = $object->client; + else $socobject = $object->thirdparty; } else { - $socobject=$object->client; + $socobject=$object->thirdparty; } // Make substitution diff --git a/htdocs/don/card.php b/htdocs/don/card.php index cd8a2e174f8..fab2560f816 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -264,7 +264,7 @@ if ($action == 'builddoc') $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 8f461a2a0c0..4547a94566a 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -501,7 +501,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$shipment->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$shipment->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -1562,7 +1562,7 @@ else if ($id || $ref) $outputlangs = $langs; $newlang=''; if (empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id','alpha'); - if (empty($newlang)) $newlang=$object->client->default_lang; + if (empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -1850,7 +1850,7 @@ else if ($id || $ref) if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang = $_REQUEST['lang_id']; if ($conf->global->MAIN_MULTILANGS && empty($newlang)) - $newlang = $object->client->default_lang; + $newlang = $object->thirdparty->default_lang; if (!empty($newlang)) { diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 2677d06ec7b..5de764922e1 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -530,7 +530,7 @@ if ($id > 0 || ! empty($ref)) $outputlangs = $langs; $newlang=''; if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$commande->client->default_lang; + if (empty($newlang)) $newlang=$commande->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 74f50f26a5b..c3f2d28959e 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -123,7 +123,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -152,7 +152,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -410,7 +410,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -515,7 +515,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -612,7 +612,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -647,7 +647,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -668,7 +668,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -688,7 +688,7 @@ if (empty($reshook)) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','alpha')) $newlang=GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -750,12 +750,12 @@ if (empty($reshook)) // Recipient was provided from combo list if (GETPOST('receiver','alpha') == 'thirdparty') // Id of third party { - $sendto = $object->client->email; + $sendto = $object->thirdparty->email; $sendtoid = 0; } else // Id du contact { - $sendto = $object->client->contact_get_property(GETPOST('receiver'),'email'); + $sendto = $object->thirdparty->contact_get_property(GETPOST('receiver'),'email'); $sendtoid = GETPOST('receiver','alpha'); } } @@ -1277,7 +1277,7 @@ else if ($id > 0 || ! empty($ref)) print '
    ".$langs->trans("Company").''.$object->client->getNomUrl(1)."
    ".$langs->trans("Company").''.$object->thirdparty->getNomUrl(1)."
    ".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
    '.$object->thirdparty->getNomUrl(1).'
    "; print ''; diff --git a/htdocs/fichinter/document.php b/htdocs/fichinter/document.php index 38176068d72..aca31d4e7c2 100644 --- a/htdocs/fichinter/document.php +++ b/htdocs/fichinter/document.php @@ -111,7 +111,7 @@ if ($object->id) print '
    ".$langs->trans("Company")."".$object->client->getNomUrl(1)."
    ".$langs->trans("Company")."".$object->thirdparty->getNomUrl(1)."
    '.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
    '.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
    ".$langs->trans("Supplier")."'.$object->client->getNomUrl(1).'
    '.$object->thirdparty->getNomUrl(1).'
    '.$langs->trans('SupplierProposalDate').''; print dol_print_date($object->date_livraison,'daytext'); From b59c94e056614f1b20a934948fae6a81d33110f0 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 17 Apr 2016 15:44:04 +0200 Subject: [PATCH 215/380] NEW: Accountancy - Add Result page & review --- htdocs/accountancy/admin/export.php | 6 +- htdocs/accountancy/admin/importaccounts.php | 6 +- htdocs/accountancy/admin/index.php | 16 +- htdocs/accountancy/admin/journal.php | 6 +- htdocs/accountancy/admin/productaccount.php | 10 +- htdocs/accountancy/bookkeeping/balance.php | 2 +- .../bookkeeping/balancebymonth.php | 6 +- htdocs/accountancy/bookkeeping/card.php | 2 +- htdocs/accountancy/bookkeeping/list.php | 2 +- .../class/accountancycategory.class.php | 386 ++++++++++++++++++ .../class/accountancyexport.class.php | 12 +- .../class/accountancysystem.class.php | 6 +- .../class/accountingaccount.class.php | 6 +- .../accountancy/class/bookkeeping.class.php | 24 +- .../class/html.formventilation.class.php | 6 +- htdocs/accountancy/customer/index.html | 0 htdocs/accountancy/customer/index.php | 12 +- htdocs/accountancy/customer/lines.php | 29 +- htdocs/accountancy/journal/index.php | 45 -- .../accountancy/journal/purchasesjournal.php | 6 +- htdocs/accountancy/report/index.html | 0 htdocs/accountancy/report/result.php | 240 +++++++++++ htdocs/accountancy/supplier/index.php | 10 +- htdocs/accountancy/supplier/lines.php | 21 +- .../core/class/html.formaccounting.class.php | 5 +- htdocs/core/lib/accounting.lib.php | 37 -- htdocs/core/menus/init_menu_auguria.sql | 27 +- htdocs/core/menus/standard/eldy.lib.php | 9 +- .../install/mysql/migration/3.9.0-4.0.0.sql | 5 +- .../tables/llx_c_accounting_category.sql | 8 +- htdocs/langs/en_US/accountancy.lang | 35 +- htdocs/langs/en_US/compta.lang | 1 + 32 files changed, 764 insertions(+), 222 deletions(-) create mode 100644 htdocs/accountancy/class/accountancycategory.class.php create mode 100644 htdocs/accountancy/customer/index.html delete mode 100644 htdocs/accountancy/journal/index.php create mode 100644 htdocs/accountancy/report/index.html create mode 100644 htdocs/accountancy/report/result.php diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php index 1a32c22e12f..7b4ca7f91ce 100644 --- a/htdocs/accountancy/admin/export.php +++ b/htdocs/accountancy/admin/export.php @@ -21,9 +21,9 @@ */ /** - * \file htdocs/accountancy/admin/export.php - * \ingroup Accounting Expert - * \brief Setup page to configure accounting expert module + * \file htdocs/accountancy/admin/export.php + * \ingroup Advanced accountancy + * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/importaccounts.php b/htdocs/accountancy/admin/importaccounts.php index 15bd063bf9c..0dc560aa62e 100644 --- a/htdocs/accountancy/admin/importaccounts.php +++ b/htdocs/accountancy/admin/importaccounts.php @@ -19,9 +19,9 @@ */ /** - * \file htdocs/accountancy/admin/importaccounts.php - * \ingroup Accounting Expert - * \brief Page import accounting account + * \file htdocs/accountancy/admin/importaccounts.php + * \ingroup Advanced accountancy + * \brief Page import accounting account */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php index 6a63ad433cb..c9041e2a848 100644 --- a/htdocs/accountancy/admin/index.php +++ b/htdocs/accountancy/admin/index.php @@ -1,7 +1,7 @@ * Copyright (C) 2013-2014 Florian Henry - * Copyright (C) 2013-2015 Alexandre Spangaro + * Copyright (C) 2013-2016 Alexandre Spangaro * Copyright (C) 2014-2015 Ari Elbaz (elarifr) * Copyright (C) 2014 Marcos García * Copyright (C) 2014 Juanjo Menent @@ -23,9 +23,9 @@ */ /** - * \file htdocs/accountancy/admin/index.php - * \ingroup Accounting Expert - * \brief Setup page to configure accounting expert module + * \file htdocs/accountancy/admin/index.php + * \ingroup Advanced accountancy + * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; @@ -38,6 +38,7 @@ $langs->load("compta"); $langs->load("bills"); $langs->load("admin"); $langs->load("accountancy"); +$langs->load("salaries"); // Security check if (! $user->admin) @@ -45,7 +46,7 @@ if (! $user->admin) $action = GETPOST('action', 'alpha'); -// Other parameters ACCOUNTING_* +// Parameters ACCOUNTING_* and others $list = array ( 'ACCOUNTING_LIMIT_LIST_VENTILATION', 'ACCOUNTING_LENGTH_DESCRIPTION', // adjust size displayed for lines description for dol_trunc @@ -63,8 +64,11 @@ $list_account = array ( 'ACCOUNTING_SERVICE_SOLD_ACCOUNT', 'ACCOUNTING_VAT_BUY_ACCOUNT', 'ACCOUNTING_VAT_SOLD_ACCOUNT', + 'ACCOUNTING_VAT_PAY_ACCOUNT', 'ACCOUNTING_ACCOUNT_SUSPENSE', - 'ACCOUNTING_ACCOUNT_TRANSFER_CASH' + 'ACCOUNTING_ACCOUNT_TRANSFER_CASH', + 'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT', + 'DONATION_ACCOUNTINGACCOUNT' ); /* diff --git a/htdocs/accountancy/admin/journal.php b/htdocs/accountancy/admin/journal.php index e1b76273193..ca4ab67aee8 100644 --- a/htdocs/accountancy/admin/journal.php +++ b/htdocs/accountancy/admin/journal.php @@ -22,9 +22,9 @@ */ /** - * \file htdocs/accountancy/admin/journal.php - * \ingroup Accounting Expert - * \brief Setup page to configure accounting expert module + * \file htdocs/accountancy/admin/journal.php + * \ingroup Advanced accountancy + * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index b7d563c9621..d6f21960a49 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -20,9 +20,9 @@ */ /** - * \file htdocs/accountancy/admin/productaccount.php - * \ingroup Accounting Expert - * \brief To define accounting account on product / service + * \file htdocs/accountancy/admin/productaccount.php + * \ingroup Advanced accountancy + * \brief To define accounting account on product / service */ require '../../main.inc.php'; @@ -184,7 +184,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both * View */ -llxHeader('', $langs->trans("Accounts")); +llxHeader('', $langs->trans("InitAccountancy")); print ''."\n"; print ''."\n"; print ''."\n"; + // jQuery Layout (still used by ECM module) + if (defined('REQUIRE_JQUERY_LAYOUT')) + { + print ''."\n"; + } // jQuery jnotify if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && ! defined('DISABLE_JQUERY_JNOTIFY')) { From bb554a73bd27e56a68e497e715315326926fe066 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 19 Apr 2016 06:18:34 +0200 Subject: [PATCH 227/380] FIX: Accounting library already declared in line 54 --- htdocs/product/card.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index ef126a85b52..cbef61d7590 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -44,7 +44,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/genericobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/product/modules_product.php'; From f0f4933905c3da568b7555ce49716af37e3bad5c Mon Sep 17 00:00:00 2001 From: abb Date: Sat, 16 Apr 2016 11:19:46 +0100 Subject: [PATCH 228/380] new function updateExtraField to update one particular extrafield Conflicts: htdocs/core/class/commonobject.class.php --- htdocs/core/class/commonobject.class.php | 82 ++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7de64135245..2017ef3e873 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -10,6 +10,7 @@ * Copyright (C) 2012-2015 Raphaël Doursenaud * Copyright (C) 2012 Cedric Salvador * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016 Bahfir abbes * * 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 @@ -4237,6 +4238,87 @@ abstract class CommonObject } else return 0; } + /** + * Update an exta field value for the current object. + * Data to describe values to insert/update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) + * This function delte record with all extrafields and insert them again from the array $this->array_options. + * $key key of the extrafield + * @return int -1=error, O=did nothing, 1=OK + */ + function updateExtraField($key) + { + global $conf,$langs; + + $error=0; + + if (! empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return 0; // For avoid conflicts if trigger used + + if (! empty($this->array_options) && !empty($this->array_options["options_$key"])) + { + // Check parameters + $langs->load('admin'); + require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + $extrafields = new ExtraFields($this->db); + $target_extrafields=$extrafields->fetch_name_optionals_label($this->table_element); + + $attributeType = $extrafields->attribute_type[$key]; + $attributeLabel = $extrafields->attribute_label[$key]; + $attributeParam = $extrafields->attribute_param[$key]; + switch ($attributeType) + { + case 'int': + if (!is_numeric($value) && $value!='') + { + $this->errors[]=$langs->trans("ExtraFieldHasWrongValue",$attributeLabel); + return -1; + } + elseif ($value=='') + { + $this->array_options[$key] = null; + } + break; + case 'price': + $this->array_options[$key] = price2num($this->array_options[$key]); + break; + case 'date': + $this->array_options[$key]=$this->db->idate($this->array_options[$key]); + break; + case 'datetime': + $this->array_options[$key]=$this->db->idate($this->array_options[$key]); + break; + case 'link': + $param_list=array_keys($attributeParam ['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); + if ($value) + { + $object->fetch(0,$value); + $this->array_options[$key]=$object->id; + } + break; + } + + $this->db->begin(); + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key=$value"; + $sql .= " WHERE fk_object = ".$this->id; + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return -1; + } + else + { + $this->db->commit(); + return 1; + } + } + else return 0; + } /** * Function to show lines of extrafields with output datas From 62aa6285245260af46a080039b09e5b7606776bc Mon Sep 17 00:00:00 2001 From: abb Date: Sat, 16 Apr 2016 17:41:47 +0100 Subject: [PATCH 229/380] fixmycommit:new function updateExtraField to update one particular extrafield --- htdocs/core/class/commonobject.class.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 2017ef3e873..46278ffcdf4 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4261,6 +4261,7 @@ abstract class CommonObject $extrafields = new ExtraFields($this->db); $target_extrafields=$extrafields->fetch_name_optionals_label($this->table_element); + $value=$this->array_options["options_$key"]; $attributeType = $extrafields->attribute_type[$key]; $attributeLabel = $extrafields->attribute_label[$key]; $attributeParam = $extrafields->attribute_param[$key]; @@ -4274,17 +4275,17 @@ abstract class CommonObject } elseif ($value=='') { - $this->array_options[$key] = null; + $this->array_options["options_$key"] = null; } break; case 'price': - $this->array_options[$key] = price2num($this->array_options[$key]); + $this->array_options["options_$key"] = price2num($this->array_options["options_$key"]); break; case 'date': - $this->array_options[$key]=$this->db->idate($this->array_options[$key]); + $this->array_options["options_$key"]=$this->db->idate($this->array_options["options_$key"]); break; case 'datetime': - $this->array_options[$key]=$this->db->idate($this->array_options[$key]); + $this->array_options["options_$key"]=$this->db->idate($this->array_options["options_$key"]); break; case 'link': $param_list=array_keys($attributeParam ['options']); @@ -4296,13 +4297,13 @@ abstract class CommonObject if ($value) { $object->fetch(0,$value); - $this->array_options[$key]=$object->id; + $this->array_options["options_$key"]=$object->id; } break; } $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key=$value"; + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key=".$this->array_options["options_$key"]; $sql .= " WHERE fk_object = ".$this->id; $resql = $this->db->query($sql); if (! $resql) From e673c1aad90fe814d31a2fef8f44d80773cbb16f Mon Sep 17 00:00:00 2001 From: abb Date: Sat, 16 Apr 2016 16:12:50 +0100 Subject: [PATCH 230/380] fix:erroneous nested form --- htdocs/fichinter/card.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 74f50f26a5b..74bd63f2219 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1261,12 +1261,6 @@ else if ($id > 0 || ! empty($ref)) // Print form confirm print $formconfirm; - print ''; - print ''; - if ($action == 'edit_extras') print ''; - if ($action == 'contrat') print ''; - print ''; - print ''; $linkback = ''.$langs->trans("BackToList").''; @@ -1406,8 +1400,6 @@ else if ($id > 0 || ! empty($ref)) print "
    "; - print ''; - if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { $blocname = 'contacts'; From c77e121553df7541d4faebc4e397b07d29a63970 Mon Sep 17 00:00:00 2001 From: abb Date: Sat, 16 Apr 2016 17:47:49 +0100 Subject: [PATCH 231/380] fix:use of function updateExtrafield instead of insertExtrafields in interventions --- htdocs/fichinter/card.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 74f50f26a5b..61ddfad76e4 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -882,8 +882,7 @@ if (empty($reshook)) $parameters=array('id'=>$object->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) - { - $result=$object->insertExtraFields(); + { $result=$object->updateExtraField($_POST["attribute"]); if ($result < 0) { $error++; From ee9f1f32c16f15cd3bd012cab98a459c2099d51f Mon Sep 17 00:00:00 2001 From: Fixit Management Date: Tue, 19 Apr 2016 12:43:50 +0200 Subject: [PATCH 232/380] 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 233/380] 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 0a52abab5df8cca431a71f9f4cecf1f5bd06ad90 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 19 Apr 2016 13:38:32 +0200 Subject: [PATCH 234/380] Fix: broken multicompany transverse mode authentication feature --- htdocs/user/class/user.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 85f340b1cb1..1ee07e0a7af 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -207,7 +207,10 @@ class User extends CommonObject } else // The fetch was forced on an entity { - $sql.= " WHERE u.entity IN (0, ".$conf->entity.")"; + if (!empty($conf->multicompany->enabled) && !empty($conf->multicompany->transverse_mode)) + $sql.= " WHERE u.entity IS NOT NULL"; // multicompany is on in transverse mode or user making fetch is on entity 0, so user is allowed to fetch anywhere into database + else + $sql.= " WHERE u.entity IN (0, ".$conf->entity.")"; } if ($sid) // permet une recherche du user par son SID ActiveDirectory ou Samba From 1a552cbd16a5980f25e65ef79b61c7981acafc4e Mon Sep 17 00:00:00 2001 From: frederic34 Date: Tue, 19 Apr 2016 18:27:56 +0200 Subject: [PATCH 235/380] typo --- htdocs/admin/mails.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index cc824355fc8..b507ac89a50 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -451,7 +451,7 @@ if ($action == 'edit') print '
    '; print ''; print ''; @@ -152,11 +265,20 @@ if ($_SESSION['website_mode'] == 'edit') print "\n"; print ''; + if ($action != 'addpage') + { + print ''; + } + print '
    '.$langs->trans("Description").'
    '; - print $langs->trans('WEBSITE_PAGEURL'); + print $langs->trans('WEBSITE_PAGENAME'); print ''; - print '/public/websites/'.$website.'/index.php?page=home'; + print ''; print '
    '; + print $langs->trans('WEBSITE_URL'); + print ''; + print '/public/websites/'.$website.'/index.php?page='.urlencode($page); + print '
    '; print $langs->trans('WEBSITE_TITLE'); print ''; @@ -178,9 +300,16 @@ if ($_SESSION['website_mode'] == 'edit') print '
    '; print '
    '; - - - /* +} + +if ($action == 'editmenu') +{ + print '
    '.$langs->trans("FeatureNotYetAvailable").''; +} + +if ($action == 'editcontent') +{ +/* * Editing global variables not related to a specific theme */ @@ -197,14 +326,19 @@ if ($_SESSION['website_mode'] == 'edit') require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('WEBSITE_FOOTER',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); $doleditor->Create(); - - print '
    '; - - print ''; } +print ''; + +if ($action == 'preview') +{ + print '
    Preview TO DO'; +} + + + llxFooter(); $db->close(); diff --git a/htdocs/websites/indexold.php b/htdocs/websites/indexold.php deleted file mode 100644 index db7b69e1bdd..00000000000 --- a/htdocs/websites/indexold.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * 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/externalsite/frames.php - * \ingroup externalsite - * \brief Page that build two frames: One for menu, the other for the target page to show - * \author Laurent Destailleur - */ - -require '../main.inc.php'; - -$langs->load("website"); - - -$mainmenu=GETPOST('mainmenu', 'alpha'); -$leftmenu=GETPOST('leftmenu', 'alpha'); -$idmenu=GETPOST('idmenu', 'int'); -$theme=GETPOST('theme', 'alpha'); -$codelang=GETPOST('lang', 'alpha'); - -print " - - -Dolibarr frame for web site menu - - -global->MAIN_MENU_INVERT)?"rows":"cols")."=\"".($heightforframes+50).",*\" border=0 framespacing=0 frameborder=0> - - - - <body> - - </body> - - - - -<body> - <br><div class=\"center\"> - Sorry, your browser is too old or not correctly configured to view this area.<br> - Your browser must support frames.<br> - </div> -</body> - - - -"; - - From 08c379ad58d181c8f8cac54209f39e03bb67f055 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 19 Apr 2016 19:15:31 +0200 Subject: [PATCH 237/380] Fix submit photo is no more hidden on smartphone. --- htdocs/contact/card.php | 4 ++-- htdocs/core/class/html.form.class.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 5dbeeb951dd..a2232358a99 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -972,8 +972,8 @@ else print ''; // Photo - print ''; - print ''.fieldLabel('Photo','photoinput').''; + print ''; + print ''.$langs->trans("PhotoFile").''; print ''; if ($object->photo) { print $form->showphoto('contact',$object); diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index b3822143167..67fd082c206 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5765,7 +5765,7 @@ class Form if ($caneditfield) { if ($object->photo) $ret.="
    \n"; - $ret.=''; + $ret.='
    '; if ($object->photo) $ret.=''; $ret.=''; $ret.=''; From c298b783ce8865c3e1cb0ba89cfdf7c251befa78 Mon Sep 17 00:00:00 2001 From: Philippe-OpenDSI Date: Wed, 20 Apr 2016 13:59:13 +0200 Subject: [PATCH 238/380] Product supplier list display only one product Last parameter of select_produits_fournisseurs_list is $limit, not $socidif --- htdocs/product/ajax/products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index c17fdb65aea..05efcc24a0e 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -183,7 +183,7 @@ if (! empty($action) && $action == 'fetch' && ! empty($id)) if (empty($mode) || $mode == 1) { $arrayresult = $form->select_produits_list("", $htmlname, $type, "", $price_level, $searchkey, $status, $finished, $outjson, $socid); } elseif ($mode == 2) { - $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson, $socid); + $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson); } $db->close(); From 79f408feebde0f24599c9a9e9ff24acae73f199d Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 20 Apr 2016 17:17:03 +0200 Subject: [PATCH 239/380] FIX : When cloning an order the order result from clone must be now --- htdocs/commande/class/commande.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index f184e6f6358..af73be2330d 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -985,6 +985,7 @@ class Commande extends CommonOrder $this->user_author_id = $user->id; $this->user_valid = ''; $this->date = dol_now(); + $this->date_commande = dol_now(); $this->date_creation = ''; $this->date_validation = ''; $this->ref_client = ''; @@ -1253,7 +1254,7 @@ class Commande extends CommonOrder $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. - + $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; @@ -1386,7 +1387,7 @@ class Commande extends CommonOrder if (empty($tva_tx)) $tva_npr=0; $localtax1_tx=get_localtax($tva_tx,1,$this->client,$mysoc,$tva_npr); $localtax2_tx=get_localtax($tva_tx,2,$this->client,$mysoc,$tva_npr); - + // multiprix if($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) $price = $prod->multiprices[$this->client->price_level]; @@ -2481,7 +2482,7 @@ class Commande extends CommonOrder $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty, $mysoc); $txtva = preg_replace('/\s*\(.*\)/','',$txtva); // Remove code into vatrate. - + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, $mysoc, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; @@ -2918,7 +2919,7 @@ class Commande extends CommonOrder function LibStatut($statut,$billed,$mode,$donotshowbilled=0) { global $langs, $conf; - + $billedtext = ''; if (empty($donotshowbilled)) $billedtext .= ($billed?' - '.$langs->trans("Billed"):''); From 7bf9c2144e289a928a15e24ae5be837342f1ced5 Mon Sep 17 00:00:00 2001 From: placid0w Date: Wed, 20 Apr 2016 15:43:14 -0300 Subject: [PATCH 240/380] Fix #5054 --- htdocs/webservices/server_productorservice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php index 2e3314fff12..43facbb24fa 100644 --- a/htdocs/webservices/server_productorservice.php +++ b/htdocs/webservices/server_productorservice.php @@ -374,7 +374,7 @@ function getProductOrService($authentication,$id='',$ref='',$ref_ext='',$lang='' $product->load_stock(); $dir = (!empty($conf->product->dir_output)?$conf->product->dir_output:$conf->service->dir_output); - $pdir = get_exdir($product->id,2,0,0,$product,'product') . $product->id ."/photos/"; + $pdir = get_exdir($product->id,2,0,0,$product,'product') . $product->ref . "/"; $dir = $dir . '/'. $pdir; if (! empty($product->multilangs[$langs->defaultlang]["label"])) $product->label = $product->multilangs[$langs->defaultlang]["label"]; From e1d55d280eab94778ffe3092f2c57a829a01d42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 20 Apr 2016 22:29:27 +0200 Subject: [PATCH 241/380] Update printgcp.modules.php --- .../modules/printing/printgcp.modules.php | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index 5177e108f40..610df641deb 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -65,52 +65,52 @@ class printing_printgcp extends PrintingDriver $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 - $this->db = $db; - $this->google_id = $conf->global->OAUTH_GOOGLE_ID; - $this->google_secret = $conf->global->OAUTH_GOOGLE_SECRET; - // Token storage - $storage = new DoliStorage($this->db, $this->conf); - //$storage->clearToken('Google'); - // Setup the credentials for the requests - $credentials = new Credentials( - $this->google_id, - $this->google_secret, - $urlwithroot.'/core/modules/oauth/google_oauthcallback.php' - ); - $access = ($storage->hasAccessToken('Google')?'HasAccessToken':'NoAccessToken'); - $serviceFactory = new \OAuth\ServiceFactory(); - $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); - $token_ok=true; - try { - $token = $storage->retrieveAccessToken('Google'); - } catch (Exception $e) { - $this->errors[] = $e->getMessage(); - $token_ok = false; - } - //var_dump($this->errors);exit; - - $expire = false; - // Is token expired or will token expire in the next 30 seconds - if ($token_ok) { - $expire = ($token->getEndOfLife() !== -9002 && $token->getEndOfLife() !== -9001 && time() > ($token->getEndOfLife() - 30)); - } - - // Token expired so we refresh it - if ($token_ok && $expire) { - try { - // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois - $refreshtoken = $token->getRefreshToken(); - $token = $apiService->refreshAccessToken($token); - $token->setRefreshToken($refreshtoken); - $storage->storeAccessToken('Google', $token); - } catch (Exception $e) { - $this->errors[] = $e->getMessage(); - } - } if (!$conf->oauth->enabled) { $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'ModuleAuthNotActive', 'type'=>'info'); } else { + $this->db = $db; + $this->google_id = $conf->global->OAUTH_GOOGLE_ID; + $this->google_secret = $conf->global->OAUTH_GOOGLE_SECRET; + // Token storage + $storage = new DoliStorage($this->db, $this->conf); + //$storage->clearToken('Google'); + // Setup the credentials for the requests + $credentials = new Credentials( + $this->google_id, + $this->google_secret, + $urlwithroot.'/core/modules/oauth/google_oauthcallback.php' + ); + $access = ($storage->hasAccessToken('Google')?'HasAccessToken':'NoAccessToken'); + $serviceFactory = new \OAuth\ServiceFactory(); + $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); + $token_ok=true; + try { + $token = $storage->retrieveAccessToken('Google'); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $token_ok = false; + } + //var_dump($this->errors);exit; + + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if ($token_ok) { + $expire = ($token->getEndOfLife() !== -9002 && $token->getEndOfLife() !== -9001 && time() > ($token->getEndOfLife() - 30)); + } + + // Token expired so we refresh it + if ($token_ok && $expire) { + try { + // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois + $refreshtoken = $token->getRefreshToken(); + $token = $apiService->refreshAccessToken($token); + $token->setRefreshToken($refreshtoken); + $storage->storeAccessToken('Google', $token); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } + } if ($this->google_id != '' && $this->google_secret != '') { $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'GoogleAuthConfigured', 'type'=>'info'); $this->conf[] = array('varname'=>'PRINTGCP_TOKEN_ACCESS', 'info'=>$access, 'type'=>'info', 'renew'=>$urlwithroot.'/core/modules/oauth/google_oauthcallback.php?state=userinfo_email,userinfo_profile,cloud_print&backtourl='.urlencode(DOL_URL_ROOT.'/printing/admin/printing.php?mode=setup&driver=printgcp'), 'delete'=>($storage->hasAccessToken('Google')?$urlwithroot.'/core/modules/oauth/google_oauthcallback.php?action=delete&backtourl='.urlencode(DOL_URL_ROOT.'/printing/admin/printing.php?mode=setup&driver=printgcp'):'')); From e3e2b8750624063ca92a8ae288e3548df93a5cdc Mon Sep 17 00:00:00 2001 From: Philippe-OpenDSI Date: Wed, 20 Apr 2016 13:59:13 +0200 Subject: [PATCH 242/380] Product supplier list display only one product Last parameter of select_produits_fournisseurs_list is $limit, not $socidif --- htdocs/product/ajax/products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index c17fdb65aea..05efcc24a0e 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -183,7 +183,7 @@ if (! empty($action) && $action == 'fetch' && ! empty($id)) if (empty($mode) || $mode == 1) { $arrayresult = $form->select_produits_list("", $htmlname, $type, "", $price_level, $searchkey, $status, $finished, $outjson, $socid); } elseif ($mode == 2) { - $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson, $socid); + $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson); } $db->close(); From d043c9ce80be068239eb010877d5d4f3568f8d15 Mon Sep 17 00:00:00 2001 From: placid0w Date: Wed, 20 Apr 2016 15:43:14 -0300 Subject: [PATCH 243/380] Fix #5054 --- htdocs/webservices/server_productorservice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php index 2e3314fff12..43facbb24fa 100644 --- a/htdocs/webservices/server_productorservice.php +++ b/htdocs/webservices/server_productorservice.php @@ -374,7 +374,7 @@ function getProductOrService($authentication,$id='',$ref='',$ref_ext='',$lang='' $product->load_stock(); $dir = (!empty($conf->product->dir_output)?$conf->product->dir_output:$conf->service->dir_output); - $pdir = get_exdir($product->id,2,0,0,$product,'product') . $product->id ."/photos/"; + $pdir = get_exdir($product->id,2,0,0,$product,'product') . $product->ref . "/"; $dir = $dir . '/'. $pdir; if (! empty($product->multilangs[$langs->defaultlang]["label"])) $product->label = $product->multilangs[$langs->defaultlang]["label"]; From ffd10a75608eebad55ae782323fe9fc9b5b622f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 21 Apr 2016 02:38:49 +0200 Subject: [PATCH 244/380] Complete function loadExpedition to add filter on fk_product --- htdocs/commande/class/commande.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index ae7c18ac077..dc3a3c254a4 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1844,13 +1844,13 @@ class Commande extends CommonOrder /** * Load array this->expeditions of lines of shipments with nb of products sent for each order line - * + * Note: For a dedicated shipment, the fetch_lines load the qty_asked and qty_shipped. This function return qty_shipped cuulated for order + * * @param int $filtre_statut Filter on status + * @param int $fk_product Filter on a product * @return int <0 if KO, Nb of lines found if OK - * - * TODO deprecate, move to Shipping class */ - function loadExpeditions($filtre_statut=-1) + function loadExpeditions($filtre_statut=-1, $fk_product=0) { $this->expeditions = array(); @@ -1863,6 +1863,7 @@ class Commande extends CommonOrder if ($filtre_statut >= 0) $sql.= ' ed.fk_expedition = e.rowid AND'; $sql.= ' ed.fk_origin_line = cd.rowid'; $sql.= ' AND cd.fk_commande =' .$this->id; + if ($this->fk_product > 0) $sql.= ' AND cd.fk_product = '.$this->fk_product; if ($filtre_statut >= 0) $sql.=' AND e.fk_statut >= '.$filtre_statut; $sql.= ' GROUP BY cd.rowid, cd.fk_product'; //print $sql; From d9e846e5860c4cf5dee2b1948b4a125befb12cb0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 21 Apr 2016 02:47:34 +0200 Subject: [PATCH 245/380] Update migrate script --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 ++ 1 file changed, 2 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 cd74edd4c3f..7ce46730aa9 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 @@ -102,6 +102,8 @@ UPDATE llx_projet as p set p.opp_percent = (SELECT percent FROM llx_c_lead_statu ALTER TABLE llx_facturedet ADD COLUMN fk_contract_line integer NULL AFTER rang; ALTER TABLE llx_facturedet_rec ADD COLUMN import_key varchar(14); +--DROP TABLE llx_website_page; +--DROP TABLE llx_website; CREATE TABLE llx_website ( rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY, From c2de7adb327473fc2f80db6d9103967208c81794 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 21 Apr 2016 03:18:42 +0200 Subject: [PATCH 246/380] Minor PHPCS fixes --- ChangeLog | 1 + dev/skeletons/skeleton_class.class.php | 1 - htdocs/categories/class/api_category.class.php | 2 ++ htdocs/websites/class/websitepage.class.php | 10 ++++------ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec9b5d50ba0..06310ddce07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,6 +26,7 @@ Following changes may create regression for some external modules, but were nece Dolibarr better: - Function log() of class CommandeFournisseur has been removed. Using it is no more required. - 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'; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index 9a230a05698..2858e791ce8 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -71,7 +71,6 @@ class Skeleton_Class extends CommonObject public function __construct(DoliDB $db) { $this->db = $db; - return 1; } /** diff --git a/htdocs/categories/class/api_category.class.php b/htdocs/categories/class/api_category.class.php index 5e558ddc486..e17bb273758 100644 --- a/htdocs/categories/class/api_category.class.php +++ b/htdocs/categories/class/api_category.class.php @@ -144,6 +144,7 @@ class CategoryApi extends DolibarrApi $result = $db->query($sql); if ($result) { + $i=0; $num = $db->num_rows($result); while ($i < $num) { @@ -224,6 +225,7 @@ class CategoryApi extends DolibarrApi $result = $db->query($sql); if ($result) { + $i=0; $num = $db->num_rows($result); while ($i < $num) { diff --git a/htdocs/websites/class/websitepage.class.php b/htdocs/websites/class/websitepage.class.php index a001c8ad56c..88b6cee2401 100644 --- a/htdocs/websites/class/websitepage.class.php +++ b/htdocs/websites/class/websitepage.class.php @@ -55,9 +55,9 @@ class WebsitePage extends CommonObject public $keywords; public $content; public $status; - public $date_creation = ''; - public $date_modification = ''; - public $tms = ''; + public $date_creation; + public $date_modification; + public $tms; /** */ @@ -71,7 +71,6 @@ class WebsitePage extends CommonObject public function __construct(DoliDB $db) { $this->db = $db; - return 1; } /** @@ -546,11 +545,10 @@ class WebsitePage extends CommonObject global $dolibarr_main_authentication, $dolibarr_main_demo; global $menumanager; - $result = ''; $companylink = ''; - $label = '' . $langs->trans("MyModule") . ''; + $label = '' . $langs->trans("Page") . ''; $label.= '
    '; $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; From fd9fb505b97230bd3514c16e33c4d7d75cc2e9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 Apr 2016 07:53:22 +0200 Subject: [PATCH 247/380] Update printgcp.modules.php --- htdocs/core/modules/printing/printgcp.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index 610df641deb..3911c4d6be2 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -64,12 +64,12 @@ class printing_printgcp extends PrintingDriver $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 + $this->db = $db; if (!$conf->oauth->enabled) { $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'ModuleAuthNotActive', 'type'=>'info'); } else { - $this->db = $db; $this->google_id = $conf->global->OAUTH_GOOGLE_ID; $this->google_secret = $conf->global->OAUTH_GOOGLE_SECRET; // Token storage From 2fc876f60773cc8d49f51f2768bc6634a962d7ca Mon Sep 17 00:00:00 2001 From: Philippe-OpenDSI Date: Thu, 21 Apr 2016 08:41:45 +0200 Subject: [PATCH 248/380] FIX #5048 Product supplier list display only one produc Last parameter of select_produits_fournisseurs_list is $limit, not $socid --- htdocs/product/ajax/products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index c17fdb65aea..05efcc24a0e 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -183,7 +183,7 @@ if (! empty($action) && $action == 'fetch' && ! empty($id)) if (empty($mode) || $mode == 1) { $arrayresult = $form->select_produits_list("", $htmlname, $type, "", $price_level, $searchkey, $status, $finished, $outjson, $socid); } elseif ($mode == 2) { - $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson, $socid); + $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson); } $db->close(); From adde434708ffb35a237ea753402306f5266d25fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 21 Apr 2016 08:52:10 +0200 Subject: [PATCH 249/380] Update 3.9.0-4.0.0.sql --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 ++ 1 file changed, 2 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 7ce46730aa9..094084d6849 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 @@ -385,5 +385,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value ALTER TABLE llx_product_fournisseur_price ADD supplier_reputation varchar(10) NULL; +ALTER TABLE llx_product ADD COLUMN default_vat_code varchar(10) after cost_price; + -- Delete old deprecated field ALTER TABLE llx_product_stock DROP COLUMN pmp; From 4406cfcbb8313df94928c93415ec6d22e6b6c75d Mon Sep 17 00:00:00 2001 From: abb Date: Thu, 21 Apr 2016 14:20:58 +0100 Subject: [PATCH 250/380] fix:missing quote in query in updatefield function --- 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 a4dca05ce82..59871c85d52 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4295,7 +4295,7 @@ abstract class CommonObject } $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key=".$this->array_options["options_$key"]; + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key='".$this->array_options["options_$key"]."'"; $sql .= " WHERE fk_object = ".$this->id; $resql = $this->db->query($sql); if (! $resql) From a0f57e6a91f316c29905fe4048279e101968bdee Mon Sep 17 00:00:00 2001 From: abb Date: Thu, 21 Apr 2016 14:49:46 +0100 Subject: [PATCH 251/380] fix:add escape function to query in updatefield function --- 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 59871c85d52..d42add2a36c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4295,7 +4295,7 @@ abstract class CommonObject } $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key='".$this->array_options["options_$key"]."'"; + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET $key='".$this->db->escape($this->array_options["options_$key"])."'"; $sql .= " WHERE fk_object = ".$this->id; $resql = $this->db->query($sql); if (! $resql) From 8f3a254259bba32baf0ec532ad5eb62d0bad2a0d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 22 Apr 2016 06:31:40 +0200 Subject: [PATCH 252/380] FIX: Bug with category functionnality --- htdocs/core/class/html.formaccounting.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formaccounting.class.php b/htdocs/core/class/html.formaccounting.class.php index 9f75316ed14..04d643d4b2f 100644 --- a/htdocs/core/class/html.formaccounting.class.php +++ b/htdocs/core/class/html.formaccounting.class.php @@ -67,7 +67,7 @@ class FormAccounting $sql = "SELECT c.rowid, c.label as type, c.range_account"; $sql.= " FROM ".MAIN_DB_PREFIX."c_accounting_category as c"; $sql.= " WHERE c.active = 1"; - $sql.= " AND c.account_type = 0"; + $sql.= " AND c.category_type = 0"; $sql.= " AND c.fk_country = ".$mysoc->country_id; $sql.= " ORDER BY c.label ASC"; } From 4a078db060f670eac705d710e4962e5014ad0178 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 22 Apr 2016 06:57:37 +0200 Subject: [PATCH 253/380] FIX: Migration script --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 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 7ce46730aa9..f793a6b471a 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 @@ -365,7 +365,7 @@ 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; +ALTER TABLE llx_accounting_account MODIFY COLUMN account_parent integer DEFAULT 0; DROP INDEX uk_bordereau_cheque ON llx_bordereau_cheque; From 24fddaa0390babe9fd04c5779adc8f33ef868c10 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 22 Apr 2016 06:58:18 +0200 Subject: [PATCH 254/380] Hidden old functions --- htdocs/accountancy/admin/account.php | 4 ++-- htdocs/accountancy/admin/export.php | 6 ++++-- htdocs/accountancy/bookkeeping/list.php | 10 +++++----- htdocs/core/modules/modAccounting.class.php | 8 ++++++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 70f191f3679..623cb44cb28 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -145,8 +145,8 @@ if ($result) { print '
    '; print '' . $langs->trans("Addanaccount") . ''; - print '' . $langs->trans("ImportAccount") . ''; - print '' . $langs->trans("CheckProductAccountancyCode") . ''; + // print '' . $langs->trans("ImportAccount") . ''; + // print '' . $langs->trans("CheckProductAccountancyCode") . ''; print '

    '; print '
    '.$langs->trans("Delete").'

    '.$langs->trans("PhotoFile").'
    '; diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php index 7b4ca7f91ce..14d91d85581 100644 --- a/htdocs/accountancy/admin/export.php +++ b/htdocs/accountancy/admin/export.php @@ -50,12 +50,14 @@ $main_option = array ( $model_option = array ( 'ACCOUNTING_EXPORT_SEPARATORCSV', - 'ACCOUNTING_EXPORT_DATE', + 'ACCOUNTING_EXPORT_DATE' + /* 'ACCOUNTING_EXPORT_PIECE', 'ACCOUNTING_EXPORT_GLOBAL_ACCOUNT', 'ACCOUNTING_EXPORT_LABEL', 'ACCOUNTING_EXPORT_AMOUNT', - 'ACCOUNTING_EXPORT_DEVISE' + 'ACCOUNTING_EXPORT_DEVISE' + */ ); /* diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 5d3dcd737a8..f287c0ad9dd 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -385,7 +385,7 @@ else { print_liste_field_titre($langs->trans("Labelcompte"), $_SERVER['PHP_SELF'], "bk_label_compte", "", $options, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "t.debit", "", $options, 'align="right"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "t.credit", "", $options, 'align="right"', $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "t.code_journal", "", $options, 'align="right"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "t.code_journal", "", $options, 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Action"), $_SERVER["PHP_SELF"], "", $options, "", 'width="60" align="center"', $sortfield, $sortorder); print "\n"; @@ -396,7 +396,7 @@ else { print $langs->trans('From') . ': '; print $form->select_date($search_date_start, 'date_start', 0, 0, 1); print '
    '; - print $langs->trans('To') . ': '; + print $langs->trans('to') . ': '; print $form->select_date($search_date_end, 'date_end', 0, 0, 1); print ''; print ''; @@ -404,14 +404,14 @@ else { print $langs->trans('From'); print $formventilation->select_account($search_accountancy_code_start, 'search_accountancy_code_start', 1, array (), 1, 1, ''); print '
    '; - print $langs->trans('To'); + print $langs->trans('to'); print $formventilation->select_account($search_accountancy_code_end, 'search_accountancy_code_end', 1, array (), 1, 1, ''); print ''; print ''; @@ -450,7 +450,7 @@ else { print ''; print ''; print ''; - print ''; + print ''; print ' - - - - - - - - - - - - -
    '; print $langs->trans('From'); print $formventilation->select_auxaccount($search_accountancy_aux_code_start, 'search_accountancy_aux_code_start', 1); print '
    '; - print $langs->trans('To'); + print $langs->trans('to'); print $formventilation->select_auxaccount($search_accountancy_aux_code_end, 'search_accountancy_aux_code_end', 1); print '
    ' . $line->label_compte . '' . price($line->debit) . '' . price($line->credit) . '' . $line->code_journal . '' . $line->code_journal . ''; print '' . img_edit() . ' '; print '' . img_delete() . ''; diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index e2c50c23d53..04fccce1285 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2013-2015 Alexandre Spangaro + * Copyright (C) 2013-2016 Alexandre Spangaro * Copyright (C) 2014 Ari Elbaz (elarifr) * Copyright (C) 2014 Florian Henry * @@ -20,7 +20,7 @@ /** * \file htdocs/core/modules/modAccounting.class.php - * \ingroup Accounting Expert + * \ingroup Advanced accountancy * \brief Module to activate Accounting Expert module */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; @@ -157,16 +157,19 @@ class modAccounting extends DolibarrModules "yesno", "1" ); + /* $this->const[15] = array ( "ACCOUNTING_GROUPBYACCOUNT", "yesno", "1" ); + */ $this->const[16] = array ( "ACCOUNTING_EXPORT_DATE", "chaine", "%d%m%Y" ); + /* $this->const[17] = array ( "ACCOUNTING_EXPORT_PIECE", "yesno", @@ -192,6 +195,7 @@ class modAccounting extends DolibarrModules "yesno", "1" ); + */ $this->const[22] = array( "ACCOUNTING_EXPENSEREPORT_JOURNAL", "chaine", From df91a95b9be5a1cd251490f0b8f616d1fbac81dd Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 22 Apr 2016 07:05:24 +0200 Subject: [PATCH 255/380] FIX: Add right to manage chart of accounts for non-admin --- htdocs/accountancy/admin/account.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 623cb44cb28..94ce450ff30 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -43,7 +43,9 @@ $search_pcgtype = GETPOST("search_pcgtype"); $search_pcgsubtype = GETPOST("search_pcgsubtype"); // Security check -if (! $user->admin) +if ($user->societe_id > 0) + accessforbidden(); +if (! $user->rights->accounting->chartofaccount) accessforbidden(); $sortfield = GETPOST("sortfield", 'alpha'); From bea8b49d8ce5e8acc25dfdc3e9818e2217e7c64a Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 09:02:40 +0200 Subject: [PATCH 256/380] Fix log function was removed in 1b6fa8ec34b80a4231a19626bdb0443daf1decf2 --- htdocs/fourn/class/fournisseur.commande.class.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 7de088785de..154d16de539 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1155,9 +1155,6 @@ class CommandeFournisseur extends CommonOrder dol_syslog(get_class($this)."::create", LOG_DEBUG); if ($this->db->query($sql)) { - // Add entry into log - $this->log($user, 0, $now); - // Add link with price request and supplier order if ($this->id) { From 4bd239060c1421ff507bda8f12835e6a4d71d497 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 09:18:09 +0200 Subject: [PATCH 257/380] Fix order creation bug because of ->client --- htdocs/commande/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index db80893f426..d6fa064df39 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1380,7 +1380,7 @@ if ($action == 'create' && $user->rights->commande->creer) $projectid = (! empty($objectsrc->fk_project) ? $objectsrc->fk_project : ''); $ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : ''); - $soc = $objectsrc->client; + $soc = $objectsrc->thirdparty; $cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); $mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0)); $fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0)); From 0c7d7245a8263edaa00f282305a7abfeb6a2884f Mon Sep 17 00:00:00 2001 From: philippe grand Date: Fri, 22 Apr 2016 09:37:35 +0200 Subject: [PATCH 258/380] missing translation --- htdocs/langs/en_US/errors.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index a3376a336bb..56e136f5e52 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -6,6 +6,7 @@ NoErrorCommitIsDone=No error, we commit ErrorButCommitIsDone=Errors found but we validate despite this ErrorBadEMail=EMail %s is wrong ErrorBadUrl=Url %s is wrong +ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. ErrorLoginAlreadyExists=Login %s already exists. ErrorGroupAlreadyExists=Group %s already exists. ErrorRecordNotFound=Record not found. From e8817019687c06d937f1fdbe5f3240939a999d00 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 09:46:47 +0200 Subject: [PATCH 259/380] Fix pdf generation with thirdparty --- htdocs/compta/facture.php | 4 ++-- htdocs/core/actions_builddoc.inc.php | 2 +- htdocs/core/lib/sendings.lib.php | 2 +- .../modules/commande/doc/pdf_einstein.modules.php | 6 +++--- .../modules/expedition/doc/pdf_merou.modules.php | 10 +++++----- .../modules/expedition/doc/pdf_rouget.modules.php | 10 +++++----- .../core/modules/facture/doc/pdf_crabe.modules.php | 6 +++--- .../modules/fichinter/doc/pdf_soleil.modules.php | 10 +++++----- .../modules/livraison/doc/pdf_typhon.modules.php | 8 ++++---- .../propale/doc/doc_generic_proposal_odt.modules.php | 4 ++-- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 10 +++++----- .../supplier_proposal/doc/pdf_aurore.modules.php | 12 ++++++------ 12 files changed, 42 insertions(+), 42 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 491c4ca041a..51625370ed4 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1127,8 +1127,8 @@ if (empty($reshook)) } // View third's localtaxes for now - $localtax1_tx = get_localtax($lines[$i]->tva_tx, 1, $object->client); - $localtax2_tx = get_localtax($lines[$i]->tva_tx, 2, $object->client); + $localtax1_tx = get_localtax($lines[$i]->tva_tx, 1, $object->thirdparty); + $localtax2_tx = get_localtax($lines[$i]->tva_tx, 2, $object->thirdparty); $result = $object->addline($desc, $lines[$i]->subprice, $lines[$i]->qty, $lines[$i]->tva_tx, $localtax1_tx, $localtax2_tx, $lines[$i]->fk_product, $lines[$i]->remise_percent, $date_start, $date_end, 0, $lines[$i]->info_bits, $lines[$i]->fk_remise_except, 'HT', 0, $product_type, $lines[$i]->rang, $lines[$i]->special_code, $object->origin, $lines[$i]->rowid, $fk_parent_line, $lines[$i]->fk_fournprice, $lines[$i]->pa_ht, $label, $array_options, $lines[$i]->situation_percent, $lines[$i]->fk_prev_id, $lines[$i]->fk_unit); diff --git a/htdocs/core/actions_builddoc.inc.php b/htdocs/core/actions_builddoc.inc.php index 29ae4eb3365..9502d723013 100644 --- a/htdocs/core/actions_builddoc.inc.php +++ b/htdocs/core/actions_builddoc.inc.php @@ -64,7 +64,7 @@ if ($action == 'builddoc' && $permissioncreate) $outputlangs = $langs; $newlang=''; if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($object->client->default_lang)) $newlang=$object->client->default_lang; // for proposal, order, invoice, ... + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($object->thirdparty->default_lang)) $newlang=$object->thirdparty->default_lang; // for proposal, order, invoice, ... if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($object->default_lang)) $newlang=$object->default_lang; // for thirdparty if (! empty($newlang)) { diff --git a/htdocs/core/lib/sendings.lib.php b/htdocs/core/lib/sendings.lib.php index 8cfd5f202d5..52e0b9b9e96 100644 --- a/htdocs/core/lib/sendings.lib.php +++ b/htdocs/core/lib/sendings.lib.php @@ -233,7 +233,7 @@ function show_list_sending_receive($origin,$origin_id,$filter='') $outputlangs = $langs; $newlang=''; if (empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if (empty($newlang)) $newlang=$object->client->default_lang; + if (empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 3fc65a8b6a5..6cdb80edaa3 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -1261,7 +1261,7 @@ class pdf_einstein extends ModelePDFCommandes if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -1306,12 +1306,12 @@ class pdf_einstein extends ModelePDFCommandes if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target', $object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target', $object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 769b503d8ac..ac3233533c8 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -542,20 +542,20 @@ class pdf_merou extends ModelePdfExpedition $pdf->SetTextColor(0,0,0); // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); $pdf->SetFont('','', $default_font_size - 3); $pdf->SetXY($blSocX,$blSocY+4); $pdf->MultiCell(80, 2, $carac_emetteur, 0, 'L'); - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $Yoff+=3; $posy=$Yoff; $pdf->SetXY(100,$posy); $pdf->SetTextColor(0,0,0); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } // Date Expedition @@ -628,12 +628,12 @@ class pdf_merou extends ModelePdfExpedition if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name=pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,((!empty($object->contact))?$object->contact:null),$usecontact,'targetwithdetails',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,((!empty($object->contact))?$object->contact:null),$usecontact,'targetwithdetails',$object); $blDestX=$blExpX+55; $blW=54; diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 58da00607b8..e493f1ae2f7 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -827,12 +827,12 @@ class pdf_rouget extends ModelePdfExpedition $pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); } - if (! empty($object->client->code_client)) + if (! empty($object->thirdparty->code_client)) { $posy+=4; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } @@ -881,7 +881,7 @@ class pdf_rouget extends ModelePdfExpedition $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; } - $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; @@ -927,12 +927,12 @@ class pdf_rouget extends ModelePdfExpedition if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,(!empty($object->contact)?$object->contact:null),$usecontact,'targetwithdetails',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,(!empty($object->contact)?$object->contact:null),$usecontact,'targetwithdetails',$object); // Show recipient $widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100; diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 05fc649453a..e96b9bdc5be 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -1554,7 +1554,7 @@ class pdf_crabe extends ModelePDFFactures if ($showaddress) { // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; @@ -1602,12 +1602,12 @@ class pdf_crabe extends ModelePDFFactures if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target',$object); // Show recipient $widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100; diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 08c08474981..60a2b0a0842 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -552,12 +552,12 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Date")." : " . dol_print_date($object->datec,"day",false,$outputlangs,true), '', 'R'); - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $posy+=4; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } if ($showaddress) @@ -572,7 +572,7 @@ class pdf_soleil extends ModelePDFFicheinter $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; } - $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -615,12 +615,12 @@ class pdf_soleil extends ModelePDFFicheinter if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->client, (isset($object->contact)?$object->contact:''), $usecontact, 'target',$object); + $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, (isset($object->contact)?$object->contact:''), $usecontact, 'target',$object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index 4bb0260ecc8..33ac2cb58c9 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -742,12 +742,12 @@ class pdf_typhon extends ModelePDFDeliveryOrder $pdf->SetTextColor(0,0,60); } - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $posy+=5; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } $pdf->SetTextColor(0,0,60); @@ -849,12 +849,12 @@ class pdf_typhon extends ModelePDFDeliveryOrder if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target',$object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 8f8a2edce9b..81439058b38 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -321,14 +321,14 @@ class doc_generic_proposal_odt extends ModelePDFPropales // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; else { - $socobject = $object->client; + $socobject = $object->thirdparty; // if we have a CUSTOMER contact and we dont use it as recipient we store the contact object for later use $contactobject = $object->contact; } } else { - $socobject=$object->client; + $socobject=$object->thirdparty; } // Make substitution $substitutionarray=array( diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 3b3bc707ac7..2981eb3bedc 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1442,12 +1442,12 @@ class pdf_azur extends ModelePDFPropales $pdf->SetTextColor(0,0,60); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateEndPropal")." : " . dol_print_date($object->fin_validite,"day",false,$outputlangs,true), '', 'R'); - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $posy+=4; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } $posy+=2; @@ -1467,7 +1467,7 @@ class pdf_azur extends ModelePDFPropales $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; } - $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -1511,12 +1511,12 @@ class pdf_azur extends ModelePDFPropales if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target',$object); // Show recipient $widthrecbox=100; diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php index 68181831581..62882eecc53 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -1271,12 +1271,12 @@ class pdf_aurore extends ModelePDFSupplierProposal $pdf->MultiCell(100, 3, $outputlangs->transnoentities("SupplierProposalDate")." : " . dol_print_date($object->date_livraison,"day",false,$outputlangs,true), '', 'R'); */ - if ($object->client->code_client) + if ($object->thirdparty->code_client) { $posy+=4; $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } $posy+=2; @@ -1296,7 +1296,7 @@ class pdf_aurore extends ModelePDFSupplierProposal $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; } - $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty); // Show sender $posy=42; @@ -1340,15 +1340,15 @@ class pdf_aurore extends ModelePDFSupplierProposal { // On peut utiliser le nom de la societe du contact if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socname = $object->contact->socname; - else $socname = $object->client->name; + else $socname = $object->thirdparty->name; $carac_client_name=$outputlangs->convToOutputCharset($socname); } else { - $carac_client_name=$outputlangs->convToOutputCharset($object->client->name); + $carac_client_name=$outputlangs->convToOutputCharset($object->thirdparty->name); } - $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target',$object); + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->thirdparty,($usecontact?$object->contact:''),$usecontact,'target',$object); // Show recipient $widthrecbox=100; From 7dd8eba29e8b65e2f951aa6b41bbd5e0db9fa331 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 10:30:13 +0200 Subject: [PATCH 260/380] New contact gender according to civility --- htdocs/contact/class/contact.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 5c0dede1bbc..88cd24af359 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -593,8 +593,15 @@ class Contact extends CommonObject $this->canvas = $obj->canvas; $this->import_key = $obj->import_key; + + // Define gender according to civility + if(in_array($this->civility_id, array('MR'))) { + $this->gender = 'man'; + } else if(in_array($this->civility_id, array('MME','MLE'))) { + $this->gender = 'woman'; + } - // Recherche le user Dolibarr lie a ce contact + // Search Dolibarr user linked to this contact $sql = "SELECT u.rowid "; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.fk_socpeople = ". $this->id; From fc7056650ee39c64a9eab655893b8ec61474273d Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 10:42:06 +0200 Subject: [PATCH 261/380] Fix payment display on customer invoice and replicate on supplier invoice --- htdocs/compta/facture.php | 10 +++++----- htdocs/fourn/facture/card.php | 23 ++++++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 491c4ca041a..3bae221e6dd 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3108,13 +3108,13 @@ else if ($id > 0 || ! empty($ref)) if ($object->type == Facture::TYPE_CREDIT_NOTE) $sign = - 1; - $nbrows = 9; - $nbcols = 2; + $nbrows = 8; + $nbcols = 3; if (! empty($conf->projet->enabled)) $nbrows ++; - if (! empty($conf->banque->enabled)) - $nbcols ++; - // if (! empty($soc->outstandingbill)) $nbrows++; + if (! empty($conf->banque->enabled)) { + $nbrows ++; $nbcols++; + } if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) $nbrows ++; if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index b7e22e9e42f..c1346c357d5 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1271,6 +1271,7 @@ if (empty($reshook)) $form = new Form($db); $formfile = new FormFile($db); $bankaccountstatic=new Account($db); +$paymentstatic=new PaiementFourn($db); llxHeader('',$langs->trans('SupplierInvoice'),''); @@ -1871,7 +1872,7 @@ else /* * List of payments */ - $nbrows=9; $nbcols=2; + $nbrows=9; $nbcols=3; if (! empty($conf->projet->enabled)) $nbrows++; if (! empty($conf->banque->enabled)) { $nbrows++; $nbcols++; } if (! empty($conf->incoterm->enabled)) $nbrows++; @@ -1882,10 +1883,10 @@ else print ''; - $sql = 'SELECT p.datep as dp, p.num_paiement, p.rowid, p.fk_bank,'; + $sql = 'SELECT p.datep as dp, p.ref, p.num_paiement, p.rowid, p.fk_bank,'; $sql.= ' c.id as paiement_type,'; $sql.= ' pf.amount,'; - $sql.= ' ba.rowid as baid, ba.ref, ba.label'; + $sql.= ' ba.rowid as baid, ba.ref as baref, ba.label'; $sql.= ' FROM '.MAIN_DB_PREFIX.'paiementfourn as p'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON p.fk_bank = b.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank_account as ba ON b.fk_account = ba.rowid'; @@ -1902,6 +1903,7 @@ else print ''; print ''; print ''; + print ''; print ''; if (! empty($conf->banque->enabled)) print ''; print ''; @@ -1915,16 +1917,23 @@ else { $objp = $db->fetch_object($result); $var=!$var; - print ''; - print '\n"; + print ''; + print ''; print ''; if (! empty($conf->banque->enabled)) { $bankaccountstatic->id=$objp->baid; - $bankaccountstatic->ref=$objp->ref; - $bankaccountstatic->label=$objp->ref; + $bankaccountstatic->ref=$objp->baref; + $bankaccountstatic->label=$objp->baref; print ''; From a10d97cce03a4e36314db2465f0cea858a7e50b7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 11:09:31 +0200 Subject: [PATCH 262/380] NEW Can filter on status employee when building emailing from users --- .../core/modules/mailings/pomme.modules.php | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/htdocs/core/modules/mailings/pomme.modules.php b/htdocs/core/modules/mailings/pomme.modules.php index ce4a8b89e09..3db13ac824c 100644 --- a/htdocs/core/modules/mailings/pomme.modules.php +++ b/htdocs/core/modules/mailings/pomme.modules.php @@ -26,8 +26,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; /** - * \class mailing_pomme - * \brief Class to offer a selector of emailing targets with Rule 'Peche'. + * Class to offer a selector of emailing targets with Rule 'Peche'. */ class mailing_pomme extends MailingTargets { @@ -112,11 +111,21 @@ class mailing_pomme extends MailingTargets $langs->load("users"); $s=''; + $s.=$langs->trans("Status").': '; $s.=''; + + $s.=' '; + $s.=$langs->trans("Employee").': '; + $s.=''; + return $s; } @@ -142,7 +151,12 @@ class mailing_pomme extends MailingTargets */ function add_to_target($mailing_id,$filtersarray=array()) { - global $conf, $langs; + // Deprecation warning + if ($filtersarray) { + dol_syslog(__METHOD__ . ": filtersarray parameter is deprecated", LOG_WARNING); + } + + global $conf, $langs; $langs->load("companies"); $cibles = array(); @@ -154,11 +168,10 @@ class mailing_pomme extends MailingTargets $sql.= " WHERE u.email <> ''"; // u.email IS NOT NULL est implicite dans ce test $sql.= " AND u.entity IN (0,".$conf->entity.")"; $sql.= " AND u.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".$mailing_id.")"; - foreach($filtersarray as $key) - { - if ($key == '1') $sql.= " AND u.statut=1"; - if ($key == '0') $sql.= " AND u.statut=0"; - } + if (isset($_POST["filter"]) && $_POST["filter"] == '1') $sql.= " AND u.statut=1"; + if (isset($_POST["filter"]) && $_POST["filter"] == '0') $sql.= " AND u.statut=0"; + if (isset($_POST["filteremployee"]) && $_POST["filteremployee"] == '1') $sql.= " AND u.employee=1"; + if (isset($_POST["filteremployee"]) && $_POST["filteremployee"] == '0') $sql.= " AND u.employee=0"; $sql.= " ORDER BY u.email"; // Stocke destinataires dans cibles From d735f5dc70edc49ec860ba2701ddcaa124be5c33 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 11:09:47 +0200 Subject: [PATCH 263/380] FIX lost css change --- dev/dolibarr_changes.txt | 30 ++++++++++++------- .../includes/ckeditor/ckeditor/contents.css | 2 +- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index d666aa02165..a7aed128151 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -10,6 +10,16 @@ Replace "& new" by "new" +CKEDITOR: +--------- +* In ckeditor/ckeditor/contents.css +Replace: + margin: 20px; +With + margin: 5px; + + + NUSOAP: ------- * In file nusoap.php, to avoid a warning, @@ -38,6 +48,7 @@ with: } + TCPDF: ------ * To avoid to have QRcode changed because generated with a random mask, replace @@ -45,13 +56,8 @@ define('QR_FIND_FROM_RANDOM', 2); with define('QR_FIND_FROM_RANDOM', false); -* Removed all fonts except - dejavusans* (used by greek, arab, persan, romanian, turkish), - freemono* (russian), - cid*+msungstdlight+stsongstdlight+uni2cid* (chinese), - helvetica* (all other languages), - zapfdingbats.php (for special chars like form checkboxes) * Removed useless directories (examples, tools) + * Fix // initialize subsetchars $subsetchars = array(); @@ -59,13 +65,18 @@ into // initialize subsetchars $subsetchars = array_fill(0, 256, true); -* Made freemono the default monotype font because we removed courier +* Optionnaly, removed all fonts except + dejavusans* (used by greek, arab, persan, romanian, turkish), + freemono* (russian), + cid*+msungstdlight+stsongstdlight+uni2cid* (chinese), + helvetica* (all other languages), + zapfdingbats.php (for special chars like form checkboxes) + +* Optionnaly, made freemono the default monotype font because we removed courier In htdocs/includes/tcpdf/tcpdf.php - protected $default_monospaced_font = 'courier'; + protected $default_monospaced_font = 'freemono'; -* Renamed getmypid into dol_getmypid(). - TCPDI: @@ -80,7 +91,6 @@ require_once(dirname(__FILE__).'/../tecnickcom/tcpdf/include/tcpdf_filters.php') - JSGANTT: -------- * Replace in function JSGantt.taskLink diff --git a/htdocs/includes/ckeditor/ckeditor/contents.css b/htdocs/includes/ckeditor/ckeditor/contents.css index bef3ebc8b1b..7e990756288 100644 --- a/htdocs/includes/ckeditor/ckeditor/contents.css +++ b/htdocs/includes/ckeditor/ckeditor/contents.css @@ -15,7 +15,7 @@ body /* Remove the background color to make it transparent */ background-color: #fff; - margin: 20px; + margin: 5px; } .cke_editable From 78d18185e49a2ef2ab379819dc8701eeda1f3ff4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 11:11:08 +0200 Subject: [PATCH 264/380] Several css enhancements --- htdocs/adherents/type.php | 7 +-- htdocs/categories/index.php | 2 +- htdocs/comm/action/peruser.php | 2 +- .../modules/mailings/contacts3.modules.php | 18 +++++--- .../modules/mailings/contacts4.modules.php | 23 ++++++---- htdocs/langs/en_US/website.lang | 3 +- htdocs/theme/eldy/style.css.php | 43 +++++++++++-------- htdocs/websites/index.php | 3 +- 8 files changed, 61 insertions(+), 40 deletions(-) diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index bae064bef34..dbc700a6778 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -153,6 +153,7 @@ if ($action == 'delete' && $user->rights->adherent->configurer) exit; } + /* * View */ @@ -236,7 +237,7 @@ if ($action == 'create') print '
    '.$langs->trans('Payments').''.$langs->trans('Date').''.$langs->trans('Type').''.$langs->trans('BankAccount').''.$langs->trans('Amount').'
    '.img_object($langs->trans('ShowPayment'),'payment').' '.dol_print_date($db->jdate($objp->dp),'day')."
    '; + $paymentstatic->id=$objp->rowid; + $paymentstatic->datepaye=$db->jdate($objp->dp); + $paymentstatic->ref=$objp->ref; + $paymentstatic->num_paiement=$objp->num_paiement; + $paymentstatic->payment_code=$objp->payment_code; + print $paymentstatic->getNomUrl(1); + print ''.dol_print_date($db->jdate($objp->dp), 'day') . ''; print $form->form_modes_reglement(null, $objp->paiement_type,'none').' '.$objp->num_paiement; print ''; if ($objp->baid > 0) print $bankaccountstatic->getNomUrl(1,'transactions'); print '
    '; print ''; - print ''; + print ''; print ''; print ''; + print ''; print ''; print ''; + print ''; print ''; print ''; print ''; print ''; +print $langs->trans("Name").':'; /* // faire une rech dans une sous categorie uniquement print ' - - - - - - - - - - - - -
    '.$langs->trans("Label").'
    '.$langs->trans("Label").'
    '.$langs->trans("SubscriptionRequired").''; print $form->selectyesno("cotisation",1,1); @@ -247,7 +248,7 @@ if ($action == 'create') print '
    '.$langs->trans("Description").''; - print '
    '.$langs->trans("WelcomeEMail").''; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; @@ -645,7 +646,7 @@ if ($rowid > 0) print '
    '.$langs->trans("Description").''; - print '
    '.$langs->trans("WelcomeEMail").''; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php index e57cd22d5fd..02b83fcaef8 100644 --- a/htdocs/categories/index.php +++ b/htdocs/categories/index.php @@ -79,7 +79,7 @@ print '
    '.$langs->trans("Search").'
    '; -print $langs->trans("Name").':
    '; diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 621d3ada57a..fa24935316e 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -564,7 +564,7 @@ echo ''; //print "begin_d=".$begin_d." end_d=".$end_d; -echo ''; +echo '
    '; echo ''; echo ''; diff --git a/htdocs/core/modules/mailings/contacts3.modules.php b/htdocs/core/modules/mailings/contacts3.modules.php index 61d992b32aa..b9878fd1c83 100644 --- a/htdocs/core/modules/mailings/contacts3.modules.php +++ b/htdocs/core/modules/mailings/contacts3.modules.php @@ -225,14 +225,22 @@ class mailing_contacts3 extends MailingTargets if ($resql) { $num = $this->db->num_rows($resql); - $i = 0; - while ($i < $num) + if ($num) { - $obj = $this->db->fetch_object($resql); - $s.=''; - $i++; + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + $s.=''; + $i++; + } + } + else + { + $s.=''; } } + else dol_print_error($this->db); $s.=''; return $s; diff --git a/htdocs/core/modules/mailings/contacts4.modules.php b/htdocs/core/modules/mailings/contacts4.modules.php index 631f06ec8f2..421fd2676c8 100644 --- a/htdocs/core/modules/mailings/contacts4.modules.php +++ b/htdocs/core/modules/mailings/contacts4.modules.php @@ -222,16 +222,21 @@ class mailing_contacts4 extends MailingTargets $s=''; $s.=''; return $s; diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 688866a4e5b..13659bc5954 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -10,4 +10,5 @@ EditPageMeta=Edit Meta EditPageContent=Edit Content Website=Web site AddPage=Add page -Page=Page \ No newline at end of file +Page=Page +PreviewOfSiteNotYetAvailable=Preview of your website %s not yet available. You must first add a page. \ No newline at end of file diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index e7fe3a14952..f7519e16f61 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -81,7 +81,8 @@ $dol_use_jmobile=$conf->dol_use_jmobile; // Colors $colorbackhmenu1='120,130,170'; // topmenu $colorbackvmenu1='255,255,255'; // vmenu -$colorbacktitle1='230,230,230'; // title of array +$colortopbordertitle1='40,40,40'; // top border of title +$colorbacktitle1='230,230,230'; // title of tables,list $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; $colorbacklineimpair1='255,255,255'; // line impair @@ -345,7 +346,7 @@ input:-moz-placeholder { color:#ccc; } legend { margin-bottom: 8px; } -fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } +fieldset { border: 1px solid #AAAAAA !important; } .button, input[name="sbmtConnexion"] { @@ -1720,11 +1721,11 @@ div.tabBar { background: rgb(); - + /* -moz-box-shadow: 3px 3px 4px #DDD; -webkit-box-shadow: 3px 3px 4px #DDD; box-shadow: 3px 3px 4px #DDD; - + */ } div.popuptabset { padding: 6px; @@ -2177,17 +2178,17 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-spacing: 0px; border-top-width: 1px; - border-top-color: #BBB; + border-top-color: rgb(); border-top-style: solid; - border-right-width: 1px; +/* border-right-width: 1px; border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; border-left-color: #BBB; border-left-style: solid; - +*/ border-bottom-width: 1px; border-bottom-color: #BBB; border-bottom-style: solid; @@ -2538,6 +2539,10 @@ div.liste_titre { border-top-style: solid; } div.liste_titre_bydiv { + border-top-width: 1px; + border-top-color: rgb(); + border-top-style: solid; + border-collapse: collapse; display: table; padding: 2px 0px 2px 0; @@ -2555,13 +2560,13 @@ div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.list color: #000 !important;*/ /* TO MATCH ELDY */ - background: rgb(); + /*background: rgb();*/ - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); font-weight: ; @@ -2707,13 +2712,13 @@ tr.box_titre { color: #000 !important;*/ /* TO MATCH ELDY */ - background: rgb(); + /* background: rgb(); */ - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); - background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); color: rgb(); diff --git a/htdocs/websites/index.php b/htdocs/websites/index.php index bfcdb9e0c85..ba2a4466b4d 100644 --- a/htdocs/websites/index.php +++ b/htdocs/websites/index.php @@ -334,7 +334,8 @@ print ''; if ($action == 'preview') { - print '
    Preview TO DO'; + print '

    '.$langs->trans("PreviewOfSiteNotYetAvailable", $website).'


    '; + print '
    '; } From ff5f04dee1eb27c5a601e8600660720d66e5032b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 11:11:24 +0200 Subject: [PATCH 265/380] Removed not required directories --- .../examples/barcodes/example_1d_html.php | 53 - .../examples/barcodes/example_1d_png.php | 53 - .../examples/barcodes/example_1d_svg.php | 53 - .../examples/barcodes/example_1d_svgi.php | 53 - .../barcodes/example_2d_datamatrix_html.php | 53 - .../barcodes/example_2d_datamatrix_png.php | 53 - .../barcodes/example_2d_datamatrix_svg.php | 53 - .../barcodes/example_2d_datamatrix_svgi.php | 53 - .../barcodes/example_2d_pdf417_html.php | 53 - .../barcodes/example_2d_pdf417_png.php | 53 - .../barcodes/example_2d_pdf417_svg.php | 53 - .../barcodes/example_2d_pdf417_svgi.php | 53 - .../barcodes/example_2d_qrcode_html.php | 53 - .../barcodes/example_2d_qrcode_png.php | 53 - .../barcodes/example_2d_qrcode_svg.php | 53 - .../barcodes/example_2d_qrcode_svgi.php | 53 - .../barcodes/tcpdf_barcodes_1d_include.php | 37 - .../barcodes/tcpdf_barcodes_2d_include.php | 37 - .../examples/config/tcpdf_config_alt.php | 222 --- .../tcpdf/examples/data/cert/tcpdf.crt | 40 - .../tcpdf/examples/data/cert/tcpdf.fdf | Bin 1286 -> 0 bytes .../tcpdf/examples/data/cert/tcpdf.p12 | Bin 1749 -> 0 bytes .../tcpdf/examples/data/chapter_demo_1.txt | 19 - .../tcpdf/examples/data/chapter_demo_2.txt | 23 - .../tcpdf/examples/data/table_data_demo.txt | 15 - .../tcpdf/examples/data/utf8test.txt | 128 -- .../tecnickcom/tcpdf/examples/example_001.php | 106 -- .../tecnickcom/tcpdf/examples/example_002.php | 87 - .../tecnickcom/tcpdf/examples/example_003.php | 118 -- .../tecnickcom/tcpdf/examples/example_004.php | 121 -- .../tecnickcom/tcpdf/examples/example_005.php | 158 -- .../tecnickcom/tcpdf/examples/example_006.php | 330 ---- .../tecnickcom/tcpdf/examples/example_007.php | 113 -- .../tecnickcom/tcpdf/examples/example_008.php | 97 -- .../tecnickcom/tcpdf/examples/example_009.php | 146 -- .../tecnickcom/tcpdf/examples/example_010.php | 150 -- .../tecnickcom/tcpdf/examples/example_011.php | 138 -- .../tecnickcom/tcpdf/examples/example_012.pdf | Bin 13214 -> 0 bytes .../tecnickcom/tcpdf/examples/example_012.php | 205 --- .../tecnickcom/tcpdf/examples/example_013.php | 229 --- .../tecnickcom/tcpdf/examples/example_014.php | 194 --- .../tecnickcom/tcpdf/examples/example_015.php | 161 -- .../tecnickcom/tcpdf/examples/example_016.php | 134 -- .../tecnickcom/tcpdf/examples/example_017.php | 117 -- .../tecnickcom/tcpdf/examples/example_018.php | 128 -- .../tecnickcom/tcpdf/examples/example_019.php | 98 -- .../tecnickcom/tcpdf/examples/example_020.php | 146 -- .../tecnickcom/tcpdf/examples/example_021.php | 91 - .../tecnickcom/tcpdf/examples/example_022.php | 146 -- .../tecnickcom/tcpdf/examples/example_023.php | 113 -- .../tecnickcom/tcpdf/examples/example_024.php | 140 -- .../tecnickcom/tcpdf/examples/example_025.php | 118 -- .../tecnickcom/tcpdf/examples/example_026.php | 145 -- .../tecnickcom/tcpdf/examples/example_027.php | 418 ----- .../tecnickcom/tcpdf/examples/example_028.php | 138 -- .../tecnickcom/tcpdf/examples/example_029.php | 124 -- .../tecnickcom/tcpdf/examples/example_030.php | 188 --- .../tecnickcom/tcpdf/examples/example_031.php | 103 -- .../tecnickcom/tcpdf/examples/example_032.php | 91 - .../tecnickcom/tcpdf/examples/example_033.php | 105 -- .../tecnickcom/tcpdf/examples/example_034.php | 96 -- .../tecnickcom/tcpdf/examples/example_035.php | 111 -- .../tecnickcom/tcpdf/examples/example_036.php | 89 - .../tecnickcom/tcpdf/examples/example_037.php | 147 -- .../tecnickcom/tcpdf/examples/example_038.php | 92 - .../tecnickcom/tcpdf/examples/example_039.php | 104 -- .../tecnickcom/tcpdf/examples/example_040.php | 116 -- .../tecnickcom/tcpdf/examples/example_041.php | 90 - .../tecnickcom/tcpdf/examples/example_042.php | 102 -- .../tecnickcom/tcpdf/examples/example_043.php | 85 - .../tecnickcom/tcpdf/examples/example_044.php | 128 -- .../tecnickcom/tcpdf/examples/example_045.php | 140 -- .../tecnickcom/tcpdf/examples/example_046.php | 123 -- .../tecnickcom/tcpdf/examples/example_047.php | 117 -- .../tecnickcom/tcpdf/examples/example_048.php | 313 ---- .../tecnickcom/tcpdf/examples/example_049.php | 126 -- .../tecnickcom/tcpdf/examples/example_050.php | 210 --- .../tecnickcom/tcpdf/examples/example_051.php | 145 -- .../tecnickcom/tcpdf/examples/example_052.php | 121 -- .../tecnickcom/tcpdf/examples/example_053.php | 108 -- .../tecnickcom/tcpdf/examples/example_054.php | 128 -- .../tecnickcom/tcpdf/examples/example_055.php | 115 -- .../tecnickcom/tcpdf/examples/example_056.php | 133 -- .../tecnickcom/tcpdf/examples/example_057.php | 268 --- .../tecnickcom/tcpdf/examples/example_058.php | 94 -- .../tecnickcom/tcpdf/examples/example_059.php | 190 --- .../tecnickcom/tcpdf/examples/example_060.php | 108 -- .../tecnickcom/tcpdf/examples/example_061.php | 264 --- .../tecnickcom/tcpdf/examples/example_062.php | 140 -- .../tecnickcom/tcpdf/examples/example_063.php | 131 -- .../tecnickcom/tcpdf/examples/example_064.php | 176 -- .../tecnickcom/tcpdf/examples/example_065.php | 98 -- .../tcpdf/examples/images/_blank.png | Bin 137 -> 0 bytes .../tcpdf/examples/images/alpha.png | Bin 23886 -> 0 bytes .../tcpdf/examples/images/image_demo.jpg | Bin 573845 -> 0 bytes .../examples/images/image_with_alpha.png | Bin 244218 -> 0 bytes .../tecnickcom/tcpdf/examples/images/img.png | Bin 195148 -> 0 bytes .../tcpdf/examples/images/logo_example.gif | Bin 21022 -> 0 bytes .../tcpdf/examples/images/logo_example.jpg | Bin 32732 -> 0 bytes .../tcpdf/examples/images/logo_example.png | Bin 19411 -> 0 bytes .../tcpdf/examples/images/tcpdf_box.ai | 214 --- .../tcpdf/examples/images/tcpdf_box.svg | 69 - .../tcpdf/examples/images/tcpdf_cell.png | Bin 38415 -> 0 bytes .../tcpdf/examples/images/tcpdf_logo.jpg | Bin 17633 -> 0 bytes .../tcpdf/examples/images/tcpdf_signature.png | Bin 67931 -> 0 bytes .../tcpdf/examples/images/testsvg.svg | 328 ---- .../tecnickcom/tcpdf/examples/images/tux.svg | 1487 ----------------- .../tecnickcom/tcpdf/examples/index.php | 115 -- .../tecnickcom/tcpdf/examples/lang/afr.php | 44 - .../tecnickcom/tcpdf/examples/lang/ara.php | 44 - .../tecnickcom/tcpdf/examples/lang/aze.php | 44 - .../tecnickcom/tcpdf/examples/lang/bel.php | 44 - .../tecnickcom/tcpdf/examples/lang/bra.php | 44 - .../tecnickcom/tcpdf/examples/lang/bul.php | 44 - .../tecnickcom/tcpdf/examples/lang/cat.php | 44 - .../tecnickcom/tcpdf/examples/lang/ces.php | 44 - .../tecnickcom/tcpdf/examples/lang/chi.php | 44 - .../tecnickcom/tcpdf/examples/lang/cym.php | 44 - .../tecnickcom/tcpdf/examples/lang/dan.php | 44 - .../tecnickcom/tcpdf/examples/lang/eng.php | 44 - .../tecnickcom/tcpdf/examples/lang/est.php | 44 - .../tecnickcom/tcpdf/examples/lang/eus.php | 44 - .../tecnickcom/tcpdf/examples/lang/far.php | 44 - .../tecnickcom/tcpdf/examples/lang/fra.php | 44 - .../tecnickcom/tcpdf/examples/lang/ger.php | 44 - .../tecnickcom/tcpdf/examples/lang/gle.php | 44 - .../tecnickcom/tcpdf/examples/lang/glg.php | 44 - .../tecnickcom/tcpdf/examples/lang/hat.php | 44 - .../tecnickcom/tcpdf/examples/lang/heb.php | 44 - .../tecnickcom/tcpdf/examples/lang/hrv.php | 44 - .../tecnickcom/tcpdf/examples/lang/hun.php | 44 - .../tecnickcom/tcpdf/examples/lang/hye.php | 44 - .../tecnickcom/tcpdf/examples/lang/ind.php | 44 - .../tecnickcom/tcpdf/examples/lang/ita.php | 44 - .../tecnickcom/tcpdf/examples/lang/jpn.php | 44 - .../tecnickcom/tcpdf/examples/lang/kat.php | 44 - .../tecnickcom/tcpdf/examples/lang/kor.php | 44 - .../tecnickcom/tcpdf/examples/lang/mkd.php | 44 - .../tecnickcom/tcpdf/examples/lang/mlt.php | 44 - .../tecnickcom/tcpdf/examples/lang/msa.php | 44 - .../tecnickcom/tcpdf/examples/lang/nld.php | 44 - .../tecnickcom/tcpdf/examples/lang/nob.php | 44 - .../tecnickcom/tcpdf/examples/lang/pol.php | 44 - .../tecnickcom/tcpdf/examples/lang/por.php | 44 - .../tecnickcom/tcpdf/examples/lang/ron.php | 44 - .../tecnickcom/tcpdf/examples/lang/rus.php | 44 - .../tecnickcom/tcpdf/examples/lang/slv.php | 44 - .../tecnickcom/tcpdf/examples/lang/spa.php | 44 - .../tecnickcom/tcpdf/examples/lang/sqi.php | 44 - .../tecnickcom/tcpdf/examples/lang/srp.php | 44 - .../tecnickcom/tcpdf/examples/lang/swa.php | 44 - .../tecnickcom/tcpdf/examples/lang/swe.php | 44 - .../tecnickcom/tcpdf/examples/lang/ukr.php | 44 - .../tecnickcom/tcpdf/examples/lang/urd.php | 44 - .../tecnickcom/tcpdf/examples/lang/yid.php | 44 - .../tecnickcom/tcpdf/examples/lang/zho.php | 44 - .../tcpdf/examples/tcpdf_include.php | 48 - .../includes/tecnickcom/tcpdf/tools/.htaccess | 1 - .../tcpdf/tools/convert_fonts_examples.txt | 28 - .../tecnickcom/tcpdf/tools/tcpdf_addfont.php | 269 --- 160 files changed, 15344 deletions(-) delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_html.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_png.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svg.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svgi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_html.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_png.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svg.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svgi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_html.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_png.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svg.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svgi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_html.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_png.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svg.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svgi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/tcpdf_barcodes_1d_include.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/barcodes/tcpdf_barcodes_2d_include.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/config/tcpdf_config_alt.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.crt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.fdf delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.p12 delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/chapter_demo_1.txt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/chapter_demo_2.txt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/table_data_demo.txt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/data/utf8test.txt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_001.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_002.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_003.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_004.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_005.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_006.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_007.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_008.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_009.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_010.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_011.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_012.pdf delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_012.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_013.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_014.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_015.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_016.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_017.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_018.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_019.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_020.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_021.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_022.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_023.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_024.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_025.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_026.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_027.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_028.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_029.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_030.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_031.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_032.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_033.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_034.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_035.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_036.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_037.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_038.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_039.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_040.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_041.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_042.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_043.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_044.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_045.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_046.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_047.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_048.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_049.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_050.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_051.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_052.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_053.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_054.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_055.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_056.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_057.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_058.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_059.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_060.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_061.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_062.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_063.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_064.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/example_065.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/_blank.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/alpha.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/image_demo.jpg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/image_with_alpha.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/img.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.gif delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.jpg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_box.ai delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_box.svg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_cell.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_logo.jpg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_signature.png delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/testsvg.svg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/images/tux.svg delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/index.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/afr.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ara.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/aze.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/bel.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/bra.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/bul.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/cat.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ces.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/chi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/cym.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/dan.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/eng.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/est.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/eus.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/far.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/fra.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ger.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/gle.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/glg.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/hat.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/heb.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/hrv.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/hun.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/hye.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ind.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ita.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/jpn.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/kat.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/kor.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/mkd.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/mlt.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/msa.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/nld.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/nob.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/pol.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/por.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ron.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/rus.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/slv.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/spa.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/sqi.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/srp.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/swa.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/swe.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/ukr.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/urd.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/yid.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/lang/zho.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/examples/tcpdf_include.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/tools/.htaccess delete mode 100644 htdocs/includes/tecnickcom/tcpdf/tools/convert_fonts_examples.txt delete mode 100644 htdocs/includes/tecnickcom/tcpdf/tools/tcpdf_addfont.php diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_html.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_html.php deleted file mode 100644 index 67d22e72594..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_html.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.000 - */ - -// include 1D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_1d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'C128'); - -// output the barcode as HTML object -echo $barcodeobj->getBarcodeHTML(2, 30, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_png.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_png.php deleted file mode 100644 index 9e44909f4f0..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_png.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.000 - */ - -// include 1D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_1d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'C128'); - -// output the barcode as PNG image -$barcodeobj->getBarcodePNG(2, 30, array(0,0,0)); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svg.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svg.php deleted file mode 100644 index f7b585acfec..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svg.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.000 - */ - -// include 1D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_1d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'C128'); - -// output the barcode as SVG image -$barcodeobj->getBarcodeSVG(2, 30, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svgi.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svgi.php deleted file mode 100644 index a74a30460e7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_1d_svgi.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.000 - */ - -// include 1D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_1d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDFBarcode('http://www.tcpdf.org', 'C128'); - -// output the barcode as SVG inline code -echo $barcodeobj->getBarcodeSVGcode(2, 40, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_html.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_html.php deleted file mode 100644 index dc7bab324e6..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_html.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'DATAMATRIX'); - -// output the barcode as HTML object -echo $barcodeobj->getBarcodeHTML(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_png.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_png.php deleted file mode 100644 index 87b7a33064e..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_png.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'DATAMATRIX'); - -// output the barcode as PNG image -$barcodeobj->getBarcodePNG(6, 6, array(0,0,0)); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svg.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svg.php deleted file mode 100644 index 523ebfa3ca9..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svg.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'DATAMATRIX'); - -// output the barcode as SVG image -$barcodeobj->getBarcodeSVG(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svgi.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svgi.php deleted file mode 100644 index 4470981e656..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_datamatrix_svgi.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'DATAMATRIX'); - -// output the barcode as SVG inline code -echo $barcodeobj->getBarcodeSVGcode(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_html.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_html.php deleted file mode 100644 index 4c4e9ee748e..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_html.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'PDF417'); - -// output the barcode as HTML object -echo $barcodeobj->getBarcodeHTML(4, 4, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_png.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_png.php deleted file mode 100644 index df939bb11a7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_png.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'PDF417'); - -// output the barcode as PNG image -$barcodeobj->getBarcodePNG(4, 4, array(0,0,0)); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svg.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svg.php deleted file mode 100644 index fb29ea2493d..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svg.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'PDF417'); - -// output the barcode as SVG image -$barcodeobj->getBarcodeSVG(4, 4, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svgi.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svgi.php deleted file mode 100644 index 94e1c71c5e1..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_pdf417_svgi.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'PDF417'); - -// output the barcode as SVG inline code -echo $barcodeobj->getBarcodeSVGcode(4, 4, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_html.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_html.php deleted file mode 100644 index ac828f7d3e5..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_html.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); - -// output the barcode as HTML object -echo $barcodeobj->getBarcodeHTML(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_png.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_png.php deleted file mode 100644 index 71f87101540..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_png.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); - -// output the barcode as PNG image -$barcodeobj->getBarcodePNG(6, 6, array(0,0,0)); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svg.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svg.php deleted file mode 100644 index 1baa43dec29..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svg.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); - -// output the barcode as SVG image -$barcodeobj->getBarcodeSVG(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svgi.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svgi.php deleted file mode 100644 index 99d65908f47..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/example_2d_qrcode_svgi.php +++ /dev/null @@ -1,53 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Example for tcpdf_barcodes_2d.php class -// -//============================================================+ - -/** - * @file - * Example for tcpdf_barcodes_2d.php class - * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.009 - */ - -// include 2D barcode class (search for installation path) -require_once(dirname(__FILE__).'/tcpdf_barcodes_2d_include.php'); - -// set the barcode content and type -$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H'); - -// output the barcode as SVG inline code -echo $barcodeobj->getBarcodeSVGcode(6, 6, 'black'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/tcpdf_barcodes_1d_include.php b/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/tcpdf_barcodes_1d_include.php deleted file mode 100644 index a0bde57e04c..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/barcodes/tcpdf_barcodes_1d_include.php +++ /dev/null @@ -1,37 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -//============================================================+ - -/** - * Example of alternative configuration file for TCPDF. - * @author Nicola Asuni - * @package com.tecnick.tcpdf - * @version 4.9.005 - * @since 2004-10-27 - */ - -/** - * Define the following constant to ignore the default configuration file. - */ -define ('K_TCPDF_EXTERNAL_CONFIG', true); - -/** - * Installation path (/var/www/tcpdf/). - * By default it is automatically calculated but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_MAIN', ''); - -/** - * URL path to tcpdf installation folder (http://localhost/tcpdf/). - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_URL', ''); - -/** - * Path for PDF fonts. - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/'); - -/** - * Default images directory. - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -define ('K_PATH_IMAGES', dirname(__FILE__).'/../images/'); - -/** - * Deafult image logo used be the default Header() method. - * Please set here your own logo or an empty string to disable it. - */ -define ('PDF_HEADER_LOGO', 'tcpdf_logo.jpg'); - -/** - * Header logo image width in user units. - */ -define ('PDF_HEADER_LOGO_WIDTH', 30); - -/** - * Cache directory for temporary files (full path). - */ -define ('K_PATH_CACHE', sys_get_temp_dir().'/'); - -/** - * Generic name for a blank image. - */ -define ('K_BLANK_IMAGE', '_blank.png'); - -/** - * Page format. - */ -define ('PDF_PAGE_FORMAT', 'A4'); - -/** - * Page orientation (P=portrait, L=landscape). - */ -define ('PDF_PAGE_ORIENTATION', 'P'); - -/** - * Document creator. - */ -define ('PDF_CREATOR', 'TCPDF'); - -/** - * Document author. - */ -define ('PDF_AUTHOR', 'TCPDF'); - -/** - * Header title. - */ -define ('PDF_HEADER_TITLE', 'TCPDF Example'); - -/** - * Header description string. - */ -define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); - -/** - * Document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch]. - */ -define ('PDF_UNIT', 'mm'); - -/** - * Header margin. - */ -define ('PDF_MARGIN_HEADER', 5); - -/** - * Footer margin. - */ -define ('PDF_MARGIN_FOOTER', 10); - -/** - * Top margin. - */ -define ('PDF_MARGIN_TOP', 27); - -/** - * Bottom margin. - */ -define ('PDF_MARGIN_BOTTOM', 25); - -/** - * Left margin. - */ -define ('PDF_MARGIN_LEFT', 15); - -/** - * Right margin. - */ -define ('PDF_MARGIN_RIGHT', 15); - -/** - * Default main font name. - */ -define ('PDF_FONT_NAME_MAIN', 'helvetica'); - -/** - * Default main font size. - */ -define ('PDF_FONT_SIZE_MAIN', 10); - -/** - * Default data font name. - */ -define ('PDF_FONT_NAME_DATA', 'helvetica'); - -/** - * Default data font size. - */ -define ('PDF_FONT_SIZE_DATA', 8); - -/** - * Default monospaced font name. - */ -define ('PDF_FONT_MONOSPACED', 'courier'); - -/** - * Ratio used to adjust the conversion of pixels to user units. - */ -define ('PDF_IMAGE_SCALE_RATIO', 1.25); - -/** - * Magnification factor for titles. - */ -define('HEAD_MAGNIFICATION', 1.1); - -/** - * Height of cell respect font height. - */ -define('K_CELL_HEIGHT_RATIO', 1.25); - -/** - * Title magnification respect main font size. - */ -define('K_TITLE_MAGNIFICATION', 1.3); - -/** - * Reduction factor for small font. - */ -define('K_SMALL_RATIO', 2/3); - -/** - * Set to true to enable the special procedure used to avoid the overlappind of symbols on Thai language. - */ -define('K_THAI_TOPCHARS', true); - -/** - * If true allows to call TCPDF methods using HTML syntax - * IMPORTANT: For security reason, disable this feature if you are printing user HTML content. - */ -define('K_TCPDF_CALLS_IN_HTML', true); - -/** - * If true and PHP version is greater than 5, then the Error() method throw new exception instead of terminating the execution. - */ -define('K_TCPDF_THROW_EXCEPTION_ERROR', false); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.crt b/htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.crt deleted file mode 100644 index f0491391cf0..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.crt +++ /dev/null @@ -1,40 +0,0 @@ -Bag Attributes - localKeyID: 7B AB 1B 7A BE 4C 85 C0 1A A6 DC 59 3F 79 48 C3 93 38 68 9C -subject=/CN=TCPDF DEMO/O=TCPDF/OU=DEMO/emailAddress=you@example.com/C=IT -issuer=/CN=TCPDF DEMO/O=TCPDF/OU=DEMO/emailAddress=you@example.com/C=IT ------BEGIN CERTIFICATE----- -MIIC1TCCAj6gAwIBAgIKkehOL/XGkB5cjjANBgkqhkiG9w0BAQUFADBhMRMwEQYD -VQQDEwpUQ1BERiBERU1PMQ4wDAYDVQQKEwVUQ1BERjENMAsGA1UECxMEREVNTzEe -MBwGCSqGSIb3DQEJARYPeW91QGV4YW1wbGUuY29tMQswCQYDVQQGEwJJVDAeFw0w -OTA4MjExMjU0NDhaFw0xNDA4MjExMjU0NDhaMGExEzARBgNVBAMTClRDUERGIERF -TU8xDjAMBgNVBAoTBVRDUERGMQ0wCwYDVQQLEwRERU1PMR4wHAYJKoZIhvcNAQkB -Fg95b3VAZXhhbXBsZS5jb20xCzAJBgNVBAYTAklUMIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQDAqIL0uGKmTR98Lxx2vEEE1OGKkMXFo0JViitALe7Onhxxqx0H -XMUDKF5mvEVu1rcvh7/oAnAfrCuEpL/up3u1mQCgBE7WXBnFFE/AE3jCksh9OkS0 -Z0Xj9woN5bzxRDsGoPiOu/4xzk5qSEXt8jf2Ep90QuNkqLIRT4swAzpDbwIDAQAB -o4GTMIGQMDcGA1UdEgQwMC6gEQYDVQQDDApUQ1BERiBERU1PoAwGA1UECgwFVENQ -REagCwYDVQQLDARERU1PMDcGA1UdEQQwMC6gEQYDVQQDDApUQ1BERiBERU1PoAwG -A1UECgwFVENQREagCwYDVQQLDARERU1PMA8GCSqGSIb3LwEBCgQCBQAwCwYDVR0P -BAQDAgSQMA0GCSqGSIb3DQEBBQUAA4GBAEhTQfqX3ZNdHmpTLDbIj22RHXii2roE -OavCbu9WsHoWpva0qSd+yIoD594VHvYAd29sfzDfiN+7W0aiZfDhq5jpaSQMVlN8 -RGYMupbHY/+a9Gz1wqxnR84mlTtIkZVRYAhsfPwy6M1BEjdMqfdh9h40JIdkdjtb -8faTCfXPePWQ ------END CERTIFICATE----- -Bag Attributes - localKeyID: 7B AB 1B 7A BE 4C 85 C0 1A A6 DC 59 3F 79 48 C3 93 38 68 9C -Key Attributes: ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDAqIL0uGKmTR98Lxx2vEEE1OGKkMXFo0JViitALe7Onhxxqx0H -XMUDKF5mvEVu1rcvh7/oAnAfrCuEpL/up3u1mQCgBE7WXBnFFE/AE3jCksh9OkS0 -Z0Xj9woN5bzxRDsGoPiOu/4xzk5qSEXt8jf2Ep90QuNkqLIRT4swAzpDbwIDAQAB -AoGAXc+wNMmz/5Z+RlIKYia44klmqbplEx+0JULqXI4BQsrqvs67i+I4bJkznoL+ -rEIRYSuQ3sCRKFsFtckjTGpxadnxkB+uwGKc6pZChv99BFX6HFR4hgBlT/BBRAQA -hMDlM2JIRr4S4SMVXR7MHwGMUf9mUeanGLR3ZWtU3aXJrIECQQD7OaYUVYNEEnM9 -uXyjm22CuHyqyEf5gb13sK0uQty67547yJTMUQZd/sQc9KGwhzBbhrob2LO2jAhh -S+f+NSRnAkEAxFHm3fMI5RgXmswxlGm4QW07a/Ueo7ZJG6xjTkFXluJhd+XHswRD -dQIO3zG9nGjNUoeMrPhXhPvKqFc2F9RDuQJAQBEGin74N77gxqfr4ik79y8nE8J5 -oGZ2s/RJZdfFRKLg3mwbjjNHhWb4Ck5UgZkoOt8TzRApXG8/n9hktE5HFwJBALur -M5AueO1Pl5kB489lNJ9OxUQRYUXMxpxuscuoCQwSwmv0O2+0/qtG2WKhUQnI4aYo -L+FV0YwtivBb1jj3T/kCQQDIWOxq8eRowdaMzvJpRUHFgMcf1AVZExKyrugwYOWd -KNsDxC4KaQOsPt8iT/Ulo4g/MJC0HolCOhWibKmR9Ayl ------END RSA PRIVATE KEY----- diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.fdf b/htdocs/includes/tecnickcom/tcpdf/examples/data/cert/tcpdf.fdf deleted file mode 100644 index a8f7c35d9af83d2579adafbe8d2745daa30dfd3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1286 zcmY#&b8*u()HC8$ef0SJWnL~r1p|frq%2+=8-1XRf)S7#r0=WYVr67tU}<1sWNK(+ zVqj{ZZD6EsV4$w4A5vM6s_&dwl9-d9ZfD1vnwJ974blcRB_P0C!5Cx;LKeh@%DVa{ zX69&A=9fC8RwU*YU-uEiZ?;rfP&Z2LK)A;_B7r3kke!oRl4_NlT2$g%0n&r%SOWtqBSU91S93#0P5mGRLt{e&OJj)R zfezFUQ!unNGcz$2Stmap^>SHiA5BUZ)k$Vr=CM% zc=0=>aXxA&FtRc*H}*0ZG&u@?wgf?)m6q&9>l2-|l~g=lrrfT;F~&|0XoQ#OZO$icNz4 z-3H87&iPEtj0}v68z&nyPB1VB2BNGGi-CdO0!TdZAji`JXe{wSVrc;=ieh+KxOu>l z1ko%=ie|W0erW9KGcv~Hu`mIX3dn3(eijyHCYA}PK?qDp%)qeo2zLB6{qE#gxvXFv zvlIQf6J;wF-P*-sx%yDv`>+jFV#~g5S*c!kqKo)Yp8S8-mz=MM)}*_iQ=4k-F>z{O0!L2GAEOs%9fiz&R(?FEV{qfsm&adYyzE04L)pyR%D@jZ)LCJsMoDa#P`pJ37QixnsQIwj-%VnTo z3MAk_!OYau*i-=|0R@I;3SgE(9zx6lQ_K*HIwK1Mgx-=OU}=(C#LERNy@E5VQWZ?~ kgYxrB6hMU zY-rcU0s;sCfPw=!#BpZA(3DXgvNT6SMx2c3M^p9_<~*qj&~k|Wio#7(scRd zVB;~P(%~|g!$#H)Uj>}ly*mK-K*NcRU+dxygiF7$BDFu;YqjVO#_{qT;h+#I>a(HG z6~@vJ%56(B0~rm^94uG!F&Q6%9$*+cPTn~18aH}n`p;SwVUc3}cGnJV33D`@$5Df5 zka5G^;jy@bF*5dt7yj?!On2m{6(lU}`+Ngz(u>-st&u3q&_N{T-$B(t9@HplX>tLm z<+%6V-nXIed*8 zvh$I?cs-H$tTFYyLYOK&N@y0$j3(wM=r+RHOFm_l_Ew3J zjZ|cTFZc?kMLbIRq9#Je0!uHg$!6L_|JSTh4SBDC^kz-4Q$rl0exLwuv7)I*(A$u( z4~P;V(@gR1lQvQ9WUL5F(7#Oi)Yh-}TXhqUaHvL^;{PKZ_!c^5TIaYzP~~Y~ol!Ix zIU5LwA?E0d=I<-Og-X;m1K5(@AtP)n6jQ1{Q2ko=_)Bd{1(bAXe>Coeda=}lih)j$ z2>zQNzJ;fmRdBanq`^ZJV5@Ra+72~oPcmiLf=NHQP1lj<)-k#CXYR9X=4kR3k!;Y8h(}v0#D@^oeB!oK*4q{yIW*$U z&LNQUbi3jQQ0AALA`*I zEfwAUX0Q~1Fi>8l{3I2b+YV;2v~q$Ht)BfYyxTJvSQ3SoAxX}JT3QHXqu~l@W;f&? zvySO921ne7{yT!I)^oWbM&abJwv8?L zM@*J>12l+CQ;QV!Y|w=vINzLD8!z3$e&b>m;bngGpZYK)8EI}digPEz z`_pvC6Afky&Q2vvrHY~v?ZeFbT?m+rp=p=tij1id`L#ceB43YATh$S6RuVfPIPHzQGmAuP1O9==9r!_9t z(XXtxXOZ1gWS49JT5NEHFG{7{?SuzHx8kV3=tHXcRlJ=U+G!T)+ z?jrd2IhsLxK1dcI7Bz#699SwDG5!;?5@oG>vkAutIB1uG5% r0vZJX1QaJKFP)8IPAOWT%X#|+d4hgQWoQHlY+QLorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc.

    - - - -

    Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa.

    - -

    Integer non sem eget neque mattis accumsan. Maecenas eu nisl mauris, sit amet interdum ipsum. In pharetra erat vel lectus venenatis elementum. Nulla non elit ligula, sit amet mollis urna. Morbi ut gravida est. Mauris tincidunt sem et turpis molestie malesuada. Curabitur vel nulla risus, sed mollis erat. Suspendisse vehicula accumsan purus nec varius. Donec fermentum lorem id felis sodales dictum. Quisque et dolor ipsum. Nam luctus consectetur dui vitae fermentum. Curabitur sodales consequat augue, id ultricies augue tempor ac. Aliquam ac magna id ipsum vehicula bibendum. Sed elementum congue tristique. Phasellus vel lorem eu lectus porta sodales. Etiam neque tortor, sagittis id pharetra quis, laoreet vel arcu.

    - -

    Cras quam mi, ornare laoreet laoreet vel, vehicula at lacus. Maecenas a lacus accumsan augue convallis sagittis sed quis odio. Morbi sit amet turpis diam, dictum convallis urna. Cras eget interdum augue. Cras eu nisi sit amet dolor faucibus porttitor. Suspendisse potenti. Nunc vitae dolor risus, at cursus libero. Suspendisse bibendum tellus non nibh hendrerit tristique. Mauris eget orci elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam porta libero non ante laoreet semper. Proin volutpat sodales mi, ac fermentum erat sagittis in. Vivamus at viverra felis. Ut pretium facilisis ante et pharetra.

    - -

    Nulla facilisi. Cras varius quam eget libero aliquam vitae tincidunt leo rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque a nisl massa, quis pretium urna. Proin vel porttitor tortor. Cras rhoncus congue velit in bibendum. Donec pharetra semper augue id lacinia. Quisque magna quam, hendrerit eu aliquam et, pellentesque ut tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas nulla quam, rutrum eu feugiat at, elementum eu libero. Maecenas ullamcorper leo et turpis rutrum ac laoreet eros faucibus. Phasellus condimentum lorem quis neque imperdiet quis molestie enim iaculis. Phasellus risus est, vestibulum ut convallis ultrices, dignissim nec erat. Etiam congue lobortis laoreet. Nulla ut neque sed velit dapibus semper. Quisque nec dolor id nibh eleifend iaculis. Vivamus vitae fermentum odio. Etiam malesuada quam in nulla aliquam sed convallis dui feugiat.

    - -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc.

    - - - -

    Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa.

    - -

    Integer non sem eget neque mattis accumsan. Maecenas eu nisl mauris, sit amet interdum ipsum. In pharetra erat vel lectus venenatis elementum. Nulla non elit ligula, sit amet mollis urna. Morbi ut gravida est. Mauris tincidunt sem et turpis molestie malesuada. Curabitur vel nulla risus, sed mollis erat. Suspendisse vehicula accumsan purus nec varius. Donec fermentum lorem id felis sodales dictum. Quisque et dolor ipsum. Nam luctus consectetur dui vitae fermentum. Curabitur sodales consequat augue, id ultricies augue tempor ac. Aliquam ac magna id ipsum vehicula bibendum. Sed elementum congue tristique. Phasellus vel lorem eu lectus porta sodales. Etiam neque tortor, sagittis id pharetra quis, laoreet vel arcu.

    - -

    Cras quam mi, ornare laoreet laoreet vel, vehicula at lacus. Maecenas a lacus accumsan augue convallis sagittis sed quis odio. Morbi sit amet turpis diam, dictum convallis urna. Cras eget interdum augue. Cras eu nisi sit amet dolor faucibus porttitor. Suspendisse potenti. Nunc vitae dolor risus, at cursus libero. Suspendisse bibendum tellus non nibh hendrerit tristique. Mauris eget orci elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam porta libero non ante laoreet semper. Proin volutpat sodales mi, ac fermentum erat sagittis in. Vivamus at viverra felis. Ut pretium facilisis ante et pharetra.

    - -

    Nulla facilisi. Cras varius quam eget libero aliquam vitae tincidunt leo rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque a nisl massa, quis pretium urna. Proin vel porttitor tortor. Cras rhoncus congue velit in bibendum. Donec pharetra semper augue id lacinia. Quisque magna quam, hendrerit eu aliquam et, pellentesque ut tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas nulla quam, rutrum eu feugiat at, elementum eu libero. Maecenas ullamcorper leo et turpis rutrum ac laoreet eros faucibus. Phasellus condimentum lorem quis neque imperdiet quis molestie enim iaculis. Phasellus risus est, vestibulum ut convallis ultrices, dignissim nec erat. Etiam congue lobortis laoreet. Nulla ut neque sed velit dapibus semper. Quisque nec dolor id nibh eleifend iaculis. Vivamus vitae fermentum odio. Etiam malesuada quam in nulla aliquam sed convallis dui feugiat.

    diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/data/table_data_demo.txt b/htdocs/includes/tecnickcom/tcpdf/examples/data/table_data_demo.txt deleted file mode 100644 index 5a48a42e77b..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/data/table_data_demo.txt +++ /dev/null @@ -1,15 +0,0 @@ -Austria;Vienna;83859;8075 -Belgium;Brussels;30518;10192 -Denmark;Copenhagen;43094;5295 -Finland;Helsinki;304529;5147 -France;Paris;543965;58728 -Germany;Berlin;357022;82057 -Greece;Athens;131625;10511 -Ireland;Dublin;70723;3694 -Italy;Roma;301316;57563 -Luxembourg;Luxembourg;2586;424 -Netherlands;Amsterdam;41526;15654 -Portugal;Lisbon;91906;9957 -Spain;Madrid;504790;39348 -Sweden;Stockholm;410934;8839 -United Kingdom;London;243820;58862 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/data/utf8test.txt b/htdocs/includes/tecnickcom/tcpdf/examples/data/utf8test.txt deleted file mode 100644 index 291d4e73554..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/data/utf8test.txt +++ /dev/null @@ -1,128 +0,0 @@ -Sentences that contain all letters commonly used in a language --------------------------------------------------------------- - -This file is UTF-8 encoded. - -Czech (cz) ---------- - - Příšerně žluťoučký kůň úpěl ďábelské ódy. - Hleď, toť přízračný kůň v mátožné póze šíleně úpí. - Zvlášť zákeřný učeň s ďolíčky běží podél zóny úlů. - Loď čeří kýlem tůň obzvlášť v Grónské úžině. - Ó, náhlý déšť již zvířil prach a čilá laň teď běží s houfcem gazel k úkrytům. - -Danish (da) ---------- - - Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen - Wolther spillede på xylofon. - (= Quiz contestants were eating strawbery with cream while Wolther - the circus clown played on xylophone.) - -German (de) ------------ - - Falsches Üben von Xylophonmusik quält jeden größeren Zwerg - (= Wrongful practicing of xylophone music tortures every larger dwarf) - - Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich - (= Twelve boxing fighters hunted Eva across the dike of Sylt) - - Heizölrückstoßabdämpfung - (= fuel oil recoil absorber) - (jqvwxy missing, but all non-ASCII letters in one word) - -English (en) ------------- - - The quick brown fox jumps over the lazy dog - -Spanish (es) ------------- - - El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y - frío, añoraba a su querido cachorro. - (Contains every letter and every accent, but not every combination - of vowel + acute.) - -French (fr) ------------ - - Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à - côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce - qui lui permet de penser à la cænogenèse de l'être dont il est question - dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, - pense-t-il, diminue çà et là la qualité de son œuvre. - - l'île exiguë - Où l'obèse jury mûr - Fête l'haï volapük, - Âne ex aéquo au whist, - Ôtez ce vœu déçu. - - Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en - canoë au delà des îles, près du mälström où brûlent les novæ. - -Irish Gaelic (ga) ------------------ - - D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh - -Hungarian (hu) --------------- - - Árvíztűrő tükörfúrógép - (= flood-proof mirror-drilling machine, only all non-ASCII letters) - -Icelandic (is) --------------- - - Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa - - Sævör grét áðan því úlpan var ónýt - (some ASCII letters missing) - -Greek (el) -------------- - - Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο - (= No more shall I see acacias or myrtles in the golden clearing) - - Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία - (= I uncover the soul-destroying abhorrence) - -Hebrew (iw) ------------ - - ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה - -Polish (pl) ------------ - - Pchnąć w tę łódź jeża lub osiem skrzyń fig - (= To push a hedgehog or eight bins of figs in this boat) - - Zażółć gęślą jaźń - -Russian (ru) ------------- - - В чащах юга жил бы цитрус? Да, но фальшивый экземпляр! - (= Would a citrus live in the bushes of south? Yes, but only a fake one!) - -Thai (th) ---------- - - [--------------------------|------------------------] - ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน - จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร - ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย - ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ - - [The copyright for the Thai example is owned by The Computer - Association of Thailand under the Royal Patronage of His Majesty the - King.] - -Please let me know if you find others! Special thanks to the people -from all over the world who contributed these sentences. diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_001.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_001.php deleted file mode 100644 index 055c66af98d..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_001.php +++ /dev/null @@ -1,106 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 001'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128)); -$pdf->setFooterData(array(0,64,0), array(0,64,128)); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set default font subsetting mode -$pdf->setFontSubsetting(true); - -// Set font -// dejavusans is a UTF-8 Unicode font, if you only need to -// print standard ASCII chars, you can use core fonts like -// helvetica or times to reduce file size. -$pdf->SetFont('dejavusans', '', 14, '', true); - -// Add a page -// This method has several options, check the source code documentation for more information. -$pdf->AddPage(); - -// set text shadow effect -$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal')); - -// Set some content to print -$html = <<Welcome to  TCPDF ! -This is the first example of TCPDF library. -

    This text is printed using the writeHTMLCell() method but you can also use: Multicell(), writeHTML(), Write(), Cell() and Text().

    -

    Please check the source code documentation and other examples for further information.

    -

    TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE MAKE A DONATION!

    -EOD; - -// Print text using writeHTMLCell() -$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); - -// --------------------------------------------------------- - -// Close and output PDF document -// This method has several options, check the source code documentation for more information. -$pdf->Output('example_001.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_002.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_002.php deleted file mode 100644 index 020dd299063..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_002.php +++ /dev/null @@ -1,87 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 002'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// remove default header/footer -$pdf->setPrintHeader(false); -$pdf->setPrintFooter(false); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', 'BI', 20); - -// add a page -$pdf->AddPage(); - -// set some text to print -$txt = <<Write(0, $txt, '', 0, 'C', true, 0, false, false, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_002.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_003.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_003.php deleted file mode 100644 index 73a0e8c1a7a..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_003.php +++ /dev/null @@ -1,118 +0,0 @@ -Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); - // Set font - $this->SetFont('helvetica', 'B', 20); - // Title - $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M'); - } - - // Page footer - public function Footer() { - // Position at 15 mm from bottom - $this->SetY(-15); - // Set font - $this->SetFont('helvetica', 'I', 8); - // Page number - $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M'); - } -} - -// create new PDF document -$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 003'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', 'BI', 12); - -// add a page -$pdf->AddPage(); - -// set some text to print -$txt = <<Write(0, $txt, '', 0, 'C', true, 0, false, false, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_003.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_004.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_004.php deleted file mode 100644 index 88e08c1b7e7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_004.php +++ /dev/null @@ -1,121 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 004'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 004', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 11); - -// add a page -$pdf->AddPage(); - -//Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=0, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') - -// test Cell stretching -$pdf->Cell(0, 0, 'TEST CELL STRETCH: no stretch', 1, 1, 'C', 0, '', 0); -$pdf->Cell(0, 0, 'TEST CELL STRETCH: scaling', 1, 1, 'C', 0, '', 1); -$pdf->Cell(0, 0, 'TEST CELL STRETCH: force scaling', 1, 1, 'C', 0, '', 2); -$pdf->Cell(0, 0, 'TEST CELL STRETCH: spacing', 1, 1, 'C', 0, '', 3); -$pdf->Cell(0, 0, 'TEST CELL STRETCH: force spacing', 1, 1, 'C', 0, '', 4); - -$pdf->Ln(5); - -$pdf->Cell(45, 0, 'TEST CELL STRETCH: scaling', 1, 1, 'C', 0, '', 1); -$pdf->Cell(45, 0, 'TEST CELL STRETCH: force scaling', 1, 1, 'C', 0, '', 2); -$pdf->Cell(45, 0, 'TEST CELL STRETCH: spacing', 1, 1, 'C', 0, '', 3); -$pdf->Cell(45, 0, 'TEST CELL STRETCH: force spacing', 1, 1, 'C', 0, '', 4); - -$pdf->AddPage(); - -// example using general stretching and spacing - -for ($stretching = 90; $stretching <= 110; $stretching += 10) { - for ($spacing = -0.254; $spacing <= 0.254; $spacing += 0.254) { - - // set general stretching (scaling) value - $pdf->setFontStretching($stretching); - - // set general spacing value - $pdf->setFontSpacing($spacing); - - $pdf->Cell(0, 0, 'Stretching '.$stretching.'%, Spacing '.sprintf('%+.3F', $spacing).'mm, no stretch', 1, 1, 'C', 0, '', 0); - $pdf->Cell(0, 0, 'Stretching '.$stretching.'%, Spacing '.sprintf('%+.3F', $spacing).'mm, scaling', 1, 1, 'C', 0, '', 1); - $pdf->Cell(0, 0, 'Stretching '.$stretching.'%, Spacing '.sprintf('%+.3F', $spacing).'mm, force scaling', 1, 1, 'C', 0, '', 2); - $pdf->Cell(0, 0, 'Stretching '.$stretching.'%, Spacing '.sprintf('%+.3F', $spacing).'mm, spacing', 1, 1, 'C', 0, '', 3); - $pdf->Cell(0, 0, 'Stretching '.$stretching.'%, Spacing '.sprintf('%+.3F', $spacing).'mm, force spacing', 1, 1, 'C', 0, '', 4); - - $pdf->Ln(2); - } -} - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_004.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_005.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_005.php deleted file mode 100644 index 5a592d16876..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_005.php +++ /dev/null @@ -1,158 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 005'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 005', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 10); - -// add a page -$pdf->AddPage(); - -// set cell padding -$pdf->setCellPaddings(1, 1, 1, 1); - -// set cell margins -$pdf->setCellMargins(1, 1, 1, 1); - -// set color for background -$pdf->SetFillColor(255, 255, 127); - -// MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0) - -// set some text for example -$txt = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'; - -// Multicell test -$pdf->MultiCell(55, 5, '[LEFT] '.$txt, 1, 'L', 1, 0, '', '', true); -$pdf->MultiCell(55, 5, '[RIGHT] '.$txt, 1, 'R', 0, 1, '', '', true); -$pdf->MultiCell(55, 5, '[CENTER] '.$txt, 1, 'C', 0, 0, '', '', true); -$pdf->MultiCell(55, 5, '[JUSTIFY] '.$txt."\n", 1, 'J', 1, 2, '' ,'', true); -$pdf->MultiCell(55, 5, '[DEFAULT] '.$txt, 1, '', 0, 1, '', '', true); - -$pdf->Ln(4); - -// set color for background -$pdf->SetFillColor(220, 255, 220); - -// Vertical alignment -$pdf->MultiCell(55, 40, '[VERTICAL ALIGNMENT - TOP] '.$txt, 1, 'J', 1, 0, '', '', true, 0, false, true, 40, 'T'); -$pdf->MultiCell(55, 40, '[VERTICAL ALIGNMENT - MIDDLE] '.$txt, 1, 'J', 1, 0, '', '', true, 0, false, true, 40, 'M'); -$pdf->MultiCell(55, 40, '[VERTICAL ALIGNMENT - BOTTOM] '.$txt, 1, 'J', 1, 1, '', '', true, 0, false, true, 40, 'B'); - -$pdf->Ln(4); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// set color for background -$pdf->SetFillColor(215, 235, 255); - -// set some text for example -$txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc. - -Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa.'; - -// print a blox of text using multicell() -$pdf->MultiCell(80, 5, $txt."\n", 1, 'J', 1, 1, '' ,'', true); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// AUTO-FITTING - -// set color for background -$pdf->SetFillColor(255, 235, 235); - -// Fit text on cell by reducing font size -$pdf->MultiCell(55, 60, '[FIT CELL] '.$txt."\n", 1, 'J', 1, 1, 125, 145, true, 0, false, true, 60, 'M', true); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// CUSTOM PADDING - -// set color for background -$pdf->SetFillColor(255, 255, 215); - -// set font -$pdf->SetFont('helvetica', '', 8); - -// set cell padding -$pdf->setCellPaddings(2, 4, 6, 8); - -$txt = "CUSTOM PADDING:\nLeft=2, Top=4, Right=6, Bottom=8\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue.\n"; - -$pdf->MultiCell(55, 5, $txt, 1, 'J', 1, 2, 125, 210, true); - -// move pointer to last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_005.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_006.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_006.php deleted file mode 100644 index 481f70e5478..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_006.php +++ /dev/null @@ -1,330 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 006'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 006', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('dejavusans', '', 10); - -// add a page -$pdf->AddPage(); - -// writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='') -// writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true) - -// create some HTML content -$html = '

    HTML Example

    -Some special characters: < € € € & è è © > \\slash \\\\double-slash \\\\\\triple-slash -

    List

    -List example: -
      -
    1. test alt attribute test image
    2. -
    3. bold text
    4. -
    5. italic text
    6. -
    7. underlined text
    8. -
    9. bbibiubib
    10. -
    11. link to http://www.tecnick.com
    12. -
    13. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
      Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
    14. -
    15. SUBLIST -
        -
      1. row one -
          -
        • sublist
        • -
        -
      2. -
      3. row two
      4. -
      -
    16. -
    17. TEST line through
    18. -
    19. font + 3
    20. -
    21. small text normal small text normal subscript normal superscript normal
    22. -
    -
    -
    Coffee
    -
    Black hot drink
    -
    Milk
    -
    White cold drink
    -
    -
    IMAGES
    -test alt attributetest alt attributetest alt attribute -
    '; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - - -// output some RTL HTML content -$html = '
    The words “מזל [mazel] טוב [tov]” mean “Congratulations!”
    '; -$pdf->writeHTML($html, true, false, true, false, ''); - -// test some inline CSS -$html = '

    This is just an example of html code to demonstrate some supported CSS inline styles. -bold text -line-trough -underline and line-trough -color -background color -bold -xx-small -x-small -small -medium -large -x-large -xx-large -

    '; - -$pdf->writeHTML($html, true, false, true, false, ''); - -// reset pointer to the last page -$pdf->lastPage(); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Print a table - -// add a page -$pdf->AddPage(); - -// create some HTML content -$subtable = '
    ab
    cd
    '; - -$html = '

    HTML TABLE:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #RIGHT alignLEFT align4A
    1A1 example link column span. One two tree four five six seven eight nine ten.
    line after br
    small text normal subscript normal superscript normal bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    1. first
      1. sublist
      2. sublist
    2. second
    small small small small small small small small small small small small small small small small small small small small
    4B
    '.$subtable.'A2 € € € & è è
    A2 € € € & è è
    Red Yellow BG4C
    1A2AA
    2AB
    2AC
    4D
    1B4E
    1C2C3C4F
    '; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// Print some HTML Cells - -$html = 'red green blue
    red green blue'; - -$pdf->SetFillColor(255,255,0); - -$pdf->writeHTMLCell(0, 0, '', '', $html, 'LRTB', 1, 0, true, 'L', true); -$pdf->writeHTMLCell(0, 0, '', '', $html, 'LRTB', 1, 1, true, 'C', true); -$pdf->writeHTMLCell(0, 0, '', '', $html, 'LRTB', 1, 0, true, 'R', true); - -// reset pointer to the last page -$pdf->lastPage(); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Print a table - -// add a page -$pdf->AddPage(); - -// create some HTML content -$html = '

    Image alignments on HTML table

    - - - - - - - - -
    '; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// reset pointer to the last page -$pdf->lastPage(); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Print all HTML colors - -// add a page -$pdf->AddPage(); - -$textcolors = '

    HTML Text Colors

    '; -$bgcolors = '

    HTML Background Colors

    '; - -foreach(TCPDF_COLORS::$webcolor as $k => $v) { - $textcolors .= ''.$v.' '; - $bgcolors .= ''.$v.' '; -} - -// output the HTML content -$pdf->writeHTML($textcolors, true, false, true, false, ''); -$pdf->writeHTML($bgcolors, true, false, true, false, ''); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Test word-wrap - -// create some HTML content -$html = '
    -

    Various tests

    -link to page 2
    -thisisaverylongword thisisanotherverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword thisisanotherverylongword thisisaverylongword'; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// Test fonts nesting -$html1 = 'Default Courier Helvetica Times dejavusans Times Helvetica Courier Default'; -$html2 = 'small text normal small text normal subscript normal superscript normal'; -$html3 = 'The quick brown fox jumps over the lazy dog.'; - -$html = $html1.'
    '.$html2.'
    '.$html3.'
    '.$html3.'
    '.$html2; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// test pre tag - -// add a page -$pdf->AddPage(); - -$html = << -Hello World!
    -Hello - -
    -int main() {
    -    printf("HelloWorld");
    -    return 0;
    -}
    -
    -Monospace font, normal font, monospace font, normal font. -
    -
    DIV LEVEL 1
    DIV LEVEL 2
    DIV LEVEL 1
    -
    -SPAN LEVEL 1 SPAN LEVEL 2 SPAN LEVEL 1 -EOF; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// test custom bullet points for list - -// add a page -$pdf->AddPage(); - -$html = <<Test custom bullet image for list items -
      -
    • test custom bullet image
    • -
    • test custom bullet image
    • -
    • test custom bullet image
    • -
    • test custom bullet image
    • -
        -EOF; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_006.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_007.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_007.php deleted file mode 100644 index 97ebecb2e1c..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_007.php +++ /dev/null @@ -1,113 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 007'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 007', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 12); - -// add a page -$pdf->AddPage(); - -// create columns content -$left_column = 'LEFT COLUMN left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column'; - -$right_column = 'RIGHT COLUMN right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column'; - -// writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true) - -// get current vertical position -$y = $pdf->getY(); - -// set color for background -$pdf->SetFillColor(255, 255, 200); - -// set color for text -$pdf->SetTextColor(0, 63, 127); - -// write the first column -$pdf->writeHTMLCell(80, '', '', $y, $left_column, 1, 0, 1, true, 'J', true); - -// set color for background -$pdf->SetFillColor(215, 235, 255); - -// set color for text -$pdf->SetTextColor(127, 31, 0); - -// write the second column -$pdf->writeHTMLCell(80, '', '', '', $right_column, 1, 1, 1, true, 'J', true); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_007.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_008.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_008.php deleted file mode 100644 index 4349c3861de..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_008.php +++ /dev/null @@ -1,97 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 008'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 008', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set default font subsetting mode -$pdf->setFontSubsetting(true); - -// set font -$pdf->SetFont('freeserif', '', 12); - -// add a page -$pdf->AddPage(); - -// get esternal file content -$utf8text = file_get_contents('data/utf8test.txt', false); - -// set color for text -$pdf->SetTextColor(0, 63, 127); - -//Write($h, $txt, $link='', $fill=0, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0) - -// write the text -$pdf->Write(5, $utf8text, '', 0, '', false, 0, false, false, 0); - - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_008.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_009.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_009.php deleted file mode 100644 index 235dd721d84..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_009.php +++ /dev/null @@ -1,146 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 009'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 009', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// ------------------------------------------------------------------- - -// add a page -$pdf->AddPage(); - -// set JPEG quality -$pdf->setJPEGQuality(75); - -// Image method signature: -// Image($file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false) - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Example of Image from data stream ('PHP rules') -$imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='); - -// The '@' character is used to indicate that follows an image data stream and not an image file name -$pdf->Image('@'.$imgdata); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Image example with resizing -$pdf->Image('images/image_demo.jpg', 15, 140, 75, 113, 'JPG', 'http://www.tcpdf.org', '', true, 150, '', false, false, 1, false, false, false); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// test fitbox with all alignment combinations - -$horizontal_alignments = array('L', 'C', 'R'); -$vertical_alignments = array('T', 'M', 'B'); - -$x = 15; -$y = 35; -$w = 30; -$h = 30; -// test all combinations of alignments -for ($i = 0; $i < 3; ++$i) { - $fitbox = $horizontal_alignments[$i].' '; - $x = 15; - for ($j = 0; $j < 3; ++$j) { - $fitbox[1] = $vertical_alignments[$j]; - $pdf->Rect($x, $y, $w, $h, 'F', array(), array(128,255,128)); - $pdf->Image('images/image_demo.jpg', $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false); - $x += 32; // new column - } - $y += 32; // new row -} - -$x = 115; -$y = 35; -$w = 25; -$h = 50; -for ($i = 0; $i < 3; ++$i) { - $fitbox = $horizontal_alignments[$i].' '; - $x = 115; - for ($j = 0; $j < 3; ++$j) { - $fitbox[1] = $vertical_alignments[$j]; - $pdf->Rect($x, $y, $w, $h, 'F', array(), array(128,255,255)); - $pdf->Image('images/image_demo.jpg', $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false); - $x += 27; // new column - } - $y += 52; // new row -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Stretching, position and alignment example - -$pdf->SetXY(110, 200); -$pdf->Image('images/image_demo.jpg', '', '', 40, 40, '', '', 'T', false, 300, '', false, false, 1, false, false, false); -$pdf->Image('images/image_demo.jpg', '', '', 40, 40, '', '', '', false, 300, '', false, false, 1, false, false, false); - -// ------------------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_009.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_010.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_010.php deleted file mode 100644 index 5b980b04d6e..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_010.php +++ /dev/null @@ -1,150 +0,0 @@ -AddPage(); - // disable existing columns - $this->resetColumns(); - // print chapter title - $this->ChapterTitle($num, $title); - // set columns - $this->setEqualColumns(3, 57); - // print chapter body - $this->ChapterBody($file, $mode); - } - - /** - * Set chapter title - * @param $num (int) chapter number - * @param $title (string) chapter title - * @public - */ - public function ChapterTitle($num, $title) { - $this->SetFont('helvetica', '', 14); - $this->SetFillColor(200, 220, 255); - $this->Cell(180, 6, 'Chapter '.$num.' : '.$title, 0, 1, '', 1); - $this->Ln(4); - } - - /** - * Print chapter body - * @param $file (string) name of the file containing the chapter body - * @param $mode (boolean) if true the chapter body is in HTML, otherwise in simple text. - * @public - */ - public function ChapterBody($file, $mode=false) { - $this->selectColumn(); - // get esternal file content - $content = file_get_contents($file, false); - // set font - $this->SetFont('times', '', 9); - $this->SetTextColor(50, 50, 50); - // print content - if ($mode) { - // ------ HTML MODE ------ - $this->writeHTML($content, true, false, true, false, 'J'); - } else { - // ------ TEXT MODE ------ - $this->Write(0, $content, '', 0, 'J', true, 0, false, true, 0); - } - $this->Ln(); - } -} // end of extended class - -// --------------------------------------------------------- -// EXAMPLE -// --------------------------------------------------------- -// create new PDF document -$pdf = new MC_TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 010'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 010', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// print TEXT -$pdf->PrintChapter(1, 'LOREM IPSUM [TEXT]', 'data/chapter_demo_1.txt', false); - -// print HTML -$pdf->PrintChapter(2, 'LOREM IPSUM [HTML]', 'data/chapter_demo_2.txt', true); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_010.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_011.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_011.php deleted file mode 100644 index 623ba3b8699..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_011.php +++ /dev/null @@ -1,138 +0,0 @@ -SetFillColor(255, 0, 0); - $this->SetTextColor(255); - $this->SetDrawColor(128, 0, 0); - $this->SetLineWidth(0.3); - $this->SetFont('', 'B'); - // Header - $w = array(40, 35, 40, 45); - $num_headers = count($header); - for($i = 0; $i < $num_headers; ++$i) { - $this->Cell($w[$i], 7, $header[$i], 1, 0, 'C', 1); - } - $this->Ln(); - // Color and font restoration - $this->SetFillColor(224, 235, 255); - $this->SetTextColor(0); - $this->SetFont(''); - // Data - $fill = 0; - foreach($data as $row) { - $this->Cell($w[0], 6, $row[0], 'LR', 0, 'L', $fill); - $this->Cell($w[1], 6, $row[1], 'LR', 0, 'L', $fill); - $this->Cell($w[2], 6, number_format($row[2]), 'LR', 0, 'R', $fill); - $this->Cell($w[3], 6, number_format($row[3]), 'LR', 0, 'R', $fill); - $this->Ln(); - $fill=!$fill; - } - $this->Cell(array_sum($w), 0, '', 'T'); - } -} - -// create new PDF document -$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 011'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 011', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 12); - -// add a page -$pdf->AddPage(); - -// column titles -$header = array('Country', 'Capital', 'Area (sq km)', 'Pop. (thousands)'); - -// data loading -$data = $pdf->LoadData('data/table_data_demo.txt'); - -// print colored table -$pdf->ColoredTable($header, $data); - -// --------------------------------------------------------- - -// close and output PDF document -$pdf->Output('example_011.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_012.pdf b/htdocs/includes/tecnickcom/tcpdf/examples/example_012.pdf deleted file mode 100644 index eec8ee0cd916cb7a7fadbaa9e7a5c8d2581ca902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13214 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 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_012.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_012.php deleted file mode 100644 index aaa196b7a7d..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_012.php +++ /dev/null @@ -1,205 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 012'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// disable header and footer -$pdf->setPrintHeader(false); -$pdf->setPrintFooter(false); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 10); - -// add a page -$pdf->AddPage(); - -$style = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10,20,5,10', 'phase' => 10, 'color' => array(255, 0, 0)); -$style2 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0)); -$style3 = array('width' => 1, 'cap' => 'round', 'join' => 'round', 'dash' => '2,10', 'color' => array(255, 0, 0)); -$style4 = array('L' => 0, - 'T' => array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => '20,10', 'phase' => 10, 'color' => array(100, 100, 255)), - 'R' => array('width' => 0.50, 'cap' => 'round', 'join' => 'miter', 'dash' => 0, 'color' => array(50, 50, 127)), - 'B' => array('width' => 0.75, 'cap' => 'square', 'join' => 'miter', 'dash' => '30,10,5,10')); -$style5 = array('width' => 0.25, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 64, 128)); -$style6 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => '10,10', 'color' => array(0, 128, 0)); -$style7 = array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 128, 0)); - -// Line -$pdf->Text(5, 4, 'Line examples'); -$pdf->Line(5, 10, 80, 30, $style); -$pdf->Line(5, 10, 5, 30, $style2); -$pdf->Line(5, 10, 80, 10, $style3); - -// Rect -$pdf->Text(100, 4, 'Rectangle examples'); -$pdf->Rect(100, 10, 40, 20, 'DF', $style4, array(220, 220, 200)); -$pdf->Rect(145, 10, 40, 20, 'D', array('all' => $style3)); - -// Curve -$pdf->Text(5, 34, 'Curve examples'); -$pdf->Curve(5, 40, 30, 55, 70, 45, 60, 75, null, $style6); -$pdf->Curve(80, 40, 70, 75, 150, 45, 100, 75, 'F', $style6); -$pdf->Curve(140, 40, 150, 55, 180, 45, 200, 75, 'DF', $style6, array(200, 220, 200)); - -// Circle and ellipse -$pdf->Text(5, 79, 'Circle and ellipse examples'); -$pdf->SetLineStyle($style5); -$pdf->Circle(25,105,20); -$pdf->Circle(25,105,10, 90, 180, null, $style6); -$pdf->Circle(25,105,10, 270, 360, 'F'); -$pdf->Circle(25,105,10, 270, 360, 'C', $style6); - -$pdf->SetLineStyle($style5); -$pdf->Ellipse(100,103,40,20); -$pdf->Ellipse(100,105,20,10, 0, 90, 180, null, $style6); -$pdf->Ellipse(100,105,20,10, 0, 270, 360, 'DF', $style6); - -$pdf->SetLineStyle($style5); -$pdf->Ellipse(175,103,30,15,45); -$pdf->Ellipse(175,105,15,7.50, 45, 90, 180, null, $style6); -$pdf->Ellipse(175,105,15,7.50, 45, 270, 360, 'F', $style6, array(220, 200, 200)); - -// Polygon -$pdf->Text(5, 129, 'Polygon examples'); -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); -$pdf->Polygon(array(5,135,45,135,15,165)); -$pdf->Polygon(array(60,135,80,135,80,155,70,165,50,155), 'DF', array($style6, $style7, $style7, 0, $style6), array(220, 200, 200)); -$pdf->Polygon(array(120,135,140,135,150,155,110,155), 'D', array($style6, 0, $style7, $style6)); -$pdf->Polygon(array(160,135,190,155,170,155,200,160,160,165), 'DF', array('all' => $style6), array(220, 220, 220)); - -// Polygonal Line -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 164))); -$pdf->PolyLine(array(80,165,90,160,100,165,110,160,120,165,130,160,140,165), 'D', array(), array()); - -// Regular polygon -$pdf->Text(5, 169, 'Regular polygon examples'); -$pdf->SetLineStyle($style5); -$pdf->RegularPolygon(20, 190, 15, 6, 0, 1, 'F'); -$pdf->RegularPolygon(55, 190, 15, 6); -$pdf->RegularPolygon(55, 190, 10, 6, 45, 0, 'DF', array($style6, 0, $style7, 0, $style7, $style7)); -$pdf->RegularPolygon(90, 190, 15, 3, 0, 1, 'DF', array('all' => $style5), array(200, 220, 200), 'F', array(255, 200, 200)); -$pdf->RegularPolygon(125, 190, 15, 4, 30, 1, null, array('all' => $style5), null, null, $style6); -$pdf->RegularPolygon(160, 190, 15, 10); - -// Star polygon -$pdf->Text(5, 209, 'Star polygon examples'); -$pdf->SetLineStyle($style5); -$pdf->StarPolygon(20, 230, 15, 20, 3, 0, 1, 'F'); -$pdf->StarPolygon(55, 230, 15, 12, 5); -$pdf->StarPolygon(55, 230, 7, 12, 5, 45, 0, 'DF', array('all' => $style7), array(220, 220, 200), 'F', array(255, 200, 200)); -$pdf->StarPolygon(90, 230, 15, 20, 6, 0, 1, 'DF', array('all' => $style5), array(220, 220, 200), 'F', array(255, 200, 200)); -$pdf->StarPolygon(125, 230, 15, 5, 2, 30, 1, null, array('all' => $style5), null, null, $style6); -$pdf->StarPolygon(160, 230, 15, 10, 3); -$pdf->StarPolygon(160, 230, 7, 50, 26); - -// Rounded rectangle -$pdf->Text(5, 249, 'Rounded rectangle examples'); -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); -$pdf->RoundedRect(5, 255, 40, 30, 3.50, '1111', 'DF'); -$pdf->RoundedRect(50, 255, 40, 30, 6.50, '1000'); -$pdf->RoundedRect(95, 255, 40, 30, 10.0, '1111', null, $style6); -$pdf->RoundedRect(140, 255, 40, 30, 8.0, '0101', 'DF', $style6, array(200, 200, 200)); - -// Arrows -$pdf->Text(185, 249, 'Arrows'); -$pdf->SetLineStyle($style5); -$pdf->SetFillColor(255, 0, 0); -$pdf->Arrow(200, 280, 185, 266, 0, 5, 15); -$pdf->Arrow(200, 280, 190, 263, 1, 5, 15); -$pdf->Arrow(200, 280, 195, 261, 2, 5, 15); -$pdf->Arrow(200, 280, 200, 260, 3, 5, 15); - -// - . - . - . - . - . - . - . - . - . - . - . - . - . - . - - -// ellipse - -// add a page -$pdf->AddPage(); - -$pdf->Cell(0, 0, 'Arc of Ellipse'); - -// center of ellipse -$xc=100; -$yc=100; - -// X Y axis -$pdf->SetDrawColor(200, 200, 200); -$pdf->Line($xc-50, $yc, $xc+50, $yc); -$pdf->Line($xc, $yc-50, $xc, $yc+50); - -// ellipse axis -$pdf->SetDrawColor(200, 220, 255); -$pdf->Line($xc-50, $yc-50, $xc+50, $yc+50); -$pdf->Line($xc-50, $yc+50, $xc+50, $yc-50); - -// ellipse -$pdf->SetDrawColor(200, 255, 200); -$pdf->Ellipse($xc, $yc, 30, 15, 45, 0, 360, 'D', array(), array(), 2); - -// ellipse arc -$pdf->SetDrawColor(255, 0, 0); -$pdf->Ellipse($xc, $yc, 30, 15, 45, 45, 90, 'D', array(), array(), 2); - - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_012.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_013.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_013.php deleted file mode 100644 index a472760c1c8..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_013.php +++ /dev/null @@ -1,229 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 013'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 013', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Graphic Transformations', '', 0, 'C', 1, 0, false, false, 0); - -// set font -$pdf->SetFont('helvetica', '', 10); - -// --- Scaling --------------------------------------------- -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(50, 70, 40, 10, 'D'); -$pdf->Text(50, 66, 'Scale'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// Scale by 150% centered by (50,80) which is the lower left corner of the rectangle -$pdf->ScaleXY(150, 50, 80); -$pdf->Rect(50, 70, 40, 10, 'D'); -$pdf->Text(50, 66, 'Scale'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Translation ----------------------------------------- -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(125, 70, 40, 10, 'D'); -$pdf->Text(125, 66, 'Translate'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// Translate 7 to the right, 5 to the bottom -$pdf->Translate(7, 5); -$pdf->Rect(125, 70, 40, 10, 'D'); -$pdf->Text(125, 66, 'Translate'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Rotation -------------------------------------------- -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(70, 100, 40, 10, 'D'); -$pdf->Text(70, 96, 'Rotate'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// Rotate 20 degrees counter-clockwise centered by (70,110) which is the lower left corner of the rectangle -$pdf->Rotate(20, 70, 110); -$pdf->Rect(70, 100, 40, 10, 'D'); -$pdf->Text(70, 96, 'Rotate'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Skewing --------------------------------------------- -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(125, 100, 40, 10, 'D'); -$pdf->Text(125, 96, 'Skew'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// skew 30 degrees along the x-axis centered by (125,110) which is the lower left corner of the rectangle -$pdf->SkewX(30, 125, 110); -$pdf->Rect(125, 100, 40, 10, 'D'); -$pdf->Text(125, 96, 'Skew'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Mirroring horizontally ------------------------------ -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(70, 130, 40, 10, 'D'); -$pdf->Text(70, 126, 'MirrorH'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// mirror horizontally with axis of reflection at x-position 70 (left side of the rectangle) -$pdf->MirrorH(70); -$pdf->Rect(70, 130, 40, 10, 'D'); -$pdf->Text(70, 126, 'MirrorH'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Mirroring vertically -------------------------------- -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(125, 130, 40, 10, 'D'); -$pdf->Text(125, 126, 'MirrorV'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// mirror vertically with axis of reflection at y-position 140 (bottom side of the rectangle) -$pdf->MirrorV(140); -$pdf->Rect(125, 130, 40, 10, 'D'); -$pdf->Text(125, 126, 'MirrorV'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Point reflection ------------------------------------ -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(70, 160, 40, 10, 'D'); -$pdf->Text(70, 156, 'MirrorP'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -// Start Transformation -$pdf->StartTransform(); -// point reflection at the lower left point of rectangle -$pdf->MirrorP(70,170); -$pdf->Rect(70, 160, 40, 10, 'D'); -$pdf->Text(70, 156, 'MirrorP'); -// Stop Transformation -$pdf->StopTransform(); - -// --- Mirroring against a straigth line described by a point (120, 120) and an angle -20° -$angle=-20; -$px=120; -$py=170; - -// just for visualisation: the straight line to mirror against - -$pdf->SetDrawColor(200); -$pdf->Line($px-1,$py-1,$px+1,$py+1); -$pdf->Line($px-1,$py+1,$px+1,$py-1); -$pdf->StartTransform(); -$pdf->Rotate($angle, $px, $py); -$pdf->Line($px-5, $py, $px+60, $py); -$pdf->StopTransform(); - -$pdf->SetDrawColor(200); -$pdf->SetTextColor(200); -$pdf->Rect(125, 160, 40, 10, 'D'); -$pdf->Text(125, 156, 'MirrorL'); -$pdf->SetDrawColor(0); -$pdf->SetTextColor(0); -//Start Transformation -$pdf->StartTransform(); -//mirror against the straight line -$pdf->MirrorL($angle, $px, $py); -$pdf->Rect(125, 160, 40, 10, 'D'); -$pdf->Text(125, 156, 'MirrorL'); -//Stop Transformation -$pdf->StopTransform(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_013.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_014.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_014.php deleted file mode 100644 index 27e4efc460c..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_014.php +++ /dev/null @@ -1,194 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 014'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 014', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// IMPORTANT: disable font subsetting to allow users editing the document -$pdf->setFontSubsetting(false); - -// set font -$pdf->SetFont('helvetica', '', 10, '', false); - -// add a page -$pdf->AddPage(); - -/* -It is possible to create text fields, combo boxes, check boxes and buttons. -Fields are created at the current position and are given a name. -This name allows to manipulate them via JavaScript in order to perform some validation for instance. -*/ - -// set default form properties -$pdf->setFormDefaultProp(array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 200), 'strokeColor'=>array(255, 128, 128))); - -$pdf->SetFont('helvetica', 'BI', 18); -$pdf->Cell(0, 5, 'Example of Form', 0, 1, 'C'); -$pdf->Ln(10); - -$pdf->SetFont('helvetica', '', 12); - -// First name -$pdf->Cell(35, 5, 'First name:'); -$pdf->TextField('firstname', 50, 5); -$pdf->Ln(6); - -// Last name -$pdf->Cell(35, 5, 'Last name:'); -$pdf->TextField('lastname', 50, 5); -$pdf->Ln(6); - -// Gender -$pdf->Cell(35, 5, 'Gender:'); -$pdf->ComboBox('gender', 30, 5, array(array('', '-'), array('M', 'Male'), array('F', 'Female'))); -$pdf->Ln(6); - -// Drink -$pdf->Cell(35, 5, 'Drink:'); -//$pdf->RadioButton('drink', 5, array('readonly' => 'true'), array(), 'Water'); -$pdf->RadioButton('drink', 5, array(), array(), 'Water'); -$pdf->Cell(35, 5, 'Water'); -$pdf->Ln(6); -$pdf->Cell(35, 5, ''); -$pdf->RadioButton('drink', 5, array(), array(), 'Beer', true); -$pdf->Cell(35, 5, 'Beer'); -$pdf->Ln(6); -$pdf->Cell(35, 5, ''); -$pdf->RadioButton('drink', 5, array(), array(), 'Wine'); -$pdf->Cell(35, 5, 'Wine'); -$pdf->Ln(6); -$pdf->Cell(35, 5, ''); -$pdf->RadioButton('drink', 5, array(), array(), 'Milk'); -$pdf->Cell(35, 5, 'Milk'); -$pdf->Ln(10); - -// Newsletter -$pdf->Cell(35, 5, 'Newsletter:'); -$pdf->CheckBox('newsletter', 5, true, array(), array(), 'OK'); - -$pdf->Ln(10); -// Address -$pdf->Cell(35, 5, 'Address:'); -$pdf->TextField('address', 60, 18, array('multiline'=>true, 'lineWidth'=>0, 'borderStyle'=>'none'), array('v'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 'dv'=>'Lorem ipsum dolor sit amet, consectetur adipiscing elit.')); -$pdf->Ln(19); - -// Listbox -$pdf->Cell(35, 5, 'List:'); -$pdf->ListBox('listbox', 60, 15, array('', 'item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7'), array('multipleSelection'=>'true')); -$pdf->Ln(20); - -// E-mail -$pdf->Cell(35, 5, 'E-mail:'); -$pdf->TextField('email', 50, 5); -$pdf->Ln(6); - -// Date of the day -$pdf->Cell(35, 5, 'Date:'); -$pdf->TextField('date', 30, 5, array(), array('v'=>date('Y-m-d'), 'dv'=>date('Y-m-d'))); -$pdf->Ln(10); - -$pdf->SetX(50); - -// Button to validate and print -$pdf->Button('print', 30, 10, 'Print', 'Print()', array('lineWidth'=>2, 'borderStyle'=>'beveled', 'fillColor'=>array(128, 196, 255), 'strokeColor'=>array(64, 64, 64))); - -// Reset Button -$pdf->Button('reset', 30, 10, 'Reset', array('S'=>'ResetForm'), array('lineWidth'=>2, 'borderStyle'=>'beveled', 'fillColor'=>array(128, 196, 255), 'strokeColor'=>array(64, 64, 64))); - -// Submit Button -$pdf->Button('submit', 30, 10, 'Submit', array('S'=>'SubmitForm', 'F'=>'http://localhost/printvars.php', 'Flags'=>array('ExportFormat')), array('lineWidth'=>2, 'borderStyle'=>'beveled', 'fillColor'=>array(128, 196, 255), 'strokeColor'=>array(64, 64, 64))); - -// Form validation functions -$js = <<IncludeJS($js); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_014.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_015.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_015.php deleted file mode 100644 index 4cc03cabe20..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_015.php +++ /dev/null @@ -1,161 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 015'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 015', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// Bookmark($txt, $level=0, $y=-1, $page='', $style='', $color=array(0,0,0)) - -// set font -$pdf->SetFont('times', 'B', 20); - -// add a page -$pdf->AddPage(); - -// set a bookmark for the current position -$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128)); - -// print a line using Cell() -$pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L'); - -$pdf->SetFont('times', 'I', 14); -$pdf->Write(0, 'You can set PDF Bookmarks using the Bookmark() method. -You can set PDF Named Destinations using the setDestination() method.'); - -$pdf->SetFont('times', 'B', 20); - -// add other pages and bookmarks - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(0,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(0,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,0,0)); -$pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(0,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L'); - -$pdf->AddPage(); -// add a named destination so you can open this document at this page using the link: "example_015.pdf#chapter2" -$pdf->setDestination('chapter2', 0, ''); -// add a bookmark that points to a named destination -$pdf->Bookmark('Chapter 2', 0, 0, '', 'BI', array(128,0,0), -1, '#chapter2'); -$pdf->Cell(0, 10, 'Chapter 2', 0, 1, 'L'); -$pdf->SetFont('times', 'I', 14); -$pdf->Write(0, 'Once saved, you can open this document at this page using the link: "example_015.pdf#chapter2".'); - -$pdf->AddPage(); -$pdf->setDestination('chapter3', 0, ''); -$pdf->SetFont('times', 'B', 20); -$pdf->Bookmark('Chapter 3', 0, 0, '', 'B', array(0,64,128)); -$pdf->Cell(0, 10, 'Chapter 3', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->setDestination('chapter4', 0, ''); -$pdf->SetFont('times', 'B', 20); -$pdf->Bookmark('Chapter 4', 0, 0, '', 'B', array(0,64,128)); -$pdf->Cell(0, 10, 'Chapter 4', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Chapter 5', 0, 0, '', 'B', array(0,128,0)); -$pdf->Cell(0, 10, 'Chapter 5', 0, 1, 'L'); -$txt = 'Example of File Attachment. -Double click on the icon to open the attached file.'; -$pdf->SetFont('helvetica', '', 10); -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// attach an external file TXT file -$pdf->Annotation(20, 50, 5, 5, 'TXT file', array('Subtype'=>'FileAttachment', 'Name' => 'PushPin', 'FS' => 'data/utf8test.txt')); - -// attach an external file -$pdf->Annotation(50, 50, 5, 5, 'PDF file', array('Subtype'=>'FileAttachment', 'Name' => 'PushPin', 'FS' => 'example_012.pdf')); - -// add a bookmark that points to an embedded file -// NOTE: prefix the file name with the * character for generic file and with % character for PDF file -$pdf->Bookmark('TXT file', 0, 0, '', 'B', array(128,0,255), -1, '*utf8test.txt'); - -// add a bookmark that points to an embedded file -// NOTE: prefix the file name with the * character for generic file and with % character for PDF file -$pdf->Bookmark('PDF file', 0, 0, '', 'B', array(128,0,255), -1, '%example_012.pdf'); - -// add a bookmark that points to an external URL -$pdf->Bookmark('External URL', 0, 0, '', 'B', array(0,0,255), -1, 'http://www.tcpdf.org'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_015.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_016.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_016.php deleted file mode 100644 index 34284f20fb3..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_016.php +++ /dev/null @@ -1,134 +0,0 @@ -SetProtection(array('print', 'copy'), '', null, 0, null); - -// Example with public-key -// To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234 -//$pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', $owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../config/cert/tcpdf.crt', 'p' => array('print')))); - -// ********************************************************* - - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 016'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 016', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array('helvetica', '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array('helvetica', '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 16); - -// add a page -$pdf->AddPage(); - -// set some text to print -$txt = <<Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_016.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_017.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_017.php deleted file mode 100644 index 1324091c872..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_017.php +++ /dev/null @@ -1,117 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 017'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 017', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of independent Multicell() columns', '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(5); - -$pdf->SetFont('times', '', 12); - -// create columns content -// create columns content -$left_column = '[LEFT COLUMN] left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column'."\n"; - -$right_column = '[RIGHT COLUMN] right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column'."\n"; - -// MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0) - -// set color for background -$pdf->SetFillColor(255, 255, 200); - -// set color for text -$pdf->SetTextColor(0, 63, 127); - -// write the first column -$pdf->MultiCell(80, 0, $left_column, 1, 'J', 1, 0, '', '', true, 0, false, true, 0); - -// set color for background -$pdf->SetFillColor(215, 235, 255); - -// set color for text -$pdf->SetTextColor(127, 31, 0); - -// write the second column -$pdf->MultiCell(80, 0, $right_column, 1, 'J', 1, 1, '', '', true, 0, false, true, 0); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_017.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_018.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_018.php deleted file mode 100644 index a97a44ac86a..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_018.php +++ /dev/null @@ -1,128 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 018'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 018', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language dependent data: -$lg = Array(); -$lg['a_meta_charset'] = 'UTF-8'; -$lg['a_meta_dir'] = 'rtl'; -$lg['a_meta_language'] = 'fa'; -$lg['w_page'] = 'page'; - -// set some language-dependent strings (optional) -$pdf->setLanguageArray($lg); - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('dejavusans', '', 12); - -// add a page -$pdf->AddPage(); - -// Persian and English content -$htmlpersian = 'Persian example:
        سلام بالاخره مشکل PDF فارسی به طور کامل حل شد. اینم یک نمونش.
        مشکل حرف \"ژ\" در بعضی کلمات مانند کلمه ویژه نیز بر طرف شد.
        نگارش حروف لام و الف پشت سر هم نیز تصحیح شد.
        با تشکر از "Asuni Nicola" و محمد علی گل کار برای پشتیبانی زبان فارسی.'; -$pdf->WriteHTML($htmlpersian, true, 0, true, 0); - -// set LTR direction for english translation -$pdf->setRTL(false); - -$pdf->SetFontSize(10); - -// print newline -$pdf->Ln(); - -// Persian and English content -$htmlpersiantranslation = 'Hi, At last Problem of Persian PDF Solved completely. This is a example for it.
        Problem of "jeh" letter in some word like "ویژه" (=special) fix too.
        The joining of laa and alf letter fix now.
        Special thanks to "Nicola Asuni" and "Mohamad Ali Golkar" for Persian support.
        '; -$pdf->WriteHTML($htmlpersiantranslation, true, 0, true, 0); - -// Restore RTL direction -$pdf->setRTL(true); - -// set font -$pdf->SetFont('aefurat', '', 18); - -// print newline -$pdf->Ln(); - -// Arabic and English content -$pdf->Cell(0, 12, 'بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ',0,1,'C'); -$htmlcontent = 'تمَّ بِحمد الله حلّ مشكلة الكتابة باللغة العربية في ملفات الـPDF مع دعم الكتابة من اليمين إلى اليسار والحركَات .
        تم الحل بواسطة صالح المطرفي و Asuni Nicola . '; -$pdf->WriteHTML($htmlcontent, true, 0, true, 0); - -// set LTR direction for english translation -$pdf->setRTL(false); - -// print newline -$pdf->Ln(); - -$pdf->SetFont('aealarabiya', '', 18); - -// Arabic and English content -$htmlcontent2 = 'This is Arabic "العربية" Example With TCPDF.'; -$pdf->WriteHTML($htmlcontent2, true, 0, true, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_018.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_019.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_019.php deleted file mode 100644 index a1d5f08ab69..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_019.php +++ /dev/null @@ -1,98 +0,0 @@ -SetDocInfoUnicode(true); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni [€]'); -$pdf->SetTitle('TCPDF Example 019'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 019', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language dependent data: -$lg = Array(); -$lg['a_meta_charset'] = 'ISO-8859-1'; -$lg['a_meta_dir'] = 'ltr'; -$lg['a_meta_language'] = 'en'; -$lg['w_page'] = 'page'; - -// set some language-dependent strings (optional) -$pdf->setLanguageArray($lg); - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 12); - -// add a page -$pdf->AddPage(); - -// set color for background -$pdf->SetFillColor(200, 255, 200); - -$txt = 'An alternative configuration file is used on this example. -Check the definition of the K_TCPDF_EXTERNAL_CONFIG constant on the source code.'; - -// print some text -$pdf->MultiCell(0, 0, $txt."\n", 1, 'J', 1, 1, '', '', true, 0, false, true, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_019.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_020.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_020.php deleted file mode 100644 index 6204f746184..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_020.php +++ /dev/null @@ -1,146 +0,0 @@ -getPage(); - $y_start = $this->GetY(); - - // write the left cell - $this->MultiCell(40, 0, $left, 1, 'R', 1, 2, '', '', true, 0); - - $page_end_1 = $this->getPage(); - $y_end_1 = $this->GetY(); - - $this->setPage($page_start); - - // write the right cell - $this->MultiCell(0, 0, $right, 1, 'J', 0, 1, $this->GetX() ,$y_start, true, 0); - - $page_end_2 = $this->getPage(); - $y_end_2 = $this->GetY(); - - // set the new row position by case - if (max($page_end_1,$page_end_2) == $page_start) { - $ynew = max($y_end_1, $y_end_2); - } elseif ($page_end_1 == $page_end_2) { - $ynew = max($y_end_1, $y_end_2); - } elseif ($page_end_1 > $page_end_2) { - $ynew = $y_end_1; - } else { - $ynew = $y_end_2; - } - - $this->setPage(max($page_end_1,$page_end_2)); - $this->SetXY($this->GetX(),$ynew); - } - -} - -// create new PDF document -$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 020'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 020', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 20); -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of text layout using Multicell()', '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(5); - -$pdf->SetFont('times', '', 9); - -//$pdf->SetCellPadding(0); -//$pdf->SetLineWidth(2); - -// set color for background -$pdf->SetFillColor(255, 255, 200); - -$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc. - -Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa.'; - -// print some rows just as example -for ($i = 0; $i < 10; ++$i) { - $pdf->MultiRow('Row '.($i+1), $text."\n"); -} - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_020.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_021.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_021.php deleted file mode 100644 index 65e39fbf0d0..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_021.php +++ /dev/null @@ -1,91 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 021'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 021', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 9); - -// add a page -$pdf->AddPage(); - -// create some HTML content -$html = '

        Example of HTML text flow

        Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

        A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B    ->    A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B ->    A + B = C    ->    C - B = A    ->    C - A = B

        BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined BoldItalicUnderlined'; - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, 0); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_021.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_022.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_022.php deleted file mode 100644 index ca35d68a439..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_022.php +++ /dev/null @@ -1,146 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 022'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 022', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// check also the following methods: -// SetDrawColorArray() -// SetFillColorArray() -// SetTextColorArray() - -// set font -$pdf->SetFont('helvetica', 'B', 18); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of CMYK, RGB and Grayscale colours', '', 0, 'L', true, 0, false, false, 0); - -// define style for border -$border_style = array('all' => array('width' => 2, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'phase' => 0)); - -// --- CMYK ------------------------------------------------ - -$pdf->SetDrawColor(50, 0, 0, 0); -$pdf->SetFillColor(100, 0, 0, 0); -$pdf->SetTextColor(100, 0, 0, 0); -$pdf->Rect(30, 60, 30, 30, 'DF', $border_style); -$pdf->Text(30, 92, 'Cyan'); - -$pdf->SetDrawColor(0, 50, 0, 0); -$pdf->SetFillColor(0, 100, 0, 0); -$pdf->SetTextColor(0, 100, 0, 0); -$pdf->Rect(70, 60, 30, 30, 'DF', $border_style); -$pdf->Text(70, 92, 'Magenta'); - -$pdf->SetDrawColor(0, 0, 50, 0); -$pdf->SetFillColor(0, 0, 100, 0); -$pdf->SetTextColor(0, 0, 100, 0); -$pdf->Rect(110, 60, 30, 30, 'DF', $border_style); -$pdf->Text(110, 92, 'Yellow'); - -$pdf->SetDrawColor(0, 0, 0, 50); -$pdf->SetFillColor(0, 0, 0, 100); -$pdf->SetTextColor(0, 0, 0, 100); -$pdf->Rect(150, 60, 30, 30, 'DF', $border_style); -$pdf->Text(150, 92, 'Black'); - -// --- RGB ------------------------------------------------- - -$pdf->SetDrawColor(255, 127, 127); -$pdf->SetFillColor(255, 0, 0); -$pdf->SetTextColor(255, 0, 0); -$pdf->Rect(30, 110, 30, 30, 'DF', $border_style); -$pdf->Text(30, 142, 'Red'); - -$pdf->SetDrawColor(127, 255, 127); -$pdf->SetFillColor(0, 255, 0); -$pdf->SetTextColor(0, 255, 0); -$pdf->Rect(70, 110, 30, 30, 'DF', $border_style); -$pdf->Text(70, 142, 'Green'); - -$pdf->SetDrawColor(127, 127, 255); -$pdf->SetFillColor(0, 0, 255); -$pdf->SetTextColor(0, 0, 255); -$pdf->Rect(110, 110, 30, 30, 'DF', $border_style); -$pdf->Text(110, 142, 'Blue'); - -// --- GRAY ------------------------------------------------ - -$pdf->SetDrawColor(191); -$pdf->SetFillColor(127); -$pdf->SetTextColor(127); -$pdf->Rect(30, 160, 30, 30, 'DF', $border_style); -$pdf->Text(30, 192, 'Gray'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_022.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_023.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_023.php deleted file mode 100644 index dbb8b9831f8..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_023.php +++ /dev/null @@ -1,113 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 023'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 023', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', 'BI', 14); - -// Start First Page Group -$pdf->startPageGroup(); - -// add a page -$pdf->AddPage(); - -// set some text to print -$txt = <<Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// add second page -$pdf->AddPage(); -$pdf->Cell(0, 10, 'This is the second page of group 1', 0, 1, 'L'); - -// Start Second Page Group -$pdf->startPageGroup(); - -// add some pages -$pdf->AddPage(); -$pdf->Cell(0, 10, 'This is the first page of group 2', 0, 1, 'L'); -$pdf->AddPage(); -$pdf->Cell(0, 10, 'This is the second page of group 2', 0, 1, 'L'); -$pdf->AddPage(); -$pdf->Cell(0, 10, 'This is the third page of group 2', 0, 1, 'L'); -$pdf->AddPage(); -$pdf->Cell(0, 10, 'This is the fourth page of group 2', 0, 1, 'L'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_023.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_024.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_024.php deleted file mode 100644 index b60d12dc736..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_024.php +++ /dev/null @@ -1,140 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 024'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 024', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 18); - -// add a page -$pdf->AddPage(); - -/* - * setVisibility() allows to restrict the rendering of some - * elements to screen or printout. This can be useful, for - * instance, to put a background image or color that will - * show on screen but won't print. - */ - -$txt = 'You can limit the visibility of PDF objects to screen or printer by using the setVisibility() method. -Check the print preview of this document to display the alternative text.'; - -$pdf->Write(0, $txt, '', 0, '', true, 0, false, false, 0); - -// change font size -$pdf->SetFontSize(40); - -// change text color -$pdf->SetTextColor(0,63,127); - -// set visibility only for screen -$pdf->setVisibility('screen'); - -// write something only for screen -$pdf->Write(0, '[This line is for display]', '', 0, 'C', true, 0, false, false, 0); - -// set visibility only for print -$pdf->setVisibility('print'); - -// change text color -$pdf->SetTextColor(127,0,0); - -// write something only for print -$pdf->Write(0, '[This line is for printout]', '', 0, 'C', true, 0, false, false, 0); - -// restore visibility -$pdf->setVisibility('all'); - -// --------------------------------------------------------- - -// LAYERS - -// start a new layer -$pdf->startLayer('layer1', true, true); - -// change font size -$pdf->SetFontSize(18); - -// change text color -$pdf->SetTextColor(0,127,0); - -$txt = 'Using the startLayer() method you can group PDF objects into layers. -This text is on "layer1".'; - -// write something -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// close the current layer -$pdf->endLayer(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_024.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_025.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_025.php deleted file mode 100644 index 1260d6207e5..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_025.php +++ /dev/null @@ -1,118 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 025'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 025', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 12); - -// add a page -$pdf->AddPage(); - -$txt = 'You can set the transparency of PDF objects using the setAlpha() method.'; -$pdf->Write(0, $txt, '', 0, '', true, 0, false, false, 0); - -/* - * setAlpha() gives transparency support. You can set the - * alpha channel from 0 (fully transparent) to 1 (fully - * opaque). It applies to all elements (text, drawings, - * images). - */ - -$pdf->SetLineWidth(2); - -// draw opaque red square -$pdf->SetFillColor(255, 0, 0); -$pdf->SetDrawColor(127, 0, 0); -$pdf->Rect(30, 40, 60, 60, 'DF'); - -// set alpha to semi-transparency -$pdf->SetAlpha(0.5); - -// draw green square -$pdf->SetFillColor(0, 255, 0); -$pdf->SetDrawColor(0, 127, 0); -$pdf->Rect(50, 60, 60, 60, 'DF'); - -// draw blue square -$pdf->SetFillColor(0, 0, 255); -$pdf->SetDrawColor(0, 0, 127); -$pdf->Rect(70, 80, 60, 60, 'DF'); - -// draw jpeg image -$pdf->Image('images/image_demo.jpg', 90, 100, 60, 60, '', 'http://www.tcpdf.org', '', true, 72); - -// restore full opacity -$pdf->SetAlpha(1); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_025.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_026.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_026.php deleted file mode 100644 index 5646e9151a0..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_026.php +++ /dev/null @@ -1,145 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 026'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 026', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 22); - -// add a page -$pdf->AddPage(); - -// set color for text stroke -$pdf->SetDrawColor(255,0,0); - - -$pdf->setTextRenderingMode($stroke=0, $fill=true, $clip=false); -$pdf->Write(0, 'Fill text', '', 0, '', true, 0, false, false, 0); - -$pdf->setTextRenderingMode($stroke=0.2, $fill=false, $clip=false); -$pdf->Write(0, 'Stroke text', '', 0, '', true, 0, false, false, 0); - -$pdf->setTextRenderingMode($stroke=0.2, $fill=true, $clip=false); -$pdf->Write(0, 'Fill, then stroke text', '', 0, '', true, 0, false, false, 0); - -$pdf->setTextRenderingMode($stroke=0, $fill=false, $clip=false); -$pdf->Write(0, 'Neither fill nor stroke text (invisible)', '', 0, '', true, 0, false, false, 0); - - -// * * * CLIPPING MODES * * * * * * * * * * * * * * * * * * - -$pdf->StartTransform(); -$pdf->setTextRenderingMode($stroke=0, $fill=true, $clip=true); -$pdf->Write(0, 'Fill text and add to path for clipping', '', 0, '', true, 0, false, false, 0); -$pdf->Image('images/image_demo.jpg', 15, 65, 170, 10, '', '', '', true, 72); -$pdf->StopTransform(); - -$pdf->StartTransform(); -$pdf->setTextRenderingMode($stroke=0.3, $fill=false, $clip=true); -$pdf->Write(0, 'Stroke text and add to path for clipping', '', 0, '', true, 0, false, false, 0); -$pdf->Image('images/image_demo.jpg', 15, 75, 170, 10, '', '', '', true, 72); -$pdf->StopTransform(); - -$pdf->StartTransform(); -$pdf->setTextRenderingMode($stroke=0.3, $fill=true, $clip=true); -$pdf->Write(0, 'Fill, then stroke text and add to path for clipping', '', 0, '', true, 0, false, false, 0); -$pdf->Image('images/image_demo.jpg', 15, 85, 170, 10, '', '', '', true, 72); -$pdf->StopTransform(); - -$pdf->StartTransform(); -$pdf->setTextRenderingMode($stroke=0, $fill=false, $clip=true); -$pdf->Write(0, 'Add text to path for clipping', '', 0, '', true, 0, false, false, 0); -$pdf->Image('images/image_demo.jpg', 15, 95, 170, 10, '', '', '', true, 72); -$pdf->StopTransform(); - -// reset text rendering mode -$pdf->setTextRenderingMode($stroke=0, $fill=true, $clip=false); - -// * * * HTML MODE * * * * * * * * * * * * * * * * * * * * * - -// The following attributes were added to HTML: -// stroke : stroke width -// strokecolor : stroke color -// fill : true (default) to fill the font, false otherwise - - -// create some HTML content with text rendering modes -$html = 'HTML Fill text
        '; -$html .= 'HTML Stroke text
        '; -$html .= 'HTML Fill, then stroke text
        '; -$html .= 'HTML Neither fill nor stroke text (invisible)
        '; - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_026.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_027.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_027.php deleted file mode 100644 index a23707451a8..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_027.php +++ /dev/null @@ -1,418 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 027'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 027', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set a barcode on the page footer -$pdf->setBarcode(date('Y-m-d H:i:s')); - -// set font -$pdf->SetFont('helvetica', '', 11); - -// add a page -$pdf->AddPage(); - -// print a message -$txt = "You can also export 1D barcodes in other formats (PNG, SVG, HTML). Check the examples inside the barcodes directory.\n"; -$pdf->MultiCell(70, 50, $txt, 0, 'J', false, 1, 125, 30, true, 0, false, true, 0, 'T', false); -$pdf->SetY(30); - -// ----------------------------------------------------------------------------- - -$pdf->SetFont('helvetica', '', 10); - -// define barcode style -$style = array( - 'position' => '', - 'align' => 'C', - 'stretch' => false, - 'fitwidth' => true, - 'cellfitalign' => '', - 'border' => true, - 'hpadding' => 'auto', - 'vpadding' => 'auto', - 'fgcolor' => array(0,0,0), - 'bgcolor' => false, //array(255,255,255), - 'text' => true, - 'font' => 'helvetica', - 'fontsize' => 8, - 'stretchtext' => 4 -); - -// PRINT VARIOUS 1D BARCODES - -// CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. -$pdf->Cell(0, 0, 'CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9', 0, 1); -$pdf->write1DBarcode('CODE 39', 'C39', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 39 + CHECKSUM -$pdf->Cell(0, 0, 'CODE 39 + CHECKSUM', 0, 1); -$pdf->write1DBarcode('CODE 39 +', 'C39+', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 39 EXTENDED -$pdf->Cell(0, 0, 'CODE 39 EXTENDED', 0, 1); -$pdf->write1DBarcode('CODE 39 E', 'C39E', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 39 EXTENDED + CHECKSUM -$pdf->Cell(0, 0, 'CODE 39 EXTENDED + CHECKSUM', 0, 1); -$pdf->write1DBarcode('CODE 39 E+', 'C39E+', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 93 - USS-93 -$pdf->Cell(0, 0, 'CODE 93 - USS-93', 0, 1); -$pdf->write1DBarcode('TEST93', 'C93', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// Standard 2 of 5 -$pdf->Cell(0, 0, 'Standard 2 of 5', 0, 1); -$pdf->write1DBarcode('1234567', 'S25', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// Standard 2 of 5 + CHECKSUM -$pdf->Cell(0, 0, 'Standard 2 of 5 + CHECKSUM', 0, 1); -$pdf->write1DBarcode('1234567', 'S25+', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// Interleaved 2 of 5 -$pdf->Cell(0, 0, 'Interleaved 2 of 5', 0, 1); -$pdf->write1DBarcode('1234567', 'I25', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// Interleaved 2 of 5 + CHECKSUM -$pdf->Cell(0, 0, 'Interleaved 2 of 5 + CHECKSUM', 0, 1); -$pdf->write1DBarcode('1234567', 'I25+', '', '', '', 18, 0.4, $style, 'N'); - - -// add a page ---------- -$pdf->AddPage(); - -// CODE 128 AUTO -$pdf->Cell(0, 0, 'CODE 128 AUTO', 0, 1); -$pdf->write1DBarcode('CODE 128 AUTO', 'C128', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 128 A -$pdf->Cell(0, 0, 'CODE 128 A', 0, 1); -$pdf->write1DBarcode('CODE 128 A', 'C128A', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 128 B -$pdf->Cell(0, 0, 'CODE 128 B', 0, 1); -$pdf->write1DBarcode('CODE 128 B', 'C128B', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 128 C -$pdf->Cell(0, 0, 'CODE 128 C', 0, 1); -$pdf->write1DBarcode('0123456789', 'C128C', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// EAN 8 -$pdf->Cell(0, 0, 'EAN 8', 0, 1); -$pdf->write1DBarcode('1234567', 'EAN8', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// EAN 13 -$pdf->Cell(0, 0, 'EAN 13', 0, 1); -$pdf->write1DBarcode('1234567890128', 'EAN13', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// UPC-A -$pdf->Cell(0, 0, 'UPC-A', 0, 1); -$pdf->write1DBarcode('12345678901', 'UPCA', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// UPC-E -$pdf->Cell(0, 0, 'UPC-E', 0, 1); -$pdf->write1DBarcode('04210000526', 'UPCE', '', '', '', 18, 0.4, $style, 'N'); - -// add a page ---------- -$pdf->AddPage(); - -// 5-Digits UPC-Based Extension -$pdf->Cell(0, 0, '5-Digits UPC-Based Extension', 0, 1); -$pdf->write1DBarcode('51234', 'EAN5', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// 2-Digits UPC-Based Extension -$pdf->Cell(0, 0, '2-Digits UPC-Based Extension', 0, 1); -$pdf->write1DBarcode('34', 'EAN2', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// MSI -$pdf->Cell(0, 0, 'MSI', 0, 1); -$pdf->write1DBarcode('80523', 'MSI', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// MSI + CHECKSUM (module 11) -$pdf->Cell(0, 0, 'MSI + CHECKSUM (module 11)', 0, 1); -$pdf->write1DBarcode('80523', 'MSI+', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODABAR -$pdf->Cell(0, 0, 'CODABAR', 0, 1); -$pdf->write1DBarcode('123456789', 'CODABAR', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// CODE 11 -$pdf->Cell(0, 0, 'CODE 11', 0, 1); -$pdf->write1DBarcode('123-456-789', 'CODE11', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// PHARMACODE -$pdf->Cell(0, 0, 'PHARMACODE', 0, 1); -$pdf->write1DBarcode('789', 'PHARMA', '', '', '', 18, 0.4, $style, 'N'); - -$pdf->Ln(); - -// PHARMACODE TWO-TRACKS -$pdf->Cell(0, 0, 'PHARMACODE TWO-TRACKS', 0, 1); -$pdf->write1DBarcode('105', 'PHARMA2T', '', '', '', 18, 2, $style, 'N'); - -// add a page ---------- -$pdf->AddPage(); - -// IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 -$pdf->Cell(0, 0, 'IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200', 0, 1); -$pdf->write1DBarcode('01234567094987654321-01234567891', 'IMB', '', '', '', 15, 0.6, $style, 'N'); - -$pdf->Ln(); - -// POSTNET -$pdf->Cell(0, 0, 'POSTNET', 0, 1); -$pdf->write1DBarcode('98000', 'POSTNET', '', '', '', 15, 0.6, $style, 'N'); - -$pdf->Ln(); - -// PLANET -$pdf->Cell(0, 0, 'PLANET', 0, 1); -$pdf->write1DBarcode('98000', 'PLANET', '', '', '', 15, 0.6, $style, 'N'); - -$pdf->Ln(); - -// RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) -$pdf->Cell(0, 0, 'RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)', 0, 1); -$pdf->write1DBarcode('SN34RD1A', 'RMS4CC', '', '', '', 15, 0.6, $style, 'N'); - -$pdf->Ln(); - -// KIX (Klant index - Customer index) -$pdf->Cell(0, 0, 'KIX (Klant index - Customer index)', 0, 1); -$pdf->write1DBarcode('SN34RDX1A', 'KIX', '', '', '', 15, 0.6, $style, 'N'); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// TEST BARCODE ALIGNMENTS - -// add a page -$pdf->AddPage(); - -// set a background color -$style['bgcolor'] = array(255,255,240); -$style['fgcolor'] = array(127,0,0); - -// Left position -$style['position'] = 'L'; -$pdf->write1DBarcode('LEFT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Center position -$style['position'] = 'C'; -$pdf->write1DBarcode('CENTER', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Right position -$style['position'] = 'R'; -$pdf->write1DBarcode('RIGHT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -$style['fgcolor'] = array(0,127,0); -$style['position'] = ''; -$style['stretch'] = false; // disable stretch -$style['fitwidth'] = false; // disable fitwidth - -// Left alignment -$style['align'] = 'L'; -$pdf->write1DBarcode('LEFT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Center alignment -$style['align'] = 'C'; -$pdf->write1DBarcode('CENTER', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Right alignment -$style['align'] = 'R'; -$pdf->write1DBarcode('RIGHT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -$style['fgcolor'] = array(0,64,127); -$style['position'] = ''; -$style['stretch'] = false; // disable stretch -$style['fitwidth'] = true; // disable fitwidth - -// Left alignment -$style['cellfitalign'] = 'L'; -$pdf->write1DBarcode('LEFT', 'C128A', 105, '', 90, 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Center alignment -$style['cellfitalign'] = 'C'; -$pdf->write1DBarcode('CENTER', 'C128A', 105, '', 90, 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Right alignment -$style['cellfitalign'] = 'R'; -$pdf->write1DBarcode('RIGHT', 'C128A', 105, '', 90, 15, 0.4, $style, 'N'); - -$pdf->Ln(2); -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -$style['fgcolor'] = array(127,0,127); - -// Left alignment -$style['position'] = 'L'; -$pdf->write1DBarcode('LEFT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Center alignment -$style['position'] = 'C'; -$pdf->write1DBarcode('CENTER', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -$pdf->Ln(2); - -// Right alignment -$style['position'] = 'R'; -$pdf->write1DBarcode('RIGHT', 'C128A', '', '', '', 15, 0.4, $style, 'N'); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// TEST BARCODE STYLE - -// define barcode style -$style = array( - 'position' => '', - 'align' => '', - 'stretch' => true, - 'fitwidth' => false, - 'cellfitalign' => '', - 'border' => true, - 'hpadding' => 'auto', - 'vpadding' => 'auto', - 'fgcolor' => array(0,0,128), - 'bgcolor' => array(255,255,128), - 'text' => true, - 'label' => 'CUSTOM LABEL', - 'font' => 'helvetica', - 'fontsize' => 8, - 'stretchtext' => 4 -); - -// CODE 39 EXTENDED + CHECKSUM -$pdf->Cell(0, 0, 'CODE 39 EXTENDED + CHECKSUM', 0, 1); -$pdf->SetLineStyle(array('width' => 1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0))); -$pdf->write1DBarcode('CODE 39 E+', 'C39E+', '', '', 120, 25, 0.4, $style, 'N'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_027.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_028.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_028.php deleted file mode 100644 index f250ac58970..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_028.php +++ /dev/null @@ -1,138 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 028'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// remove default header/footer -$pdf->setPrintHeader(false); -$pdf->setPrintFooter(false); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(10, PDF_MARGIN_TOP, 10); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -$pdf->SetDisplayMode('fullpage', 'SinglePage', 'UseNone'); - -// set font -$pdf->SetFont('times', 'B', 20); - -$pdf->AddPage('P', 'A4'); -$pdf->Cell(0, 0, 'A4 PORTRAIT', 1, 1, 'C'); - -$pdf->AddPage('L', 'A4'); -$pdf->Cell(0, 0, 'A4 LANDSCAPE', 1, 1, 'C'); - -$pdf->AddPage('P', 'A5'); -$pdf->Cell(0, 0, 'A5 PORTRAIT', 1, 1, 'C'); - -$pdf->AddPage('L', 'A5'); -$pdf->Cell(0, 0, 'A5 LANDSCAPE', 1, 1, 'C'); - -$pdf->AddPage('P', 'A6'); -$pdf->Cell(0, 0, 'A6 PORTRAIT', 1, 1, 'C'); - -$pdf->AddPage('L', 'A6'); -$pdf->Cell(0, 0, 'A6 LANDSCAPE', 1, 1, 'C'); - -$pdf->AddPage('P', 'A7'); -$pdf->Cell(0, 0, 'A7 PORTRAIT', 1, 1, 'C'); - -$pdf->AddPage('L', 'A7'); -$pdf->Cell(0, 0, 'A7 LANDSCAPE', 1, 1, 'C'); - - -// --- test backward editing --- - - -$pdf->setPage(1, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A4 test', 1, 1, 'C'); - -$pdf->setPage(2, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A4 test', 1, 1, 'C'); - -$pdf->setPage(3, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A5 test', 1, 1, 'C'); - -$pdf->setPage(4, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A5 test', 1, 1, 'C'); - -$pdf->setPage(5, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A6 test', 1, 1, 'C'); - -$pdf->setPage(6, true); -$pdf->SetY(50); -$pdf->Cell(0, 0, 'A6 test', 1, 1, 'C'); - -$pdf->setPage(7, true); -$pdf->SetY(40); -$pdf->Cell(0, 0, 'A7 test', 1, 1, 'C'); - -$pdf->setPage(8, true); -$pdf->SetY(40); -$pdf->Cell(0, 0, 'A7 test', 1, 1, 'C'); - -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_028.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_029.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_029.php deleted file mode 100644 index 33be97ecf76..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_029.php +++ /dev/null @@ -1,124 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 029'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 029', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set array for viewer preferences -$preferences = array( - 'HideToolbar' => true, - 'HideMenubar' => true, - 'HideWindowUI' => true, - 'FitWindow' => true, - 'CenterWindow' => true, - 'DisplayDocTitle' => true, - 'NonFullScreenPageMode' => 'UseNone', // UseNone, UseOutlines, UseThumbs, UseOC - 'ViewArea' => 'CropBox', // CropBox, BleedBox, TrimBox, ArtBox - 'ViewClip' => 'CropBox', // CropBox, BleedBox, TrimBox, ArtBox - 'PrintArea' => 'CropBox', // CropBox, BleedBox, TrimBox, ArtBox - 'PrintClip' => 'CropBox', // CropBox, BleedBox, TrimBox, ArtBox - 'PrintScaling' => 'AppDefault', // None, AppDefault - 'Duplex' => 'DuplexFlipLongEdge', // Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge - 'PickTrayByPDFSize' => true, - 'PrintPageRange' => array(1,1,2,3), - 'NumCopies' => 2 -); - -// Check the example n. 60 for advanced page settings - -// set pdf viewer preferences -$pdf->setViewerPreferences($preferences); - -// set font -$pdf->SetFont('times', '', 14); - -// add a page -$pdf->AddPage(); - -// print a line -$pdf->Cell(0, 12, 'DISPLAY PREFERENCES - PAGE 1', 1, 1, 'C'); - -$pdf->Ln(5); - -$pdf->Write(0, 'You can use the setViewerPreferences() method to change viewer preferences.', '', 0, 'L', true, 0, false, false, 0); - -// add a page -$pdf->AddPage(); -// print a line -$pdf->Cell(0, 12, 'DISPLAY PREFERENCES - PAGE 2', 0, 0, 'C'); - -// add a page -$pdf->AddPage(); -// print a line -$pdf->Cell(0, 12, 'DISPLAY PREFERENCES - PAGE 3', 0, 0, 'C'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_029.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_030.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_030.php deleted file mode 100644 index ed4e799d16e..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_030.php +++ /dev/null @@ -1,188 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 030'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 030', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// --- first page ------------------------------------------ - -// add a page -$pdf->AddPage(); - -$pdf->Cell(0, 0, 'TCPDF Gradients', 0, 1, 'C', 0, '', 0, false, 'T', 'M'); - -// set colors for gradients (r,g,b) or (grey 0-255) -$red = array(255, 0, 0); -$blue = array(0, 0, 200); -$yellow = array(255, 255, 0); -$green = array(0, 255, 0); -$white = array(255); -$black = array(0); - -// set the coordinates x1,y1,x2,y2 of the gradient (see linear_gradient_coords.jpg) -$coords = array(0, 0, 1, 0); - -// paint a linear gradient -$pdf->LinearGradient(20, 45, 80, 80, $red, $blue, $coords); - -// write label -$pdf->Text(20, 130, 'LinearGradient()'); - -// set the coordinates fx,fy,cx,cy,r of the gradient (see radial_gradient_coords.jpg) -$coords = array(0.5, 0.5, 1, 1, 1.2); - -// paint a radial gradient -$pdf->RadialGradient(110, 45, 80, 80, $white, $black, $coords); - -// write label -$pdf->Text(110, 130, 'RadialGradient()'); - -// paint a coons patch mesh with default coordinates -$pdf->CoonsPatchMesh(20, 155, 80, 80, $yellow, $blue, $green, $red); - -// write label -$pdf->Text(20, 240, 'CoonsPatchMesh()'); - -// set the coordinates for the cubic Bézier points x1,y1 ... x12, y12 of the patch (see coons_patch_mesh_coords.jpg) -$coords = array( - 0.00,0.00, 0.33,0.20, //lower left - 0.67,0.00, 1.00,0.00, 0.80,0.33, //lower right - 0.80,0.67, 1.00,1.00, 0.67,0.80, //upper right - 0.33,1.00, 0.00,1.00, 0.20,0.67, //upper left - 0.00,0.33); //lower left -$coords_min = 0; //minimum value of the coordinates -$coords_max = 1; //maximum value of the coordinates - -// paint a coons patch gradient with the above coordinates -$pdf->CoonsPatchMesh(110, 155, 80, 80, $yellow, $blue, $green, $red, $coords, $coords_min, $coords_max); - -// write label -$pdf->Text(110, 240, 'CoonsPatchMesh()'); - -// --- second page ----------------------------------------- -$pdf->AddPage(); - -// first patch: f = 0 -$patch_array[0]['f'] = 0; -$patch_array[0]['points'] = array( - 0.00,0.00, 0.33,0.00, - 0.67,0.00, 1.00,0.00, 1.00,0.33, - 0.8,0.67, 1.00,1.00, 0.67,0.8, - 0.33,1.80, 0.00,1.00, 0.00,0.67, - 0.00,0.33); -$patch_array[0]['colors'][0] = array('r' => 255, 'g' => 255, 'b' => 0); -$patch_array[0]['colors'][1] = array('r' => 0, 'g' => 0, 'b' => 255); -$patch_array[0]['colors'][2] = array('r' => 0, 'g' => 255,'b' => 0); -$patch_array[0]['colors'][3] = array('r' => 255, 'g' => 0,'b' => 0); - -// second patch - above the other: f = 2 -$patch_array[1]['f'] = 2; -$patch_array[1]['points'] = array( - 0.00,1.33, - 0.00,1.67, 0.00,2.00, 0.33,2.00, - 0.67,2.00, 1.00,2.00, 1.00,1.67, - 1.5,1.33); -$patch_array[1]['colors'][0]=array('r' => 0, 'g' => 0, 'b' => 0); -$patch_array[1]['colors'][1]=array('r' => 255, 'g' => 0, 'b' => 255); - -// third patch - right of the above: f = 3 -$patch_array[2]['f'] = 3; -$patch_array[2]['points'] = array( - 1.33,0.80, - 1.67,1.50, 2.00,1.00, 2.00,1.33, - 2.00,1.67, 2.00,2.00, 1.67,2.00, - 1.33,2.00); -$patch_array[2]['colors'][0] = array('r' => 0, 'g' => 255, 'b' => 255); -$patch_array[2]['colors'][1] = array('r' => 0, 'g' => 0, 'b' => 0); - -// fourth patch - below the above, which means left(?) of the above: f = 1 -$patch_array[3]['f'] = 1; -$patch_array[3]['points'] = array( - 2.00,0.67, - 2.00,0.33, 2.00,0.00, 1.67,0.00, - 1.33,0.00, 1.00,0.00, 1.00,0.33, - 0.8,0.67); -$patch_array[3]['colors'][0] = array('r' => 0, 'g' => 0, 'b' => 0); -$patch_array[3]['colors'][1] = array('r' => 0, 'g' => 0, 'b' => 255); - -$coords_min = 0; -$coords_max = 2; - -$pdf->CoonsPatchMesh(10, 45, 190, 200, '', '', '', '', $patch_array, $coords_min, $coords_max); - -// write label -$pdf->Text(10, 250, 'CoonsPatchMesh()'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_030.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_031.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_031.php deleted file mode 100644 index 160d162ee6f..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_031.php +++ /dev/null @@ -1,103 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 031'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 031', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of PieSector() method.'); - -$xc = 105; -$yc = 100; -$r = 50; - -$pdf->SetFillColor(0, 0, 255); -$pdf->PieSector($xc, $yc, $r, 20, 120, 'FD', false, 0, 2); - -$pdf->SetFillColor(0, 255, 0); -$pdf->PieSector($xc, $yc, $r, 120, 250, 'FD', false, 0, 2); - -$pdf->SetFillColor(255, 0, 0); -$pdf->PieSector($xc, $yc, $r, 250, 20, 'FD', false, 0, 2); - -// write labels -$pdf->SetTextColor(255,255,255); -$pdf->Text(105, 65, 'BLUE'); -$pdf->Text(60, 95, 'GREEN'); -$pdf->Text(120, 115, 'RED'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_031.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_032.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_032.php deleted file mode 100644 index b38f5ae0a7d..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_032.php +++ /dev/null @@ -1,91 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 032'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 032', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 12); - -$pdf->AddPage(); - -$html = << -NOTE: Please use SVG format for a better vector support. -EOD; - -// Print text using writeHTMLCell() -$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); - -$pdf->ImageEps('images/tcpdf_box.ai', 10, 40, 150, '', 'http://www.tcpdf.org', true, '', '', 0, false); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_032.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_033.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_033.php deleted file mode 100644 index 4f95e409a16..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_033.php +++ /dev/null @@ -1,105 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 033'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 033', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// add a page -$pdf->AddPage(); - -// set default font subsetting mode -$pdf->setFontSubsetting(false); - -$pdf->SetFont('helvetica', 'B', 20); - -$pdf->Write(0, 'Font Types', '', 0, 'C', 1, 0, false, false, 0); - -$pdf->Ln(10); - -$pdf->SetFont('times', '', 10); - -$pdf->MultiCell(80, 0, "[Core font] : Cras eros leo, porttitor porta, accumsan fermentum, ornare ac, est. Praesent dui lorem, imperdiet at, cursus sed, facilisis aliquam, nibh. Nulla accumsan nonummy diam. Donec tempus. Etiam posuere. Proin lectus. Donec purus. Duis in sem pretium urna feugiat vehicula. Ut suscipit velit eget massa. Nam nonummy, enim commodo euismod placerat, tortor elit tempus lectus, quis suscipit metus lorem blandit turpis.\n", 1, 'J', 0, 1, '', '', true, 0); - -$pdf->Ln(2); - -$pdf->SetFont('dejavusans', '', 10); - -$pdf->MultiCell(80, 0, "[True Type Unicode font] : Cras eros leo, porttitor porta, accumsan fermentum, ornare ac, est. Praesent dui lorem, imperdiet at, cursus sed, facilisis aliquam, nibh. Nulla accumsan nonummy diam. Donec tempus. Etiam posuere. Proin lectus. Donec purus. Duis in sem pretium urna feugiat vehicula. Ut suscipit velit eget massa. Nam nonummy, enim commodo euismod placerat, tortor elit tempus lectus, quis suscipit metus lorem blandit turpis.\n", 1, 'J', 0, 1, '', '', true, 0); - -$pdf->Ln(2); - -$pdf->SetFont('cid0jp', '', 9); - -$pdf->MultiCell(80, 0, "[CID-0 font] : Cras eros leo, porttitor porta, accumsan fermentum, ornare ac, est. Praesent dui lorem, imperdiet at, cursus sed, facilisis aliquam, nibh. Nulla accumsan nonummy diam. Donec tempus. Etiam posuere. Proin lectus. Donec purus. Duis in sem pretium urna feugiat vehicula. Ut suscipit velit eget massa. Nam nonummy, enim commodo euismod placerat, tortor elit tempus lectus, quis suscipit metus lorem blandit turpis.\n", 1, 'J', 0, 1, '', '', true, 0); - - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_033.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_034.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_034.php deleted file mode 100644 index bb15902f323..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_034.php +++ /dev/null @@ -1,96 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 034'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 034', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Image Clipping using geometric functions', '', 0, 'C', 1, 0, false, false, 0); - -//Start Graphic Transformation -$pdf->StartTransform(); - -// set clipping mask -$pdf->StarPolygon(105, 100, 30, 10, 3, 0, 1, 'CNZ'); - -// draw jpeg image to be clipped -$pdf->Image('images/image_demo.jpg', 75, 70, 60, 60, '', 'http://www.tcpdf.org', '', true, 72); - -//Stop Graphic Transformation -$pdf->StopTransform(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_034.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_035.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_035.php deleted file mode 100644 index 0e5280c2724..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_035.php +++ /dev/null @@ -1,111 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 035'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 035', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', 'BI', 16); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of SetLineStyle() method', '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(); - -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 4, 'color' => array(255, 0, 0))); -$pdf->SetFillColor(255,255,128); -$pdf->SetTextColor(0,0,128); - -$text="DUMMY"; - -$pdf->Cell(0, 0, $text, 1, 1, 'L', 1, 0); - -$pdf->Ln(); - -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 255))); -$pdf->SetFillColor(255,255,0); -$pdf->SetTextColor(0,0,255); -$pdf->MultiCell(60, 4, $text, 1, 'C', 1, 0); - -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 255, 0))); -$pdf->SetFillColor(0,0,255); -$pdf->SetTextColor(255,255,0); -$pdf->MultiCell(60, 4, $text, 'TB', 'C', 1, 0); - -$pdf->SetLineStyle(array('width' => 0.5, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 255))); -$pdf->SetFillColor(0,255,0); -$pdf->SetTextColor(255,0,255); -$pdf->MultiCell(60, 4, $text, 1, 'C', 1, 1); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_035.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_036.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_036.php deleted file mode 100644 index 262549741ca..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_036.php +++ /dev/null @@ -1,89 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 036'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 036', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 16); - -// add a page -$pdf->AddPage(); - -$txt = 'Example of Text Annotation. -Move your mouse over the yellow box or double click on it to display the annotation text.'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// text annotation -$pdf->Annotation(83, 27, 10, 10, "Text annotation example\naccented letters test: àèéìòù", array('Subtype'=>'Text', 'Name' => 'Comment', 'T' => 'title example', 'Subj' => 'example', 'C' => array(255, 255, 0))); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_036.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_037.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_037.php deleted file mode 100644 index deb7d92a2f7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_037.php +++ /dev/null @@ -1,147 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 037'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 037', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 11); - -// add a page -$pdf->AddPage(); - -$html = '

        Example of Spot Colors

        Spot colors are single ink colors, rather than colors produced by four (CMYK), six (CMYKOG) or more inks in the printing process (process colors). They can be obtained by special vendors, but often the printers have found their own way of mixing inks to match defined colors.

        As long as no open standard for spot colours exists, TCPDF users will have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly into the $spotcolor array in include/tcpdf_colors.php file, or define them using the AddSpotColor() method.

        Common industry standard spot colors are:
        ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH.'; - -// Print text using writeHTMLCell() -$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, 'J', true); - - -$pdf->SetFont('helvetica', '', 10); - -// Define some new spot colors -// $c, $m, $y and $k (2nd, 3rd, 4th and 5th parameter) are the CMYK color components. -// AddSpotColor($name, $c, $m, $y, $k) - -$pdf->AddSpotColor('My TCPDF Dark Green', 100, 50, 80, 45); -$pdf->AddSpotColor('My TCPDF Light Yellow', 0, 0, 55, 0); -$pdf->AddSpotColor('My TCPDF Black', 0, 0, 0, 100); -$pdf->AddSpotColor('My TCPDF Red', 30, 100, 90, 10); -$pdf->AddSpotColor('My TCPDF Green', 100, 30, 100, 0); -$pdf->AddSpotColor('My TCPDF Blue', 100, 60, 10, 5); -$pdf->AddSpotColor('My TCPDF Yellow', 0, 20, 100, 0); - -// Select the spot color -// $tint (the second parameter) is the intensity of the color (0-100). -// SetTextSpotColor($name, $tint=100) -// SetDrawSpotColor($name, $tint=100) -// SetFillSpotColor($name, $tint=100) - -$pdf->SetTextSpotColor('My TCPDF Black', 100); -$pdf->SetDrawSpotColor('My TCPDF Black', 100); - -$starty = 100; - -// print some spot colors - -$pdf->SetFillSpotColor('My TCPDF Dark Green', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Dark Green'); - -$starty += 24; -$pdf->SetFillSpotColor('My TCPDF Light Yellow', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Light Yellow'); - - -// --- default values defined on spotcolors.php --- - -$starty += 24; -$pdf->SetFillSpotColor('My TCPDF Red', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Red'); - -$starty += 24; -$pdf->SetFillSpotColor('My TCPDF Green', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Green'); - -$starty += 24; -$pdf->SetFillSpotColor('My TCPDF Blue', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Blue'); - -$starty += 24; -$pdf->SetFillSpotColor('My TCPDF Yellow', 100); -$pdf->Rect(30, $starty, 40, 20, 'DF'); -$pdf->Text(73, $starty + 8, 'My TCPDF Yellow'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_037.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_038.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_038.php deleted file mode 100644 index a1e57e20695..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_038.php +++ /dev/null @@ -1,92 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 038'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 038', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 20); - -// add a page -$pdf->AddPage(); - -$txt = 'Example of CID-0 CJK unembedded font. -To display extended text you must have CJK fonts installed for your PDF reader:'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// set font -$pdf->SetFont('cid0jp', '', 40); - -$txt = 'こんにちは世界'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_038.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_039.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_039.php deleted file mode 100644 index 4a8775c19e2..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_039.php +++ /dev/null @@ -1,104 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 039'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 039', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// add a page -$pdf->AddPage(); - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -$pdf->Write(0, 'Example of HTML Justification', '', 0, 'L', true, 0, false, false, 0); - -// create some HTML content -$html = 'a abc abcdefghijkl (abcdef) abcdefg abcdefghi a ((abc)) abcd test alt attribute abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc \(abcd\) abcdef abcdefg abcdefghi a abc \\\(abcd\\\) abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg start a abc before yellow color after a abc abcd abcdef abcdefg abcdefghi a abc abcd end abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi a abc abcd abcdef abcdefg abcdefghi
        abcd abcdef abcdefg abcdefghi
        abcd abcde abcdef
        '; - -// set core font -$pdf->SetFont('helvetica', '', 10); - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, true); - -$pdf->Ln(); - -// set UTF-8 Unicode font -$pdf->SetFont('dejavusans', '', 10); - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, true); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_039.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_040.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_040.php deleted file mode 100644 index c1d90917263..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_040.php +++ /dev/null @@ -1,116 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 040'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 040', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set display mode -$pdf->SetDisplayMode($zoom='fullpage', $layout='TwoColumnRight', $mode='UseNone'); - -// set pdf viewer preferences -$pdf->setViewerPreferences(array('Duplex' => 'DuplexFlipLongEdge')); - -// set booklet mode -$pdf->SetBooklet(true, 10, 30); - -// set core font -$pdf->SetFont('helvetica', '', 18); - -// add a page (left page) -$pdf->AddPage(); - -$pdf->Write(0, 'Example of booklet mode', '', 0, 'L', true, 0, false, false, 0); - -// print a line using Cell() -$pdf->Cell(0, 0, 'PAGE 1', 1, 1, 'C'); - - -// add a page (right page) -$pdf->AddPage(); - -// print a line using Cell() -$pdf->Cell(0, 0, 'PAGE 2', 1, 1, 'C'); - - -// add a page (left page) -$pdf->AddPage(); - -// print a line using Cell() -$pdf->Cell(0, 0, 'PAGE 3', 1, 1, 'C'); - -// add a page (right page) -$pdf->AddPage(); - -// print a line using Cell() -$pdf->Cell(0, 0, 'PAGE 4', 1, 1, 'C'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_040.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_041.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_041.php deleted file mode 100644 index 973bdf99af0..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_041.php +++ /dev/null @@ -1,90 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 041'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 041', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 16); - -// add a page -$pdf->AddPage(); - - -$txt = 'Example of File Attachment. -Double click on the icon to open the attached file.'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// attach an external file -$pdf->Annotation(85, 27, 5, 5, 'text file', array('Subtype'=>'FileAttachment', 'Name' => 'PushPin', 'FS' => 'data/utf8test.txt')); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_041.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_042.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_042.php deleted file mode 100644 index 14c9fd0a759..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_042.php +++ /dev/null @@ -1,102 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 042'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 042', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set JPEG quality -//$pdf->setJPEGQuality(75); - -$pdf->SetFont('helvetica', '', 18); - -// add a page -$pdf->AddPage(); - -// create background text -$background_text = str_repeat('TCPDF test PNG Alpha Channel ', 50); -$pdf->MultiCell(0, 5, $background_text, 0, 'J', 0, 2, '', '', true, 0, false); - -// --- Method (A) ------------------------------------------ -// the Image() method recognizes the alpha channel embedded on the image: - -$pdf->Image('images/image_with_alpha.png', 50, 50, 100, '', '', 'http://www.tcpdf.org', '', false, 300); - -// --- Method (B) ------------------------------------------ -// provide image + separate 8-bit mask - -// first embed mask image (w, h, x and y will be ignored, the image will be scaled to the target image's size) -$mask = $pdf->Image('images/alpha.png', 50, 140, 100, '', '', '', '', false, 300, '', true); - -// embed image, masked with previously embedded mask -$pdf->Image('images/img.png', 50, 140, 100, '', '', 'http://www.tcpdf.org', '', false, 300, '', false, $mask); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_042.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_043.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_043.php deleted file mode 100644 index 116827e8545..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_043.php +++ /dev/null @@ -1,85 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 043'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 043', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 16); - -// add a page -$pdf->AddPage(); - -// Multicell test -$pdf->MultiCell(0, 0, 'DISK CACHING TEST: check the parameters of the class constructor.', 1, 'L', 0, 0, '', '', true); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_043.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_044.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_044.php deleted file mode 100644 index 949270cca6c..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_044.php +++ /dev/null @@ -1,128 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 044'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 044', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 40); - -// print a line using Cell() -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: A', 0, 1, 'L'); - -// add some vertical space -$pdf->Ln(10); - -// print some text -$pdf->SetFont('times', 'I', 16); -$txt = 'TCPDF allows you to Copy, Move and Delete pages.'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -$pdf->SetFont('helvetica', 'B', 40); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: B', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: D', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: E', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: E-2', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: F', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: C', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: G', 0, 1, 'L'); - -// Move page 7 to page 3 -$pdf->movePage(7, 3); - -// Delete page 6 -$pdf->deletePage(6); - -$pdf->AddPage(); -$pdf->Cell(0, 10, 'PAGE: H', 0, 1, 'L'); - -// copy the second page -$pdf->copyPage(2); - -// NOTE: to insert a page to a previous position, you can add a new page to the end of document and then move it using movePage(). - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_044.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_045.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_045.php deleted file mode 100644 index 0f49abca4da..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_045.php +++ /dev/null @@ -1,140 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 045'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 045', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', 'B', 20); - -// add a page -$pdf->AddPage(); - -// set a bookmark for the current position -$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128)); - -// print a line using Cell() -$pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L'); - -// Create a fixed link to the first page using the * character -$index_link = $pdf->AddLink(); -$pdf->SetLink($index_link, 0, '*1'); -$pdf->Cell(0, 10, 'Link to INDEX', 0, 1, 'R', false, $index_link); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,128,0)); -$pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L'); - -// fixed link to the first page using the * character -$html = 'link to INDEX (page 1)'; -$pdf->writeHTML($html, true, false, true, false, ''); - - -// add some pages and bookmarks -for ($i = 2; $i < 12; $i++) { - $pdf->AddPage(); - $pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128)); - $pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L'); -} - -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -// add a new page for TOC -$pdf->addTOCPage(); - -// write the TOC title -$pdf->SetFont('times', 'B', 16); -$pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0); -$pdf->Ln(); - -$pdf->SetFont('dejavusans', '', 12); - -// add a simple Table Of Content at first page -// (check the example n. 59 for the HTML version) -$pdf->addTOC(1, 'courier', '.', 'INDEX', 'B', array(128,0,0)); - -// end of TOC page -$pdf->endTOCPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_045.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_046.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_046.php deleted file mode 100644 index 70d11d3be20..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_046.php +++ /dev/null @@ -1,123 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 046'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 046', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of Text Hyphenation', '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(10); - -/* -Unicode Data for SHY: - Name : SOFT HYPHEN, commonly abbreviated as SHY - HTML Entity (decimal): ­ - HTML Entity (hex): ­ - HTML Entity (named): ­ - How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173] - UTF-8 (hex): 0xC2 0xAD (c2ad) -*/ - -/* -// You can automatically add SOFT HYPHENS to your text using -// the hyphenateText() method, but this requires either an -// hyphenation pattern array of a hyphenation pattern TEX file. -// You can download hyphenation TEX patterns from: -// http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ - -// EXAMPLE: - -$html = 'On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain. These cases are perfectly simple and easy to distinguish. In a free hour, when our power of choice is untrammelled and when nothing prevents our being able to do what we like best, every pleasure is to be welcomed and every pain avoided. But in certain circumstances and owing to the claims of duty or the obligations of business it will frequently occur that pleasures have to be repudiated and annoyances accepted. The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains.'; - -$hyphen_patterns = $pdf->getHyphenPatternsFromTEX('hyphens/hyph-en-gb.tex'); - -$html = $pdf->hyphenateText($html, $hyphen_patterns, array(), 1, 2, 1, 8); -*/ - - -// HTML text with soft hyphens (­) -$html = 'On the other hand, we de­nounce with righ­teous in­dig­na­tion and dis­like men who are so be­guiled and de­mo­r­al­ized by the charms of plea­sure of the mo­ment, so blind­ed by de­sire, that they can­not fore­see the pain and trou­ble that are bound to en­sue; and equal blame be­longs to those who fail in their du­ty through weak­ness of will, which is the same as say­ing through shrink­ing from toil and pain. Th­ese cas­es are per­fect­ly sim­ple and easy to distin­guish. In a free hour, when our pow­er of choice is un­tram­melled and when noth­ing pre­vents our be­ing able to do what we like best, ev­ery plea­sure is to be wel­comed and ev­ery pain avoid­ed. But in cer­tain cir­cum­s­tances and ow­ing to the claims of du­ty or the obli­ga­tions of busi­ness it will fre­quent­ly oc­cur that plea­sures have to be re­pu­di­at­ed and an­noy­ances ac­cept­ed. The wise man there­fore al­ways holds in th­ese mat­ters to this prin­ci­ple of se­lec­tion: he re­jects plea­sures to se­cure other greater plea­sures, or else he en­dures pains to avoid worse pains.'; - -$pdf->SetFont('times', '', 10); -$pdf->SetDrawColor(255,0,0); -$pdf->SetTextColor(0,63,127); - -// print a cell -$pdf->writeHTMLCell(50, 0, '', '', $html, 1, 1, 0, true, 'J'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_046.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_047.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_047.php deleted file mode 100644 index a26ae5d5ce7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_047.php +++ /dev/null @@ -1,117 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 047'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 047', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 16); - -// add a page -$pdf->AddPage(); - -$txt = 'Example of Transactions. -TCPDF allows you to undo some operations using the Transactions. -Check the source code for further information.'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(5); - -$pdf->SetFont('times', '', 12); - -// start transaction -$pdf->startTransaction(); - -$pdf->Write(0, "LINE 1\n"); -$pdf->Write(0, "LINE 2\n"); - -// restarts transaction -$pdf->startTransaction(); - -$pdf->Write(0, "LINE 3\n"); -$pdf->Write(0, "LINE 4\n"); - -// rolls back to the last (re)start -$pdf = $pdf->rollbackTransaction(); - -$pdf->Write(0, "LINE 5\n"); -$pdf->Write(0, "LINE 6\n"); - -// start transaction -$pdf->startTransaction(); - -$pdf->Write(0, "LINE 7\n"); - -// commit transaction (actually just frees memory) -$pdf->commitTransaction(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_047.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_048.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_048.php deleted file mode 100644 index ca88a148e7e..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_048.php +++ /dev/null @@ -1,313 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 048'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 048', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of HTML tables', '', 0, 'L', true, 0, false, false, 0); - -$pdf->SetFont('helvetica', '', 8); - -// ----------------------------------------------------------------------------- - -$tbl = << -
    COL 1 - ROW 1
    COLSPAN 3
    COL 2 - ROW 1COL 3 - ROW 1
    COL 2 - ROW 2 - COLSPAN 2
    text line
    text line
    text line
    text line
    COL 3 - ROW 2
    COL 3 - ROW 3
    -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -$tbl = << -
    COL 1 - ROW 1
    COLSPAN 3
    text line
    text line
    text line
    text line
    text line
    text line
    COL 2 - ROW 1COL 3 - ROW 1
    COL 2 - ROW 2 - COLSPAN 2
    text line
    text line
    text line
    text line
    COL 3 - ROW 2
    COL 3 - ROW 3
    -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -$tbl = << - - COL 1 - ROW 1
    COLSPAN 3
    text line
    text line
    text line
    text line
    text line
    text line - COL 2 - ROW 1 - COL 3 - ROW 1 - - - COL 2 - ROW 2 - COLSPAN 2
    text line
    text line
    text line
    text line - COL 3 - ROW 2
    text line
    text line - - - COL 3 - ROW 3 - - - -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -$tbl = << - -Left column -Heading Column Span 5 -Heading Column Span 9 - - -Rowspan 2
    This is some text that fills the table cell. -span 2 -span 2 -2 rows -Colspan 8 - - -1a -2a -1b -2b -1 -2 -3 -4 -5 -6 -7 -8 - - -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -// Table with rowspans and THEAD -$tbl = << - - - A - XXXX - XXXX - XXXX - XXXX - XXXX - - - B - XXXX - XXXX - XXXX - XXXX - XXXX - - - - 1. - XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - XXXX - XXXX
    XXXX - - - 2. - XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - - - XXXX
    XXXX
    XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - - - RRRRRR
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - - - 3. - XXXX1
    XXXX - XXXX
    XXXX - XXXX
    XXXX - - - 4. - XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - XXXX
    XXXX - - -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -// NON-BREAKING TABLE (nobr="true") - -$tbl = << - - NON-BREAKING TABLE - - - 1-1 - 1-2 - 1-3 - - - 2-1 - 3-2 - 3-3 - - - 3-1 - 3-2 - 3-3 - - -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -// NON-BREAKING ROWS (nobr="true") - -$tbl = << - - NON-BREAKING ROWS - - - ROW 1
    COLUMN 1 - ROW 1
    COLUMN 2 - ROW 1
    COLUMN 3 - - - ROW 2
    COLUMN 1 - ROW 2
    COLUMN 2 - ROW 2
    COLUMN 3 - - - ROW 3
    COLUMN 1 - ROW 3
    COLUMN 2 - ROW 3
    COLUMN 3 - - -EOD; - -$pdf->writeHTML($tbl, true, false, false, false, ''); - -// ----------------------------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_048.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_049.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_049.php deleted file mode 100644 index 7a764fbc60f..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_049.php +++ /dev/null @@ -1,126 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 049'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 049', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 10); - -// add a page -$pdf->AddPage(); - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -IMPORTANT: -If you are printing user-generated content, tcpdf tag can be unsafe. -You can disable this tag by setting to false the K_TCPDF_CALLS_IN_HTML -constant on TCPDF configuration file. - -For security reasons, the parameters for the 'params' attribute of TCPDF -tag must be prepared as an array and encoded with the -serializeTCPDFtagParameters() method (see the example below). - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -$html = '

    Test TCPDF Methods in HTML

    -

    IMPORTANT:

    -If you are using user-generated content, the tcpdf tag can be unsafe.
    -You can disable this tag by setting to false the K_TCPDF_CALLS_IN_HTML constant on TCPDF configuration file.
    -

    write1DBarcode method in HTML

    '; - -$params = $pdf->serializeTCPDFtagParameters(array('CODE 39', 'C39', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N')); -$html .= ''; - -$params = $pdf->serializeTCPDFtagParameters(array('CODE 128', 'C128', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N')); -$html .= ''; - -$html .= '

    Graphic Functions

    '; - -$params = $pdf->serializeTCPDFtagParameters(array(0)); -$html .= ''; - -$params = $pdf->serializeTCPDFtagParameters(array(50, 50, 40, 10, 'DF', array(), array(0,128,255))); -$html .= ''; - - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, 0); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_049.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_050.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_050.php deleted file mode 100644 index 5ccae31a9cf..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_050.php +++ /dev/null @@ -1,210 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 050'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 050', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// NOTE: 2D barcode algorithms must be implemented on 2dbarcode.php class file. - -// set font -$pdf->SetFont('helvetica', '', 11); - -// add a page -$pdf->AddPage(); - -// print a message -$txt = "You can also export 2D barcodes in other formats (PNG, SVG, HTML). Check the examples inside the barcode directory.\n"; -$pdf->MultiCell(70, 50, $txt, 0, 'J', false, 1, 125, 30, true, 0, false, true, 0, 'T', false); - - -$pdf->SetFont('helvetica', '', 10); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// set style for barcode -$style = array( - 'border' => true, - 'vpadding' => 'auto', - 'hpadding' => 'auto', - 'fgcolor' => array(0,0,0), - 'bgcolor' => false, //array(255,255,255) - 'module_width' => 1, // width of a single module in points - 'module_height' => 1 // height of a single module in points -); - -// write RAW 2D Barcode - -$code = '111011101110111,010010001000010,010011001110010,010010000010010,010011101110010'; -$pdf->write2DBarcode($code, 'RAW', 80, 30, 30, 20, $style, 'N'); - -// write RAW2 2D Barcode -$code = '[111011101110111][010010001000010][010011001110010][010010000010010][010011101110010]'; -$pdf->write2DBarcode($code, 'RAW2', 80, 60, 30, 20, $style, 'N'); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// set style for barcode -$style = array( - 'border' => 2, - 'vpadding' => 'auto', - 'hpadding' => 'auto', - 'fgcolor' => array(0,0,0), - 'bgcolor' => false, //array(255,255,255) - 'module_width' => 1, // width of a single module in points - 'module_height' => 1 // height of a single module in points -); - -// QRCODE,L : QR-CODE Low error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,L', 20, 30, 50, 50, $style, 'N'); -$pdf->Text(20, 25, 'QRCODE L'); - -// QRCODE,M : QR-CODE Medium error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,M', 20, 90, 50, 50, $style, 'N'); -$pdf->Text(20, 85, 'QRCODE M'); - -// QRCODE,Q : QR-CODE Better error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,Q', 20, 150, 50, 50, $style, 'N'); -$pdf->Text(20, 145, 'QRCODE Q'); - -// QRCODE,H : QR-CODE Best error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,H', 20, 210, 50, 50, $style, 'N'); -$pdf->Text(20, 205, 'QRCODE H'); - -// ------------------------------------------------------------------- -// PDF417 (ISO/IEC 15438:2006) - -/* - - The $type parameter can be simple 'PDF417' or 'PDF417' followed by a - number of comma-separated options: - - 'PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6' - - Possible options are: - - a = aspect ratio (width/height); - e = error correction level (0-8); - - Macro Control Block options: - - t = total number of macro segments; - s = macro segment index (0-99998); - f = file ID; - o0 = File Name (text); - o1 = Segment Count (numeric); - o2 = Time Stamp (numeric); - o3 = Sender (text); - o4 = Addressee (text); - o5 = File Size (numeric); - o6 = Checksum (numeric). - - Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. - To use a comma character ',' on text options, replace it with the character 255: "\xff". - -*/ - -$pdf->write2DBarcode('www.tcpdf.org', 'PDF417', 80, 90, 0, 30, $style, 'N'); -$pdf->Text(80, 85, 'PDF417 (ISO/IEC 15438:2006)'); - -// ------------------------------------------------------------------- -// DATAMATRIX (ISO/IEC 16022:2006) - -$pdf->write2DBarcode('http://www.tcpdf.org', 'DATAMATRIX', 80, 150, 50, 50, $style, 'N'); -$pdf->Text(80, 145, 'DATAMATRIX (ISO/IEC 16022:2006)'); - -// ------------------------------------------------------------------- - -// new style -$style = array( - 'border' => 2, - 'padding' => 'auto', - 'fgcolor' => array(0,0,255), - 'bgcolor' => array(255,255,64) -); - -// QRCODE,H : QR-CODE Best error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,H', 80, 210, 50, 50, $style, 'N'); -$pdf->Text(80, 205, 'QRCODE H - COLORED'); - -// new style -$style = array( - 'border' => false, - 'padding' => 0, - 'fgcolor' => array(128,0,0), - 'bgcolor' => false -); - -// QRCODE,H : QR-CODE Best error correction -$pdf->write2DBarcode('www.tcpdf.org', 'QRCODE,H', 140, 210, 50, 50, $style, 'N'); -$pdf->Text(140, 205, 'QRCODE H - NO PADDING'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_050.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_051.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_051.php deleted file mode 100644 index dc2d94ec51f..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_051.php +++ /dev/null @@ -1,145 +0,0 @@ -getBreakMargin(); - // get current auto-page-break mode - $auto_page_break = $this->AutoPageBreak; - // disable auto-page-break - $this->SetAutoPageBreak(false, 0); - // set bacground image - $img_file = K_PATH_IMAGES.'image_demo.jpg'; - $this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0); - // restore auto-page-break status - $this->SetAutoPageBreak($auto_page_break, $bMargin); - // set the starting point for the page content - $this->setPageMark(); - } -} - -// create new PDF document -$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 051'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(0); -$pdf->SetFooterMargin(0); - -// remove default footer -$pdf->setPrintFooter(false); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 48); - -// add a page -$pdf->AddPage(); - -// Print a text -$html = ' PAGE 1  -

    You can set a full page background.

    '; -$pdf->writeHTML($html, true, false, true, false, ''); - - -// add a page -$pdf->AddPage(); - -// Print a text -$html = ' PAGE 2 '; -$pdf->writeHTML($html, true, false, true, false, ''); - -// --- example with background set on page --- - -// remove default header -$pdf->setPrintHeader(false); - -// add a page -$pdf->AddPage(); - - -// -- set new background --- - -// get the current page break margin -$bMargin = $pdf->getBreakMargin(); -// get current auto-page-break mode -$auto_page_break = $pdf->getAutoPageBreak(); -// disable auto-page-break -$pdf->SetAutoPageBreak(false, 0); -// set bacground image -$img_file = K_PATH_IMAGES.'image_demo.jpg'; -$pdf->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0); -// restore auto-page-break status -$pdf->SetAutoPageBreak($auto_page_break, $bMargin); -// set the starting point for the page content -$pdf->setPageMark(); - - -// Print a text -$html = 'PAGE 3'; -$pdf->writeHTML($html, true, false, true, false, ''); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_051.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_052.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_052.php deleted file mode 100644 index 2af27f08ad2..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_052.php +++ /dev/null @@ -1,121 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 052'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 052', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -/* -NOTES: - - To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt - - To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 - - To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes -*/ - -// set certificate file -$certificate = 'file://data/cert/tcpdf.crt'; - -// set additional information -$info = array( - 'Name' => 'TCPDF', - 'Location' => 'Office', - 'Reason' => 'Testing TCPDF', - 'ContactInfo' => 'http://www.tcpdf.org', - ); - -// set document signature -$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info); - -// set font -$pdf->SetFont('helvetica', '', 12); - -// add a page -$pdf->AddPage(); - -// print a line of text -$text = 'This is a digitally signed document using the default (example) tcpdf.crt certificate.
    To validate this signature you have to load the tcpdf.fdf on the Arobat Reader to add the certificate to List of Trusted Identities.

    For more information check the source code of this example and the source code documentation for the setSignature() method.

    www.tcpdf.org'; -$pdf->writeHTML($text, true, 0, true, 0); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// *** set signature appearance *** - -// create content for signature (image and/or text) -$pdf->Image('images/tcpdf_signature.png', 180, 60, 15, 15, 'PNG'); - -// define active area for signature appearance -$pdf->setSignatureAppearance(180, 60, 15, 15); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// *** set an empty signature appearance *** -$pdf->addEmptySignatureAppearance(180, 80, 15, 15); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_052.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_053.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_053.php deleted file mode 100644 index 8c784d5f025..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_053.php +++ /dev/null @@ -1,108 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 053'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 053', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('times', '', 14); - -// add a page -$pdf->AddPage(); - -// print a some of text -$text = 'This is an example of JavaScript usage on PDF documents.

    For more information check the source code of this example, the source code documentation for the IncludeJS() method and the JavaScript for Acrobat API Reference guide.

    www.tcpdf.org'; -$pdf->writeHTML($text, true, 0, true, 0); - -// write some JavaScript code -$js = <<IncludeJS($js); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_053.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_054.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_054.php deleted file mode 100644 index af4545df243..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_054.php +++ /dev/null @@ -1,128 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 054'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 054', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// IMPORTANT: disable font subsetting to allow users editing the document -$pdf->setFontSubsetting(false); - -// set font -$pdf->SetFont('helvetica', '', 10, '', false); - -// add a page -$pdf->AddPage(); - -// create some HTML content -$html = <<XHTML Form Example -
    -
    -

    -

    -

    -
    -
    -

    - -

    - -


    -
    -
    -


    - - - - -
    -
    -EOD; - -// output the HTML content -$pdf->writeHTML($html, true, 0, true, 0); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_054.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_055.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_055.php deleted file mode 100644 index a825966e250..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_055.php +++ /dev/null @@ -1,115 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 055'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 055', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 14); - -// array of font names -$core_fonts = array('courier', 'courierB', 'courierI', 'courierBI', 'helvetica', 'helveticaB', 'helveticaI', 'helveticaBI', 'times', 'timesB', 'timesI', 'timesBI', 'symbol', 'zapfdingbats'); - -// set fill color -$pdf->SetFillColor(221,238,255); - -// create one HTML table for each core font -foreach($core_fonts as $font) { - // add a page - $pdf->AddPage(); - - // Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') - - // set font for title - $pdf->SetFont('helvetica', 'B', 16); - - // print font name - $pdf->Cell(0, 10, 'FONT: '.$font, 1, 1, 'C', true, '', 0, false, 'T', 'M'); - - // set font for chars - $pdf->SetFont($font, '', 16); - - // print each character - for ($i = 0; $i < 256; ++$i) { - if (($i > 0) AND (($i % 16) == 0)) { - $pdf->Ln(); - } - $pdf->Cell(11.25, 11.25, TCPDF_FONTS::unichr($i), 1, 0, 'C', false, '', 0, false, 'T', 'M'); - } - - $pdf->Ln(20); - - // print a pangram - $pdf->Cell(0, 0, 'The quick brown fox jumps over the lazy dog', 0, 1, 'C', false, '', 0, false, 'T', 'M'); -} - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_055.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_056.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_056.php deleted file mode 100644 index c3dfe25562c..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_056.php +++ /dev/null @@ -1,133 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 056'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 056', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 18); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of Registration Marks, Crop Marks and Color Bars', '', 0, 'L', true, 0, false, false, 0); - -$pdf->Ln(5); - -// color registration bars - -// A,W,R,G,B,C,M,Y,K,RGB,CMYK,ALL,ALLSPOT, -$pdf->colorRegistrationBar(50, 70, 40, 40, true, false, 'A,R,G,B,C,M,Y,K'); -$pdf->colorRegistrationBar(90, 70, 40, 40, true, true, 'A,R,G,B,C,M,Y,K'); -$pdf->colorRegistrationBar(50, 115, 80, 5, false, true, 'A,W,R,G,B,C,M,Y,K,ALL'); -$pdf->colorRegistrationBar(135, 70, 5, 50, false, false, 'A,W,R,G,B,C,M,Y,K,ALL'); - -// corner crop marks - -$pdf->cropMark(50, 70, 10, 10, 'TL'); -$pdf->cropMark(140, 70, 10, 10, 'TR'); -$pdf->cropMark(50, 120, 10, 10, 'BL'); -$pdf->cropMark(140, 120, 10, 10, 'BR'); - -// various crop marks - -$pdf->cropMark(95, 65, 5, 5, 'LEFT,TOP,RIGHT', array(255,0,0)); -$pdf->cropMark(95, 125, 5, 5, 'LEFT,BOTTOM,RIGHT', array(255,0,0)); - -$pdf->cropMark(45, 95, 5, 5, 'TL,BL', array(0,255,0)); -$pdf->cropMark(145, 95, 5, 5, 'TR,BR', array(0,255,0)); - -$pdf->cropMark(95, 140, 5, 5, 'A,D', array(0,0,255)); - -// registration marks - -$pdf->registrationMark(40, 60, 5, false); -$pdf->registrationMark(150, 60, 5, true, array(0,0,0), array(255,255,0)); -$pdf->registrationMark(40, 130, 5, true, array(0,0,0), array(255,255,0)); -$pdf->registrationMark(150, 130, 5, false, array(100,100,100,100,'All'), array(0,0,0,0,'None')); - -// test registration bar with spot colors - -$pdf->AddSpotColor('My TCPDF Dark Green', 100, 50, 80, 45); -$pdf->AddSpotColor('My TCPDF Light Yellow', 0, 0, 55, 0); -$pdf->AddSpotColor('My TCPDF Black', 0, 0, 0, 100); -$pdf->AddSpotColor('My TCPDF Red', 30, 100, 90, 10); -$pdf->AddSpotColor('My TCPDF Green', 100, 30, 100, 0); -$pdf->AddSpotColor('My TCPDF Blue', 100, 60, 10, 5); -$pdf->AddSpotColor('My TCPDF Yellow', 0, 20, 100, 0); - -$pdf->colorRegistrationBar(50, 150, 80, 10, false, true, 'ALLSPOT'); - -// CMYK registration mark -$pdf->registrationMarkCMYK(150, 155, 8); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_056.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_057.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_057.php deleted file mode 100644 index 9714b40b1bc..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_057.php +++ /dev/null @@ -1,268 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 057'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 057', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of alignment options for Cell()', '', 0, 'L', true, 0, false, false, 0); - -$pdf->SetFont('helvetica', '', 11); - -// set border width -$pdf->SetLineWidth(0.7); - -// set color for cell border -$pdf->SetDrawColor(0,128,255); - -$pdf->setCellHeightRatio(3); - -$pdf->SetXY(15, 60); - -// text on center -$pdf->Cell(30, 0, 'Top-Center', 1, $ln=0, 'C', 0, '', 0, false, 'T', 'C'); -$pdf->Cell(30, 0, 'Center-Center', 1, $ln=0, 'C', 0, '', 0, false, 'C', 'C'); -$pdf->Cell(30, 0, 'Bottom-Center', 1, $ln=0, 'C', 0, '', 0, false, 'B', 'C'); -$pdf->Cell(30, 0, 'Ascent-Center', 1, $ln=0, 'C', 0, '', 0, false, 'A', 'C'); -$pdf->Cell(30, 0, 'Baseline-Center', 1, $ln=0, 'C', 0, '', 0, false, 'L', 'C'); -$pdf->Cell(30, 0, 'Descent-Center', 1, $ln=0, 'C', 0, '', 0, false, 'D', 'C'); - - -$pdf->SetXY(15, 90); - -// text on top -$pdf->Cell(30, 0, 'Top-Top', 1, $ln=0, 'C', 0, '', 0, false, 'T', 'T'); -$pdf->Cell(30, 0, 'Center-Top', 1, $ln=0, 'C', 0, '', 0, false, 'C', 'T'); -$pdf->Cell(30, 0, 'Bottom-Top', 1, $ln=0, 'C', 0, '', 0, false, 'B', 'T'); -$pdf->Cell(30, 0, 'Ascent-Top', 1, $ln=0, 'C', 0, '', 0, false, 'A', 'T'); -$pdf->Cell(30, 0, 'Baseline-Top', 1, $ln=0, 'C', 0, '', 0, false, 'L', 'T'); -$pdf->Cell(30, 0, 'Descent-Top', 1, $ln=0, 'C', 0, '', 0, false, 'D', 'T'); - - -$pdf->SetXY(15, 120); - -// text on bottom -$pdf->Cell(30, 0, 'Top-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'T', 'B'); -$pdf->Cell(30, 0, 'Center-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'C', 'B'); -$pdf->Cell(30, 0, 'Bottom-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'B', 'B'); -$pdf->Cell(30, 0, 'Ascent-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'A', 'B'); -$pdf->Cell(30, 0, 'Baseline-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'L', 'B'); -$pdf->Cell(30, 0, 'Descent-Bottom', 1, $ln=0, 'C', 0, '', 0, false, 'D', 'B'); - - -// draw some reference lines -$linestyle = array('width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => '', 'phase' => 0, 'color' => array(255, 0, 0)); -$pdf->Line(15, 60, 195, 60, $linestyle); -$pdf->Line(15, 90, 195, 90, $linestyle); -$pdf->Line(15, 120, 195, 120, $linestyle); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Print an image to explain cell measures - -$pdf->Image('images/tcpdf_cell.png', 15, 160, 100, 100, 'PNG', '', '', false, 300, '', false, false, 0, false, false, false); -$legend = 'LEGEND: - -X: cell x top-left origin (top-right for RTL) -Y: cell y top-left origin (top-right for RTL) -CW: cell width -CH: cell height -LW: line width -NRL: normal line position -EXT: external line position -INT: internal line position -ML: margin left -MR: margin right -MT: margin top -MB: margin bottom -PL: padding left -PR: padding right -PT: padding top -PB: padding bottom -TW: text width -FA: font ascent -FB: font baseline -FD: font descent'; -$pdf->SetFont('helvetica', '', 10); -$pdf->setCellHeightRatio(1.25); -$pdf->MultiCell(0, 0, $legend, 0, 'L', false, 1, 125, 160, true, 0, false, true, 0, 'T', false); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// CELL BORDERS - -// add a page -$pdf->AddPage(); - -$pdf->SetFont('helvetica', 'B', 20); - -$pdf->Write(0, 'Example of borders for Cell()', '', 0, 'L', true, 0, false, false, 0); - -$pdf->SetFont('helvetica', '', 11); - -// set border width -$pdf->SetLineWidth(0.508); - -// set color for cell border -$pdf->SetDrawColor(0,128,255); - -// set filling color -$pdf->SetFillColor(255,255,128); - -// set cell height ratio -$pdf->setCellHeightRatio(3); - -$pdf->Cell(30, 0, '1', 1, 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LTRB', 'LTRB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LTR', 'LTR', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'TRB', 'TRB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LRB', 'LRB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LTB', 'LTB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LT', 'LT', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'TR', 'TR', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'RB', 'RB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LB', 'LB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'LR', 'LR', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'TB', 'TB', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'L', 'L', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'T', 'T', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'R', 'R', 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(2); -$pdf->Cell(30, 0, 'B', 'B', 1, 'C', 1, '', 0, false, 'T', 'C'); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// ADVANCED SETTINGS FOR CELL BORDERS - -// add a page -$pdf->AddPage(); - -$pdf->SetFont('helvetica', 'B', 20); - -$pdf->Write(0, 'Example of advanced border settings for Cell()', '', 0, 'L', true, 0, false, false, 0); - -$pdf->SetFont('helvetica', '', 11); - -// set border width -$pdf->SetLineWidth(1); - -// set color for cell border -$pdf->SetDrawColor(0,128,255); - -// set filling color -$pdf->SetFillColor(255,255,128); - -$border = array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0))); -$pdf->Cell(30, 0, 'LTRB', $border, 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(5); - -$border = array( -'L' => array('width' => 2, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0)), -'R' => array('width' => 2, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 255)), -'T' => array('width' => 2, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 255, 0)), -'B' => array('width' => 2, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 255))); -$pdf->Cell(30, 0, 'LTRB', $border, 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(5); - -$border = array('mode' => 'ext', 'LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0))); -$pdf->Cell(30, 0, 'LTRB EXT', $border, 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(5); - -$border = array('mode' => 'int', 'LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0))); -$pdf->Cell(30, 0, 'LTRB INT', $border, 1, 'C', 1, '', 0, false, 'T', 'C'); -$pdf->Ln(5); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_057.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_058.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_058.php deleted file mode 100644 index 1e472fbcb28..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_058.php +++ /dev/null @@ -1,94 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 058'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 058', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 10); - -// add a page -$pdf->AddPage(); - -// NOTE: Uncomment the following line to rasterize SVG image using the ImageMagick library. -//$pdf->setRasterizeVectorImages(true); - -$pdf->ImageSVG($file='images/testsvg.svg', $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false); - -$pdf->ImageSVG($file='images/tux.svg', $x=30, $y=100, $w='', $h=100, $link='', $align='', $palign='', $border=0, $fitonpage=false); - -$pdf->SetFont('helvetica', '', 8); -$pdf->SetY(195); -$txt = '© The copyright holder of the above Tux image is Larry Ewing, allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other use is permitted.'; -$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_058.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_059.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_059.php deleted file mode 100644 index 9396784da29..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_059.php +++ /dev/null @@ -1,190 +0,0 @@ -tocpage) { - // *** replace the following parent::Header() with your code for TOC page - parent::Header(); - } else { - // *** replace the following parent::Header() with your code for normal pages - parent::Header(); - } - } - - /** - * Overwrite Footer() method. - * @public - */ - public function Footer() { - if ($this->tocpage) { - // *** replace the following parent::Footer() with your code for TOC page - parent::Footer(); - } else { - // *** replace the following parent::Footer() with your code for normal pages - parent::Footer(); - } - } - -} // end of class - -// create new PDF document -$pdf = new TOC_TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); - -// set document information -$pdf->SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 059'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 059', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// set font -$pdf->SetFont('helvetica', '', 10); - -// --------------------------------------------------------- - -// create some content ... - -// add a page -$pdf->AddPage(); - -// set a bookmark for the current position -$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128)); - -// print a line using Cell() -$pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,128,0)); -$pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L'); - -$pdf->AddPage(); -$pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(128,0,0)); -$pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L'); - -// add some pages and bookmarks -for ($i = 2; $i < 12; $i++) { - $pdf->AddPage(); - $pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128)); - $pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L'); -} - - -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - - -// add a new page for TOC -$pdf->addTOCPage(); - -// write the TOC title and/or other elements on the TOC page -$pdf->SetFont('times', 'B', 16); -$pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0); -$pdf->Ln(); -$pdf->SetFont('helvetica', '', 10); - -// define styles for various bookmark levels -$bookmark_templates = array(); - -/* - * The key of the $bookmark_templates array represent the bookmark level (from 0 to n). - * The following templates will be replaced with proper content: - * #TOC_DESCRIPTION# this will be replaced with the bookmark description; - * #TOC_PAGE_NUMBER# this will be replaced with page number. - * - * NOTES: - * If you want to align the page number on the right you have to use a monospaced font like courier, otherwise you can left align using any font type. - * The following is just an example, you can get various styles by combining various HTML elements. - */ - -// A monospaced font for the page number is mandatory to get the right alignment -$bookmark_templates[0] = '
    #TOC_DESCRIPTION##TOC_PAGE_NUMBER#
    '; -$bookmark_templates[1] = '
     #TOC_DESCRIPTION##TOC_PAGE_NUMBER#
    '; -$bookmark_templates[2] = '
     #TOC_DESCRIPTION##TOC_PAGE_NUMBER#
    '; -// add other bookmark level templates here ... - -// add table of content at page 1 -// (check the example n. 45 for a text-only TOC -$pdf->addHTMLTOC(1, 'INDEX', $bookmark_templates, true, 'B', array(128,0,0)); - -// end of TOC page -$pdf->endTOCPage(); - -// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_059.pdf', 'D'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_060.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_060.php deleted file mode 100644 index 03bad28a841..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_060.php +++ /dev/null @@ -1,108 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 060'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 060', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// set font -$pdf->SetFont('helvetica', '', 20); - -// --------------------------------------------------------- - -// set page format (read source code documentation for further information) -$page_format = array( - 'MediaBox' => array ('llx' => 0, 'lly' => 0, 'urx' => 210, 'ury' => 297), - 'CropBox' => array ('llx' => 0, 'lly' => 0, 'urx' => 210, 'ury' => 297), - 'BleedBox' => array ('llx' => 5, 'lly' => 5, 'urx' => 205, 'ury' => 292), - 'TrimBox' => array ('llx' => 10, 'lly' => 10, 'urx' => 200, 'ury' => 287), - 'ArtBox' => array ('llx' => 15, 'lly' => 15, 'urx' => 195, 'ury' => 282), - 'Dur' => 3, - 'trans' => array( - 'D' => 1.5, - 'S' => 'Split', - 'Dm' => 'V', - 'M' => 'O' - ), - 'Rotate' => 90, - 'PZ' => 1, -); - -// Check the example n. 29 for viewer preferences - -// add first page --- -$pdf->AddPage('P', $page_format, false, false); -$pdf->Cell(0, 12, 'First Page', 1, 1, 'C'); - -// add second page --- -$page_format['Rotate'] = 270; -$pdf->AddPage('P', $page_format, false, false); -$pdf->Cell(0, 12, 'Second Page', 1, 1, 'C'); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_060.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_061.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_061.php deleted file mode 100644 index 13e18c22eab..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_061.php +++ /dev/null @@ -1,264 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 061'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 10); - -// add a page -$pdf->AddPage(); - -/* NOTE: - * ********************************************************* - * You can load external XHTML using : - * - * $html = file_get_contents('/path/to/your/file.html'); - * - * External CSS files will be automatically loaded. - * Sometimes you need to fix the path of the external CSS. - * ********************************************************* - */ - -// define some HTML content with style -$html = << - - -

    Example of XHTML + CSS

    - -

    Example of paragraph with class selector. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc.

    - -

    Example of paragraph with ID selector. Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa.

    - -
    example of DIV with border and fill. -
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. -
    text-transform LOWERCASE Lorem ipsum dolor sit amet, consectetur adipiscing elit. -
    text-transform uppercase Lorem ipsum dolor sit amet, consectetur adipiscing elit. -
    text-transform cAPITALIZE Lorem ipsum dolor sit amet, consectetur adipiscing elit. -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    No.XXXXXXXX XXXXXXXXXXXX
    1.XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXXXXXX
    XXXX
    2.XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    3.XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    4.XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    XXXX
    -EOF; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// add a page -$pdf->AddPage(); - -$html = ' -

    HTML TIPS & TRICKS

    - -

    REMOVE CELL PADDING

    -
    $pdf->SetCellPadding(0);
    -This is used to remove any additional vertical space inside a single cell of text. - -

    REMOVE TAG TOP AND BOTTOM MARGINS

    -
    $tagvs = array(\'p\' => array(0 => array(\'h\' => 0, \'n\' => 0), 1 => array(\'h\' => 0, \'n\' => 0)));
    -$pdf->setHtmlVSpace($tagvs);
    -Since the CSS margin command is not yet implemented on TCPDF, you need to set the spacing of block tags using the following method. - -

    SET LINE HEIGHT

    -
    $pdf->setCellHeightRatio(1.25);
    -You can use the following method to fine tune the line height (the number is a percentage relative to font height). - -

    CHANGE THE PIXEL CONVERSION RATIO

    -
    $pdf->setImageScale(0.47);
    -This is used to adjust the conversion ratio between pixels and document units. Increase the value to get smaller objects.
    -Since you are using pixel unit, this method is important to set theright zoom factor.

    -Suppose that you want to print a web page larger 1024 pixels to fill all the available page width.
    -An A4 page is larger 210mm equivalent to 8.268 inches, if you subtract 13mm (0.512") of margins for each side, the remaining space is 184mm (7.244 inches).
    -The default resolution for a PDF document is 300 DPI (dots per inch), so you have 7.244 * 300 = 2173.2 dots (this is the maximum number of points you can print at 300 DPI for the given width).
    -The conversion ratio is approximatively 1024 / 2173.2 = 0.47 px/dots
    -If the web page is larger 1280 pixels, on the same A4 page the conversion ratio to use is 1280 / 2173.2 = 0.59 pixels/dots'; - -// output the HTML content -$pdf->writeHTML($html, true, false, true, false, ''); - -// reset pointer to the last page -$pdf->lastPage(); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_061.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_062.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_062.php deleted file mode 100644 index 45fc25dad18..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_062.php +++ /dev/null @@ -1,140 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 062'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 062', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 20); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'XObject Templates', '', 0, 'C', 1, 0, false, false, 0); - -/* - * An XObject Template is a PDF block that is a self-contained - * description of any sequence of graphics objects (including path - * objects, text objects, and sampled images). - * An XObject Template may be painted multiple times, either on - * several pages or at several locations on the same page and produces - * the same results each time, subject only to the graphics state at - * the time it is invoked. - */ - - -// start a new XObject Template and set transparency group option -$template_id = $pdf->startTemplate(60, 60, true); - -// create Template content -// ................................................................... -//Start Graphic Transformation -$pdf->StartTransform(); - -// set clipping mask -$pdf->StarPolygon(30, 30, 29, 10, 3, 0, 1, 'CNZ'); - -// draw jpeg image to be clipped -$pdf->Image('images/image_demo.jpg', 0, 0, 60, 60, '', '', '', true, 72, '', false, false, 0, false, false, false); - -//Stop Graphic Transformation -$pdf->StopTransform(); - -$pdf->SetXY(0, 0); - -$pdf->SetFont('times', '', 40); - -$pdf->SetTextColor(255, 0, 0); - -// print a text -$pdf->Cell(60, 60, 'Template', 0, 0, 'C', false, '', 0, false, 'T', 'M'); -// ................................................................... - -// end the current Template -$pdf->endTemplate(); - - -// print the selected Template various times using various transparencies - -$pdf->SetAlpha(0.4); -$pdf->printTemplate($template_id, 15, 50, 20, 20, '', '', false); - -$pdf->SetAlpha(0.6); -$pdf->printTemplate($template_id, 27, 62, 40, 40, '', '', false); - -$pdf->SetAlpha(0.8); -$pdf->printTemplate($template_id, 55, 85, 60, 60, '', '', false); - -$pdf->SetAlpha(1); -$pdf->printTemplate($template_id, 95, 125, 80, 80, '', '', false); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_062.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_063.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_063.php deleted file mode 100644 index de13515c7c4..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_063.php +++ /dev/null @@ -1,131 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 063'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 063', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', 'B', 16); - -// add a page -$pdf->AddPage(); - -$pdf->Write(0, 'Example of Text Stretching and Spacing (tracking)', '', 0, 'L', true, 0, false, false, 0); -$pdf->Ln(5); - -// create several cells to display all cases of stretching and spacing combinations. - -$fonts = array('times', 'dejavuserif'); -$alignments = array('L' => 'LEFT', 'C' => 'CENTER', 'R' => 'RIGHT', 'J' => 'JUSTIFY'); - - -// Test all cases using direct stretching/spacing methods -foreach ($fonts as $fkey => $font) { - $pdf->SetFont($font, '', 14); - foreach ($alignments as $align_mode => $align_name) { - for ($stretching = 90; $stretching <= 110; $stretching += 10) { - for ($spacing = -0.254; $spacing <= 0.254; $spacing += 0.254) { - $pdf->setFontStretching($stretching); - $pdf->setFontSpacing($spacing); - $txt = $align_name.' | Stretching = '.$stretching.'% | Spacing = '.sprintf('%+.3F', $spacing).'mm'; - $pdf->Cell(0, 0, $txt, 1, 1, $align_mode); - } - } - } - $pdf->AddPage(); -} - - -// Test all cases using CSS stretching/spacing properties -foreach ($fonts as $fkey => $font) { - $pdf->SetFont($font, '', 11); - foreach ($alignments as $align_mode => $align_name) { - for ($stretching = 90; $stretching <= 110; $stretching += 10) { - for ($spacing = -0.254; $spacing <= 0.254; $spacing += 0.254) { - $html = ''.$align_name.' | Stretching = '.$stretching.'% | Spacing = '.sprintf('%+.3F', $spacing).'mm
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
    '; - $pdf->writeHTMLCell(0, 0, '', '', $html, 1, 1, false, true, $align_mode, false); - } - } - if (!(($fkey == 1) AND ($align_mode == 'J'))) { - $pdf->AddPage(); - } - } -} - - -// reset font stretching -$pdf->setFontStretching(100); - -// reset font spacing -$pdf->setFontSpacing(0); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_063.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_064.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_064.php deleted file mode 100644 index 39da07139a7..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_064.php +++ /dev/null @@ -1,176 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 064'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 064', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set font -$pdf->SetFont('helvetica', '', 8); - - -// define some html content for testing -$txt = '

    TEST PAGE REGIONS: A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code. A region is always aligned on the left or right side of the page ad is defined using a vertical segment. You can set multiple regions for the same page. You can combine several adjacent regions to approximate curved shapes. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc. -Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa. -Integer non sem eget neque mattis accumsan. Maecenas eu nisl mauris, sit amet interdum ipsum. In pharetra erat vel lectus venenatis elementum. Nulla non elit ligula, sit amet mollis urna. Morbi ut gravida est. Mauris tincidunt sem et turpis molestie malesuada. Curabitur vel nulla risus, sed mollis erat. Suspendisse vehicula accumsan purus nec varius. Donec fermentum lorem id felis sodales dictum. Quisque et dolor ipsum. Nam luctus consectetur dui vitae fermentum. Curabitur sodales consequat augue, id ultricies augue tempor ac. Aliquam ac magna id ipsum vehicula bibendum. Sed elementum congue tristique. Phasellus vel lorem eu lectus porta sodales. Etiam neque tortor, sagittis id pharetra quis, laoreet vel arcu. -Cras quam mi, ornare laoreet laoreet vel, vehicula at lacus. Maecenas a lacus accumsan augue convallis sagittis sed quis odio. Morbi sit amet turpis diam, dictum convallis urna. Cras eget interdum augue. Cras eu nisi sit amet dolor faucibus porttitor. Suspendisse potenti. Nunc vitae dolor risus, at cursus libero. Suspendisse bibendum tellus non nibh hendrerit tristique. Mauris eget orci elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam porta libero non ante laoreet semper. Proin volutpat sodales mi, ac fermentum erat sagittis in. Vivamus at viverra felis. Ut pretium facilisis ante et pharetra. -Nulla facilisi. Cras varius quam eget libero aliquam vitae tincidunt leo rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque a nisl massa, quis pretium urna. Proin vel porttitor tortor. Cras rhoncus congue velit in bibendum. Donec pharetra semper augue id lacinia. Quisque magna quam, hendrerit eu aliquam et, pellentesque ut tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas nulla quam, rutrum eu feugiat at, elementum eu libero. Maecenas ullamcorper leo et turpis rutrum ac laoreet eros faucibus. Phasellus condimentum lorem quis neque imperdiet quis molestie enim iaculis. Phasellus risus est, vestibulum ut convallis ultrices, dignissim nec erat. Etiam congue lobortis laoreet. Nulla ut neque sed velit dapibus semper. Quisque nec dolor id nibh eleifend iaculis. Vivamus vitae fermentum odio. Etiam malesuada quam in nulla aliquam sed convallis dui feugiat.

    '; - - -// add a page -$pdf->AddPage(); - -// print some graphic content -$pdf->Image('images/image_demo.jpg', 155, 30, 40, 40, 'JPG', '', '', true); -$pdf->Image('images/image_demo.jpg', 15, 230, 40, 40, 'JPG', '', '', true); - -// define some graphic styles -$styleA = array('width' => 0.254, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(255, 0, 0)); -$styleB = array('width' => 0.254, 'cap' => 'butt', 'join' => 'miter', 'dash' => 3, 'color' => array(127, 127, 127)); -$pdf->SetFillColor(220, 255, 220); - -// write a trapezoid with some information about no-write page regions -$pdf->Polygon(array(15,90, 57,90, 67,140, 15,140), 'DF', array($styleB, $styleA, $styleB, $styleB)); -$pdf->SetXY(15, 90); -$pdf->Cell(42, 0, 'xt,yt', 0, 0, 'R', false, '', 0, false, 'T', 'T'); -$pdf->SetXY(15, 140); -$pdf->Cell(52, 0, 'xb,yb', 0, 0, 'R', false, '', 0, false, 'B', 'B'); -$pdf->SetXY(15, 115); -$pdf->Cell(40, 0, 'side', 0, 0, 'R', false, '', 0, false, 'B', 'B'); -$pdf->SetLineStyle(array('width' => 0.254, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); -$pdf->Arrow(60, 115, 35, 115, 2, 5, 15); - -// write a trapezoid with some information about no-write page regions -$pdf->Polygon(array(145,130, 195,130, 195,180, 155,180), 'DF', array($styleB, $styleB, $styleB, $styleA)); -$pdf->SetXY(145, 130); -$pdf->Cell(42, 0, 'xt,yt', 0, 0, 'L', false, '', 0, false, 'T', 'T'); -$pdf->SetXY(155, 180); -$pdf->Cell(52, 0, 'xb,yb', 0, 0, 'L', false, '', 0, false, 'B', 'B'); -$pdf->SetXY(160, 155); -$pdf->Cell(30, 0, 'side', 0, 0, 'L', false, '', 0, false, 'B', 'B'); -$pdf->SetLineStyle(array('width' => 0.254, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))); -$pdf->Arrow(155, 155, 180, 155, 2, 5, 15); - -// reset x,y position -$pdf->SetXY(15, 30); - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// define no-write page regions to avoid text overlapping images -/* - 'page' => page number or empy for current page - 'xt' => X top - 'yt' => Y top - 'yb' => Y bottom - 'side' => page side ('L' = left or 'R' = right) -*/ -$regions = array( -array('page' => '', 'xt' => 153, 'yt' => 30, 'xb' => 153, 'yb' => 70, 'side' => 'R'), -array('page' => '', 'xt' => 60, 'yt' => 90, 'xb' => 70, 'yb' => 140, 'side' => 'L'), -array('page' => '', 'xt' => 143, 'yt' => 130, 'xb' => 153, 'yb' => 180, 'side' => 'R'), -array('page' => '', 'xt' => 58, 'yt' => 230, 'xb' => 58, 'yb' => 270, 'side' => 'L') -); - -// set page regions, check also getPageRegions(), addPageRegion() and removePageRegion() -$pdf->setPageRegions($regions); - -// write html text -$pdf->writeHTML($txt, true, false, true, false, ''); - - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// set a circular no-write region on the second page -$regions = array( -array('page' => 2, 'xt' => 195, 'yt' => 110, 'xb' => 179.693, 'yb' => 113.045, 'side' => 'R'), -array('page' => 2, 'xt' => 179.693, 'yt' => 113.045, 'xb' => 166.716, 'yb' => 121.716, 'side' => 'R'), -array('page' => 2, 'xt' => 166.716, 'yt' => 121.716, 'xb' => 158.045, 'yb' => 134.693, 'side' => 'R'), -array('page' => 2, 'xt' => 158.045, 'yt' => 134.693, 'xb' => 155, 'yb' => 150, 'side' => 'R'), -array('page' => 2, 'xt' => 155, 'yt' => 150, 'xb' => 158.045, 'yb' => 165.307, 'side' => 'R'), -array('page' => 2, 'xt' => 158.045, 'yt' => 165.307, 'xb' => 166.716, 'yb' => 178.284, 'side' => 'R'), -array('page' => 2, 'xt' => 166.716, 'yt' => 178.284, 'xb' => 179.693, 'yb' => 186.955, 'side' => 'R'), -array('page' => 2, 'xt' => 179.693, 'yt' => 186.955, 'xb' => 195, 'yb' => 190, 'side' => 'R') -); -$pdf->setPageRegions($regions); - -$pdf->Polygon(array(195,110, 179.693,113.045, 166.716,121.716, 158.045,134.693, 155,150, 158.045,165.307, 166.716,178.284, 179.693,186.955, 195,190), 'DF'); - -$pdf->Ln(15); - -// define some html content for testing -$txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sed imperdiet lectus. Phasellus quis velit velit, non condimentum quam. Sed neque urna, ultrices ac volutpat vel, laoreet vitae augue. Sed vel velit erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras eget velit nulla, eu sagittis elit. Nunc ac arcu est, in lobortis tellus. Praesent condimentum rhoncus sodales. In hac habitasse platea dictumst. Proin porta eros pharetra enim tincidunt dignissim nec vel dolor. Cras sapien elit, ornare ac dignissim eu, ultricies ac eros. Maecenas augue magna, ultrices a congue in, mollis eu nulla. Nunc venenatis massa at est eleifend faucibus. Vivamus sed risus lectus, nec interdum nunc. Fusce et felis vitae diam lobortis sollicitudin. Aenean tincidunt accumsan nisi, id vehicula quam laoreet elementum. Phasellus egestas interdum erat, et viverra ipsum ultricies ac. Praesent sagittis augue at augue volutpat eleifend. Cras nec orci neque. Mauris bibendum posuere blandit. Donec feugiat mollis dui sit amet pellentesque. Sed a enim justo. Donec tincidunt, nisl eget elementum aliquam, odio ipsum ultrices quam, eu porttitor ligula urna at lorem. Donec varius, eros et convallis laoreet, ligula tellus consequat felis, ut ornare metus tellus sodales velit. Duis sed diam ante. Ut rutrum malesuada massa, vitae consectetur ipsum rhoncus sed. Suspendisse potenti. Pellentesque a congue massa. Integer non sem eget neque mattis accumsan. Maecenas eu nisl mauris, sit amet interdum ipsum. In pharetra erat vel lectus venenatis elementum. Nulla non elit ligula, sit amet mollis urna. Morbi ut gravida est. Mauris tincidunt sem et turpis molestie malesuada. Curabitur vel nulla risus, sed mollis erat. Suspendisse vehicula accumsan purus nec varius. Donec fermentum lorem id felis sodales dictum. Quisque et dolor ipsum. Nam luctus consectetur dui vitae fermentum. Curabitur sodales consequat augue, id ultricies augue tempor ac. Aliquam ac magna id ipsum vehicula bibendum. Sed elementum congue tristique. Phasellus vel lorem eu lectus porta sodales. Etiam neque tortor, sagittis id pharetra quis, laoreet vel arcu. Cras quam mi, ornare laoreet laoreet vel, vehicula at lacus. Maecenas a lacus accumsan augue convallis sagittis sed quis odio. Morbi sit amet turpis diam, dictum convallis urna. Cras eget interdum augue. Cras eu nisi sit amet dolor faucibus porttitor. Suspendisse potenti. Nunc vitae dolor risus, at cursus libero. Suspendisse bibendum tellus non nibh hendrerit tristique. Mauris eget orci elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam porta libero non ante laoreet semper. Proin volutpat sodales mi, ac fermentum erat sagittis in. Vivamus at viverra felis. Ut pretium facilisis ante et pharetra. Nulla facilisi. Cras varius quam eget libero aliquam vitae tincidunt leo rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque a nisl massa, quis pretium urna. Proin vel porttitor tortor. Cras rhoncus congue velit in bibendum. Donec pharetra semper augue id lacinia. Quisque magna quam, hendrerit eu aliquam et, pellentesque ut tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas nulla quam, rutrum eu feugiat at, elementum eu libero. Maecenas ullamcorper leo et turpis rutrum ac laoreet eros faucibus. Phasellus condimentum lorem quis neque imperdiet quis molestie enim iaculis. Phasellus risus est, vestibulum ut convallis ultrices, dignissim nec erat. Etiam congue lobortis laoreet. Nulla ut neque sed velit dapibus semper. Quisque nec dolor id nibh eleifend iaculis. Vivamus vitae fermentum odio. Etiam malesuada quam in nulla aliquam sed convallis dui feugiat.'."\n"; - -// write text -$pdf->MultiCell(0, 0, $txt, 0, 'J', false, 1, '', '', true, 0, false, true, 0, 'T', false); - -// --------------------------------------------------------- - -//Close and output PDF document -$pdf->Output('example_064.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/example_065.php b/htdocs/includes/tecnickcom/tcpdf/examples/example_065.php deleted file mode 100644 index f1bbcbe9dfa..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/example_065.php +++ /dev/null @@ -1,98 +0,0 @@ -SetCreator(PDF_CREATOR); -$pdf->SetAuthor('Nicola Asuni'); -$pdf->SetTitle('TCPDF Example 065'); -$pdf->SetSubject('TCPDF Tutorial'); -$pdf->SetKeywords('TCPDF, PDF, example, test, guide'); - -// set default header data -$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 065', PDF_HEADER_STRING); - -// set header and footer fonts -$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); -$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); - -// set default monospaced font -$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); - -// set margins -$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); -$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); -$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); - -// set auto page breaks -$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); - -// set image scale factor -$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - -// set some language-dependent strings (optional) -if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { - require_once(dirname(__FILE__).'/lang/eng.php'); - $pdf->setLanguageArray($l); -} - -// --------------------------------------------------------- - -// set default font subsetting mode -$pdf->setFontSubsetting(true); - -// Set font -$pdf->SetFont('helvetica', '', 14, '', true); - -// Add a page -// This method has several options, check the source code documentation for more information. -$pdf->AddPage(); - -// Set some content to print -$html = <<Example of  TCPDF  document in PDF/A-1b mode. -This document conforms to the standard PDF/A-1b (ISO 19005-1:2005). -

    Please check the source code documentation and other examples for further information (http://www.tcpdf.org).

    -

    TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE MAKE A DONATION!

    -EOD; - -// Print text using writeHTMLCell() -$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); - -// --------------------------------------------------------- - -// Close and output PDF document -// This method has several options, check the source code documentation for more information. -$pdf->Output('example_065.pdf', 'I'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/_blank.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/_blank.png deleted file mode 100644 index 38f7b2fa56ab08499e0d6f848af9b91c14963aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?$;uu;>Cg%mF?juK)l4Uw%aT1W2wV$S;_| z;n|HeAcwQSBeIx*fm;ZK886+f`vVdzag8W(&d<$F%`0JG=+x?E0}66^x;TbZ%t=lF YvY8kdJ=QNN1hN=BUHx3vIVCg!07t?hGXMYp diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/alpha.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/alpha.png deleted file mode 100644 index 5447918606d892cb1dbe1986f03eace68bf1a4c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23886 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 D=>KuP diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/image_demo.jpg b/htdocs/includes/tecnickcom/tcpdf/examples/images/image_demo.jpg deleted file mode 100644 index 262bce272c8f2bdf6d1fa3fd2efa919a6ae700cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573845 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 IJ8jYb*|WvFi2wiq diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/image_with_alpha.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/image_with_alpha.png deleted file mode 100644 index 3011618ded08056d5b527dda32fa8f5bfd843f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244218 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 x?gk&T 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

    $Fi7KR7Hpbkn0=Thd_3 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 *8h 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

    Td2n`c-cMm@*oOdYa3>`Lb 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 s>$#rmxt{B}p6j`u>$#rm`E$_~ek>+WeyWe{w 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
      >WtL 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 FV1m4~x=sK9 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.gif b/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.gif deleted file mode 100644 index 010b487d9383f988fd960f7858c6c25743700cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21022 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 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.jpg b/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.jpg deleted file mode 100644 index 6d9b8fd807682a1a66b404caa61d5db8719afa60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32732 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�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 I!{3$v2faPUy#N3J diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/logo_example.png deleted file mode 100644 index 13799452be3cc5783f9b23e9c8341bd8fa454a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19411 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

      {-sjr}eS;VA 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 - - - - - - - - - - - - - - - - - diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_cell.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_cell.png deleted file mode 100644 index 98a1553a82e1b325aa41217923081e63509ca3c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38415 zcmb5Wc|6pA^gpVIBviJLrNm@kN;LK@gtu%7A=#p`j}9fhkKIH`mI$HjyJ750 zc4n;EckX-Y^SzJzd;IRbk9+@^G4r0+>%7nFEYH_@opav89s;V=7g#QkkdRQTt10V} zkdT4I*LhOt%DBV08}#RltFEdd$(OEc1QHTbl82i5DkNt}C@zp+x1I^0%2bNl34Y1<>8jx+8v@@otc?=nL|D zA4%Y4rz8|K((%;ruOza?ByyiUZkh)0+$K@@m~)+kPCAD~q0mJ@iBYD2RfB;<`760n zz9QUIMoyYU^)s&)HHk(RiAFw3K#=Dl4V`KRz3NAD?XYt|0=;G$iJ|L#HI+m$F)~wY zdfm??&j1n&qW~G5#CvdZD-{Z(;zy52NbIE^>S~iXh_IW)kvQ{^I18{oDWr7dBSCPI zxU=wB#E|%qkoZvXTSmNmESIIO&Smvo=-F5D*Jsc9^O-$06?k5p`iT3^i?<|isjY3T zav$l-I={XisC*-oGvJwjoSCx}GAHx}T+PE%5m9#cExno#Qq80A=6fy;Kj+6mFjqI1 zQfn*zcwWG-PTRjsG?B|N#K|oL=I!eh;0cA!uCN5gG8E`O|-cb zTHf?+xoV=7bcTQmC~uM=XBMxfoGu<58iaYn@-oi6#@o9niWbOGb4hvvV5D_(A6a5J z3qw#2aTV^V#)cT3nD@~-pY$D)3m$(~s|gDW$k0O+(eC)a_D5G*e6wfX|c~rhu zDmukK`-e-B^XXf=SKrKElsh1c!&{P)-u}1{SE7`I$p*{i!pc%&zx1NMR%ca7z5eMJ zRvVsQD~T>0FDm&O`|EvSy;xMUb4OueW@T-5b!lSr8?Z6Cyj38j!y~>u{zpw!VSU|D zWkp(VaCWapQS)4OZ(39T^-lv~Ev-$T`t!1F3x_M)Tib2x zo9nw9>sx!ZtGj=W4qEq4+V>82Pft2ePWw(yk2I(Rmm$ZXbW$^NB_R>wBEHUeHAxq10YnugydjL&FpyiUk`r6;gMB5n|wo>yX0 z(l~nMTp?vq%D149C*z*BTedelBe!kuB)|8o?WPc8X=OQ1+F$fU@9xS9GX!y-@6Ed9 zLw1QQ0Jub^kWTmSbqPpw&isF#{eS=S|9ap5ZTA1u&wJ-N&z}W3 z&j-rGh_8PpiR3vE)_saBX$*RTC%ri$!+lF`7TqPj&k@W-D{-8 z-6wL(M^A4I>9{D$HCxk}Im#2x(yU6s90|00S8RH`Ie#BVO>ZC<=6JvSo@rrNI;O0q zCVB#&%I(d>+WWk(RnF?3XH`O`=H9P>$orU~Wt&xH_6PIGcB$_;uZ!l94khpnxBjhY zO-%rZT;W#eo1fc@(exD~iym;flWDKpqf4b)WbNbet_R;>?J`C{pO4QB8uRoenTT*u z$;=E@HgfXJL|0WLbYmOk_~>}@k+-cM=Ob7rO{P3wjcYEl!j!%mZdgD*G>~ zX2lcwR@AR>zfZJFKAeuN<@46+qgj1V9X87KBvL$tmR5`tjBj0AH#@<&l>w=o@?N+b z6j{lHjr)4j1Sx`4EkD3mtZIPc!xCS-z zVdlE<%gT7MM#~&P_9x3iAm4S6b!IiW2}8mB0cgKj&bkmAY@FH%A4uetRfJ{ivr)>~ zltyRrRIrVe^OEU#^V)Ap%gVH*Bf_=%F1@*Et=Oa9eS_Pn!toZoLG=0E6Vm~wGyN_a z(poVtMSYxYz&i^9z0^kd$e3d;8M9R9G4(-{V2!mX$p6klH}bV_aCI zqTaVXMT9nNSRJyF4|c&XOP$Uz^4{0d)o1hEdMs%0CYVi31Y}&2geQsU^?gSeFEfmh z^MiubLTEAVI9O0 q;#*P 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 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_logo.jpg b/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_logo.jpg deleted file mode 100644 index 257f8fb6d93386e014b4e2b3f7fdfb863f658ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17633 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 L%PbHD-7owf_cIG8 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_signature.png b/htdocs/includes/tecnickcom/tcpdf/examples/images/tcpdf_signature.png deleted file mode 100644 index a4f06372511767e05e8350826aa825022ad14258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67931 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 diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/testsvg.svg b/htdocs/includes/tecnickcom/tcpdf/examples/images/testsvg.svg deleted file mode 100644 index fd8314e3484..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/images/testsvg.svg +++ /dev/null @@ -1,328 +0,0 @@ - - - - - TCPDF SVG EXAMPLE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - www.tcpdf.org - - - - - - - - SVG - diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/images/tux.svg b/htdocs/includes/tecnickcom/tcpdf/examples/images/tux.svg deleted file mode 100644 index de8c8696886..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/images/tux.svg +++ /dev/null @@ -1,1487 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/index.php b/htdocs/includes/tecnickcom/tcpdf/examples/index.php deleted file mode 100644 index 75125235e72..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/index.php +++ /dev/null @@ -1,115 +0,0 @@ -'; -?> - - - - - -TCPDF Examples - - - - - - - - -

      TCPDF Examples

      - -

      PDF

      - -
        -
      1. Simple PDF with default Header and Footer: [PDF]
      2. -
      3. Simple PDF without Header and Footer: [PDF]
      4. -
      5. Custom Header and Footer: [PDF]
      6. -
      7. Cell stretching: [PDF]
      8. -
      9. Multicell: [PDF]
      10. -
      11. WriteHTML and RTL support: [PDF]
      12. -
      13. Independent columns with WriteHTMLCell: [PDF]
      14. -
      15. External UTF-8 text file: [PDF]
      16. -
      17. Image: [PDF]
      18. -
      19. Multiple columns: [PDF]
      20. -
      21. Colored Tables: [PDF]
      22. -
      23. Graphic Functions: [PDF]
      24. -
      25. Graphic Transformations: [PDF]
      26. -
      27. Javascript and Forms: [PDF]
      28. -
      29. Bookmarks (Table of Content): [PDF]
      30. -
      31. Document Encryption: [PDF]
      32. -
      33. Independent columns with MultiCell: [PDF]
      34. -
      35. Persian and Arabic language on RTL document: [PDF]
      36. -
      37. Non unicode / Alternative config file: [PDF]
      38. -
      39. Multicell complex alignment: [PDF]
      40. -
      41. writeHTML alignment: [PDF]
      42. -
      43. CMYK colors: [PDF]
      44. -
      45. Page Groups: [PDF]
      46. -
      47. Object Visibility and Layers: [PDF]
      48. -
      49. Object Transparency: [PDF]
      50. -
      51. Text Rendering Modes and Text Clipping: [PDF]
      52. -
      53. 1D Barcodes: [PDF]
      54. -
      55. Multiple page formats: [PDF]
      56. -
      57. Set PDF viewer display preferences: [PDF]
      58. -
      59. Colour gradients: [PDF]
      60. -
      61. Pie Chart Graphic: [PDF]
      62. -
      63. EPS/AI vectorial image: [PDF]
      64. -
      65. Mixed font types (TrueType Unicode, core, CID-0): [PDF]
      66. -
      67. Clipping masks: [PDF]
      68. -
      69. Line styles with cells and multicells: [PDF]
      70. -
      71. Text Annotations: [PDF]
      72. -
      73. Spot Colors: [PDF]
      74. -
      75. NON-embedded CID-0 CJK font: [PDF]
      76. -
      77. HTML Justification: [PDF]
      78. -
      79. Booklet (double-sided pages): [PDF]
      80. -
      81. File attachment: [PDF]
      82. -
      83. Image with Alpha Channel Transparency: [PDF]
      84. -
      85. Disk caching: [PDF]
      86. -
      87. Move, Copy and Delete page: [PDF]
      88. -
      89. Table Of Content with Bookmarks: [PDF]
      90. -
      91. Text hyphenation: [PDF]
      92. -
      93. Transactions and UNDO: [PDF]
      94. -
      95. Table header and rowspan: [PDF]
      96. -
      97. TCPDF methods in HTML: [PDF]
      98. -
      99. 2D Barcode (QR-Code, Datamatrix ECC200 and PDF417): [PDF]
      100. -
      101. Full page background: [PDF]
      102. -
      103. Digital Signature Certification: [PDF]
      104. -
      105. Javascript functions: [PDF]
      106. -
      107. XHTML Form: [PDF]
      108. -
      109. Font Dump: [PDF]
      110. -
      111. Crop Marks and Registration Marks: [PDF]
      112. -
      113. Cell vertical alignments and borders: [PDF]
      114. -
      115. SVG Image: [PDF]
      116. -
      117. Table Of Content with HTML templates: [PDF]
      118. -
      119. Advanced page settings: [PDF]
      120. -
      121. XHTML + CSS: [PDF]
      122. -
      123. XObject Templates: [PDF]
      124. -
      125. Text stretching and spacing (tracking/kerning): [PDF]
      126. -
      127. No-write page regions: [PDF]
      128. -
      129. PDF/A-1b (ISO 19005-1:2005) document: [PDF]
      130. -
      - -

      Barcodes

      - -
        -
      1. 1D barcode HTML format [HTML]
      2. -
      3. 1D barcode PNG format [PNG]
      4. -
      5. 1D barcode SVG format [SVG]
      6. -
      7. 1D barcode SVG INLINE format [SVG INLINE]
      8. - -
      9. 2D datamatrix barcode HTML format [HTML]
      10. -
      11. 2D datamatrix barcode PNG format [PNG]
      12. -
      13. 2D datamatrix barcode SVG format [SVG]
      14. -
      15. 2D datamatrix barcode SVG INLINE format [SVG INLINE]
      16. - -
      17. 2D pdf417 barcode HTML format [HTML]
      18. -
      19. 2D pdf417 barcode PNG format [PNG]
      20. -
      21. 2D pdf417 barcode SVG format [SVG]
      22. -
      23. 2D pdf417 barcode SVG INLINE format [SVG INLINE]
      24. - -
      25. 2D qrcode barcode HTML format [HTML]
      26. -
      27. 2D qrcode barcode PNG format [PNG]
      28. -
      29. 2D qrcode barcode SVG format [SVG]
      30. -
      31. 2D qrcode barcode SVG INLINE format [SVG INLINE]
      32. -
      - - - diff --git a/htdocs/includes/tecnickcom/tcpdf/examples/lang/afr.php b/htdocs/includes/tecnickcom/tcpdf/examples/lang/afr.php deleted file mode 100644 index 367b7e87f0b..00000000000 --- a/htdocs/includes/tecnickcom/tcpdf/examples/lang/afr.php +++ /dev/null @@ -1,44 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : This is a command line script to generate TCPDF fonts. -// -//============================================================+ - -/** - * @file - * This is a command line script to generate TCPDF fonts.
      - * @package com.tecnick.tcpdf - * @version 1.0.000 - */ - -if (php_sapi_name() != 'cli') { - echo 'You need to run this command from console.'; - exit(1); -} - -$tcpdf_include_dirs = array(realpath(dirname(__FILE__).'/../tcpdf.php'), '/usr/share/php/tcpdf/tcpdf.php', '/usr/share/tcpdf/tcpdf.php', '/usr/share/php-tcpdf/tcpdf.php', '/var/www/tcpdf/tcpdf.php', '/var/www/html/tcpdf/tcpdf.php', '/usr/local/apache2/htdocs/tcpdf/tcpdf.php'); -foreach ($tcpdf_include_dirs as $tcpdf_include_path) { - if (@file_exists($tcpdf_include_path)) { - require_once($tcpdf_include_path); - break; - } -} - -/** - * Display help guide for this command. - */ -function showHelp() { - $help = <<'', 'enc'=>'', 'flags'=>32, 'outpath'=>K_PATH_FONTS, 'platid'=>3, 'encid'=>1, 'addcbbox'=>false, 'link'=>false); - -// short input options -$sopt = ''; -$sopt .= 't:'; -$sopt .= 'e:'; -$sopt .= 'f:'; -$sopt .= 'o:'; -$sopt .= 'p:'; -$sopt .= 'n:'; -$sopt .= 'b'; -$sopt .= 'l'; -$sopt .= 'i:'; -$sopt .= 'h'; - -// long input options -$lopt = array(); -$lopt[] = 'type:'; -$lopt[] = 'enc:'; -$lopt[] = 'flags:'; -$lopt[] = 'outpath:'; -$lopt[] = 'platid:'; -$lopt[] = 'encid:'; -$lopt[] = 'addcbbox'; -$lopt[] = 'link'; -$lopt[] = 'fonts:'; -$lopt[] = 'help'; - -// parse input options -$inopt = getopt($sopt, $lopt); - -// import options (with some sanitization) -foreach ($inopt as $opt => $val) { - switch ($opt) { - case 't': - case 'type': { - if (in_array($val, array('TrueTypeUnicode', 'TrueType', 'Type1', 'CID0JP', 'CID0KR', 'CID0CS', 'CID0CT'))) { - $options['type'] = $val; - } - break; - } - case 'e': - case 'enc': { - $options['enc'] = $val; - break; - } - case 'f': - case 'flags': { - $options['flags'] = intval($val); - break; - } - case 'o': - case 'outpath': { - $options['outpath'] = realpath($val); - if (substr($options['outpath'], -1) != '/') { - $options['outpath'] .= '/'; - } - break; - } - case 'p': - case 'platid': { - $options['platid'] = min(max(1, intval($val)), 3); - break; - } - case 'n': - case 'encid': { - $options['encid'] = min(max(0, intval($val)), 10); - break; - } - case 'b': - case 'addcbbox': { - $options['addcbbox'] = true; - break; - } - case 'l': - case 'link': { - $options['link'] = true; - break; - } - case 'i': - case 'fonts': { - $options['fonts'] = explode(',', $val); - break; - } - case 'h': - case 'help': - default: { - showHelp(); - break; - } - } // end of switch -} // end of while loop - -if (empty($options['fonts'])) { - echo "ERROR: missing input fonts (try --help for usage)\n\n"; - exit(2); -} - -// check the output path -if (!is_dir($options['outpath']) OR !is_writable($options['outpath'])) { - echo "ERROR: Can't write to ".$options['outpath']."\n\n"; - exit(3); -} - -echo "\n>>> Converting fonts for TCPDF:\n"; - -echo '*** Output dir set to '.$options['outpath']."\n"; - -// check if there are conversion errors -$errors = false; - -foreach ($options['fonts'] as $font) { - $fontfile = realpath($font); - $fontname = TCPDF_FONTS::addTTFfont($fontfile, $options['type'], $options['enc'], $options['flags'], $options['outpath'], $options['platid'], $options['encid'], $options['addcbbox'], $options['link']); - if ($fontname === false) { - $errors = true; - echo "--- ERROR: can't add ".$font."\n"; - } else { - echo "+++ OK : ".$fontfile.' added as '.$fontname."\n"; - } -} - -if ($errors) { - echo "--- Process completed with ERRORS!\n\n"; - exit(4); -} - -echo ">>> Process successfully completed!\n\n"; -exit(0); - -//============================================================+ -// END OF FILE -//============================================================+ From 5904f33039b55dbabfb660e3b464eff1305ff1f3 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 11:44:23 +0200 Subject: [PATCH 266/380] Fix bank statement display --- htdocs/compta/bank/releve.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index 8ef53f26203..7a7941da64d 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -325,7 +325,7 @@ else $sql = "SELECT b.rowid, b.dateo as do, b.datev as dv,"; $sql.= " b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type,"; $sql.= " b.fk_bordereau,"; - $sql.= " bc.number,"; + $sql.= " bc.ref,"; $sql.= " ba.rowid as bankid, ba.ref as bankref, ba.label as banklabel"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account as ba"; $sql.= ", ".MAIN_DB_PREFIX."bank as b"; @@ -376,7 +376,7 @@ else $link=''; if ($objp->fk_bordereau>0) { $remisestatic->id = $objp->fk_bordereau; - $remisestatic->ref = $objp->number; + $remisestatic->ref = $objp->ref; $link = ' '.$remisestatic->getNomUrl(1); } print ''.$type_label.' '.($objp->num_chq?$objp->num_chq:'').$link.''; From 72ef11f5934af0203e05be578b941507c473ba93 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 22 Apr 2016 11:59:55 +0200 Subject: [PATCH 267/380] Fix bank submenu error --- htdocs/core/menus/standard/eldy.lib.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 5dfd3a230e9..13af259290c 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1324,6 +1324,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // We update newmenu for special dynamic menus if (!empty($user->rights->banque->lire) && $mainmenu == 'bank') // Entry for each bank account { + require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + $sql = "SELECT rowid, label, courant, rappro"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account"; $sql.= " WHERE entity = ".$conf->entity; From 7515b2ba7bf78118bf270b70d48355fd15df8247 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 12:11:57 +0200 Subject: [PATCH 268/380] NEW Add a parameter on graph function to show a generic graph when no data are available. --- htdocs/core/class/dolgraph.class.php | 14 +- htdocs/core/lib/functions.lib.php | 12 +- htdocs/langs/en_US/main.lang | 1 + htdocs/projet/card.php | 8 +- htdocs/projet/graph_opportunities.inc.php | 6 +- htdocs/theme/eldy/img/nographyet.svg | 875 ++++++++++++++++++++++ htdocs/theme/eldy/style.css.php | 13 +- htdocs/theme/md/img/nographyet.svg | 875 ++++++++++++++++++++++ htdocs/theme/md/style.css.php | 13 +- 9 files changed, 1804 insertions(+), 13 deletions(-) create mode 100644 htdocs/theme/eldy/img/nographyet.svg create mode 100644 htdocs/theme/md/img/nographyet.svg diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 0b713de80ff..a4ee48f256b 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -600,7 +600,7 @@ class DolGraph /** - * Build a graph onto disk using Artichow library + * Build a graph onto disk using Artichow library and return img string to it * * @param string $file Image file name to use if we save onto disk * @param string $fileurl Url path to show image if saved onto disk @@ -779,7 +779,7 @@ class DolGraph /** - * Build a graph onto disk using JFlot library. Input when calling this method should be: + * Build a graph using JFlot library. Input when calling this method should be: * $this->data = array(array( 0=>'labelxA', 1=>yA), array('labelxB',yB)); or * $this->data = array(array('label'=>'labelxA','data'=>yA), array('labelxB',yB)); // TODO Syntax not supported. Removed when dol_print_graph_removed * $this->data = array(array(0=>'labelxA',1=>yA1,...,n=>yAn), array('labelxB',yB1,...yBn)); // when there is n series to show for each x @@ -788,9 +788,10 @@ class DolGraph * $this->mode = 'depth' ??? * $this->bgcolorgrid * $this->datacolor + * $this->shownodatagraph * * @param string $file Image file name to use to save onto disk (also used as javascript unique id) - * @param string $fileurl Url path to show image if saved onto disk + * @param string $fileurl Url path to show image if saved onto disk. Never used here. * @return void */ private function draw_jflot($file,$fileurl) @@ -849,7 +850,14 @@ class DolGraph $this->stringtoshow =''."\n"; if (! empty($this->title)) $this->stringtoshow.='
      '.$this->title.'
      '; + if (! empty($this->shownographyet)) + { + $this->stringtoshow.='
      '; + $this->stringtoshow.='
      '.$langs->trans("NotEnoughDataYet").'
      '; + return; + } $this->stringtoshow.='
      '."\n"; + $this->stringtoshow.=''; } - else print 'BadValueForPArameterType'; + else print 'BadValueForParameterType'; } } diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index adae0e1800e..4b69e2c0dde 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -28,6 +28,7 @@ NoTemplateDefined=No template defined for this email type AvailableVariables=Available substitution variables NoTranslation=No translation NoRecordFound=No record found +NotEnoughDataYet=Not enough data NoError=No error Error=Error Errors=Errors diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index b59d725fecd..9f9dbc3bd2c 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -454,7 +454,7 @@ if ($action == 'create' && $user->rights->projet->creer) // Ref $suggestedref=($_POST["ref"]?$_POST["ref"]:$defaultref); - print ''.$langs->trans("Ref").''; + print ''.$langs->trans("Ref").''; print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref)); print ''; @@ -532,7 +532,7 @@ if ($action == 'create' && $user->rights->projet->creer) // Description print ''.$langs->trans("Description").''; print ''; - print ''; + print ''; print ''; // Other options @@ -650,7 +650,7 @@ else // Ref $suggestedref=$object->ref; - print ''.$langs->trans("Ref").''; + print ''.$langs->trans("Ref").''; print ''; print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref)); print ''; @@ -721,7 +721,7 @@ else // Description print ''.$langs->trans("Description").''; print ''; - print ''; + print ''; print ''; // Other options diff --git a/htdocs/projet/graph_opportunities.inc.php b/htdocs/projet/graph_opportunities.inc.php index 558bd7307ee..199840bb1c6 100644 --- a/htdocs/projet/graph_opportunities.inc.php +++ b/htdocs/projet/graph_opportunities.inc.php @@ -16,6 +16,7 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) $i = 0; $totalnb=0; + $totaloppnb=0; $totalamount=0; $ponderated_opp_amount=0; $valsnb=array(); @@ -32,6 +33,7 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) $valsnb[$obj->opp_status]=$obj->nb; $valsamount[$obj->opp_status]=$obj->opp_amount; $totalnb+=$obj->nb; + if ($obj->opp_status) $totaloppnb+=$obj->nb; $totalamount+=$obj->opp_amount; $ponderated_opp_amount+=$obj->ponderated_opp_amount; } @@ -71,8 +73,8 @@ if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) if ($conf->use_javascript_ajax) { print ''; - $data=array('series'=>$dataseries); - dol_print_graph('stats',400,180,$data,1,'pie',0,'',0); + $data=array('series'=>$dataseries); + dol_print_graph('stats',400,180,$data,1,'pie',0,'',0,$totaloppnb?0:1); print ''; } //if ($totalinprocess != $total) diff --git a/htdocs/theme/eldy/img/nographyet.svg b/htdocs/theme/eldy/img/nographyet.svg new file mode 100644 index 00000000000..ba3b9faf92a --- /dev/null +++ b/htdocs/theme/eldy/img/nographyet.svg @@ -0,0 +1,875 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + Icon Set Graph + 2012-09-06T20:29:21 + Check others icons on my "Minimal Icon Set" collection.\nSet of simple icons useful for gui design and applications use interface. Icons representing various graph and plotting + https://openclipart.org/detail/172197/icon-set-graph-by-mi_brami-172197 + + + mi_brami + + + + + Icon + area + b&w + barcode + bars + black + data + graph + gray + icon + pie + plot + round + scatter + table + transparent + white + xy + + + + + + + + + + + diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index f7519e16f61..91fa27e5c33 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2878,9 +2878,20 @@ td.legendLabel { padding: 2px 2px 2px 0 !important; } .logo_setup { - content:url(); + content:url(); /* content is used to best fit the container */ display: inline-block; } +.nographyet +{ + content:url(); + display: inline-block; + opacity: 0.1; + background-repeat: no-repeat; +} +.nographyettext +{ + opacity: 0.5; +} div.titre { font-family: ; diff --git a/htdocs/theme/md/img/nographyet.svg b/htdocs/theme/md/img/nographyet.svg new file mode 100644 index 00000000000..ba3b9faf92a --- /dev/null +++ b/htdocs/theme/md/img/nographyet.svg @@ -0,0 +1,875 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + Icon Set Graph + 2012-09-06T20:29:21 + Check others icons on my "Minimal Icon Set" collection.\nSet of simple icons useful for gui design and applications use interface. Icons representing various graph and plotting + https://openclipart.org/detail/172197/icon-set-graph-by-mi_brami-172197 + + + mi_brami + + + + + Icon + area + b&w + barcode + bars + black + data + graph + gray + icon + pie + plot + round + scatter + table + transparent + white + xy + + + + + + + + + + + diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 9b5bbc5966e..35c1220a0b8 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2707,9 +2707,20 @@ td.legendLabel { padding: 2px 2px 2px 0 !important; } .logo_setup { - content:url(); + content:url(); /* content is used to best fit the container */ display: inline-block; } +.nographyet +{ + content:url(); + display: inline-block; + opacity: 0.1; + background-repeat: no-repeat; +} +.nographyettext +{ + opacity: 0.5; +} div.titre { font-family: ; From 366db31a9ed11f1d405a235ee2edf1fb97a4dd12 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 13:38:44 +0200 Subject: [PATCH 269/380] Make css more simple --- htdocs/accountancy/admin/productaccount.php | 4 +- htdocs/contact/list.php | 2 +- htdocs/core/lib/usergroups.lib.php | 90 ++++++++++----------- htdocs/theme/eldy/style.css.php | 38 ++++----- htdocs/theme/md/style.css.php | 81 +++++++++++-------- 5 files changed, 113 insertions(+), 102 deletions(-) diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index d6f21960a49..80ed3f6fb47 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -263,9 +263,9 @@ if ($result) { print "\n"; - print '
      '; + print '
      '; - print "
      \n"; + print "

      \n"; if (! empty($msg)) { print $msg; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 702ecb2042f..ac54e1aaa5f 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -483,7 +483,7 @@ if ($result) print ''; print ''; } - if (! empty($arrayfields['p.lastname']['checked'])) + if (! empty($arrayfields['p.firstname']['checked'])) { print ''; print ''; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 8b9c6c3406f..dd135c10b24 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -479,7 +479,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if ($color) print ''; else print $langs->trans("Default"); } - print '   ('.$langs->trans("Default").': 7882aa, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print '   ('.$langs->trans("Default").': 515870, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; print ''; } @@ -535,6 +535,50 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; } + // Text LinkColor + if ($foruserprofile) + { + /*$var=!$var; + print ''; + print ''.$langs->trans("TopMenuBackgroundColor").''; + print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).''; + print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); + print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo + print '> '.$langs->trans("UsePersonalValue").''; + print ''; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' '; + } + else + { + $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''); + if ($color) print ''; + else print ''; + } + if ($edit) print '
      ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print '';*/ + } + else + { + $var=!$var; + print ''; + print ''.$langs->trans("LinkColor").''; + print ''; + if ($edit) + { + print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','formcolor',1).' '; + } + else + { + $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''); + if ($color) print ''; + else print $langs->trans("Default"); + } + print '   ('.$langs->trans("Default").': 000078, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; + print ''; + } + // Use Hover $var=!$var; if ($foruserprofile) @@ -579,50 +623,6 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; } - // TopMenuBackgroundColor - if ($foruserprofile) - { - /*$var=!$var; - print ''; - print ''.$langs->trans("TopMenuBackgroundColor").''; - print ''.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).''; - print 'conf->THEME_ELDY_TOPMENU_BACK1)?" checked":""); - print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo - print '> '.$langs->trans("UsePersonalValue").''; - print ''; - if ($edit) - { - print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' '; - } - else - { - $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''); - if ($color) print ''; - else print ''; - } - if ($edit) print '
      ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; - print '';*/ - } - else - { - $var=!$var; - print ''; - print ''.$langs->trans("LinkColor").''; - print ''; - if ($edit) - { - print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','formcolor',1).' '; - } - else - { - $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''); - if ($color) print ''; - else print $langs->trans("Default"); - } - print '   ('.$langs->trans("Default").': 000078, '.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; - print ''; - } - print ''; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 91fa27e5c33..bbef40dde32 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -79,7 +79,7 @@ $dol_use_jmobile=$conf->dol_use_jmobile; //var_dump($user->conf->THEME_ELDY_RGB); // Colors -$colorbackhmenu1='120,130,170'; // topmenu +$colorbackhmenu1='110,120,160'; // topmenu $colorbackvmenu1='255,255,255'; // vmenu $colortopbordertitle1='40,40,40'; // top border of title $colorbacktitle1='230,230,230'; // title of tables,list @@ -97,14 +97,15 @@ $colortext='0,0,0'; $colortextlink='0,0,120'; $fontsize='13'; $fontsizesmaller='11'; -$usegradient=1; -$useboldtitle=1; +$usegradienttop=(isset($conf->global->THEME_ELDY_TOPMENU_BACK1)?0:1); +$usegradienttitle=(isset($conf->global->THEME_ELDY_BACKTITLE1)?0:1); +$useboldtitle=(isset($conf->global->THEME_ELDY_USEBOLDTITLE)?$conf->global->THEME_ELDY_USEBOLDTITLE:1); // Case of option always editable if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; -if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1='120,130,170'; +if (! isset($conf->global->THEME_ELDY_TOPMENU_BACK1)) $conf->global->THEME_ELDY_TOPMENU_BACK1=$colorbackhmenu1; if (! isset($conf->global->THEME_ELDY_BACKTITLE1)) $conf->global->THEME_ELDY_BACKTITLE1=$colorbacktitle1; -if (! isset($conf->global->THEME_ELDY_USE_HOVER)) $conf->global->THEME_ELDY_USE_HOVER=='238,246,252'; +if (! isset($conf->global->THEME_ELDY_USE_HOVER)) $conf->global->THEME_ELDY_USE_HOVER==$colorbacklinepairhover; if (! isset($conf->global->THEME_ELDY_TEXTTITLENOTAB)) $conf->global->THEME_ELDY_TEXTTITLENOTAB=$colortexttitlenotab; if (! isset($conf->global->THEME_ELDY_TEXTLINK)) $conf->global->THEME_ELDY_TEXTLINK=$colortextlink; @@ -803,7 +804,7 @@ div#id-top { display:none; background: rgb(); - + background-image: linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -o-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -moz-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); @@ -882,7 +883,7 @@ ul.tmenu { /* t r b l */ } ul.tmenu li { /* We need this to have background color when menu entry wraps on new lines */ background: rgb(); - + background-image: linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -o-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); background-image: -moz-linear-gradient(top, rgba(255,255,255,.1) 0%, rgba(0,0,0,.4) 100%); @@ -2205,17 +2206,8 @@ table.liste, table.noborder, table.formdoc, div.noborder { } table.liste tr, table.noborder tr, div.noborder form { border-top-color: #FEFEFE; - - border-right-width: 1px; - border-right-color: #BBB; - border-right-style: solid; - - border-left-width: 1px; - border-left-color: #BBB; - border-left-style: solid; min-height: 20px; } - table.liste th, table.noborder th { padding: 10px 2px 10px 3px; /* t r b l */ } @@ -2526,13 +2518,13 @@ div.liste_titre { padding-top: 2px; padding-bottom: 2px; - border-right-width: 1px; + /*border-right-width: 1px; border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; border-left-color: #BBB; - border-left-style: solid; + border-left-style: solid;*/ border-top-width: 1px; border-top-color: #BBB; @@ -2560,13 +2552,14 @@ div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.list color: #000 !important;*/ /* TO MATCH ELDY */ - /*background: rgb();*/ - + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + + background: rgb(); font-weight: ; @@ -2712,13 +2705,14 @@ tr.box_titre { color: #000 !important;*/ /* TO MATCH ELDY */ - /* background: rgb(); */ - + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(,0.3) 100%); + + background: rgb(); color: rgb(); diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 35c1220a0b8..b79b5c2404a 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -82,7 +82,8 @@ $dol_use_jmobile=$conf->dol_use_jmobile; // Colors $colorbackhmenu1='0,0,80'; // topmenu $colorbackvmenu1='255,255,255'; // vmenu -$colorbacktitle1='230,230,230'; // title of array +$colortopbordertitle1='40,40,40'; // top border of tables-lists title +$colorbacktitle1='230,230,230'; // title of tables-lists $colorbacktabcard1='255,255,255'; // card $colorbacktabactive='234,234,234'; $colorbacklineimpair1='255,255,255'; // line impair @@ -97,8 +98,8 @@ $colortext='0,0,0'; $colortextlink='0,0,120'; $fontsize='13'; $fontsizesmaller='11'; -$usegradient=1; -$useboldtitle=1; +$usegradient=0; +$useboldtitle=(isset($conf->global->THEME_ELDY_USEBOLDTITLE)?$conf->global->THEME_ELDY_USEBOLDTITLE:1); // Case of option always editable if (! isset($conf->global->THEME_ELDY_BACKBODY)) $conf->global->THEME_ELDY_BACKBODY=$colorbackbody; @@ -343,7 +344,7 @@ input:-moz-placeholder { color:#ccc; } legend { margin-bottom: 8px; } -fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #f4f4f4; } +fieldset { border: 1px solid #AAAAAA !important; } .button, sbmtConnexion { @@ -1714,11 +1715,13 @@ div.tabBar { background: rgb(); + /* -moz-box-shadow: 3px 3px 4px #f4f4f4; -webkit-box-shadow: 3px 3px 4px #f4f4f4; box-shadow: 3px 3px 4px #f4f4f4; + */ } div.tabsAction { @@ -2043,17 +2046,29 @@ table.liste, table.noborder, table.formdoc, div.noborder { border-collapse: separate !important; border-spacing: 0px; - border-width: 1px; - border-color: #BBB; - border-style: solid; + border-top-width: 1px; + border-top-color: rgb(); + border-top-style: solid; +/* border-right-width: 1px; + border-right-color: #BBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #BBB; + border-left-style: solid; +*/ + border-bottom-width: 1px; + border-bottom-color: #BBB; + border-bottom-style: solid; + margin: 0px 0px 8px 0px; /* -moz-box-shadow: 2px 2px 4px #CCC; -webkit-box-shadow: 2px 2px 4px #CCC; box-shadow: 2px 2px 4px #CCC; */ - box-shadow: 0 0 3px rgba(0,0,0,0.16); + /* box-shadow: 0 0 3px rgba(0,0,0,0.16); */ -moz-border-radius: 0.1em; -webkit-border-radius: 0.1em; @@ -2350,24 +2365,28 @@ div.liste_titre { padding-top: 2px; padding-bottom: 2px; - border-right-width: 1px; + /*border-right-width: 1px; border-right-color: #BBB; border-right-style: solid; border-left-width: 1px; border-left-color: #BBB; - border-left-style: solid; + border-left-style: solid;*/ border-top-width: 1px; border-top-color: #BBB; border-top-style: solid; } div.liste_titre_bydiv { + border-top-width: 1px; + border-top-color: rgb(); + border-top-style: solid; + box-shadow: none; border-collapse: collapse; display: table; padding: 2px 0px 2px 0; - width: calc(100% - 1px); /* 1px more, i don't know why */ + width: 100%; /* 1px more, i don't know why */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { @@ -2376,20 +2395,19 @@ tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, tabl div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable thead tr { /* TO MATCH BOOTSTRAP */ - background: #ddd; + /* background: #ddd; */ /* TO MATCH ELDY */ - /* - background: rgb(); - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + + background: rgb(); font-weight: ; - */ color: rgb(); font-family: ; @@ -2495,7 +2513,7 @@ div.tabBar .noborder { } span.boxstatstext { - opacity: 0.8; + opacity: 0.9; line-height: 18px; } span.boxstatsindicator { @@ -2525,27 +2543,26 @@ span.dashboardlineko { .box { padding-right: 0px; padding-left: 0px; - padding-bottom: 4px; + padding-bottom: 12px; } tr.box_titre { height: 26px !important; /* TO MATCH BOOTSTRAP */ - background: #ddd; - color: #000 !important; + /*background: #ddd; + color: #000 !important; */ /* TO MATCH ELDY */ - /* - background: rgb(); - background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); - background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.1) 0%, rgba(250,250,250,0.3) 100%); + + background: rgb(); - */ background-repeat: repeat-x; color: rgb(); From 2cc24db6a28adba86231f2e633fe08f5f1f3bbb4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 13:45:54 +0200 Subject: [PATCH 270/380] Fix typo --- htdocs/core/lib/agenda.lib.php | 2 +- htdocs/langs/en_US/agenda.lang | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 7e02cbe4679..bfd9314f945 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -76,7 +76,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print $langs->trans("ActionsToDoBy").'   '; print ''; print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); - if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or") . ' '.$langs->trans("Group").'   '; + if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or") . ' '.$langs->trans("ToUserOfGroup").'   '; print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); print ''; diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 760fde2686d..a01e0c6c412 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -17,6 +17,7 @@ MyEvents=My events OtherEvents=Other events ListOfActions=List of events Location=Location +ToUserOfGroup=To any user in group EventOnFullDay=Event on all day(s) SearchAnAction= Search an event/task MenuToDoActions=All incomplete events From 25b7f0ab625fdb1da0107932486d74a2c918d4ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 17:11:12 +0200 Subject: [PATCH 271/380] FIX Remove a total that has no sense --- htdocs/compta/charges/index.php | 6 +- htdocs/compta/sociales/charges.php | 72 +++++++++++-------- .../sociales/class/chargesociales.class.php | 17 ++++- 3 files changed, 63 insertions(+), 32 deletions(-) diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 1a0760d1fd3..b90e7cac3cb 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -200,7 +200,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) $i++; } print ''.$langs->trans("Total").''; - print ''.price($total).""; + print ''; // A total here has no sense print ' '; print ' '; print ' '; @@ -278,7 +278,7 @@ if (! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) $i++; } print ''.$langs->trans("Total").''; - print ''.price($total).""; + print ''.price($total).''; print ' '; print ' '; print ''.price($total).""; @@ -463,7 +463,7 @@ if (! empty($conf->salaries->enabled) && $user->rights->salaries->read) $i++; } print ''.$langs->trans("Total").''; - print ''.""; + print ''; // A total here has no sense print ' '; print ' '; print ''.price($total).""; diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index 2a9894be87a..abcb5e0ad06 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -39,6 +39,7 @@ $socid = GETPOST('socid','int'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); +$object = new ChargeSociales($db); @@ -49,19 +50,32 @@ $result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); /* *************************************************************************** */ // Classify paid -if ($action == 'confirm_paid' && $confirm == 'yes') +if ($action == 'confirm_paid' && $user->rights->tax->charges->creer && $confirm == 'yes') { - $chargesociales = new ChargeSociales($db); - $chargesociales->fetch($id); - $result = $chargesociales->set_paid($user); + $object->fetch($id); + $result = $object->set_paid($user); +} + +if ($action == 'reopen' && $user->rights->tax->charges->creer) { + $result = $object->fetch($id); + if ($object->paye) + { + $result = $object->set_unpaid($user); + if ($result > 0) + { + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id); + exit(); + } else { + setEventMessages($object->error, $object->errors, 'errors'); + } + } } // Delete social contribution if ($action == 'confirm_delete' && $confirm == 'yes') { - $chargesociales=new ChargeSociales($db); - $chargesociales->fetch($id); - $result=$chargesociales->delete($user); + $object->fetch($id); + $result=$object->delete($user); if ($result > 0) { header("Location: index.php"); @@ -69,7 +83,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') } else { - setEventMessages($chargesociales->error, $chargesociales->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } @@ -77,8 +91,8 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // Add social contribution if ($action == 'add' && $user->rights->tax->charges->creer) { - $dateech=@dol_mktime(GETPOST('echhour'),GETPOST('echmin'),GETPOST('echsec'),GETPOST('echmonth'),GETPOST('echday'),GETPOST('echyear')); - $dateperiod=@dol_mktime(GETPOST('periodhour'),GETPOST('periodmin'),GETPOST('periodsec'),GETPOST('periodmonth'),GETPOST('periodday'),GETPOST('periodyear')); + $dateech=dol_mktime(GETPOST('echhour'),GETPOST('echmin'),GETPOST('echsec'),GETPOST('echmonth'),GETPOST('echday'),GETPOST('echyear')); + $dateperiod=dol_mktime(GETPOST('periodhour'),GETPOST('periodmin'),GETPOST('periodsec'),GETPOST('periodmonth'),GETPOST('periodday'),GETPOST('periodyear')); $amount=price2num(GETPOST('amount')); $actioncode=GETPOST('actioncode'); if (! $dateech) @@ -108,18 +122,16 @@ if ($action == 'add' && $user->rights->tax->charges->creer) } else { - $chargesociales=new ChargeSociales($db); + $object->type=$actioncode; + $object->lib=GETPOST('label'); + $object->date_ech=$dateech; + $object->periode=$dateperiod; + $object->amount=$amount; - $chargesociales->type=$actioncode; - $chargesociales->lib=GETPOST('label'); - $chargesociales->date_ech=$dateech; - $chargesociales->periode=$dateperiod; - $chargesociales->amount=$amount; - - $id=$chargesociales->create($user); + $id=$object->create($user); if ($id <= 0) { - setEventMessages($chargesociales->error, $chargesociales->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action='create'; } } @@ -153,18 +165,17 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->tax->charges->cr } else { - $chargesociales=new ChargeSociales($db); - $result=$chargesociales->fetch($id); + $result=$object->fetch($id); - $chargesociales->lib=GETPOST('label'); - $chargesociales->date_ech=$dateech; - $chargesociales->periode=$dateperiod; - $chargesociales->amount=price2num($amount); + $object->lib=GETPOST('label'); + $object->date_ech=$dateech; + $object->periode=$dateperiod; + $object->amount=price2num($amount); - $result=$chargesociales->update($user); + $result=$object->update($user); if ($result <= 0) { - setEventMessages($chargesociales->error, $chargesociales->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } } @@ -178,7 +189,6 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char $originalId = $id; - $object = new ChargeSociales($db); $object->fetch($id); if ($object->id > 0) @@ -499,6 +509,12 @@ if ($id > 0) { print "
      \n"; + // Reopen + if ($object->paye && $user->rights->tax->charges->creer) + { + print "id&action=reopen\">".$langs->trans("ReOpen").""; + } + // Edit if ($object->paye == 0 && $user->rights->tax->charges->creer) { diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 7712fd09029..1499c79d683 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -339,7 +339,22 @@ class ChargeSociales extends CommonObject if ($return) return 1; else return -1; } - + /** + * Remove tag payed on social contribution + * + * @param User $user Object user making change + * @return int <0 if KO, >0 if OK + */ + function set_unpaid($user) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET"; + $sql.= " paye = 0"; + $sql.= " WHERE rowid = ".$this->id; + $return = $this->db->query($sql); + if ($return) return 1; + else return -1; + } + /** * Retourne le libelle du statut d'une charge (impaye, payee) * From 0ef1be93642d66a110d881ab78cd5852b2526a8c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 18:07:34 +0200 Subject: [PATCH 272/380] Prepare 3.9.1 --- ChangeLog | 65 +++++++++++++++++++++++++++++++++++++++++ htdocs/filefunc.inc.php | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 84d05ba8ea7..120c19ca5e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,71 @@ Upgrading to any other version or any other database system is abolutely require make a Dolibarr upgrade. +***** ChangeLog for 3.9.1 compared to 3.9.* ***** +FIX: #3815 Call to undefined function local_by_date(). +FIX: #3815 With higher quality +FIX: #4424 Missing email of user popup in supplier orders area +FIX: #4442 Missing translation in Banks menu +FIX: #4737 Bank transacion type selector translation is cropped +FIX: #4742 Able to delete a supplier invoice with a registered payment +FIX: #4743 UI glitch in project summary page +FIX: #4747 Missing UI background when registering a supplier invoice payment +FIX: #4748 Supplier invoice payment confirmation amount is not translated +FIX: #4766 VAT not shown in supplier invoice popup +FIX: #4784 +FIX: #4809 Duplicate functions with different content +FIX: #4812 +FIX: #4839 +FIX: #4851 Project selector in supplier invoices shows the project label twice +FIX: #4870 +FIX: #4874 SQL error when listing users +FIX: #4880 +FIX: #4961 +FIX: #4989 +FIX: A not enabled field for list must not into fields to add +FIX: Bad color of message password changed +FIX: Bad error and style message when changing its own login +FIX: Bad function name call on delete +FIX: Bad include and param for project numbering module call +FIX: bad translation language loaded FIX: When changing thirdparty on event card, the showempty option of contact was lost. FIX: Bad placeholder shown on combo to select a thirdparty. +FIX: Bad vat definition when using POS module +FIX: Box disabled because bugged +FIX: Can not select a commercial on the creation of a third +FIX: Check of EAN13 barcode when mask was set to use 13 digits instead of 12 +FIX: correct display of minimum buying price +FIX: Creation of thumb image for size "small" was not done. +FIX: Damn, where was the project ref ? +FIX: Default vat is not set correctly when an error occured and we use VAT identified by a code. +FIX: dont retrieve new buying price on margin display +FIX: Duplicate records into export +FIX: Each time we edit a line, we loose the unit price. +FIX: Email templates not compatible with Multicompany +FIX: Export must use a left join to not loose lines +FIX: fetchAllEMailTemplate +FIX: Filter/search on extrafields on lists +FIX: finished parameters not used +FIX: Generated thumbs must always use the png format so using thumbs can work. +FIX: Hook resprint be printed +FIX: image extension must be in lower case +FIX: Missing clean of criteria +FIX: Missing database escaping on supplier price insert/update +FIX: Missing function +FIX: Multiprice generator didn't recalculate prices if only the price_base_type property changes +FIX: Not removing code into vatrate. +FIX: Not showing sellprice properly on product list +FIX: Parsing of amount to pay vat +FIX: PHPCS +FIX: PMP is deprecated at warehouse level +FIX: real min buying price +FIX: Same term to create than other objects +FIX: Some records were lost into margin per product report +FIX: systematic rounding causes prices to be updated without reason +FIX: Template email must take care of positino column +FIX: VAT rate can be negative. Example spain selling to morroco. +FIX: When cloning an order the order result from clone must be now +FIX: When using option Price per level, when adding a predefined product, the vat for customer was not correctly set. + + ***** ChangeLog for 3.9.0 compared to 3.8.* ***** For users: NEW: A new and more modern look for "eldy" theme. diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index bf7357fb2e1..db8a5869914 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.0'); +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.9.1'); if (! defined('EURO')) define('EURO',chr(128)); From a99b7ddee6958848a41b4bea79e35a79578ab655 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 18:12:31 +0200 Subject: [PATCH 273/380] Fix PHPCS --- 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 a4dca05ce82..941f9dddd27 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4230,12 +4230,14 @@ abstract class CommonObject } else return 0; } + /** * Update an exta field value for the current object. * Data to describe values to insert/update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) * This function delte record with all extrafields and insert them again from the array $this->array_options. - * $key key of the extrafield - * @return int -1=error, O=did nothing, 1=OK + * + * @param string $key Key of the extrafield + * @return int -1=error, O=did nothing, 1=OK */ function updateExtraField($key) { From bfc5be1aadab908cb82f5954fcfde06b9f7a2deb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 19:07:32 +0200 Subject: [PATCH 274/380] FIX Fix and move dolGetFirstLine function into main FIX Hang on ->client not defined --- htdocs/core/class/html.form.class.php | 4 +-- htdocs/core/lib/functions.lib.php | 26 ++++++++++++++++++- htdocs/core/lib/functions2.lib.php | 20 -------------- htdocs/core/lib/pdf.lib.php | 2 +- .../fichinter/doc/pdf_soleil.modules.php | 6 ++--- htdocs/fichinter/list.php | 5 ++-- htdocs/fourn/commande/card.php | 2 +- htdocs/langs/en_US/interventions.lang | 2 +- 8 files changed, 36 insertions(+), 31 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 820db4f308f..f4b8bfc610c 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2060,7 +2060,7 @@ class Form if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->PRODUIT_USE_SEARCH_TO_SELECT)) { - if (!empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + if (!empty($conf->global->SUPPLIER_ORDER_WITH_NOPRICEDEFINED)) { print ''; } @@ -2071,7 +2071,7 @@ class Form } else { - if (!empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + if (!empty($conf->global->SUPPLIER_ORDER_WITH_NOPRICEDEFINED)) { print ''; print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c4e6b3b7fea..0634d4c6746 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4285,6 +4285,29 @@ function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8') } +/** + * Return first line of text. Cut will depends if content is HTML or not. + * + * @param string $text Input text + * @return string Output text + * @see dol_nboflines_bis + */ +function dolGetFirstLineOfText($text) +{ + if (dol_textishtml($text)) + { + $firstline=preg_replace('/]*>.*$/s','',$text); // The s pattern modifier means the . can match newline characters + $firstline=preg_replace('/]*>.*$/s','',$firstline); // The s pattern modifier means the . can match newline characters + + } + else + { + $firstline=preg_replace('/[\n\r].*/','',$text); + } + return $firstline.((strlen($firstline) != strlen($text))?'...':''); +} + + /** * Replace CRLF in string with a HTML BR tag * @@ -4292,6 +4315,7 @@ function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8') * @param int $nl2brmode 0=Adding br before \n, 1=Replacing \n by br * @param bool $forxml false=Use
      , true=Use
      * @return string String encoded + * @see dol_nboflines, dolGetFirstLineOfText */ function dol_nl2br($stringtoencode,$nl2brmode=0,$forxml=false) { @@ -4429,7 +4453,7 @@ function dol_string_is_good_iso($s) * @param string $s String to check * @param int $maxchar Not yet used * @return int Number of lines - * @see dol_nboflines_bis + * @see dol_nboflines_bis, dolGetFirstLineOfText */ function dol_nboflines($s,$maxchar=0) { diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index e9ec126e328..5de04c6718e 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -30,26 +30,6 @@ // Enable this line to trace path when function is called. //print xdebug_print_function_stack('Functions2.lib was called');exit; -/** - * Return first line of text. Cut will depends if content is HTML or not. - * - * @param string $text Input text - * @return string Output text - * @see dol_nboflines_bis - */ -function dolGetFirstLineOfText($text) -{ - if (dol_textishtml($text)) - { - $firstline=preg_replace('/]*>.*$/s','',$text); // The s pattern modifier means the . can match newline characters - } - else - { - $firstline=preg_replace('/[\n\r].*/','',$text); - } - return $firstline.((strlen($firstline) != strlen($text))?'...':''); -} - /** * Same function than javascript unescape() function but in PHP. * diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 51cb77ea1a4..6e4c77fe1d2 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -358,7 +358,7 @@ function pdfBuildThirdpartyName($thirdparty, Translate $outputlangs, $includeali } elseif ($thirdparty instanceof Contact) { $socname = $thirdparty->socname; } else { - throw new InvalidArgumentException(); + throw new InvalidArgumentException('Parameter 1=$thirdparty is not a Societe nor Contact'); } return $outputlangs->convToOutputCharset($socname); diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 08c08474981..f95608fee05 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -615,12 +615,12 @@ class pdf_soleil extends ModelePDFFicheinter if ($usecontact && !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) { $thirdparty = $object->contact; } else { - $thirdparty = $object->client; + $thirdparty = $object->thirdparty; } - $carac_client_name= pdfBuildThirdpartyName($thirdparty, $outputlangs); + $carac_client_name=pdfBuildThirdpartyName($thirdparty, $outputlangs); - $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->client, (isset($object->contact)?$object->contact:''), $usecontact, 'target',$object); + $carac_client=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, (isset($object->contact)?$object->contact:''), $usecontact, 'target',$object); // Show recipient $widthrecbox=100; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index d86c2b86274..88224a487cf 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -227,10 +227,11 @@ if ($result) $companystatic->client=$objp->client; print $companystatic->getNomUrl(1,'',44); print ''; - print ''.dol_htmlentitiesbr(dol_trunc($objp->description,20)).''; + print ''.dol_trunc(dolGetFirstLineOfText($objp->description),48).''; if (empty($conf->global->FICHINTER_DISABLE_DETAILS)) { - print ''.dol_htmlentitiesbr(dol_trunc($objp->descriptiondetail,20)).''; + //print ''.dol_trunc(dol_escape_htmltag(dolGetFirstLineOfText($objp->descriptiondetail)),48).''; + print ''.dolGetFirstLineOfText($objp->descriptiondetail).''; print ''.dol_print_date($db->jdate($objp->dp),'dayhour')."\n"; print ''.convertSecondToTime($objp->duree).''; } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 509b4ca0437..8b9c6267b18 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -346,7 +346,7 @@ if (empty($reshook)) { $productsupplier = new ProductFournisseur($db); - if (empty($conf->global->SUPPLIERORDER_WITH_NOPRICEDEFINED)) + if (empty($conf->global->SUPPLIER_ORDER_WITH_NOPRICEDEFINED)) { $idprod=0; if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index 2d3a1d5a4a3..cf93bd3d2b1 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -52,7 +52,7 @@ ArcticNumRefModelDesc1=Generic number model ArcticNumRefModelError=Failed to activate PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. -PrintProductsOnFichinter=Print products on intervention card +PrintProductsOnFichinter=Print also lines of type "product" (not only services) on intervention card PrintProductsOnFichinterDetails=interventions generated from orders InterventionStatistics=Statistics of interventions NbOfinterventions=Nb of intervention cards From 051c5f415e17ae0395be7258223c7405ef9e5514 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 20:00:37 +0200 Subject: [PATCH 275/380] Fix API access protection check #5053 --- htdocs/api/class/api_access.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php index a8ceef4a232..9d29c60e26a 100644 --- a/htdocs/api/class/api_access.class.php +++ b/htdocs/api/class/api_access.class.php @@ -122,7 +122,10 @@ class DolibarrApiAccess implements iAuthenticate $userClass::setCacheIdentifier(static::$role); Resources::$accessControlFunction = 'DolibarrApiAccess::verifyAccess'; - return in_array(static::$role, (array) static::$requires) || static::$role == 'admin'; + + $requirefortest = static::$requires; + if (! is_array($requirefortest)) $requirefortest=explode(',',$requirefortest); + return in_array(static::$role, (array) static::$requirefortest) || static::$role == 'admin'; } /** From 980f3d522fbfd01d4f67bce8a6cfcd7552f546da Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 22 Apr 2016 20:09:42 +0200 Subject: [PATCH 276/380] Prepare 3.9.1 --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 120c19ca5e7..2ab1185a65c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,8 +13,7 @@ make a Dolibarr upgrade. ***** ChangeLog for 3.9.1 compared to 3.9.* ***** -FIX: #3815 Call to undefined function local_by_date(). -FIX: #3815 With higher quality +FIX: #3815 Call to undefined function local_by_date() FIX: #4424 Missing email of user popup in supplier orders area FIX: #4442 Missing translation in Banks menu FIX: #4737 Bank transacion type selector translation is cropped @@ -33,6 +32,7 @@ FIX: #4874 SQL error when listing users FIX: #4880 FIX: #4961 FIX: #4989 +FIX: If oauth has never been activated two tables are missing and printing is not working FIX: A not enabled field for list must not into fields to add FIX: Bad color of message password changed FIX: Bad error and style message when changing its own login From a8aeba3ade7e1620df5799ac0c2c6b84264da80d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 07:05:16 +0200 Subject: [PATCH 277/380] 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 278/380] 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 279/380] 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 280/380] 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 281/380] 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 282/380] 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 283/380] 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 b639849a470451c3f3b6a445b51bd50fcf3ba86f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 23 Apr 2016 15:37:22 +0200 Subject: [PATCH 284/380] Page for proposals must be called card.php (one of last architecture change before the freeze) --- dev/initdemo/mysqldump_dolibarr_3.0.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.1.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.2.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.4.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.5.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.6.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.7.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.8.0.sql | 2 +- dev/initdemo/mysqldump_dolibarr_3.9.0.sql | 2 +- htdocs/comm/card.php | 2 +- htdocs/comm/{propal.php => propal/card.php} | 6 +++--- htdocs/comm/propal/class/propal.class.php | 4 ++-- htdocs/comm/prospect/index.php | 4 ++-- htdocs/core/boxes/modules_boxes.php | 5 ----- htdocs/core/class/html.formfile.class.php | 2 +- htdocs/core/class/notify.class.php | 4 ++-- htdocs/core/lib/propal.lib.php | 2 +- htdocs/core/menus/init_menu_auguria.sql | 2 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/fichinter/card.php | 2 +- htdocs/product/card.php | 2 +- htdocs/projet/card.php | 2 +- htdocs/projet/element.php | 2 +- htdocs/theme/eldy/style.css.php | 5 +++++ htdocs/theme/md/style.css.php | 6 +++++- 25 files changed, 37 insertions(+), 33 deletions(-) rename htdocs/comm/{propal.php => propal/card.php} (99%) diff --git a/dev/initdemo/mysqldump_dolibarr_3.0.0.sql b/dev/initdemo/mysqldump_dolibarr_3.0.0.sql index cb30e8d89df..cf382fa9648 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.0.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.0.0.sql @@ -3523,7 +3523,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (1,'all',1,'ecm','top','ecm',0,100,'/ecm/index.php','','MenuECM','ecm',0,'1','$user->rights->ecm->download || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2010-07-08 11:28:47'),(2,'all',1,'ecm','left','ecm',1,101,'/ecm/index.php','','ECMArea','ecm',0,'0','$user->rights->ecm->download || $user->rights->ecm->upload','$user->rights->ecm->download || $user->rights->ecm->upload',2,'2010-07-08 11:28:47'),(3,'all',1,'ecm','left','ecm',2,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',0,'0','$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2010-07-08 11:28:47'),(4,'all',1,'ecm','left','ecm',2,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',0,'0','$user->rights->ecm->download || $user->rights->ecm->upload','$user->rights->ecm->download || $user->rights->ecm->upload',2,'2010-07-08 11:28:47'),(5,'all',1,'ecm','left','ecm',2,103,'/ecm/search.php','','Search','ecm',0,'0','$user->rights->ecm->download','$user->rights->ecm->download',2,'2010-07-08 11:28:47'),(14424,'all',1,'cashdesk','top','cashdesk',0,100,'/cashdesk/index.php','','CashDeskMenu','@cashdesk',0,'1','1','0',0,'2010-07-11 17:08:03'),(14439,'auguria',1,NULL,'top','home',0,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2010-07-21 23:19:59'),(14440,'auguria',1,NULL,'top','companies',0,2,'/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(14441,'auguria',1,NULL,'top','products',0,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2010-07-21 23:19:59'),(14443,'auguria',1,NULL,'top','commercial',0,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14444,'auguria',1,NULL,'top','accountancy',0,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire || $user->rights->banque->lire','$conf->compta->enabled || $conf->accounting->enabled || $conf->banque->enabled || $conf->facture->enabled || $conf->deplacement->enabled',2,'2010-07-21 23:19:59'),(14445,'auguria',1,NULL,'top','project',0,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2010-07-21 23:19:59'),(14446,'auguria',1,NULL,'top','tools',0,8,'/index.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->bookmark->lire || $user->rights->export->lire','$conf->mailing->enabled || $conf->export->enabled || $conf->global->MAIN_MODULE_IMPORT || $conf->global->MAIN_MODULE_DOMAIN',2,'2010-07-21 23:19:59'),(14449,'auguria',1,NULL,'top','shop',0,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2010-07-21 23:19:59'),(14450,'auguria',1,NULL,'top','shop',0,12,'/oscommerce_ws/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->oscommercews->enabled)',0,'2010-07-21 23:19:59'),(14451,'auguria',1,NULL,'top','members',0,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(14538,'auguria',1,NULL,'left','home',14439,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14539,'auguria',1,NULL,'left','home',14538,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14540,'auguria',1,NULL,'left','home',14538,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14541,'auguria',1,NULL,'left','home',14538,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14542,'auguria',1,NULL,'left','home',14538,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14543,'auguria',1,NULL,'left','home',14538,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14544,'auguria',1,NULL,'left','home',14538,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14546,'auguria',1,NULL,'left','home',14538,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14547,'auguria',1,NULL,'left','home',14538,8,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14548,'auguria',1,NULL,'left','home',14538,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14549,'auguria',1,NULL,'left','home',14538,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14550,'auguria',1,NULL,'left','home',14538,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14638,'auguria',1,NULL,'left','home',14439,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14639,'auguria',1,NULL,'left','home',14638,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14640,'auguria',1,NULL,'left','home',14639,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14641,'auguria',1,NULL,'left','home',14639,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14642,'auguria',1,NULL,'left','home',14638,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14643,'auguria',1,NULL,'left','home',14638,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14644,'auguria',1,NULL,'left','home',14638,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14645,'auguria',1,NULL,'left','home',14639,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14646,'auguria',1,NULL,'left','home',14639,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14648,'auguria',1,NULL,'left','home',14638,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14649,'auguria',1,NULL,'left','home',14648,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14650,'auguria',1,NULL,'left','home',14648,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14738,'auguria',1,NULL,'left','home',14439,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14739,'auguria',1,NULL,'left','home',14738,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14740,'auguria',1,NULL,'left','home',14738,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14741,'auguria',1,NULL,'left','home',14738,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14742,'auguria',1,NULL,'left','home',14738,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\'eaccelerator_info\')',2,'2010-07-21 23:19:59'),(14743,'auguria',1,NULL,'left','home',14738,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14744,'auguria',1,NULL,'left','home',14738,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14745,'auguria',1,NULL,'left','home',14738,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14746,'auguria',1,NULL,'left','home',14738,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14838,'auguria',1,NULL,'left','home',14439,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2010-07-21 23:19:59'),(14839,'auguria',1,NULL,'left','home',14838,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14840,'auguria',1,NULL,'left','home',14839,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14841,'auguria',1,NULL,'left','home',14838,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14842,'auguria',1,NULL,'left','home',14841,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14938,'auguria',1,NULL,'left','companies',14440,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14939,'auguria',1,NULL,'left','companies',14938,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14941,'auguria',1,NULL,'left','companies',14938,2,'/fourn/liste.php?leftmenu=suppliers','','Suppliers','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14942,'auguria',1,NULL,'left','companies',14941,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14943,'auguria',1,NULL,'left','companies',14941,1,'/contact/index.php?leftmenu=suppliers&type=f','','Contacts','suppliers',2,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14944,'auguria',1,NULL,'left','companies',14938,3,'/comm/prospect/prospects.php?leftmenu=prospects','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14945,'auguria',1,NULL,'left','companies',14944,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14946,'auguria',1,NULL,'left','companies',14944,1,'/contact/index.php?leftmenu=customers&type=p','','Contacts','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14947,'auguria',1,NULL,'left','companies',14938,4,'/comm/clients.php?leftmenu=customers','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14948,'auguria',1,NULL,'left','companies',14947,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14949,'auguria',1,NULL,'left','companies',14947,1,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15038,'auguria',1,NULL,'left','companies',14440,1,'/contact/index.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15039,'auguria',1,NULL,'left','companies',15038,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15040,'auguria',1,NULL,'left','companies',15038,1,'/contact/index.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15088,'auguria',1,NULL,'left','companies',14440,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie>lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15089,'auguria',1,NULL,'left','companies',15088,0,'/categories/fiche.php?action=create&type=1','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15098,'auguria',1,NULL,'left','companies',14440,3,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie>lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15099,'auguria',1,NULL,'left','companies',15098,0,'/categories/fiche.php?action=create&type=2','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15138,'auguria',1,NULL,'left','commercial',14443,0,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15139,'auguria',1,NULL,'left','commercial',15138,0,'/societe/soc.php?leftmenu=prospects&action=create&type=c','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15140,'auguria',1,NULL,'left','commercial',15138,1,'/comm/prospect/prospects.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15141,'auguria',1,NULL,'left','commercial',15140,0,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15142,'auguria',1,NULL,'left','commercial',15140,1,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15143,'auguria',1,NULL,'left','commercial',15140,2,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15144,'auguria',1,NULL,'left','commercial',15140,3,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15145,'auguria',1,NULL,'left','commercial',15140,4,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15146,'auguria',1,NULL,'left','commercial',15138,2,'/contact/index.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15238,'auguria',1,NULL,'left','commercial',14443,1,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15239,'auguria',1,NULL,'left','commercial',15238,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15240,'auguria',1,NULL,'left','commercial',15238,1,'/comm/clients.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15241,'auguria',1,NULL,'left','commercial',15238,2,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15338,'auguria',1,NULL,'left','commercial',14443,2,'/contact/index.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15339,'auguria',1,NULL,'left','commercial',15338,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15340,'auguria',1,NULL,'left','commercial',15338,1,'/contact/index.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15348,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15349,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15350,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15351,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15538,'auguria',1,NULL,'left','commercial',14443,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15539,'auguria',1,NULL,'left','commercial',15538,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15540,'auguria',1,NULL,'left','commercial',15538,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15541,'auguria',1,NULL,'left','commercial',15538,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15542,'auguria',1,NULL,'left','commercial',15538,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15543,'auguria',1,NULL,'left','commercial',15538,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15638,'auguria',1,NULL,'left','commercial',14443,5,'/commande/index.php?leftmenu=orders','','Orders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15639,'auguria',1,NULL,'left','commercial',15638,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15640,'auguria',1,NULL,'left','commercial',15638,1,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15641,'auguria',1,NULL,'left','commercial',15638,2,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15642,'auguria',1,NULL,'left','commercial',15638,3,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15643,'auguria',1,NULL,'left','commercial',15638,4,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15644,'auguria',1,NULL,'left','commercial',15638,5,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15645,'auguria',1,NULL,'left','commercial',15638,6,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15646,'auguria',1,NULL,'left','commercial',15638,7,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15738,'auguria',1,NULL,'left','commercial',14443,6,'/expedition/index.php?leftmenu=sendings','','Sendings','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15739,'auguria',1,NULL,'left','commercial',15738,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15740,'auguria',1,NULL,'left','commercial',15738,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15838,'auguria',1,NULL,'left','commercial',14443,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15839,'auguria',1,NULL,'left','commercial',15838,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15840,'auguria',1,NULL,'left','commercial',15838,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15841,'auguria',1,NULL,'left','commercial',15838,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15842,'auguria',1,NULL,'left','commercial',15840,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15843,'auguria',1,NULL,'left','commercial',15840,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15844,'auguria',1,NULL,'left','commercial',15840,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15845,'auguria',1,NULL,'left','commercial',15840,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15938,'auguria',1,NULL,'left','commercial',14443,8,'/fichinter/index.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(15939,'auguria',1,NULL,'left','commercial',15938,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(15940,'auguria',1,NULL,'left','commercial',15938,1,'/fichinter/index.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(16038,'auguria',1,NULL,'left','accountancy',14444,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16039,'auguria',1,NULL,'left','accountancy',16038,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16040,'auguria',1,NULL,'left','accountancy',16038,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16041,'auguria',1,NULL,'left','accountancy',16038,2,'/contact/index.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16042,'auguria',1,NULL,'left','accountancy',16038,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16043,'auguria',1,NULL,'left','accountancy',16042,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',2,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16044,'auguria',1,NULL,'left','accountancy',16042,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',2,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16045,'auguria',1,NULL,'left','accountancy',16042,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',2,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16138,'auguria',1,NULL,'left','accountancy',14444,1,'/compta/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16139,'auguria',1,NULL,'left','accountancy',16138,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16140,'auguria',1,NULL,'left','accountancy',16138,1,'/compta/clients.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16141,'auguria',1,NULL,'left','accountancy',16138,2,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16142,'auguria',1,NULL,'left','accountancy',16138,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16143,'auguria',1,NULL,'left','accountancy',16142,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',2,'','$user->rights->facture->creer','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16144,'auguria',1,NULL,'left','accountancy',16142,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16145,'auguria',1,NULL,'left','accountancy',16142,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16146,'auguria',1,NULL,'left','accountancy',16142,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16148,'auguria',1,NULL,'left','accountancy',16146,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',3,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16149,'auguria',1,NULL,'left','accountancy',14444,1,'/compta/paiement/cheque/index.php?leftmenu=checks','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2010-07-21 23:19:59'),(16150,'auguria',1,NULL,'left','accountancy',16149,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"checks\"',2,'2010-07-21 23:19:59'),(16151,'auguria',1,NULL,'left','accountancy',16149,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','MenuChequesReceipts','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"checks\"',2,'2010-07-21 23:19:59'),(16152,'auguria',1,NULL,'left','accountancy',16142,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16153,'auguria',1,NULL,'left','accountancy',16138,4,'/compta/paiement/cheque/index.php','','CheckReceipt','bills',1,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16154,'auguria',1,NULL,'left','accountancy',16142,9,'/compta/paiement/cheque/fiche.php?action=new','','New','bills',2,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16155,'auguria',1,NULL,'left','accountancy',16142,10,'/compta/paiement/cheque/liste.php','','List','bills',2,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16238,'auguria',1,NULL,'left','accountancy',14444,2,'/compta/propal.php?leftmenu=propal','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(16338,'auguria',1,NULL,'left','accountancy',14444,3,'/compta/commande/liste.php?leftmenu=orders&status=3&afacturer=1','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2010-07-21 23:19:59'),(16438,'auguria',1,NULL,'left','accountancy',14444,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2010-07-21 23:19:59'),(16439,'auguria',1,NULL,'left','accountancy',16438,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16440,'auguria',1,NULL,'left','accountancy',16438,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16441,'auguria',1,NULL,'left','accountancy',16438,2,'/compta/dons/stats.php?leftmenu=donations&mainmenu=accountancy','','Statistics','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16538,'auguria',1,NULL,'left','accountancy',14444,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2010-07-21 23:19:59'),(16539,'auguria',1,NULL,'left','accountancy',16538,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16540,'auguria',1,NULL,'left','accountancy',16538,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16541,'auguria',1,NULL,'left','accountancy',16538,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16638,'auguria',1,NULL,'left','accountancy',14444,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2010-07-21 23:19:59'),(16639,'auguria',1,NULL,'left','accountancy',16638,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2010-07-21 23:19:59'),(16640,'auguria',1,NULL,'left','accountancy',16639,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2010-07-21 23:19:59'),(16641,'auguria',1,NULL,'left','accountancy',16639,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2010-07-21 23:19:59'),(16738,'auguria',1,NULL,'left','accountancy',16638,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva',0,'2010-07-21 23:19:59'),(16739,'auguria',1,NULL,'left','accountancy',16738,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16740,'auguria',1,NULL,'left','accountancy',16738,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16741,'auguria',1,NULL,'left','accountancy',16738,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16742,'auguria',1,NULL,'left','accountancy',16738,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16838,'auguria',1,NULL,'left','accountancy',14444,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16839,'auguria',1,NULL,'left','accountancy',16838,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16840,'auguria',1,NULL,'left','accountancy',16838,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16841,'auguria',1,NULL,'left','accountancy',16838,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16842,'auguria',1,NULL,'left','accountancy',16841,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16843,'auguria',1,NULL,'left','accountancy',16841,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16844,'auguria',1,NULL,'left','accountancy',16838,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16845,'auguria',1,NULL,'left','accountancy',16844,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16846,'auguria',1,NULL,'left','accountancy',16844,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16938,'auguria',1,NULL,'left','accountancy',14444,9,'/compta/prelevement/index.php?leftmenu=withdraw','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2010-07-21 23:19:59'),(16939,'auguria',1,NULL,'left','accountancy',16938,0,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16940,'auguria',1,NULL,'left','accountancy',16938,1,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16941,'auguria',1,NULL,'left','accountancy',16938,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16942,'auguria',1,NULL,'left','accountancy',16938,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16943,'auguria',1,NULL,'left','accountancy',16938,4,'/compta/prelevement/liste_factures.php?leftmenu=withdraw','','WithdrawedBills','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16944,'auguria',1,NULL,'left','accountancy',16938,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16945,'auguria',1,NULL,'left','accountancy',16938,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16946,'auguria',1,NULL,'left','accountancy',16938,7,'/compta/prelevement/config.php?leftmenu=withdraw','','Setup','withdrawals',1,'','$user->rights->prelevement->bons->configurer','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(17038,'auguria',1,NULL,'left','accountancy',14444,10,'/compta/bank/index.php?leftmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2010-07-21 23:19:59'),(17039,'auguria',1,NULL,'left','accountancy',17038,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17040,'auguria',1,NULL,'left','accountancy',17038,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17041,'auguria',1,NULL,'left','accountancy',17038,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17042,'auguria',1,NULL,'left','accountancy',17038,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17044,'auguria',1,NULL,'left','accountancy',17038,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->modifier','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17138,'auguria',1,NULL,'left','accountancy',14444,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17139,'auguria',1,NULL,'left','accountancy',17138,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17140,'auguria',1,NULL,'left','accountancy',17139,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17141,'auguria',1,NULL,'left','accountancy',17138,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17142,'auguria',1,NULL,'left','accountancy',17141,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17143,'auguria',1,NULL,'left','accountancy',17141,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17238,'auguria',1,NULL,'left','products',14441,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17239,'auguria',1,NULL,'left','products',17238,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17240,'auguria',1,NULL,'left','products',17238,1,'/product/liste.php?leftmenu=product&type=0','','ProductList','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17241,'auguria',1,NULL,'left','products',17238,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17242,'auguria',1,NULL,'left','products',17238,2,'/product/fiche.php?leftmenu=product&action=create&type=0&canvas=livre@droitpret','','NewBook','products',1,'','$user->rights->produit->creer','$conf->product->enabled && $conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(17243,'auguria',1,NULL,'left','products',17238,3,'/product/liste.php?leftmenu=product&type=0&canvas=livre@droitpret','','BookList','products',1,'','$user->rights->produit->lire','$conf->product->enabled && $conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(17338,'auguria',1,NULL,'left','products',14441,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17339,'auguria',1,NULL,'left','products',17338,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17340,'auguria',1,NULL,'left','products',17338,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17438,'auguria',1,NULL,'left','products',14441,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2010-07-21 23:19:59'),(17439,'auguria',1,NULL,'left','products',17438,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(17538,'auguria',1,NULL,'left','products',14441,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17539,'auguria',1,NULL,'left','products',17538,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17540,'auguria',1,NULL,'left','products',17538,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17541,'auguria',1,NULL,'left','products',17538,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17542,'auguria',1,NULL,'left','products',17538,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17638,'auguria',1,NULL,'left','products',14441,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie>lire','$conf->categorie->enabled',2,'2010-07-21 23:19:59'),(17639,'auguria',1,NULL,'left','products',17638,0,'/categories/fiche.php?action=create&type=0','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->categorie->enabled',2,'2010-07-21 23:19:59'),(18038,'auguria',1,NULL,'left','project',14445,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18039,'auguria',1,NULL,'left','project',18038,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18040,'auguria',1,NULL,'left','project',18038,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18048,'auguria',1,NULL,'left','project',14445,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18049,'auguria',1,NULL,'left','project',18048,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18050,'auguria',1,NULL,'left','project',18048,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18138,'auguria',1,NULL,'left','project',14445,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18139,'auguria',1,NULL,'left','project',18138,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18140,'auguria',1,NULL,'left','project',18138,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18141,'auguria',1,NULL,'left','project',18138,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18238,'auguria',1,NULL,'left','project',14445,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18239,'auguria',1,NULL,'left','project',18238,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18240,'auguria',1,NULL,'left','project',18238,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18241,'auguria',1,NULL,'left','project',18238,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18338,'auguria',1,NULL,'left','tools',14446,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18339,'auguria',1,NULL,'left','tools',18338,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18340,'auguria',1,NULL,'left','tools',18338,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18538,'auguria',1,NULL,'left','tools',14446,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2010-07-21 23:19:59'),(18539,'auguria',1,NULL,'left','tools',18538,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2010-07-21 23:19:59'),(18568,'auguria',1,NULL,'left','tools',14446,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2010-07-21 23:19:59'),(18569,'auguria',1,NULL,'left','tools',18568,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2010-07-21 23:19:59'),(18638,'auguria',1,NULL,'left','members',14451,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18639,'auguria',1,NULL,'left','members',18638,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18640,'auguria',1,NULL,'left','members',18638,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18641,'auguria',1,NULL,'left','members',18640,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18642,'auguria',1,NULL,'left','members',18640,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18643,'auguria',1,NULL,'left','members',18640,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18644,'auguria',1,NULL,'left','members',18640,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18645,'auguria',1,NULL,'left','members',18640,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18738,'auguria',1,NULL,'left','members',14451,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18739,'auguria',1,NULL,'left','members',18738,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18740,'auguria',1,NULL,'left','members',18738,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18938,'auguria',1,NULL,'left','members',14451,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18939,'auguria',1,NULL,'left','members',18938,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2010-07-21 23:19:59'),(18940,'auguria',1,NULL,'left','members',18938,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18941,'auguria',1,NULL,'left','members',18938,2,'/adherents/cartes/carte.php?leftmenu=export','_blank','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18942,'auguria',1,NULL,'left','members',18938,3,'/adherents/cartes/etiquette.php?leftmenu=export','_blank','MembersTickets','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19038,'auguria',1,NULL,'left','members',14451,4,'/adherents/public.php?leftmenu=member_public','','MemberPublicLinks','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19138,'auguria',1,NULL,'left','members',14451,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19139,'auguria',1,NULL,'left','members',19138,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19140,'auguria',1,NULL,'left','members',19138,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19238,'auguria',1,NULL,'left','products',14441,5,'/product/droitpret/index.php?leftmenu=droitpret','','Droit de pret','products',0,'','$user->rights->droitpret->lire','$conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(19239,'auguria',1,NULL,'left','products',19238,1,'/product/droitpret/index.php?leftmenu=droitpret','','Generer rapport','products',1,'','$user->rights->droitpret->creer','$conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(19255,'all',1,'agenda','top','agenda',0,100,'/comm/action/index.php','','Agenda','agenda',0,'1','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19256,'all',1,'agenda','left','agenda',19255,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19257,'all',1,'agenda','left','agenda',19256,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',0,'0','($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19258,'all',1,'agenda','left','agenda',19256,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19259,'all',1,'agenda','left','agenda',19258,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19260,'all',1,'agenda','left','agenda',19258,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19261,'all',1,'agenda','left','agenda',19258,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19262,'all',1,'agenda','left','agenda',19258,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19263,'all',1,'agenda','left','agenda',19256,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19264,'all',1,'agenda','left','agenda',19263,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19265,'all',1,'agenda','left','agenda',19263,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19266,'all',1,'agenda','left','agenda',19263,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19267,'all',1,'agenda','left','agenda',19263,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19268,'all',1,'agenda','left','agenda',19256,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',0,'0','$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'); +INSERT INTO `llx_menu` VALUES (1,'all',1,'ecm','top','ecm',0,100,'/ecm/index.php','','MenuECM','ecm',0,'1','$user->rights->ecm->download || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2010-07-08 11:28:47'),(2,'all',1,'ecm','left','ecm',1,101,'/ecm/index.php','','ECMArea','ecm',0,'0','$user->rights->ecm->download || $user->rights->ecm->upload','$user->rights->ecm->download || $user->rights->ecm->upload',2,'2010-07-08 11:28:47'),(3,'all',1,'ecm','left','ecm',2,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',0,'0','$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2010-07-08 11:28:47'),(4,'all',1,'ecm','left','ecm',2,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',0,'0','$user->rights->ecm->download || $user->rights->ecm->upload','$user->rights->ecm->download || $user->rights->ecm->upload',2,'2010-07-08 11:28:47'),(5,'all',1,'ecm','left','ecm',2,103,'/ecm/search.php','','Search','ecm',0,'0','$user->rights->ecm->download','$user->rights->ecm->download',2,'2010-07-08 11:28:47'),(14424,'all',1,'cashdesk','top','cashdesk',0,100,'/cashdesk/index.php','','CashDeskMenu','@cashdesk',0,'1','1','0',0,'2010-07-11 17:08:03'),(14439,'auguria',1,NULL,'top','home',0,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2010-07-21 23:19:59'),(14440,'auguria',1,NULL,'top','companies',0,2,'/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(14441,'auguria',1,NULL,'top','products',0,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2010-07-21 23:19:59'),(14443,'auguria',1,NULL,'top','commercial',0,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14444,'auguria',1,NULL,'top','accountancy',0,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire || $user->rights->banque->lire','$conf->compta->enabled || $conf->accounting->enabled || $conf->banque->enabled || $conf->facture->enabled || $conf->deplacement->enabled',2,'2010-07-21 23:19:59'),(14445,'auguria',1,NULL,'top','project',0,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2010-07-21 23:19:59'),(14446,'auguria',1,NULL,'top','tools',0,8,'/index.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->bookmark->lire || $user->rights->export->lire','$conf->mailing->enabled || $conf->export->enabled || $conf->global->MAIN_MODULE_IMPORT || $conf->global->MAIN_MODULE_DOMAIN',2,'2010-07-21 23:19:59'),(14449,'auguria',1,NULL,'top','shop',0,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2010-07-21 23:19:59'),(14450,'auguria',1,NULL,'top','shop',0,12,'/oscommerce_ws/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->oscommercews->enabled)',0,'2010-07-21 23:19:59'),(14451,'auguria',1,NULL,'top','members',0,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(14538,'auguria',1,NULL,'left','home',14439,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14539,'auguria',1,NULL,'left','home',14538,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14540,'auguria',1,NULL,'left','home',14538,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14541,'auguria',1,NULL,'left','home',14538,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14542,'auguria',1,NULL,'left','home',14538,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14543,'auguria',1,NULL,'left','home',14538,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14544,'auguria',1,NULL,'left','home',14538,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14546,'auguria',1,NULL,'left','home',14538,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14547,'auguria',1,NULL,'left','home',14538,8,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14548,'auguria',1,NULL,'left','home',14538,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14549,'auguria',1,NULL,'left','home',14538,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14550,'auguria',1,NULL,'left','home',14538,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2010-07-21 23:19:59'),(14638,'auguria',1,NULL,'left','home',14439,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14639,'auguria',1,NULL,'left','home',14638,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14640,'auguria',1,NULL,'left','home',14639,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14641,'auguria',1,NULL,'left','home',14639,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14642,'auguria',1,NULL,'left','home',14638,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14643,'auguria',1,NULL,'left','home',14638,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14644,'auguria',1,NULL,'left','home',14638,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14645,'auguria',1,NULL,'left','home',14639,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14646,'auguria',1,NULL,'left','home',14639,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14648,'auguria',1,NULL,'left','home',14638,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14649,'auguria',1,NULL,'left','home',14648,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14650,'auguria',1,NULL,'left','home',14648,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\"system\"',2,'2010-07-21 23:19:59'),(14738,'auguria',1,NULL,'left','home',14439,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2010-07-21 23:19:59'),(14739,'auguria',1,NULL,'left','home',14738,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14740,'auguria',1,NULL,'left','home',14738,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14741,'auguria',1,NULL,'left','home',14738,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14742,'auguria',1,NULL,'left','home',14738,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\'eaccelerator_info\')',2,'2010-07-21 23:19:59'),(14743,'auguria',1,NULL,'left','home',14738,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14744,'auguria',1,NULL,'left','home',14738,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14745,'auguria',1,NULL,'left','home',14738,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14746,'auguria',1,NULL,'left','home',14738,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2010-07-21 23:19:59'),(14838,'auguria',1,NULL,'left','home',14439,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2010-07-21 23:19:59'),(14839,'auguria',1,NULL,'left','home',14838,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14840,'auguria',1,NULL,'left','home',14839,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14841,'auguria',1,NULL,'left','home',14838,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14842,'auguria',1,NULL,'left','home',14841,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2010-07-21 23:19:59'),(14938,'auguria',1,NULL,'left','companies',14440,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14939,'auguria',1,NULL,'left','companies',14938,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14941,'auguria',1,NULL,'left','companies',14938,2,'/fourn/liste.php?leftmenu=suppliers','','Suppliers','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14942,'auguria',1,NULL,'left','companies',14941,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14943,'auguria',1,NULL,'left','companies',14941,1,'/contact/index.php?leftmenu=suppliers&type=f','','Contacts','suppliers',2,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14944,'auguria',1,NULL,'left','companies',14938,3,'/comm/prospect/prospects.php?leftmenu=prospects','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14945,'auguria',1,NULL,'left','companies',14944,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14946,'auguria',1,NULL,'left','companies',14944,1,'/contact/index.php?leftmenu=customers&type=p','','Contacts','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14947,'auguria',1,NULL,'left','companies',14938,4,'/comm/clients.php?leftmenu=customers','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14948,'auguria',1,NULL,'left','companies',14947,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(14949,'auguria',1,NULL,'left','companies',14947,1,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15038,'auguria',1,NULL,'left','companies',14440,1,'/contact/index.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15039,'auguria',1,NULL,'left','companies',15038,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15040,'auguria',1,NULL,'left','companies',15038,1,'/contact/index.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(15088,'auguria',1,NULL,'left','companies',14440,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie>lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15089,'auguria',1,NULL,'left','companies',15088,0,'/categories/fiche.php?action=create&type=1','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15098,'auguria',1,NULL,'left','companies',14440,3,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie>lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15099,'auguria',1,NULL,'left','companies',15098,0,'/categories/fiche.php?action=create&type=2','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2010-07-21 23:19:59'),(15138,'auguria',1,NULL,'left','commercial',14443,0,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15139,'auguria',1,NULL,'left','commercial',15138,0,'/societe/soc.php?leftmenu=prospects&action=create&type=c','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15140,'auguria',1,NULL,'left','commercial',15138,1,'/comm/prospect/prospects.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15141,'auguria',1,NULL,'left','commercial',15140,0,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15142,'auguria',1,NULL,'left','commercial',15140,1,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15143,'auguria',1,NULL,'left','commercial',15140,2,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15144,'auguria',1,NULL,'left','commercial',15140,3,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15145,'auguria',1,NULL,'left','commercial',15140,4,'/comm/prospect/prospects.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15146,'auguria',1,NULL,'left','commercial',15138,2,'/contact/index.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15238,'auguria',1,NULL,'left','commercial',14443,1,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15239,'auguria',1,NULL,'left','commercial',15238,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15240,'auguria',1,NULL,'left','commercial',15238,1,'/comm/clients.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15241,'auguria',1,NULL,'left','commercial',15238,2,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15338,'auguria',1,NULL,'left','commercial',14443,2,'/contact/index.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15339,'auguria',1,NULL,'left','commercial',15338,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15340,'auguria',1,NULL,'left','commercial',15338,1,'/contact/index.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15348,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15349,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15350,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15351,'auguria',1,NULL,'left','commercial',15340,1,'/contact/index.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2010-07-21 23:19:59'),(15538,'auguria',1,NULL,'left','commercial',14443,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15539,'auguria',1,NULL,'left','commercial',15538,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15540,'auguria',1,NULL,'left','commercial',15538,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15541,'auguria',1,NULL,'left','commercial',15538,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15542,'auguria',1,NULL,'left','commercial',15538,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15543,'auguria',1,NULL,'left','commercial',15538,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(15638,'auguria',1,NULL,'left','commercial',14443,5,'/commande/index.php?leftmenu=orders','','Orders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15639,'auguria',1,NULL,'left','commercial',15638,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15640,'auguria',1,NULL,'left','commercial',15638,1,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15641,'auguria',1,NULL,'left','commercial',15638,2,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15642,'auguria',1,NULL,'left','commercial',15638,3,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15643,'auguria',1,NULL,'left','commercial',15638,4,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15644,'auguria',1,NULL,'left','commercial',15638,5,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15645,'auguria',1,NULL,'left','commercial',15638,6,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15646,'auguria',1,NULL,'left','commercial',15638,7,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2010-07-21 23:19:59'),(15738,'auguria',1,NULL,'left','commercial',14443,6,'/expedition/index.php?leftmenu=sendings','','Sendings','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15739,'auguria',1,NULL,'left','commercial',15738,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15740,'auguria',1,NULL,'left','commercial',15738,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2010-07-21 23:19:59'),(15838,'auguria',1,NULL,'left','commercial',14443,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15839,'auguria',1,NULL,'left','commercial',15838,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15840,'auguria',1,NULL,'left','commercial',15838,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15841,'auguria',1,NULL,'left','commercial',15838,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15842,'auguria',1,NULL,'left','commercial',15840,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15843,'auguria',1,NULL,'left','commercial',15840,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15844,'auguria',1,NULL,'left','commercial',15840,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15845,'auguria',1,NULL,'left','commercial',15840,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2010-07-21 23:19:59'),(15938,'auguria',1,NULL,'left','commercial',14443,8,'/fichinter/index.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(15939,'auguria',1,NULL,'left','commercial',15938,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(15940,'auguria',1,NULL,'left','commercial',15938,1,'/fichinter/index.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2010-07-21 23:19:59'),(16038,'auguria',1,NULL,'left','accountancy',14444,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16039,'auguria',1,NULL,'left','accountancy',16038,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16040,'auguria',1,NULL,'left','accountancy',16038,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16041,'auguria',1,NULL,'left','accountancy',16038,2,'/contact/index.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16042,'auguria',1,NULL,'left','accountancy',16038,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2010-07-21 23:19:59'),(16043,'auguria',1,NULL,'left','accountancy',16042,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',2,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16044,'auguria',1,NULL,'left','accountancy',16042,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',2,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16045,'auguria',1,NULL,'left','accountancy',16042,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',2,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled && $leftmenu==\"suppliers_bills\"',2,'2010-07-21 23:19:59'),(16138,'auguria',1,NULL,'left','accountancy',14444,1,'/compta/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16139,'auguria',1,NULL,'left','accountancy',16138,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16140,'auguria',1,NULL,'left','accountancy',16138,1,'/compta/clients.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16141,'auguria',1,NULL,'left','accountancy',16138,2,'/contact/index.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16142,'auguria',1,NULL,'left','accountancy',16138,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2010-07-21 23:19:59'),(16143,'auguria',1,NULL,'left','accountancy',16142,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',2,'','$user->rights->facture->creer','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16144,'auguria',1,NULL,'left','accountancy',16142,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16145,'auguria',1,NULL,'left','accountancy',16142,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16146,'auguria',1,NULL,'left','accountancy',16142,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16148,'auguria',1,NULL,'left','accountancy',16146,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',3,'','$user->rights->facture->lire','$conf->societe->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16149,'auguria',1,NULL,'left','accountancy',14444,1,'/compta/paiement/cheque/index.php?leftmenu=checks','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2010-07-21 23:19:59'),(16150,'auguria',1,NULL,'left','accountancy',16149,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"checks\"',2,'2010-07-21 23:19:59'),(16151,'auguria',1,NULL,'left','accountancy',16149,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','MenuChequesReceipts','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"checks\"',2,'2010-07-21 23:19:59'),(16152,'auguria',1,NULL,'left','accountancy',16142,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled && $leftmenu==\"customers_bills\"',2,'2010-07-21 23:19:59'),(16153,'auguria',1,NULL,'left','accountancy',16138,4,'/compta/paiement/cheque/index.php','','CheckReceipt','bills',1,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16154,'auguria',1,NULL,'left','accountancy',16142,9,'/compta/paiement/cheque/fiche.php?action=new','','New','bills',2,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16155,'auguria',1,NULL,'left','accountancy',16142,10,'/compta/paiement/cheque/liste.php','','List','bills',2,'','$user->rights->banque->cheque','$conf->facture->enabled && $conf->banque->enabled',1,'2010-07-21 23:19:59'),(16238,'auguria',1,NULL,'left','accountancy',14444,2,'/compta/propal.php?leftmenu=propal','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(16338,'auguria',1,NULL,'left','accountancy',14444,3,'/compta/commande/liste.php?leftmenu=orders&status=3&afacturer=1','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2010-07-21 23:19:59'),(16438,'auguria',1,NULL,'left','accountancy',14444,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2010-07-21 23:19:59'),(16439,'auguria',1,NULL,'left','accountancy',16438,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16440,'auguria',1,NULL,'left','accountancy',16438,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16441,'auguria',1,NULL,'left','accountancy',16438,2,'/compta/dons/stats.php?leftmenu=donations&mainmenu=accountancy','','Statistics','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2010-07-21 23:19:59'),(16538,'auguria',1,NULL,'left','accountancy',14444,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2010-07-21 23:19:59'),(16539,'auguria',1,NULL,'left','accountancy',16538,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16540,'auguria',1,NULL,'left','accountancy',16538,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16541,'auguria',1,NULL,'left','accountancy',16538,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2010-07-21 23:19:59'),(16638,'auguria',1,NULL,'left','accountancy',14444,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2010-07-21 23:19:59'),(16639,'auguria',1,NULL,'left','accountancy',16638,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2010-07-21 23:19:59'),(16640,'auguria',1,NULL,'left','accountancy',16639,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2010-07-21 23:19:59'),(16641,'auguria',1,NULL,'left','accountancy',16639,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2010-07-21 23:19:59'),(16738,'auguria',1,NULL,'left','accountancy',16638,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva',0,'2010-07-21 23:19:59'),(16739,'auguria',1,NULL,'left','accountancy',16738,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16740,'auguria',1,NULL,'left','accountancy',16738,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16741,'auguria',1,NULL,'left','accountancy',16738,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16742,'auguria',1,NULL,'left','accountancy',16738,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2010-07-21 23:19:59'),(16838,'auguria',1,NULL,'left','accountancy',14444,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16839,'auguria',1,NULL,'left','accountancy',16838,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16840,'auguria',1,NULL,'left','accountancy',16838,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16841,'auguria',1,NULL,'left','accountancy',16838,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16842,'auguria',1,NULL,'left','accountancy',16841,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16843,'auguria',1,NULL,'left','accountancy',16841,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16844,'auguria',1,NULL,'left','accountancy',16838,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16845,'auguria',1,NULL,'left','accountancy',16844,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16846,'auguria',1,NULL,'left','accountancy',16844,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->compta->enabled && $conf->global->FACTURE_VENTILATION',0,'2010-07-21 23:19:59'),(16938,'auguria',1,NULL,'left','accountancy',14444,9,'/compta/prelevement/index.php?leftmenu=withdraw','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2010-07-21 23:19:59'),(16939,'auguria',1,NULL,'left','accountancy',16938,0,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16940,'auguria',1,NULL,'left','accountancy',16938,1,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16941,'auguria',1,NULL,'left','accountancy',16938,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16942,'auguria',1,NULL,'left','accountancy',16938,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16943,'auguria',1,NULL,'left','accountancy',16938,4,'/compta/prelevement/liste_factures.php?leftmenu=withdraw','','WithdrawedBills','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16944,'auguria',1,NULL,'left','accountancy',16938,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16945,'auguria',1,NULL,'left','accountancy',16938,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(16946,'auguria',1,NULL,'left','accountancy',16938,7,'/compta/prelevement/config.php?leftmenu=withdraw','','Setup','withdrawals',1,'','$user->rights->prelevement->bons->configurer','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2010-07-21 23:19:59'),(17038,'auguria',1,NULL,'left','accountancy',14444,10,'/compta/bank/index.php?leftmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2010-07-21 23:19:59'),(17039,'auguria',1,NULL,'left','accountancy',17038,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17040,'auguria',1,NULL,'left','accountancy',17038,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17041,'auguria',1,NULL,'left','accountancy',17038,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17042,'auguria',1,NULL,'left','accountancy',17038,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17044,'auguria',1,NULL,'left','accountancy',17038,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->modifier','$conf->banque->enabled && $leftmenu==bank',0,'2010-07-21 23:19:59'),(17138,'auguria',1,NULL,'left','accountancy',14444,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17139,'auguria',1,NULL,'left','accountancy',17138,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17140,'auguria',1,NULL,'left','accountancy',17139,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17141,'auguria',1,NULL,'left','accountancy',17138,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17142,'auguria',1,NULL,'left','accountancy',17141,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17143,'auguria',1,NULL,'left','accountancy',17141,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->compta->enabled || $conf->accounting->enabled',0,'2010-07-21 23:19:59'),(17238,'auguria',1,NULL,'left','products',14441,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17239,'auguria',1,NULL,'left','products',17238,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17240,'auguria',1,NULL,'left','products',17238,1,'/product/liste.php?leftmenu=product&type=0','','ProductList','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17241,'auguria',1,NULL,'left','products',17238,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2010-07-21 23:19:59'),(17242,'auguria',1,NULL,'left','products',17238,2,'/product/fiche.php?leftmenu=product&action=create&type=0&canvas=livre@droitpret','','NewBook','products',1,'','$user->rights->produit->creer','$conf->product->enabled && $conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(17243,'auguria',1,NULL,'left','products',17238,3,'/product/liste.php?leftmenu=product&type=0&canvas=livre@droitpret','','BookList','products',1,'','$user->rights->produit->lire','$conf->product->enabled && $conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(17338,'auguria',1,NULL,'left','products',14441,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17339,'auguria',1,NULL,'left','products',17338,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17340,'auguria',1,NULL,'left','products',17338,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2010-07-21 23:19:59'),(17438,'auguria',1,NULL,'left','products',14441,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2010-07-21 23:19:59'),(17439,'auguria',1,NULL,'left','products',17438,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2010-07-21 23:19:59'),(17538,'auguria',1,NULL,'left','products',14441,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17539,'auguria',1,NULL,'left','products',17538,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17540,'auguria',1,NULL,'left','products',17538,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17541,'auguria',1,NULL,'left','products',17538,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17542,'auguria',1,NULL,'left','products',17538,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2010-07-21 23:19:59'),(17638,'auguria',1,NULL,'left','products',14441,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie>lire','$conf->categorie->enabled',2,'2010-07-21 23:19:59'),(17639,'auguria',1,NULL,'left','products',17638,0,'/categories/fiche.php?action=create&type=0','','NewCat','categories',1,'','$user->rights->categorie>creer','$conf->categorie->enabled',2,'2010-07-21 23:19:59'),(18038,'auguria',1,NULL,'left','project',14445,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18039,'auguria',1,NULL,'left','project',18038,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18040,'auguria',1,NULL,'left','project',18038,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18048,'auguria',1,NULL,'left','project',14445,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18049,'auguria',1,NULL,'left','project',18048,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18050,'auguria',1,NULL,'left','project',18048,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18138,'auguria',1,NULL,'left','project',14445,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18139,'auguria',1,NULL,'left','project',18138,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18140,'auguria',1,NULL,'left','project',18138,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18141,'auguria',1,NULL,'left','project',18138,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18238,'auguria',1,NULL,'left','project',14445,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18239,'auguria',1,NULL,'left','project',18238,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18240,'auguria',1,NULL,'left','project',18238,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18241,'auguria',1,NULL,'left','project',18238,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2010-07-21 23:19:59'),(18338,'auguria',1,NULL,'left','tools',14446,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18339,'auguria',1,NULL,'left','tools',18338,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18340,'auguria',1,NULL,'left','tools',18338,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2010-07-21 23:19:59'),(18538,'auguria',1,NULL,'left','tools',14446,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2010-07-21 23:19:59'),(18539,'auguria',1,NULL,'left','tools',18538,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2010-07-21 23:19:59'),(18568,'auguria',1,NULL,'left','tools',14446,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2010-07-21 23:19:59'),(18569,'auguria',1,NULL,'left','tools',18568,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2010-07-21 23:19:59'),(18638,'auguria',1,NULL,'left','members',14451,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18639,'auguria',1,NULL,'left','members',18638,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18640,'auguria',1,NULL,'left','members',18638,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18641,'auguria',1,NULL,'left','members',18640,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18642,'auguria',1,NULL,'left','members',18640,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18643,'auguria',1,NULL,'left','members',18640,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18644,'auguria',1,NULL,'left','members',18640,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18645,'auguria',1,NULL,'left','members',18640,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18738,'auguria',1,NULL,'left','members',14451,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18739,'auguria',1,NULL,'left','members',18738,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18740,'auguria',1,NULL,'left','members',18738,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18938,'auguria',1,NULL,'left','members',14451,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18939,'auguria',1,NULL,'left','members',18938,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2010-07-21 23:19:59'),(18940,'auguria',1,NULL,'left','members',18938,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18941,'auguria',1,NULL,'left','members',18938,2,'/adherents/cartes/carte.php?leftmenu=export','_blank','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(18942,'auguria',1,NULL,'left','members',18938,3,'/adherents/cartes/etiquette.php?leftmenu=export','_blank','MembersTickets','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19038,'auguria',1,NULL,'left','members',14451,4,'/adherents/public.php?leftmenu=member_public','','MemberPublicLinks','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19138,'auguria',1,NULL,'left','members',14451,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19139,'auguria',1,NULL,'left','members',19138,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19140,'auguria',1,NULL,'left','members',19138,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2010-07-21 23:19:59'),(19238,'auguria',1,NULL,'left','products',14441,5,'/product/droitpret/index.php?leftmenu=droitpret','','Droit de pret','products',0,'','$user->rights->droitpret->lire','$conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(19239,'auguria',1,NULL,'left','products',19238,1,'/product/droitpret/index.php?leftmenu=droitpret','','Generer rapport','products',1,'','$user->rights->droitpret->creer','$conf->droitpret->enabled',2,'2010-07-21 23:19:59'),(19255,'all',1,'agenda','top','agenda',0,100,'/comm/action/index.php','','Agenda','agenda',0,'1','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19256,'all',1,'agenda','left','agenda',19255,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19257,'all',1,'agenda','left','agenda',19256,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',0,'0','($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19258,'all',1,'agenda','left','agenda',19256,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19259,'all',1,'agenda','left','agenda',19258,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19260,'all',1,'agenda','left','agenda',19258,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19261,'all',1,'agenda','left','agenda',19258,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19262,'all',1,'agenda','left','agenda',19258,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19263,'all',1,'agenda','left','agenda',19256,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19264,'all',1,'agenda','left','agenda',19263,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19265,'all',1,'agenda','left','agenda',19263,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',0,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'),(19266,'all',1,'agenda','left','agenda',19263,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19267,'all',1,'agenda','left','agenda',19263,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',0,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-02-06 11:20:36'),(19268,'all',1,'agenda','left','agenda',19256,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',0,'0','$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2011-02-06 11:20:36'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.1.0.sql b/dev/initdemo/mysqldump_dolibarr_3.1.0.sql index 941b820b95e..f0b994d78b2 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.1.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.1.0.sql @@ -4112,7 +4112,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,'1','1','$conf->cashdesk->enabled',0,'2011-07-18 17:30:24'),(50671,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,'1','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50672,'all',1,'agenda','left','agenda',50671,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50673,'all',1,'agenda','left','agenda',50672,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,'0','($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50674,'all',1,'agenda','left','agenda',50672,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50675,'all',1,'agenda','left','agenda',50674,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50676,'all',1,'agenda','left','agenda',50674,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50677,'all',1,'agenda','left','agenda',50674,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50678,'all',1,'agenda','left','agenda',50674,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50679,'all',1,'agenda','left','agenda',50672,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50680,'all',1,'agenda','left','agenda',50679,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50681,'all',1,'agenda','left','agenda',50679,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50682,'all',1,'agenda','left','agenda',50679,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50683,'all',1,'agenda','left','agenda',50679,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50684,'all',1,'agenda','left','agenda',50672,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,'0','$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50685,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,'1','$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2011-08-04 12:03:11'),(50686,'all',1,'ecm','left','ecm',50685,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,'0','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2011-08-04 12:03:11'),(50687,'all',1,'ecm','left','ecm',50686,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,'0','$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2011-08-04 12:03:11'),(50688,'all',1,'ecm','left','ecm',50686,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,'0','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2011-08-04 12:03:11'),(50689,'all',1,'ecm','left','ecm',50686,NULL,NULL,103,'/ecm/search.php','','Search','ecm',NULL,'0','$user->rights->ecm->read','$user->rights->ecm->read',2,'2011-08-04 12:03:11'),(50690,'auguria',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2011-08-05 18:28:31'),(50691,'auguria',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2011-08-05 18:28:31'),(50692,'auguria',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2011-08-05 18:28:31'),(50694,'auguria',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:31'),(50695,'auguria',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2011-08-05 18:28:31'),(50696,'auguria',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2011-08-05 18:28:31'),(50697,'auguria',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2011-08-05 18:28:31'),(50700,'auguria',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2011-08-05 18:28:31'),(50702,'auguria',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:31'),(50703,'auguria',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2011-08-05 18:28:31'),(50789,'auguria',1,NULL,'left','home',50690,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2011-08-05 18:28:31'),(50790,'auguria',1,NULL,'left','home',50789,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50791,'auguria',1,NULL,'left','home',50789,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50792,'auguria',1,NULL,'left','home',50789,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50793,'auguria',1,NULL,'left','home',50789,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50794,'auguria',1,NULL,'left','home',50789,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50795,'auguria',1,NULL,'left','home',50789,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50797,'auguria',1,NULL,'left','home',50789,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50798,'auguria',1,NULL,'left','home',50789,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50799,'auguria',1,NULL,'left','home',50789,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50800,'auguria',1,NULL,'left','home',50789,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50801,'auguria',1,NULL,'left','home',50789,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50802,'auguria',1,NULL,'left','home',50789,NULL,NULL,9,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50889,'auguria',1,NULL,'left','home',50690,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2011-08-05 18:28:32'),(50890,'auguria',1,NULL,'left','home',50889,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50891,'auguria',1,NULL,'left','home',50890,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50892,'auguria',1,NULL,'left','home',50890,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50893,'auguria',1,NULL,'left','home',50889,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50894,'auguria',1,NULL,'left','home',50889,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50895,'auguria',1,NULL,'left','home',50889,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50896,'auguria',1,NULL,'left','home',50890,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50897,'auguria',1,NULL,'left','home',50890,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50899,'auguria',1,NULL,'left','home',50889,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50900,'auguria',1,NULL,'left','home',50899,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50901,'auguria',1,NULL,'left','home',50899,NULL,NULL,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50989,'auguria',1,NULL,'left','home',50690,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2011-08-05 18:28:32'),(50990,'auguria',1,NULL,'left','home',50989,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50991,'auguria',1,NULL,'left','home',50989,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50992,'auguria',1,NULL,'left','home',50989,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:33'),(50993,'auguria',1,NULL,'left','home',50989,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2011-08-05 18:28:32'),(50994,'auguria',1,NULL,'left','home',50989,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50995,'auguria',1,NULL,'left','home',50989,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50996,'auguria',1,NULL,'left','home',50989,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:33'),(50997,'auguria',1,NULL,'left','home',50989,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(51089,'auguria',1,NULL,'left','home',50690,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2011-08-05 18:28:33'),(51090,'auguria',1,NULL,'left','home',51089,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51091,'auguria',1,NULL,'left','home',51090,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51092,'auguria',1,NULL,'left','home',51089,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51093,'auguria',1,NULL,'left','home',51092,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51189,'auguria',1,NULL,'left','companies',50691,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51190,'auguria',1,NULL,'left','companies',51189,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51192,'auguria',1,NULL,'left','companies',51189,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51193,'auguria',1,NULL,'left','companies',51192,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51195,'auguria',1,NULL,'left','companies',51189,NULL,NULL,3,'/comm/prospect/prospects.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51196,'auguria',1,NULL,'left','companies',51195,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51198,'auguria',1,NULL,'left','companies',51189,NULL,NULL,4,'/comm/clients.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51199,'auguria',1,NULL,'left','companies',51198,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51289,'auguria',1,NULL,'left','companies',50691,NULL,NULL,1,'/contact/index.php?leftmenu=contacts','','ContactsAddresses','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51290,'auguria',1,NULL,'left','companies',51289,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51291,'auguria',1,NULL,'left','companies',51289,NULL,NULL,1,'/contact/index.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51293,'auguria',1,NULL,'left','companies',51291,NULL,NULL,1,'/contact/index.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51294,'auguria',1,NULL,'left','companies',51291,NULL,NULL,2,'/contact/index.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51295,'auguria',1,NULL,'left','companies',51291,NULL,NULL,3,'/contact/index.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51296,'auguria',1,NULL,'left','companies',51291,NULL,NULL,4,'/contact/index.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51339,'auguria',1,NULL,'left','companies',50691,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:33'),(51340,'auguria',1,NULL,'left','companies',51339,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51349,'auguria',1,NULL,'left','companies',50691,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51350,'auguria',1,NULL,'left','companies',51349,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51789,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51790,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51791,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,1,'/comm/propal.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51792,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,2,'/comm/propal.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51793,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,3,'/comm/propal.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51794,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,4,'/comm/propal.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51795,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,5,'/comm/propal.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:36'),(51796,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,6,'/comm/propal.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:36'),(51799,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:36'),(51889,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51890,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51891,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51892,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:36'),(51893,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:36'),(51894,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51895,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51896,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51897,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51898,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(51989,'auguria',1,NULL,'left','commercial',50692,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2011-08-05 18:28:34'),(51990,'auguria',1,NULL,'left','commercial',51989,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2011-08-05 18:28:34'),(51991,'auguria',1,NULL,'left','commercial',51989,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2011-08-05 18:28:35'),(52089,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52090,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52091,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52092,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52093,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52094,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52095,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52096,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52189,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,8,'/fichinter/index.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52190,'auguria',1,NULL,'left','commercial',52189,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52191,'auguria',1,NULL,'left','commercial',52189,NULL,NULL,1,'/fichinter/index.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52289,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52290,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52291,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52292,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52389,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52390,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52391,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52392,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52393,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52399,'auguria',1,NULL,'left','accountancy',52393,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:39'),(52400,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52401,'auguria',1,NULL,'left','accountancy',52400,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52402,'auguria',1,NULL,'left','accountancy',52400,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52403,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:39'),(52589,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2011-08-05 18:28:39'),(52689,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2011-08-05 18:28:39'),(52690,'auguria',1,NULL,'left','accountancy',52689,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2011-08-05 18:28:39'),(52691,'auguria',1,NULL,'left','accountancy',52689,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2011-08-05 18:28:39'),(52789,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2011-08-05 18:28:39'),(52790,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52791,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52792,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52889,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2011-08-05 18:28:39'),(52890,'auguria',1,NULL,'left','accountancy',52889,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2011-08-05 18:28:39'),(52891,'auguria',1,NULL,'left','accountancy',52890,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2011-08-05 18:28:39'),(52892,'auguria',1,NULL,'left','accountancy',52890,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2011-08-05 18:28:39'),(52989,'auguria',1,NULL,'left','accountancy',52889,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva',0,'2011-08-05 18:28:39'),(52990,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52991,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52992,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52993,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(53089,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53090,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53091,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53092,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53093,'auguria',1,NULL,'left','accountancy',53092,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53094,'auguria',1,NULL,'left','accountancy',53092,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53095,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53096,'auguria',1,NULL,'left','accountancy',53095,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53097,'auguria',1,NULL,'left','accountancy',53095,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53189,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2011-08-05 18:28:40'),(53191,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53192,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53193,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53195,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53196,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53289,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2011-08-05 18:28:41'),(53290,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53291,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53292,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53293,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53295,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53389,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53390,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53391,'auguria',1,NULL,'left','accountancy',53390,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53392,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53393,'auguria',1,NULL,'left','accountancy',53392,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53394,'auguria',1,NULL,'left','accountancy',53392,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53395,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53396,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53489,'auguria',1,NULL,'left','products',50692,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53490,'auguria',1,NULL,'left','products',53489,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53491,'auguria',1,NULL,'left','products',53489,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53492,'auguria',1,NULL,'left','products',53489,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53493,'auguria',1,NULL,'left','products',53489,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2011-08-05 18:28:34'),(53589,'auguria',1,NULL,'left','products',50692,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53590,'auguria',1,NULL,'left','products',53589,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53591,'auguria',1,NULL,'left','products',53589,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53592,'auguria',1,NULL,'left','products',53589,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2011-08-05 18:28:34'),(53789,'auguria',1,NULL,'left','products',50692,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53790,'auguria',1,NULL,'left','products',53789,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53791,'auguria',1,NULL,'left','products',53789,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53792,'auguria',1,NULL,'left','products',53789,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53793,'auguria',1,NULL,'left','products',53789,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53889,'auguria',1,NULL,'left','products',50692,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2011-08-05 18:28:34'),(53890,'auguria',1,NULL,'left','products',53889,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2011-08-05 18:28:34'),(54289,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54290,'auguria',1,NULL,'left','project',54289,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54291,'auguria',1,NULL,'left','project',54289,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54299,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54300,'auguria',1,NULL,'left','project',54299,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54301,'auguria',1,NULL,'left','project',54299,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54389,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54390,'auguria',1,NULL,'left','project',54389,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54391,'auguria',1,NULL,'left','project',54389,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54392,'auguria',1,NULL,'left','project',54389,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54489,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54490,'auguria',1,NULL,'left','project',54489,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54491,'auguria',1,NULL,'left','project',54489,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54492,'auguria',1,NULL,'left','project',54489,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54589,'auguria',1,NULL,'left','tools',50697,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2011-08-05 18:28:42'),(54590,'auguria',1,NULL,'left','tools',54589,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2011-08-05 18:28:42'),(54591,'auguria',1,NULL,'left','tools',54589,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2011-08-05 18:28:43'),(54789,'auguria',1,NULL,'left','tools',50697,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2011-08-05 18:28:43'),(54790,'auguria',1,NULL,'left','tools',54789,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2011-08-05 18:28:43'),(54819,'auguria',1,NULL,'left','tools',50697,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2011-08-05 18:28:43'),(54820,'auguria',1,NULL,'left','tools',54819,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2011-08-05 18:28:43'),(54889,'auguria',1,NULL,'left','members',50702,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:43'),(54890,'auguria',1,NULL,'left','members',54889,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2011-08-05 18:28:43'),(54891,'auguria',1,NULL,'left','members',54889,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54892,'auguria',1,NULL,'left','members',54891,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54893,'auguria',1,NULL,'left','members',54891,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54894,'auguria',1,NULL,'left','members',54891,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54895,'auguria',1,NULL,'left','members',54891,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54896,'auguria',1,NULL,'left','members',54891,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54897,'auguria',1,NULL,'left','members',54889,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members&statut=0','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54989,'auguria',1,NULL,'left','members',50702,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54990,'auguria',1,NULL,'left','members',54989,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54991,'auguria',1,NULL,'left','members',54989,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55189,'auguria',1,NULL,'left','members',50702,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55190,'auguria',1,NULL,'left','members',55189,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2011-08-05 18:28:44'),(55191,'auguria',1,NULL,'left','members',55189,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55192,'auguria',1,NULL,'left','members',55189,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55389,'auguria',1,NULL,'left','members',50702,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55390,'auguria',1,NULL,'left','members',55389,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55391,'auguria',1,NULL,'left','members',55389,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55789,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(55790,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(55791,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:38'),(55797,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:38'),(55889,'auguria',1,NULL,'left','members',50702,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:45'),(55890,'auguria',1,NULL,'left','members',55889,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:45'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,'1','1','$conf->cashdesk->enabled',0,'2011-07-18 17:30:24'),(50671,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,'1','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50672,'all',1,'agenda','left','agenda',50671,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50673,'all',1,'agenda','left','agenda',50672,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,'0','($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50674,'all',1,'agenda','left','agenda',50672,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50675,'all',1,'agenda','left','agenda',50674,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50676,'all',1,'agenda','left','agenda',50674,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50677,'all',1,'agenda','left','agenda',50674,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50678,'all',1,'agenda','left','agenda',50674,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50679,'all',1,'agenda','left','agenda',50672,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50680,'all',1,'agenda','left','agenda',50679,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50681,'all',1,'agenda','left','agenda',50679,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,'0','$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50682,'all',1,'agenda','left','agenda',50679,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50683,'all',1,'agenda','left','agenda',50679,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,'0','$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2011-08-04 12:03:11'),(50684,'all',1,'agenda','left','agenda',50672,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,'0','$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2011-08-04 12:03:11'),(50685,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,'1','$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2011-08-04 12:03:11'),(50686,'all',1,'ecm','left','ecm',50685,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,'0','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2011-08-04 12:03:11'),(50687,'all',1,'ecm','left','ecm',50686,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,'0','$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2011-08-04 12:03:11'),(50688,'all',1,'ecm','left','ecm',50686,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,'0','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2011-08-04 12:03:11'),(50689,'all',1,'ecm','left','ecm',50686,NULL,NULL,103,'/ecm/search.php','','Search','ecm',NULL,'0','$user->rights->ecm->read','$user->rights->ecm->read',2,'2011-08-04 12:03:11'),(50690,'auguria',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2011-08-05 18:28:31'),(50691,'auguria',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2011-08-05 18:28:31'),(50692,'auguria',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2011-08-05 18:28:31'),(50694,'auguria',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:31'),(50695,'auguria',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2011-08-05 18:28:31'),(50696,'auguria',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2011-08-05 18:28:31'),(50697,'auguria',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2011-08-05 18:28:31'),(50700,'auguria',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2011-08-05 18:28:31'),(50702,'auguria',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:31'),(50703,'auguria',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2011-08-05 18:28:31'),(50789,'auguria',1,NULL,'left','home',50690,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2011-08-05 18:28:31'),(50790,'auguria',1,NULL,'left','home',50789,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50791,'auguria',1,NULL,'left','home',50789,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50792,'auguria',1,NULL,'left','home',50789,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50793,'auguria',1,NULL,'left','home',50789,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50794,'auguria',1,NULL,'left','home',50789,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50795,'auguria',1,NULL,'left','home',50789,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50797,'auguria',1,NULL,'left','home',50789,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50798,'auguria',1,NULL,'left','home',50789,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50799,'auguria',1,NULL,'left','home',50789,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:31'),(50800,'auguria',1,NULL,'left','home',50789,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50801,'auguria',1,NULL,'left','home',50789,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50802,'auguria',1,NULL,'left','home',50789,NULL,NULL,9,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2011-08-05 18:28:32'),(50889,'auguria',1,NULL,'left','home',50690,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2011-08-05 18:28:32'),(50890,'auguria',1,NULL,'left','home',50889,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50891,'auguria',1,NULL,'left','home',50890,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50892,'auguria',1,NULL,'left','home',50890,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50893,'auguria',1,NULL,'left','home',50889,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50894,'auguria',1,NULL,'left','home',50889,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50895,'auguria',1,NULL,'left','home',50889,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50896,'auguria',1,NULL,'left','home',50890,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50897,'auguria',1,NULL,'left','home',50890,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50899,'auguria',1,NULL,'left','home',50889,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50900,'auguria',1,NULL,'left','home',50899,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50901,'auguria',1,NULL,'left','home',50899,NULL,NULL,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\'system\'',2,'2011-08-05 18:28:32'),(50989,'auguria',1,NULL,'left','home',50690,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2011-08-05 18:28:32'),(50990,'auguria',1,NULL,'left','home',50989,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50991,'auguria',1,NULL,'left','home',50989,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50992,'auguria',1,NULL,'left','home',50989,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:33'),(50993,'auguria',1,NULL,'left','home',50989,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2011-08-05 18:28:32'),(50994,'auguria',1,NULL,'left','home',50989,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50995,'auguria',1,NULL,'left','home',50989,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(50996,'auguria',1,NULL,'left','home',50989,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:33'),(50997,'auguria',1,NULL,'left','home',50989,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2011-08-05 18:28:32'),(51089,'auguria',1,NULL,'left','home',50690,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2011-08-05 18:28:33'),(51090,'auguria',1,NULL,'left','home',51089,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51091,'auguria',1,NULL,'left','home',51090,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51092,'auguria',1,NULL,'left','home',51089,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51093,'auguria',1,NULL,'left','home',51092,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2011-08-05 18:28:33'),(51189,'auguria',1,NULL,'left','companies',50691,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51190,'auguria',1,NULL,'left','companies',51189,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51192,'auguria',1,NULL,'left','companies',51189,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51193,'auguria',1,NULL,'left','companies',51192,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51195,'auguria',1,NULL,'left','companies',51189,NULL,NULL,3,'/comm/prospect/prospects.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51196,'auguria',1,NULL,'left','companies',51195,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51198,'auguria',1,NULL,'left','companies',51189,NULL,NULL,4,'/comm/clients.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51199,'auguria',1,NULL,'left','companies',51198,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51289,'auguria',1,NULL,'left','companies',50691,NULL,NULL,1,'/contact/index.php?leftmenu=contacts','','ContactsAddresses','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51290,'auguria',1,NULL,'left','companies',51289,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContact','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51291,'auguria',1,NULL,'left','companies',51289,NULL,NULL,1,'/contact/index.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51293,'auguria',1,NULL,'left','companies',51291,NULL,NULL,1,'/contact/index.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51294,'auguria',1,NULL,'left','companies',51291,NULL,NULL,2,'/contact/index.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51295,'auguria',1,NULL,'left','companies',51291,NULL,NULL,3,'/contact/index.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2011-08-05 18:28:33'),(51296,'auguria',1,NULL,'left','companies',51291,NULL,NULL,4,'/contact/index.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2011-08-05 18:28:33'),(51339,'auguria',1,NULL,'left','companies',50691,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:33'),(51340,'auguria',1,NULL,'left','companies',51339,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51349,'auguria',1,NULL,'left','companies',50691,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51350,'auguria',1,NULL,'left','companies',51349,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:34'),(51789,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51790,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51791,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,1,'/comm/propal/card.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:35'),(51792,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,2,'/comm/propal/card.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51793,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,3,'/comm/propal/card.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51794,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:35'),(51795,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,5,'/comm/propal/card.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:36'),(51796,'auguria',1,NULL,'left','commercial',51791,NULL,NULL,6,'/comm/propal/card.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2011-08-05 18:28:36'),(51799,'auguria',1,NULL,'left','commercial',51789,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2011-08-05 18:28:36'),(51889,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51890,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51891,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:36'),(51892,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:36'),(51893,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:36'),(51894,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51895,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51896,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51897,'auguria',1,NULL,'left','commercial',51891,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2011-08-05 18:28:37'),(51898,'auguria',1,NULL,'left','commercial',51889,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(51989,'auguria',1,NULL,'left','commercial',50692,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2011-08-05 18:28:34'),(51990,'auguria',1,NULL,'left','commercial',51989,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2011-08-05 18:28:34'),(51991,'auguria',1,NULL,'left','commercial',51989,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2011-08-05 18:28:35'),(52089,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52090,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52091,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52092,'auguria',1,NULL,'left','commercial',52089,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2011-08-05 18:28:38'),(52093,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52094,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52095,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52096,'auguria',1,NULL,'left','commercial',52092,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2011-08-05 18:28:38'),(52189,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,8,'/fichinter/index.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52190,'auguria',1,NULL,'left','commercial',52189,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52191,'auguria',1,NULL,'left','commercial',52189,NULL,NULL,1,'/fichinter/index.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2011-08-05 18:28:38'),(52289,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52290,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52291,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52292,'auguria',1,NULL,'left','accountancy',52289,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2011-08-05 18:28:38'),(52389,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52390,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52391,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52392,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52393,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:38'),(52399,'auguria',1,NULL,'left','accountancy',52393,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2011-08-05 18:28:39'),(52400,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52401,'auguria',1,NULL,'left','accountancy',52400,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52402,'auguria',1,NULL,'left','accountancy',52400,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:40'),(52403,'auguria',1,NULL,'left','accountancy',52389,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2011-08-05 18:28:39'),(52589,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2011-08-05 18:28:39'),(52689,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2011-08-05 18:28:39'),(52690,'auguria',1,NULL,'left','accountancy',52689,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2011-08-05 18:28:39'),(52691,'auguria',1,NULL,'left','accountancy',52689,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2011-08-05 18:28:39'),(52789,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2011-08-05 18:28:39'),(52790,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52791,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52792,'auguria',1,NULL,'left','accountancy',52789,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2011-08-05 18:28:39'),(52889,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2011-08-05 18:28:39'),(52890,'auguria',1,NULL,'left','accountancy',52889,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2011-08-05 18:28:39'),(52891,'auguria',1,NULL,'left','accountancy',52890,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2011-08-05 18:28:39'),(52892,'auguria',1,NULL,'left','accountancy',52890,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2011-08-05 18:28:39'),(52989,'auguria',1,NULL,'left','accountancy',52889,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva',0,'2011-08-05 18:28:39'),(52990,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52991,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52992,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(52993,'auguria',1,NULL,'left','accountancy',52989,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $conf->compta->tva && $leftmenu==\"tax_vat\"',0,'2011-08-05 18:28:39'),(53089,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53090,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53091,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:39'),(53092,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53093,'auguria',1,NULL,'left','accountancy',53092,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53094,'auguria',1,NULL,'left','accountancy',53092,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53095,'auguria',1,NULL,'left','accountancy',53089,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53096,'auguria',1,NULL,'left','accountancy',53095,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53097,'auguria',1,NULL,'left','accountancy',53095,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2011-08-05 18:28:40'),(53189,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2011-08-05 18:28:40'),(53191,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53192,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53193,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53195,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53196,'auguria',1,NULL,'left','accountancy',53189,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2011-08-05 18:28:40'),(53289,'auguria',1,NULL,'left','accountancy',50703,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2011-08-05 18:28:41'),(53290,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53291,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53292,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53293,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53295,'auguria',1,NULL,'left','accountancy',53289,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2011-08-05 18:28:41'),(53389,'auguria',1,NULL,'left','accountancy',50695,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53390,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53391,'auguria',1,NULL,'left','accountancy',53390,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53392,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53393,'auguria',1,NULL,'left','accountancy',53392,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53394,'auguria',1,NULL,'left','accountancy',53392,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53395,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53396,'auguria',1,NULL,'left','accountancy',53389,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2011-08-05 18:28:40'),(53489,'auguria',1,NULL,'left','products',50692,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53490,'auguria',1,NULL,'left','products',53489,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53491,'auguria',1,NULL,'left','products',53489,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53492,'auguria',1,NULL,'left','products',53489,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2011-08-05 18:28:34'),(53493,'auguria',1,NULL,'left','products',53489,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2011-08-05 18:28:34'),(53589,'auguria',1,NULL,'left','products',50692,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53590,'auguria',1,NULL,'left','products',53589,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53591,'auguria',1,NULL,'left','products',53589,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2011-08-05 18:28:34'),(53592,'auguria',1,NULL,'left','products',53589,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2011-08-05 18:28:34'),(53789,'auguria',1,NULL,'left','products',50692,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53790,'auguria',1,NULL,'left','products',53789,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53791,'auguria',1,NULL,'left','products',53789,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53792,'auguria',1,NULL,'left','products',53789,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53793,'auguria',1,NULL,'left','products',53789,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2011-08-05 18:28:34'),(53889,'auguria',1,NULL,'left','products',50692,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2011-08-05 18:28:34'),(53890,'auguria',1,NULL,'left','products',53889,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2011-08-05 18:28:34'),(54289,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54290,'auguria',1,NULL,'left','project',54289,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54291,'auguria',1,NULL,'left','project',54289,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54299,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54300,'auguria',1,NULL,'left','project',54299,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54301,'auguria',1,NULL,'left','project',54299,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54389,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54390,'auguria',1,NULL,'left','project',54389,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54391,'auguria',1,NULL,'left','project',54389,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:41'),(54392,'auguria',1,NULL,'left','project',54389,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54489,'auguria',1,NULL,'left','project',50696,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54490,'auguria',1,NULL,'left','project',54489,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54491,'auguria',1,NULL,'left','project',54489,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54492,'auguria',1,NULL,'left','project',54489,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2011-08-05 18:28:42'),(54589,'auguria',1,NULL,'left','tools',50697,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2011-08-05 18:28:42'),(54590,'auguria',1,NULL,'left','tools',54589,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2011-08-05 18:28:42'),(54591,'auguria',1,NULL,'left','tools',54589,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2011-08-05 18:28:43'),(54789,'auguria',1,NULL,'left','tools',50697,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2011-08-05 18:28:43'),(54790,'auguria',1,NULL,'left','tools',54789,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2011-08-05 18:28:43'),(54819,'auguria',1,NULL,'left','tools',50697,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2011-08-05 18:28:43'),(54820,'auguria',1,NULL,'left','tools',54819,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2011-08-05 18:28:43'),(54889,'auguria',1,NULL,'left','members',50702,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:43'),(54890,'auguria',1,NULL,'left','members',54889,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2011-08-05 18:28:43'),(54891,'auguria',1,NULL,'left','members',54889,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54892,'auguria',1,NULL,'left','members',54891,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54893,'auguria',1,NULL,'left','members',54891,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54894,'auguria',1,NULL,'left','members',54891,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54895,'auguria',1,NULL,'left','members',54891,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54896,'auguria',1,NULL,'left','members',54891,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54897,'auguria',1,NULL,'left','members',54889,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members&statut=0','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54989,'auguria',1,NULL,'left','members',50702,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54990,'auguria',1,NULL,'left','members',54989,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(54991,'auguria',1,NULL,'left','members',54989,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55189,'auguria',1,NULL,'left','members',50702,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55190,'auguria',1,NULL,'left','members',55189,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2011-08-05 18:28:44'),(55191,'auguria',1,NULL,'left','members',55189,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:44'),(55192,'auguria',1,NULL,'left','members',55189,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55389,'auguria',1,NULL,'left','members',50702,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55390,'auguria',1,NULL,'left','members',55389,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55391,'auguria',1,NULL,'left','members',55389,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2011-08-05 18:28:45'),(55789,'auguria',1,NULL,'left','commercial',50694,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(55790,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled',2,'2011-08-05 18:28:37'),(55791,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:38'),(55797,'auguria',1,NULL,'left','commercial',55789,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2011-08-05 18:28:38'),(55889,'auguria',1,NULL,'left','members',50702,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:45'),(55890,'auguria',1,NULL,'left','members',55889,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2011-08-05 18:28:45'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.2.0.sql b/dev/initdemo/mysqldump_dolibarr_3.2.0.sql index 39ec25c3773..8c8473a3364 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.2.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.2.0.sql @@ -4023,7 +4023,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` (`rowid`, `menu_handler`, `entity`, `module`, `type`, `mainmenu`, `fk_menu`, `fk_leftmenu`, `fk_mainmenu`, `position`, `url`, `target`, `titre`, `langs`, `level`, `leftmenu`, `perms`, `enabled`, `usertype`, `tms`) VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-04-11 10:04:08'),(55933,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55934,'all',1,'agenda','left','agenda',55933,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55935,'all',1,'agenda','left','agenda',55934,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55936,'all',1,'agenda','left','agenda',55934,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55937,'all',1,'agenda','left','agenda',55936,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55938,'all',1,'agenda','left','agenda',55936,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55939,'all',1,'agenda','left','agenda',55936,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55940,'all',1,'agenda','left','agenda',55936,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55941,'all',1,'agenda','left','agenda',55934,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55942,'all',1,'agenda','left','agenda',55941,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55943,'all',1,'agenda','left','agenda',55941,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55944,'all',1,'agenda','left','agenda',55941,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55945,'all',1,'agenda','left','agenda',55941,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55946,'all',1,'agenda','left','agenda',55934,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55947,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2012-04-11 10:04:58'),(55948,'all',1,'ecm','left','ecm',55947,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2012-04-11 10:04:58'),(55949,'all',1,'ecm','left','ecm',55948,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2012-04-11 10:04:58'),(55950,'all',1,'ecm','left','ecm',55948,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2012-04-11 10:04:58'),(55951,'all',1,'ecm','left','ecm',55948,NULL,NULL,103,'/ecm/search.php','','Search','ecm',NULL,NULL,'$user->rights->ecm->read','$user->rights->ecm->read',2,'2012-04-11 10:04:58'),(55952,'auguria',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2012-04-11 10:04:58'),(55953,'auguria',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(55954,'auguria',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2012-04-11 10:04:58'),(55956,'auguria',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(55957,'auguria',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2012-04-11 10:04:58'),(55958,'auguria',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2012-04-11 10:04:58'),(55959,'auguria',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2012-04-11 10:04:58'),(55962,'auguria',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2012-04-11 10:04:58'),(55964,'auguria',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(55965,'auguria',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2012-04-11 10:04:58'),(56051,'auguria',1,NULL,'left','home',55952,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2012-04-11 10:04:58'),(56052,'auguria',1,NULL,'left','home',56051,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56053,'auguria',1,NULL,'left','home',56051,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56054,'auguria',1,NULL,'left','home',56051,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56055,'auguria',1,NULL,'left','home',56051,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56056,'auguria',1,NULL,'left','home',56051,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56057,'auguria',1,NULL,'left','home',56051,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56058,'auguria',1,NULL,'left','home',56051,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56059,'auguria',1,NULL,'left','home',56051,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56060,'auguria',1,NULL,'left','home',56051,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56061,'auguria',1,NULL,'left','home',56051,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56062,'auguria',1,NULL,'left','home',56051,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56063,'auguria',1,NULL,'left','home',56051,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56064,'auguria',1,NULL,'left','home',56051,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56151,'auguria',1,NULL,'left','home',55952,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'system','','$user->admin',2,'2012-04-11 10:04:58'),(56152,'auguria',1,NULL,'left','home',56151,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56153,'auguria',1,NULL,'left','home',56152,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56154,'auguria',1,NULL,'left','home',56152,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56155,'auguria',1,NULL,'left','home',56151,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56156,'auguria',1,NULL,'left','home',56151,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56157,'auguria',1,NULL,'left','home',56151,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56158,'auguria',1,NULL,'left','home',56152,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56159,'auguria',1,NULL,'left','home',56152,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56161,'auguria',1,NULL,'left','home',56151,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56162,'auguria',1,NULL,'left','home',56161,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56163,'auguria',1,NULL,'left','home',56161,NULL,NULL,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56251,'auguria',1,NULL,'left','home',55952,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2012-04-11 10:04:58'),(56252,'auguria',1,NULL,'left','home',56251,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56253,'auguria',1,NULL,'left','home',56251,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56254,'auguria',1,NULL,'left','home',56251,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56255,'auguria',1,NULL,'left','home',56251,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2012-04-11 10:04:58'),(56256,'auguria',1,NULL,'left','home',56251,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56257,'auguria',1,NULL,'left','home',56251,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56258,'auguria',1,NULL,'left','home',56251,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56259,'auguria',1,NULL,'left','home',56251,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56351,'auguria',1,NULL,'left','home',55952,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2012-04-11 10:04:58'),(56352,'auguria',1,NULL,'left','home',56351,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56353,'auguria',1,NULL,'left','home',56352,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56354,'auguria',1,NULL,'left','home',56351,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56355,'auguria',1,NULL,'left','home',56354,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56451,'auguria',1,NULL,'left','companies',55953,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56452,'auguria',1,NULL,'left','companies',56451,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56454,'auguria',1,NULL,'left','companies',56451,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56455,'auguria',1,NULL,'left','companies',56454,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56457,'auguria',1,NULL,'left','companies',56451,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56458,'auguria',1,NULL,'left','companies',56457,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56460,'auguria',1,NULL,'left','companies',56451,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56461,'auguria',1,NULL,'left','companies',56460,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56551,'auguria',1,NULL,'left','companies',55953,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56552,'auguria',1,NULL,'left','companies',56551,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56553,'auguria',1,NULL,'left','companies',56551,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56555,'auguria',1,NULL,'left','companies',56553,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56556,'auguria',1,NULL,'left','companies',56553,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56557,'auguria',1,NULL,'left','companies',56553,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56558,'auguria',1,NULL,'left','companies',56553,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56601,'auguria',1,NULL,'left','companies',55953,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56602,'auguria',1,NULL,'left','companies',56601,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56611,'auguria',1,NULL,'left','companies',55953,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56612,'auguria',1,NULL,'left','companies',56611,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(57051,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57052,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57053,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,1,'/comm/propal.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57054,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,2,'/comm/propal.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57055,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,3,'/comm/propal.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57056,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,4,'/comm/propal.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57057,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,5,'/comm/propal.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57058,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,6,'/comm/propal.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57061,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57151,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57152,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57153,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57154,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57155,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57156,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57157,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57158,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57159,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57160,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57251,'auguria',1,NULL,'left','commercial',55954,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2012-04-11 10:04:58'),(57252,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57253,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57254,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57351,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57352,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57353,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57354,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57355,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57356,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57357,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57358,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57451,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57452,'auguria',1,NULL,'left','commercial',57451,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57453,'auguria',1,NULL,'left','commercial',57451,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57551,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57552,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57553,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57554,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57555,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57651,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57652,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57653,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57654,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57655,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57661,'auguria',1,NULL,'left','accountancy',57655,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57662,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57663,'auguria',1,NULL,'left','accountancy',57662,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57664,'auguria',1,NULL,'left','accountancy',57662,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57665,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57851,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2012-04-11 10:04:58'),(57951,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2012-04-11 10:04:58'),(57952,'auguria',1,NULL,'left','accountancy',57951,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2012-04-11 10:04:58'),(57953,'auguria',1,NULL,'left','accountancy',57951,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2012-04-11 10:04:58'),(58051,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2012-04-11 10:04:58'),(58052,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58053,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58054,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58151,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2012-04-11 10:04:58'),(58152,'auguria',1,NULL,'left','accountancy',58151,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2012-04-11 10:04:58'),(58153,'auguria',1,NULL,'left','accountancy',58152,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2012-04-11 10:04:58'),(58154,'auguria',1,NULL,'left','accountancy',58152,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2012-04-11 10:04:58'),(58251,'auguria',1,NULL,'left','accountancy',58151,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2012-04-11 10:04:58'),(58252,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58253,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58254,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58255,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58351,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58352,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58353,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58354,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58355,'auguria',1,NULL,'left','accountancy',58354,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58356,'auguria',1,NULL,'left','accountancy',58354,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58357,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58358,'auguria',1,NULL,'left','accountancy',58357,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58359,'auguria',1,NULL,'left','accountancy',58357,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58451,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2012-04-11 10:04:58'),(58453,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58454,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58455,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58457,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58458,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58551,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2012-04-11 10:04:58'),(58552,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58553,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58554,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58555,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58557,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58651,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58652,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58653,'auguria',1,NULL,'left','accountancy',58652,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58654,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58655,'auguria',1,NULL,'left','accountancy',58654,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58656,'auguria',1,NULL,'left','accountancy',58654,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58657,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58658,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58751,'auguria',1,NULL,'left','products',55954,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58752,'auguria',1,NULL,'left','products',58751,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58753,'auguria',1,NULL,'left','products',58751,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58754,'auguria',1,NULL,'left','products',58751,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58755,'auguria',1,NULL,'left','products',58751,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(58851,'auguria',1,NULL,'left','products',55954,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58852,'auguria',1,NULL,'left','products',58851,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58853,'auguria',1,NULL,'left','products',58851,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58854,'auguria',1,NULL,'left','products',58851,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(59051,'auguria',1,NULL,'left','products',55954,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59052,'auguria',1,NULL,'left','products',59051,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59053,'auguria',1,NULL,'left','products',59051,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59054,'auguria',1,NULL,'left','products',59051,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59055,'auguria',1,NULL,'left','products',59051,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59151,'auguria',1,NULL,'left','products',55954,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2012-04-11 10:04:58'),(59152,'auguria',1,NULL,'left','products',59151,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2012-04-11 10:04:58'),(59551,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59552,'auguria',1,NULL,'left','project',59551,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59553,'auguria',1,NULL,'left','project',59551,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59561,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59562,'auguria',1,NULL,'left','project',59561,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59563,'auguria',1,NULL,'left','project',59561,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59651,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59652,'auguria',1,NULL,'left','project',59651,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59653,'auguria',1,NULL,'left','project',59651,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59654,'auguria',1,NULL,'left','project',59651,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59751,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59752,'auguria',1,NULL,'left','project',59751,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59753,'auguria',1,NULL,'left','project',59751,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59754,'auguria',1,NULL,'left','project',59751,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59851,'auguria',1,NULL,'left','tools',55959,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(59852,'auguria',1,NULL,'left','tools',59851,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(59853,'auguria',1,NULL,'left','tools',59851,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(60051,'auguria',1,NULL,'left','tools',55959,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2012-04-11 10:04:58'),(60052,'auguria',1,NULL,'left','tools',60051,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2012-04-11 10:04:58'),(60081,'auguria',1,NULL,'left','tools',55959,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2012-04-11 10:04:58'),(60082,'auguria',1,NULL,'left','tools',60081,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2012-04-11 10:04:58'),(60151,'auguria',1,NULL,'left','members',55964,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60152,'auguria',1,NULL,'left','members',60151,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60153,'auguria',1,NULL,'left','members',60151,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60154,'auguria',1,NULL,'left','members',60153,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60155,'auguria',1,NULL,'left','members',60153,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60156,'auguria',1,NULL,'left','members',60153,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60157,'auguria',1,NULL,'left','members',60153,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60158,'auguria',1,NULL,'left','members',60153,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60159,'auguria',1,NULL,'left','members',60151,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60251,'auguria',1,NULL,'left','members',55964,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60252,'auguria',1,NULL,'left','members',60251,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60253,'auguria',1,NULL,'left','members',60251,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60254,'auguria',1,NULL,'left','members',60251,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60451,'auguria',1,NULL,'left','members',55964,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60452,'auguria',1,NULL,'left','members',60451,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2012-04-11 10:04:58'),(60453,'auguria',1,NULL,'left','members',60451,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60454,'auguria',1,NULL,'left','members',60451,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60651,'auguria',1,NULL,'left','members',55964,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60652,'auguria',1,NULL,'left','members',60651,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60653,'auguria',1,NULL,'left','members',60651,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(61051,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61052,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61053,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61059,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61151,'auguria',1,NULL,'left','members',55964,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(61152,'auguria',1,NULL,'left','members',61151,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'); +INSERT INTO `llx_menu` (`rowid`, `menu_handler`, `entity`, `module`, `type`, `mainmenu`, `fk_menu`, `fk_leftmenu`, `fk_mainmenu`, `position`, `url`, `target`, `titre`, `langs`, `level`, `leftmenu`, `perms`, `enabled`, `usertype`, `tms`) VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-04-11 10:04:08'),(55933,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55934,'all',1,'agenda','left','agenda',55933,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55935,'all',1,'agenda','left','agenda',55934,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55936,'all',1,'agenda','left','agenda',55934,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55937,'all',1,'agenda','left','agenda',55936,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55938,'all',1,'agenda','left','agenda',55936,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55939,'all',1,'agenda','left','agenda',55936,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55940,'all',1,'agenda','left','agenda',55936,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55941,'all',1,'agenda','left','agenda',55934,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55942,'all',1,'agenda','left','agenda',55941,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55943,'all',1,'agenda','left','agenda',55941,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55944,'all',1,'agenda','left','agenda',55941,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55945,'all',1,'agenda','left','agenda',55941,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2012-04-11 10:04:58'),(55946,'all',1,'agenda','left','agenda',55934,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2012-04-11 10:04:58'),(55947,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2012-04-11 10:04:58'),(55948,'all',1,'ecm','left','ecm',55947,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2012-04-11 10:04:58'),(55949,'all',1,'ecm','left','ecm',55948,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2012-04-11 10:04:58'),(55950,'all',1,'ecm','left','ecm',55948,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2012-04-11 10:04:58'),(55951,'all',1,'ecm','left','ecm',55948,NULL,NULL,103,'/ecm/search.php','','Search','ecm',NULL,NULL,'$user->rights->ecm->read','$user->rights->ecm->read',2,'2012-04-11 10:04:58'),(55952,'auguria',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2012-04-11 10:04:58'),(55953,'auguria',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(55954,'auguria',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2012-04-11 10:04:58'),(55956,'auguria',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(55957,'auguria',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2012-04-11 10:04:58'),(55958,'auguria',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2012-04-11 10:04:58'),(55959,'auguria',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2012-04-11 10:04:58'),(55962,'auguria',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2012-04-11 10:04:58'),(55964,'auguria',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(55965,'auguria',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2012-04-11 10:04:58'),(56051,'auguria',1,NULL,'left','home',55952,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2012-04-11 10:04:58'),(56052,'auguria',1,NULL,'left','home',56051,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56053,'auguria',1,NULL,'left','home',56051,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56054,'auguria',1,NULL,'left','home',56051,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56055,'auguria',1,NULL,'left','home',56051,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56056,'auguria',1,NULL,'left','home',56051,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56057,'auguria',1,NULL,'left','home',56051,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56058,'auguria',1,NULL,'left','home',56051,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56059,'auguria',1,NULL,'left','home',56051,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56060,'auguria',1,NULL,'left','home',56051,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56061,'auguria',1,NULL,'left','home',56051,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56062,'auguria',1,NULL,'left','home',56051,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56063,'auguria',1,NULL,'left','home',56051,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56064,'auguria',1,NULL,'left','home',56051,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2012-04-11 10:04:58'),(56151,'auguria',1,NULL,'left','home',55952,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'system','','$user->admin',2,'2012-04-11 10:04:58'),(56152,'auguria',1,NULL,'left','home',56151,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56153,'auguria',1,NULL,'left','home',56152,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56154,'auguria',1,NULL,'left','home',56152,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56155,'auguria',1,NULL,'left','home',56151,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56156,'auguria',1,NULL,'left','home',56151,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56157,'auguria',1,NULL,'left','home',56151,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56158,'auguria',1,NULL,'left','home',56152,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56159,'auguria',1,NULL,'left','home',56152,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56161,'auguria',1,NULL,'left','home',56151,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56162,'auguria',1,NULL,'left','home',56161,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56163,'auguria',1,NULL,'left','home',56161,NULL,NULL,1,'/admin/system/database-tables-contraintes.php?leftmenu=system','','Constraints','admin',2,'','','$leftmenu==\'system\'',2,'2012-04-11 10:04:58'),(56251,'auguria',1,NULL,'left','home',55952,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2012-04-11 10:04:58'),(56252,'auguria',1,NULL,'left','home',56251,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56253,'auguria',1,NULL,'left','home',56251,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56254,'auguria',1,NULL,'left','home',56251,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56255,'auguria',1,NULL,'left','home',56251,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2012-04-11 10:04:58'),(56256,'auguria',1,NULL,'left','home',56251,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56257,'auguria',1,NULL,'left','home',56251,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56258,'auguria',1,NULL,'left','home',56251,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56259,'auguria',1,NULL,'left','home',56251,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2012-04-11 10:04:58'),(56351,'auguria',1,NULL,'left','home',55952,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2012-04-11 10:04:58'),(56352,'auguria',1,NULL,'left','home',56351,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56353,'auguria',1,NULL,'left','home',56352,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56354,'auguria',1,NULL,'left','home',56351,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56355,'auguria',1,NULL,'left','home',56354,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2012-04-11 10:04:58'),(56451,'auguria',1,NULL,'left','companies',55953,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56452,'auguria',1,NULL,'left','companies',56451,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56454,'auguria',1,NULL,'left','companies',56451,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56455,'auguria',1,NULL,'left','companies',56454,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56457,'auguria',1,NULL,'left','companies',56451,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56458,'auguria',1,NULL,'left','companies',56457,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56460,'auguria',1,NULL,'left','companies',56451,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56461,'auguria',1,NULL,'left','companies',56460,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56551,'auguria',1,NULL,'left','companies',55953,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56552,'auguria',1,NULL,'left','companies',56551,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56553,'auguria',1,NULL,'left','companies',56551,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56555,'auguria',1,NULL,'left','companies',56553,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56556,'auguria',1,NULL,'left','companies',56553,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56557,'auguria',1,NULL,'left','companies',56553,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(56558,'auguria',1,NULL,'left','companies',56553,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2012-04-11 10:04:58'),(56601,'auguria',1,NULL,'left','companies',55953,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56602,'auguria',1,NULL,'left','companies',56601,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56611,'auguria',1,NULL,'left','companies',55953,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(56612,'auguria',1,NULL,'left','companies',56611,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(57051,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57052,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57053,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,1,'/comm/propal/card.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57054,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,2,'/comm/propal/card.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57055,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,3,'/comm/propal/card.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57056,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57057,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,5,'/comm/propal/card.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57058,'auguria',1,NULL,'left','commercial',57053,NULL,NULL,6,'/comm/propal/card.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2012-04-11 10:04:58'),(57061,'auguria',1,NULL,'left','commercial',57051,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(57151,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57152,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57153,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57154,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57155,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57156,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57157,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57158,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57159,'auguria',1,NULL,'left','commercial',57153,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2012-04-11 10:04:58'),(57160,'auguria',1,NULL,'left','commercial',57151,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(57251,'auguria',1,NULL,'left','commercial',55954,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2012-04-11 10:04:58'),(57252,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57253,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57254,'auguria',1,NULL,'left','commercial',57251,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2012-04-11 10:04:58'),(57351,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57352,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57353,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57354,'auguria',1,NULL,'left','commercial',57351,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2012-04-11 10:04:58'),(57355,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57356,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57357,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57358,'auguria',1,NULL,'left','commercial',57354,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2012-04-11 10:04:58'),(57451,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57452,'auguria',1,NULL,'left','commercial',57451,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57453,'auguria',1,NULL,'left','commercial',57451,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2012-04-11 10:04:58'),(57551,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57552,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57553,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57554,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57555,'auguria',1,NULL,'left','accountancy',57551,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2012-04-11 10:04:58'),(57651,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/compta/facture.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57652,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57653,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57654,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57655,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57661,'auguria',1,NULL,'left','accountancy',57655,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57662,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57663,'auguria',1,NULL,'left','accountancy',57662,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57664,'auguria',1,NULL,'left','accountancy',57662,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2012-04-11 10:04:58'),(57665,'auguria',1,NULL,'left','accountancy',57651,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2012-04-11 10:04:58'),(57851,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2012-04-11 10:04:58'),(57951,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2012-04-11 10:04:58'),(57952,'auguria',1,NULL,'left','accountancy',57951,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2012-04-11 10:04:58'),(57953,'auguria',1,NULL,'left','accountancy',57951,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2012-04-11 10:04:58'),(58051,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2012-04-11 10:04:58'),(58052,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58053,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58054,'auguria',1,NULL,'left','accountancy',58051,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2012-04-11 10:04:58'),(58151,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2012-04-11 10:04:58'),(58152,'auguria',1,NULL,'left','accountancy',58151,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2012-04-11 10:04:58'),(58153,'auguria',1,NULL,'left','accountancy',58152,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2012-04-11 10:04:58'),(58154,'auguria',1,NULL,'left','accountancy',58152,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2012-04-11 10:04:58'),(58251,'auguria',1,NULL,'left','accountancy',58151,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2012-04-11 10:04:58'),(58252,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58253,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58254,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58255,'auguria',1,NULL,'left','accountancy',58251,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2012-04-11 10:04:58'),(58351,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58352,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58353,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58354,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58355,'auguria',1,NULL,'left','accountancy',58354,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58356,'auguria',1,NULL,'left','accountancy',58354,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58357,'auguria',1,NULL,'left','accountancy',58351,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58358,'auguria',1,NULL,'left','accountancy',58357,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58359,'auguria',1,NULL,'left','accountancy',58357,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2012-04-11 10:04:58'),(58451,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2012-04-11 10:04:58'),(58453,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58454,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58455,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58457,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58458,'auguria',1,NULL,'left','accountancy',58451,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2012-04-11 10:04:58'),(58551,'auguria',1,NULL,'left','accountancy',55965,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2012-04-11 10:04:58'),(58552,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58553,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58554,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58555,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58557,'auguria',1,NULL,'left','accountancy',58551,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2012-04-11 10:04:58'),(58651,'auguria',1,NULL,'left','accountancy',55957,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58652,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58653,'auguria',1,NULL,'left','accountancy',58652,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58654,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58655,'auguria',1,NULL,'left','accountancy',58654,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58656,'auguria',1,NULL,'left','accountancy',58654,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58657,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58658,'auguria',1,NULL,'left','accountancy',58651,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2012-04-11 10:04:58'),(58751,'auguria',1,NULL,'left','products',55954,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58752,'auguria',1,NULL,'left','products',58751,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58753,'auguria',1,NULL,'left','products',58751,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58754,'auguria',1,NULL,'left','products',58751,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2012-04-11 10:04:58'),(58755,'auguria',1,NULL,'left','products',58751,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(58851,'auguria',1,NULL,'left','products',55954,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58852,'auguria',1,NULL,'left','products',58851,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58853,'auguria',1,NULL,'left','products',58851,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2012-04-11 10:04:58'),(58854,'auguria',1,NULL,'left','products',58851,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2012-04-11 10:04:58'),(59051,'auguria',1,NULL,'left','products',55954,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59052,'auguria',1,NULL,'left','products',59051,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59053,'auguria',1,NULL,'left','products',59051,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59054,'auguria',1,NULL,'left','products',59051,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59055,'auguria',1,NULL,'left','products',59051,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2012-04-11 10:04:58'),(59151,'auguria',1,NULL,'left','products',55954,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2012-04-11 10:04:58'),(59152,'auguria',1,NULL,'left','products',59151,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2012-04-11 10:04:58'),(59551,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59552,'auguria',1,NULL,'left','project',59551,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59553,'auguria',1,NULL,'left','project',59551,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59561,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59562,'auguria',1,NULL,'left','project',59561,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59563,'auguria',1,NULL,'left','project',59561,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59651,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59652,'auguria',1,NULL,'left','project',59651,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59653,'auguria',1,NULL,'left','project',59651,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59654,'auguria',1,NULL,'left','project',59651,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59751,'auguria',1,NULL,'left','project',55958,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59752,'auguria',1,NULL,'left','project',59751,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59753,'auguria',1,NULL,'left','project',59751,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59754,'auguria',1,NULL,'left','project',59751,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2012-04-11 10:04:58'),(59851,'auguria',1,NULL,'left','tools',55959,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(59852,'auguria',1,NULL,'left','tools',59851,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(59853,'auguria',1,NULL,'left','tools',59851,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2012-04-11 10:04:58'),(60051,'auguria',1,NULL,'left','tools',55959,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2012-04-11 10:04:58'),(60052,'auguria',1,NULL,'left','tools',60051,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2012-04-11 10:04:58'),(60081,'auguria',1,NULL,'left','tools',55959,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2012-04-11 10:04:58'),(60082,'auguria',1,NULL,'left','tools',60081,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2012-04-11 10:04:58'),(60151,'auguria',1,NULL,'left','members',55964,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60152,'auguria',1,NULL,'left','members',60151,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60153,'auguria',1,NULL,'left','members',60151,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60154,'auguria',1,NULL,'left','members',60153,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60155,'auguria',1,NULL,'left','members',60153,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60156,'auguria',1,NULL,'left','members',60153,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60157,'auguria',1,NULL,'left','members',60153,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60158,'auguria',1,NULL,'left','members',60153,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60159,'auguria',1,NULL,'left','members',60151,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60251,'auguria',1,NULL,'left','members',55964,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60252,'auguria',1,NULL,'left','members',60251,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60253,'auguria',1,NULL,'left','members',60251,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60254,'auguria',1,NULL,'left','members',60251,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60451,'auguria',1,NULL,'left','members',55964,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60452,'auguria',1,NULL,'left','members',60451,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2012-04-11 10:04:58'),(60453,'auguria',1,NULL,'left','members',60451,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60454,'auguria',1,NULL,'left','members',60451,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60651,'auguria',1,NULL,'left','members',55964,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60652,'auguria',1,NULL,'left','members',60651,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(60653,'auguria',1,NULL,'left','members',60651,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2012-04-11 10:04:58'),(61051,'auguria',1,NULL,'left','commercial',55956,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61052,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61053,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61059,'auguria',1,NULL,'left','commercial',61051,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2012-04-11 10:04:58'),(61151,'auguria',1,NULL,'left','members',55964,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'),(61152,'auguria',1,NULL,'left','members',61151,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2012-04-11 10:04:58'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.4.0.sql b/dev/initdemo/mysqldump_dolibarr_3.4.0.sql index e272f527b99..cc95acd7832 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.4.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.4.0.sql @@ -4386,7 +4386,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87303,'all',1,'filemanager','top','filemanager',0,NULL,NULL,100,'/filemanager/index.php','','FileManager','filemanager@filemanager',NULL,NULL,'$user->rights->filemanager->read','$conf->filemanager->enabled',2,'2013-01-02 20:33:20'),(87304,'all',1,'holiday','top','holiday',0,NULL,NULL,100,'/holiday/index.php','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-01-02 20:33:24'),(87305,'all',1,'holiday','left','holiday',-1,NULL,'holiday',100,'/holiday/index.php?mainmenu=holiday&leftmenu=holiday','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-01-02 20:33:24'),(87306,'all',1,'holiday','left','holiday',-1,'holiday','holiday',101,'/holiday/fiche.php?mainmenu=holiday&action=request','','MenuAddCP','holiday',NULL,'holiday_add','$user->rights->holiday->write','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87307,'all',1,'holiday','left','holiday',-1,'holiday','holiday',102,'/holiday/define_holiday.php?mainmenu=holiday&action=request','','MenuConfCP','holiday',NULL,'holiday_conf','$user->rights->holiday->define_holiday','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87308,'all',1,'holiday','left','holiday_def',-1,'holiday','holiday',103,'/holiday/view_log.php?mainmenu=holiday&action=request','','MenuLogCP','holiday',NULL,'holiday','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87309,'all',1,'holiday','left','holiday',-1,'holiday','holiday',104,'/holiday/month_report.php?mainmenu=holiday&action=request','','MenuReportMonth','holiday',NULL,'holiday_report','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87329,'all',1,'ovh','left','home',-1,'modulesadmintools','home',100,'/ovh/importovhinvoice.php','','OvhInvoiceImportShort','ovh@ovh',NULL,NULL,'1','$leftmenu==\'modulesadmintools\'',2,'2013-01-12 13:36:29'),(87354,'all',1,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-01-19 17:16:10'),(87355,'all',1,'pos','left','pos',87354,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87356,'all',1,'pos','left','pos',87355,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87357,'all',1,'pos','left','pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87358,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87359,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87360,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87361,'all',1,'pos','left','pos',87354,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87362,'all',1,'pos','left','pos',87361,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87363,'all',1,'pos','left','pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87364,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87365,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87366,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87367,'all',1,'pos','left','@pos',87354,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-01-19 17:16:10'),(87368,'all',1,'pos','left','@pos',87367,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-01-19 17:16:10'),(87369,'all',1,'pos','left','@pos',87367,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87370,'all',1,'pos','left','@pos',87354,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87371,'all',1,'pos','left','@pos',87370,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87372,'all',1,'pos','left','@pos',87370,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87373,'all',1,'pos','left','@pos',87369,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87374,'all',1,'pos','left','@pos',87369,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87375,'all',1,'pos','left','@pos',87354,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-01-19 17:16:10'),(87376,'all',1,'pos','left','@pos',87354,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87377,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87378,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87379,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87398,'all',2,'holiday','top','holiday',0,NULL,NULL,100,'/holiday/index.php','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-02-01 08:52:34'),(87399,'all',2,'holiday','left','holiday',-1,NULL,'holiday',100,'/holiday/index.php?mainmenu=holiday&leftmenu=holiday','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-02-01 08:52:34'),(87400,'all',2,'holiday','left','holiday',-1,'holiday','holiday',101,'/holiday/fiche.php?mainmenu=holiday&action=request','','MenuAddCP','holiday',NULL,'holiday_add','$user->rights->holiday->write','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87401,'all',2,'holiday','left','holiday',-1,'holiday','holiday',102,'/holiday/define_holiday.php?mainmenu=holiday&action=request','','MenuConfCP','holiday',NULL,'holiday_conf','$user->rights->holiday->define_holiday','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87402,'all',2,'holiday','left','holiday_def',-1,'holiday','holiday',103,'/holiday/view_log.php?mainmenu=holiday&action=request','','MenuLogCP','holiday',NULL,'holiday','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87403,'all',2,'holiday','left','holiday',-1,'holiday','holiday',104,'/holiday/month_report.php?mainmenu=holiday&action=request','','MenuReportMonth','holiday',NULL,'holiday_report','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103058,'all',1,'submiteverywhere','left','tools',-1,NULL,'tools',100,'/submiteverywhere/index.php','','Submit Everywhere home','submiteverywhere@submiteverywhere',NULL,'submiteverywhere','1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103059,'all',1,'submiteverywhere','left','tools',-1,'submiteverywhere','tools',110,'/submiteverywhere/card.php?action=create','','NewMessage','submiteverywhere@submiteverywhere',NULL,NULL,'1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103060,'all',1,'submiteverywhere','left','tools',-1,'submiteverywhere','tools',120,'/submiteverywhere/list.php','','List','submiteverywhere@submiteverywhere',NULL,NULL,'1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103061,'all',1,'scanner','top','scanner',0,NULL,NULL,100,'/scanner/index.php','','Scanner','scanner@scanner',NULL,NULL,'1','$conf->scanner->enabled',2,'2013-03-06 21:53:12'),(103086,'all',1,'nltechno','top','nltechno',0,NULL,NULL,200,'/nltechno/index.php','','Admin NLTechno','',NULL,NULL,'$user->rights->nltechno->liens->voir||$user->rights->nltechno->annonces->voir||$user->rights->nltechno->emailings->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103087,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,200,'/nltechno/index.php','','Liens externes','',NULL,NULL,'$user->rights->nltechno->liens->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103088,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,201,'/nltechno/statsannonces.php','','Outils Petites annonces','',NULL,NULL,'$user->rights->nltechno->annonces->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103089,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,202,'/nltechno/statsemailings.php','','Outils EMailings','',NULL,NULL,'$user->rights->nltechno->emailings->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103090,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,300,'/nltechno/dolicloud/dolicloud_customers.php','','DoliCloud','nltechno@nltechno',NULL,'dolicloud','$user->rights->nltechno->dolicloud->read','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103091,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',200,'/nltechno/dolicloud/dolicloud_list.php','','List','',NULL,'dolicloud_list','$user->rights->nltechno->dolicloud->read','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103092,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',210,'/nltechno/dolicloud/dolicloud_card.php?action=create','','New','',NULL,'dolicloud_create','$user->rights->nltechno->dolicloud->write','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103093,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',220,'/nltechno/dolicloud/dolicloudemailstemplates_page.php?action=list','','EMailsTemplates','nltechno@nltechno',NULL,'dolicloud_emailstemplates','$user->rights->nltechno->dolicloud->write','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108367,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108368,'all',1,'agenda','left','agenda',108367,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108369,'all',1,'agenda','left','agenda',108368,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108370,'all',1,'agenda','left','agenda',108368,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108371,'all',1,'agenda','left','agenda',108370,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108372,'all',1,'agenda','left','agenda',108370,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108373,'all',1,'agenda','left','agenda',108370,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108374,'all',1,'agenda','left','agenda',108370,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108375,'all',1,'agenda','left','agenda',108368,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108376,'all',1,'agenda','left','agenda',108375,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108377,'all',1,'agenda','left','agenda',108375,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108378,'all',1,'agenda','left','agenda',108375,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108379,'all',1,'agenda','left','agenda',108375,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108380,'all',1,'agenda','left','agenda',108368,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108381,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2013-09-09 17:27:53'),(108382,'all',1,'ecm','left','ecm',108381,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2013-09-09 17:27:53'),(108383,'all',1,'ecm','left','ecm',108382,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2013-09-09 17:27:53'),(108384,'all',1,'ecm','left','ecm',108382,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2013-09-09 17:27:53'),(108385,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108386,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108387,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108388,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87303,'all',1,'filemanager','top','filemanager',0,NULL,NULL,100,'/filemanager/index.php','','FileManager','filemanager@filemanager',NULL,NULL,'$user->rights->filemanager->read','$conf->filemanager->enabled',2,'2013-01-02 20:33:20'),(87304,'all',1,'holiday','top','holiday',0,NULL,NULL,100,'/holiday/index.php','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-01-02 20:33:24'),(87305,'all',1,'holiday','left','holiday',-1,NULL,'holiday',100,'/holiday/index.php?mainmenu=holiday&leftmenu=holiday','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-01-02 20:33:24'),(87306,'all',1,'holiday','left','holiday',-1,'holiday','holiday',101,'/holiday/fiche.php?mainmenu=holiday&action=request','','MenuAddCP','holiday',NULL,'holiday_add','$user->rights->holiday->write','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87307,'all',1,'holiday','left','holiday',-1,'holiday','holiday',102,'/holiday/define_holiday.php?mainmenu=holiday&action=request','','MenuConfCP','holiday',NULL,'holiday_conf','$user->rights->holiday->define_holiday','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87308,'all',1,'holiday','left','holiday_def',-1,'holiday','holiday',103,'/holiday/view_log.php?mainmenu=holiday&action=request','','MenuLogCP','holiday',NULL,'holiday','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87309,'all',1,'holiday','left','holiday',-1,'holiday','holiday',104,'/holiday/month_report.php?mainmenu=holiday&action=request','','MenuReportMonth','holiday',NULL,'holiday_report','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-01-02 20:33:24'),(87329,'all',1,'ovh','left','home',-1,'modulesadmintools','home',100,'/ovh/importovhinvoice.php','','OvhInvoiceImportShort','ovh@ovh',NULL,NULL,'1','$leftmenu==\'modulesadmintools\'',2,'2013-01-12 13:36:29'),(87354,'all',1,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-01-19 17:16:10'),(87355,'all',1,'pos','left','pos',87354,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87356,'all',1,'pos','left','pos',87355,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87357,'all',1,'pos','left','pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87358,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87359,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87360,'all',1,'pos','left','@pos',87356,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-01-19 17:16:10'),(87361,'all',1,'pos','left','pos',87354,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87362,'all',1,'pos','left','pos',87361,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87363,'all',1,'pos','left','pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87364,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87365,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87366,'all',1,'pos','left','@pos',87362,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87367,'all',1,'pos','left','@pos',87354,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-01-19 17:16:10'),(87368,'all',1,'pos','left','@pos',87367,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-01-19 17:16:10'),(87369,'all',1,'pos','left','@pos',87367,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87370,'all',1,'pos','left','@pos',87354,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87371,'all',1,'pos','left','@pos',87370,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87372,'all',1,'pos','left','@pos',87370,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87373,'all',1,'pos','left','@pos',87369,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87374,'all',1,'pos','left','@pos',87369,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-01-19 17:16:10'),(87375,'all',1,'pos','left','@pos',87354,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-01-19 17:16:10'),(87376,'all',1,'pos','left','@pos',87354,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87377,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87378,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87379,'all',1,'pos','left','@pos',87376,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-01-19 17:16:10'),(87398,'all',2,'holiday','top','holiday',0,NULL,NULL,100,'/holiday/index.php','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-02-01 08:52:34'),(87399,'all',2,'holiday','left','holiday',-1,NULL,'holiday',100,'/holiday/index.php?mainmenu=holiday&leftmenu=holiday','','CPTitreMenu','holiday',NULL,'holiday','$user->rights->holiday->write','1',2,'2013-02-01 08:52:34'),(87400,'all',2,'holiday','left','holiday',-1,'holiday','holiday',101,'/holiday/fiche.php?mainmenu=holiday&action=request','','MenuAddCP','holiday',NULL,'holiday_add','$user->rights->holiday->write','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87401,'all',2,'holiday','left','holiday',-1,'holiday','holiday',102,'/holiday/define_holiday.php?mainmenu=holiday&action=request','','MenuConfCP','holiday',NULL,'holiday_conf','$user->rights->holiday->define_holiday','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87402,'all',2,'holiday','left','holiday_def',-1,'holiday','holiday',103,'/holiday/view_log.php?mainmenu=holiday&action=request','','MenuLogCP','holiday',NULL,'holiday','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87403,'all',2,'holiday','left','holiday',-1,'holiday','holiday',104,'/holiday/month_report.php?mainmenu=holiday&action=request','','MenuReportMonth','holiday',NULL,'holiday_report','$user->rights->holiday->view_log','$conf->holiday->enabled',2,'2013-02-01 08:52:34'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103058,'all',1,'submiteverywhere','left','tools',-1,NULL,'tools',100,'/submiteverywhere/index.php','','Submit Everywhere home','submiteverywhere@submiteverywhere',NULL,'submiteverywhere','1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103059,'all',1,'submiteverywhere','left','tools',-1,'submiteverywhere','tools',110,'/submiteverywhere/card.php?action=create','','NewMessage','submiteverywhere@submiteverywhere',NULL,NULL,'1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103060,'all',1,'submiteverywhere','left','tools',-1,'submiteverywhere','tools',120,'/submiteverywhere/list.php','','List','submiteverywhere@submiteverywhere',NULL,NULL,'1','$conf->submiteverywhere->enabled',0,'2013-03-04 22:55:41'),(103061,'all',1,'scanner','top','scanner',0,NULL,NULL,100,'/scanner/index.php','','Scanner','scanner@scanner',NULL,NULL,'1','$conf->scanner->enabled',2,'2013-03-06 21:53:12'),(103086,'all',1,'nltechno','top','nltechno',0,NULL,NULL,200,'/nltechno/index.php','','Admin NLTechno','',NULL,NULL,'$user->rights->nltechno->liens->voir||$user->rights->nltechno->annonces->voir||$user->rights->nltechno->emailings->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103087,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,200,'/nltechno/index.php','','Liens externes','',NULL,NULL,'$user->rights->nltechno->liens->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103088,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,201,'/nltechno/statsannonces.php','','Outils Petites annonces','',NULL,NULL,'$user->rights->nltechno->annonces->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103089,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,202,'/nltechno/statsemailings.php','','Outils EMailings','',NULL,NULL,'$user->rights->nltechno->emailings->voir','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103090,'all',1,'nltechno','left','nltechno',103086,NULL,NULL,300,'/nltechno/dolicloud/dolicloud_customers.php','','DoliCloud','nltechno@nltechno',NULL,'dolicloud','$user->rights->nltechno->dolicloud->read','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103091,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',200,'/nltechno/dolicloud/dolicloud_list.php','','List','',NULL,'dolicloud_list','$user->rights->nltechno->dolicloud->read','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103092,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',210,'/nltechno/dolicloud/dolicloud_card.php?action=create','','New','',NULL,'dolicloud_create','$user->rights->nltechno->dolicloud->write','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103093,'all',1,'nltechno','left','nltechno',-1,'dolicloud','nltechno',220,'/nltechno/dolicloud/dolicloudemailstemplates_page.php?action=list','','EMailsTemplates','nltechno@nltechno',NULL,'dolicloud_emailstemplates','$user->rights->nltechno->dolicloud->write','$conf->nltechno->enabled',0,'2013-03-13 10:04:46'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108367,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108368,'all',1,'agenda','left','agenda',108367,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108369,'all',1,'agenda','left','agenda',108368,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108370,'all',1,'agenda','left','agenda',108368,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108371,'all',1,'agenda','left','agenda',108370,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108372,'all',1,'agenda','left','agenda',108370,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108373,'all',1,'agenda','left','agenda',108370,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108374,'all',1,'agenda','left','agenda',108370,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108375,'all',1,'agenda','left','agenda',108368,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108376,'all',1,'agenda','left','agenda',108375,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108377,'all',1,'agenda','left','agenda',108375,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108378,'all',1,'agenda','left','agenda',108375,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108379,'all',1,'agenda','left','agenda',108375,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-09-09 17:27:53'),(108380,'all',1,'agenda','left','agenda',108368,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-09-09 17:27:53'),(108381,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2013-09-09 17:27:53'),(108382,'all',1,'ecm','left','ecm',108381,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2013-09-09 17:27:53'),(108383,'all',1,'ecm','left','ecm',108382,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2013-09-09 17:27:53'),(108384,'all',1,'ecm','left','ecm',108382,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2013-09-09 17:27:53'),(108385,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108386,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108387,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'),(108388,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-09-09 17:28:14'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.5.0.sql b/dev/initdemo/mysqldump_dolibarr_3.5.0.sql index 48d82c71998..dba6263dde3 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.5.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.5.0.sql @@ -4651,7 +4651,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87303,'all',1,'filemanager','top','filemanager',0,NULL,NULL,100,'/filemanager/index.php','','FileManager','filemanager@filemanager',NULL,NULL,'$user->rights->filemanager->read','$conf->filemanager->enabled',2,'2013-01-02 20:33:20'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108363,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108364,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108365,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108366,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108439,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108440,'all',1,'agenda','left','agenda',108439,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108441,'all',1,'agenda','left','agenda',108440,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108442,'all',1,'agenda','left','agenda',108440,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108443,'all',1,'agenda','left','agenda',108442,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108444,'all',1,'agenda','left','agenda',108442,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108445,'all',1,'agenda','left','agenda',108442,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108446,'all',1,'agenda','left','agenda',108442,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108447,'all',1,'agenda','left','agenda',108440,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108448,'all',1,'agenda','left','agenda',108447,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108449,'all',1,'agenda','left','agenda',108447,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108450,'all',1,'agenda','left','agenda',108447,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108451,'all',1,'agenda','left','agenda',108447,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108452,'all',1,'agenda','left','agenda',108440,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108453,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-04-05 14:19:22'),(108454,'all',1,'ecm','left','ecm',108453,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-04-05 14:19:22'),(108455,'all',1,'ecm','left','ecm',108454,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2014-04-05 14:19:22'),(108456,'all',1,'ecm','left','ecm',108454,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-04-05 14:19:22'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87303,'all',1,'filemanager','top','filemanager',0,NULL,NULL,100,'/filemanager/index.php','','FileManager','filemanager@filemanager',NULL,NULL,'$user->rights->filemanager->read','$conf->filemanager->enabled',2,'2013-01-02 20:33:20'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108363,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108364,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108365,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108366,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108439,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108440,'all',1,'agenda','left','agenda',108439,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108441,'all',1,'agenda','left','agenda',108440,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108442,'all',1,'agenda','left','agenda',108440,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108443,'all',1,'agenda','left','agenda',108442,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108444,'all',1,'agenda','left','agenda',108442,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108445,'all',1,'agenda','left','agenda',108442,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108446,'all',1,'agenda','left','agenda',108442,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108447,'all',1,'agenda','left','agenda',108440,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108448,'all',1,'agenda','left','agenda',108447,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108449,'all',1,'agenda','left','agenda',108447,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108450,'all',1,'agenda','left','agenda',108447,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108451,'all',1,'agenda','left','agenda',108447,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-04-05 14:19:21'),(108452,'all',1,'agenda','left','agenda',108440,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-04-05 14:19:21'),(108453,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-04-05 14:19:22'),(108454,'all',1,'ecm','left','ecm',108453,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-04-05 14:19:22'),(108455,'all',1,'ecm','left','ecm',108454,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2014-04-05 14:19:22'),(108456,'all',1,'ecm','left','ecm',108454,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-04-05 14:19:22'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.6.0.sql b/dev/initdemo/mysqldump_dolibarr_3.6.0.sql index e0a55acc8e2..4e4691e9412 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.6.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.6.0.sql @@ -4686,7 +4686,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108363,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108364,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108365,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108366,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108439,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108440,'all',1,'agenda','left','agenda',108439,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108441,'all',1,'agenda','left','agenda',108440,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108442,'all',1,'agenda','left','agenda',108440,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108443,'all',1,'agenda','left','agenda',108442,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108444,'all',1,'agenda','left','agenda',108442,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108445,'all',1,'agenda','left','agenda',108442,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108446,'all',1,'agenda','left','agenda',108442,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108447,'all',1,'agenda','left','agenda',108440,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108448,'all',1,'agenda','left','agenda',108447,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108449,'all',1,'agenda','left','agenda',108447,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108450,'all',1,'agenda','left','agenda',108447,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108451,'all',1,'agenda','left','agenda',108447,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108452,'all',1,'agenda','left','agenda',108440,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108453,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-03-02 15:19:46'),(108454,'all',1,'ecm','left','ecm',108453,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-03-02 15:19:46'),(108455,'all',1,'ecm','left','ecm',108454,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2014-03-02 15:19:46'),(108456,'all',1,'ecm','left','ecm',108454,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-03-02 15:19:46'),(108457,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=home&leftmenu=modulesadmintools','','BarCodePrintsheet','products',NULL,'barcodeprint','1','$conf->barcode->enabled',2,'2014-03-02 15:37:26'),(108458,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'1','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2014-03-02 15:37:26'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/liste.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/fiche.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/liste.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/liste.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/liste.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/liste.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/liste.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/liste.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/liste.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/liste.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/liste.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/fiche.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103172,'auguria',1,'boutique','top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/fiche.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/fiche.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/liste.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/fiche.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/fiche.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/fiche.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/liste.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/liste.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/liste.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/liste.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/liste.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/liste.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/fiche.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/liste.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/liste.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/fiche.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/fiche.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/liste.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/fiche.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/liste.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/liste.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/fiche.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/liste.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/fiche.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/fiche.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/liste.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/fiche.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/liste.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/liste.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/fiche.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/fiche.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/liste.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/fiche.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/liste.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/fiche.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/liste.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/fiche.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/liste.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/fiche.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/liste.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/fiche.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/liste.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/fiche.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/liste.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/liste.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/liste.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/liste.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/liste.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/liste.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/liste.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/fiche.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108363,'all',1,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey@opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108364,'all',1,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108365,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php?origin=dolibarr','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108366,'all',1,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-24 02:57:18'),(108439,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108440,'all',1,'agenda','left','agenda',108439,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108441,'all',1,'agenda','left','agenda',108440,NULL,NULL,101,'/comm/action/fiche.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108442,'all',1,'agenda','left','agenda',108440,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108443,'all',1,'agenda','left','agenda',108442,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108444,'all',1,'agenda','left','agenda',108442,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108445,'all',1,'agenda','left','agenda',108442,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108446,'all',1,'agenda','left','agenda',108442,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108447,'all',1,'agenda','left','agenda',108440,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108448,'all',1,'agenda','left','agenda',108447,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108449,'all',1,'agenda','left','agenda',108447,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108450,'all',1,'agenda','left','agenda',108447,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108451,'all',1,'agenda','left','agenda',108447,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-03-02 15:19:46'),(108452,'all',1,'agenda','left','agenda',108440,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-03-02 15:19:46'),(108453,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-03-02 15:19:46'),(108454,'all',1,'ecm','left','ecm',108453,NULL,NULL,101,'/ecm/index.php','','ECMArea','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-03-02 15:19:46'),(108455,'all',1,'ecm','left','ecm',108454,NULL,NULL,100,'/ecm/docdir.php?action=create','','ECMNewSection','ecm',NULL,NULL,'$user->rights->ecm->setup','$user->rights->ecm->setup',2,'2014-03-02 15:19:46'),(108456,'all',1,'ecm','left','ecm',108454,NULL,NULL,102,'/ecm/index.php?action=file_manager','','ECMFileManager','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-03-02 15:19:46'),(108457,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=home&leftmenu=modulesadmintools','','BarCodePrintsheet','products',NULL,'barcodeprint','1','$conf->barcode->enabled',2,'2014-03-02 15:37:26'),(108458,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'1','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2014-03-02 15:37:26'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.7.0.sql b/dev/initdemo/mysqldump_dolibarr_3.7.0.sql index d560b93510e..c691e68a4f2 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.7.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.7.0.sql @@ -4965,7 +4965,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108457,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=home&leftmenu=modulesadmintools','','BarCodePrintsheet','products',NULL,'barcodeprint','1','$conf->barcode->enabled',2,'2014-03-02 15:37:26'),(108458,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'1','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2014-03-02 15:37:26'),(108459,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108460,'all',1,'agenda','left','agenda',108459,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108461,'all',1,'agenda','left','agenda',108460,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108462,'all',1,'agenda','left','agenda',108460,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108463,'all',1,'agenda','left','agenda',108462,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108464,'all',1,'agenda','left','agenda',108462,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108465,'all',1,'agenda','left','agenda',108462,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108466,'all',1,'agenda','left','agenda',108462,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108467,'all',1,'agenda','left','agenda',108460,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108468,'all',1,'agenda','left','agenda',108467,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108469,'all',1,'agenda','left','agenda',108467,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108470,'all',1,'agenda','left','agenda',108467,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108471,'all',1,'agenda','left','agenda',108467,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108472,'all',1,'agenda','left','agenda',108460,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108473,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-12-21 12:51:28'),(108474,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108475,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108476,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108477,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'),(108478,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'),(108479,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103160,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=1','','CronListActive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103161,'all',1,'cron','left','home',-1,'modulesadmintools','home',201,'/cron/list.php?status=0','','CronListInactive','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2013-03-23 17:24:25'),(103162,'auguria',1,'','top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-03-24 02:31:47'),(103163,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103164,'auguria',1,'product|service','top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-03-24 02:31:47'),(103166,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103167,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax','top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled',2,'2013-03-24 02:31:47'),(103168,'auguria',1,'projet','top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(103169,'auguria',1,'mailing|export|import','top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-03-24 02:31:47'),(103174,'auguria',1,'adherent','top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:47'),(103175,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2013-03-24 02:31:47'),(103261,'auguria',1,'','left','home',103162,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2013-03-24 02:31:47'),(103262,'auguria',1,'','left','home',103261,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103263,'auguria',1,'','left','home',103261,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103264,'auguria',1,'','left','home',103261,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103265,'auguria',1,'','left','home',103261,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103266,'auguria',1,'','left','home',103261,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103267,'auguria',1,'','left','home',103261,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103268,'auguria',1,'','left','home',103261,NULL,NULL,9,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103269,'auguria',1,'','left','home',103261,NULL,NULL,7,'/admin/proxy.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103270,'auguria',1,'','left','home',103261,NULL,NULL,10,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103271,'auguria',1,'','left','home',103261,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103272,'auguria',1,'','left','home',103261,NULL,NULL,12,'/admin/dict.php?leftmenu=setup','','DictionnarySetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103273,'auguria',1,'','left','home',103261,NULL,NULL,13,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103274,'auguria',1,'','left','home',103261,NULL,NULL,11,'/admin/sms.php?leftmenu=setup','','Sms','admin',1,'','','$leftmenu==\'setup\'',2,'2013-03-24 02:31:47'),(103362,'auguria',1,'','left','home',103461,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103364,'auguria',1,'','left','home',103461,NULL,NULL,13,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103365,'auguria',1,'','left','home',103461,NULL,NULL,1,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103366,'auguria',1,'','left','home',103461,NULL,NULL,2,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103367,'auguria',1,'','left','home',103461,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103368,'auguria',1,'','left','home',103362,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103369,'auguria',1,'','left','home',103362,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103371,'auguria',1,'','left','home',103461,NULL,NULL,4,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103461,'auguria',1,'','left','home',103162,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2013-03-24 02:31:47'),(103462,'auguria',1,'','left','home',103461,NULL,NULL,5,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103463,'auguria',1,'','left','home',103461,NULL,NULL,6,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103464,'auguria',1,'','left','home',103461,NULL,NULL,11,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103465,'auguria',1,'','left','home',103461,NULL,NULL,8,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\'admintools\' && function_exists(\'eaccelerator_info\')',2,'2013-03-24 02:31:47'),(103466,'auguria',1,'','left','home',103461,NULL,NULL,7,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103467,'auguria',1,'','left','home',103461,NULL,NULL,9,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103468,'auguria',1,'','left','home',103461,NULL,NULL,12,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103469,'auguria',1,'','left','home',103461,NULL,NULL,10,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\'admintools\'',2,'2013-03-24 02:31:47'),(103561,'auguria',1,'','left','home',103162,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2013-03-24 02:31:47'),(103562,'auguria',1,'','left','home',103561,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103563,'auguria',1,'','left','home',103562,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103564,'auguria',1,'','left','home',103561,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103565,'auguria',1,'','left','home',103564,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\'users\'',2,'2013-03-24 02:31:47'),(103661,'auguria',1,'','left','companies',103163,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103662,'auguria',1,'','left','companies',103661,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103664,'auguria',1,'','left','companies',103661,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103665,'auguria',1,'','left','companies',103664,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103667,'auguria',1,'','left','companies',103661,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103668,'auguria',1,'','left','companies',103667,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103670,'auguria',1,'','left','companies',103661,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103671,'auguria',1,'','left','companies',103670,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103761,'auguria',1,'','left','companies',103163,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103762,'auguria',1,'','left','companies',103761,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103763,'auguria',1,'','left','companies',103761,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103765,'auguria',1,'','left','companies',103763,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103766,'auguria',1,'','left','companies',103763,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103767,'auguria',1,'','left','companies',103763,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(103768,'auguria',1,'','left','companies',103763,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-03-24 02:31:47'),(103811,'auguria',1,'','left','companies',103163,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103812,'auguria',1,'','left','companies',103811,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103821,'auguria',1,'','left','companies',103163,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(103822,'auguria',1,'','left','companies',103821,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:47'),(104261,'auguria',1,'','left','commercial',103166,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104262,'auguria',1,'','left','commercial',104261,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104263,'auguria',1,'','left','commercial',104261,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104264,'auguria',1,'','left','commercial',104263,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104265,'auguria',1,'','left','commercial',104263,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104266,'auguria',1,'','left','commercial',104263,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104267,'auguria',1,'','left','commercial',104263,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104268,'auguria',1,'','left','commercial',104263,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-03-24 02:31:47'),(104271,'auguria',1,'','left','commercial',104261,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(104361,'auguria',1,'','left','commercial',103166,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104362,'auguria',1,'','left','commercial',104361,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104363,'auguria',1,'','left','commercial',104361,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104364,'auguria',1,'','left','commercial',104363,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104365,'auguria',1,'','left','commercial',104363,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104366,'auguria',1,'','left','commercial',104363,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104367,'auguria',1,'','left','commercial',104363,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104368,'auguria',1,'','left','commercial',104363,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104369,'auguria',1,'','left','commercial',104363,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-03-24 02:31:47'),(104370,'auguria',1,'','left','commercial',104361,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-03-24 02:31:47'),(104461,'auguria',1,'','left','commercial',103164,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-03-24 02:31:47'),(104462,'auguria',1,'','left','commercial',104461,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104463,'auguria',1,'','left','commercial',104461,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104464,'auguria',1,'','left','commercial',104461,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-03-24 02:31:47'),(104561,'auguria',1,'','left','commercial',103166,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104562,'auguria',1,'','left','commercial',104561,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104563,'auguria',1,'','left','commercial',104561,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104564,'auguria',1,'','left','commercial',104561,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-03-24 02:31:47'),(104565,'auguria',1,'','left','commercial',104564,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104566,'auguria',1,'','left','commercial',104564,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104567,'auguria',1,'','left','commercial',104564,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104568,'auguria',1,'','left','commercial',104564,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-03-24 02:31:47'),(104661,'auguria',1,'','left','commercial',103166,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104662,'auguria',1,'','left','commercial',104661,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104663,'auguria',1,'','left','commercial',104661,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-03-24 02:31:47'),(104761,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104762,'auguria',1,'','left','accountancy',104761,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104763,'auguria',1,'','left','accountancy',104761,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104764,'auguria',1,'','left','accountancy',104761,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104765,'auguria',1,'','left','accountancy',104761,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(104861,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104862,'auguria',1,'','left','accountancy',104861,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104863,'auguria',1,'','left','accountancy',104861,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104864,'auguria',1,'','left','accountancy',104861,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104865,'auguria',1,'','left','accountancy',104861,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104871,'auguria',1,'','left','accountancy',104865,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(104872,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104873,'auguria',1,'','left','accountancy',104872,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104874,'auguria',1,'','left','accountancy',104872,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-03-24 02:31:47'),(104875,'auguria',1,'','left','accountancy',104861,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2013-03-24 02:31:47'),(105061,'auguria',1,'','left','accountancy',103167,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-03-24 02:31:47'),(105161,'auguria',1,'','left','accountancy',103167,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2013-03-24 02:31:47'),(105162,'auguria',1,'','left','accountancy',105161,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105163,'auguria',1,'','left','accountancy',105161,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-03-24 02:31:47'),(105261,'auguria',1,'','left','accountancy',103167,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-03-24 02:31:47'),(105262,'auguria',1,'','left','accountancy',105261,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105263,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105264,'auguria',1,'','left','accountancy',105261,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-03-24 02:31:47'),(105361,'auguria',1,'','left','accountancy',103167,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'tax','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105362,'auguria',1,'','left','accountancy',105361,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-03-24 02:31:47'),(105363,'auguria',1,'','left','accountancy',105362,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105364,'auguria',1,'','left','accountancy',105362,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-03-24 02:31:47'),(105461,'auguria',1,'','left','accountancy',105361,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-03-24 02:31:47'),(105462,'auguria',1,'','left','accountancy',105461,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105463,'auguria',1,'','left','accountancy',105461,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105464,'auguria',1,'','left','accountancy',105461,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105465,'auguria',1,'','left','accountancy',105461,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-03-24 02:31:47'),(105561,'auguria',1,'','left','accountancy',103167,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'ventil','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105562,'auguria',1,'','left','accountancy',105561,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105563,'auguria',1,'','left','accountancy',105561,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105564,'auguria',1,'','left','accountancy',105561,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105565,'auguria',1,'','left','accountancy',105564,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105566,'auguria',1,'','left','accountancy',105564,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105567,'auguria',1,'','left','accountancy',105561,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105568,'auguria',1,'','left','accountancy',105567,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105569,'auguria',1,'','left','accountancy',105567,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-03-24 02:31:47'),(105661,'auguria',1,'','left','accountancy',103175,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-03-24 02:31:47'),(105663,'auguria',1,'','left','accountancy',105661,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105664,'auguria',1,'','left','accountancy',105661,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105665,'auguria',1,'','left','accountancy',105661,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105667,'auguria',1,'','left','accountancy',105661,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105668,'auguria',1,'','left','accountancy',105661,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-03-24 02:31:47'),(105761,'auguria',1,'','left','accountancy',103175,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-03-24 02:31:47'),(105762,'auguria',1,'','left','accountancy',105761,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105763,'auguria',1,'','left','accountancy',105761,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105764,'auguria',1,'','left','accountancy',105761,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105765,'auguria',1,'','left','accountancy',105761,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105767,'auguria',1,'','left','accountancy',105761,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2013-03-24 02:31:47'),(105861,'auguria',1,'','left','accountancy',103167,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105862,'auguria',1,'','left','accountancy',105861,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105863,'auguria',1,'','left','accountancy',105862,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105864,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105865,'auguria',1,'','left','accountancy',105864,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105866,'auguria',1,'','left','accountancy',105864,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105867,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105868,'auguria',1,'','left','accountancy',105861,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-03-24 02:31:47'),(105961,'auguria',1,'','left','products',103164,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105962,'auguria',1,'','left','products',105961,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105963,'auguria',1,'','left','products',105961,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105964,'auguria',1,'','left','products',105961,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-03-24 02:31:47'),(105965,'auguria',1,'','left','products',105961,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106061,'auguria',1,'','left','products',103164,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106062,'auguria',1,'','left','products',106061,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106063,'auguria',1,'','left','products',106061,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-03-24 02:31:47'),(106064,'auguria',1,'','left','products',106061,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2013-03-24 02:31:47'),(106261,'auguria',1,'','left','products',103164,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106262,'auguria',1,'','left','products',106261,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106263,'auguria',1,'','left','products',106261,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106264,'auguria',1,'','left','products',106261,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106265,'auguria',1,'','left','products',106261,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-03-24 02:31:47'),(106361,'auguria',1,'','left','products',103164,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106362,'auguria',1,'','left','products',106361,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-03-24 02:31:47'),(106761,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106762,'auguria',1,'','left','project',106761,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106763,'auguria',1,'','left','project',106761,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106771,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106772,'auguria',1,'','left','project',106771,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106773,'auguria',1,'','left','project',106771,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106861,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106862,'auguria',1,'','left','project',106861,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106863,'auguria',1,'','left','project',106861,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106864,'auguria',1,'','left','project',106861,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106961,'auguria',1,'','left','project',103168,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106962,'auguria',1,'','left','project',106961,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106963,'auguria',1,'','left','project',106961,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(106964,'auguria',1,'','left','project',106961,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-03-24 02:31:47'),(107061,'auguria',1,'','left','tools',103169,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107062,'auguria',1,'','left','tools',107061,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107063,'auguria',1,'','left','tools',107061,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-03-24 02:31:47'),(107261,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107262,'auguria',1,'','left','tools',107261,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-03-24 02:31:47'),(107291,'auguria',1,'','left','tools',103169,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107292,'auguria',1,'','left','tools',107291,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-03-24 02:31:47'),(107361,'auguria',1,'','left','members',103174,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107362,'auguria',1,'','left','members',107361,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107363,'auguria',1,'','left','members',107361,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107364,'auguria',1,'','left','members',107363,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107365,'auguria',1,'','left','members',107363,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107366,'auguria',1,'','left','members',107363,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107367,'auguria',1,'','left','members',107363,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107368,'auguria',1,'','left','members',107363,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107369,'auguria',1,'','left','members',107361,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107461,'auguria',1,'','left','members',103174,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107462,'auguria',1,'','left','members',107461,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107463,'auguria',1,'','left','members',107461,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107464,'auguria',1,'','left','members',107461,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107661,'auguria',1,'','left','members',103174,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107662,'auguria',1,'','left','members',107661,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-03-24 02:31:48'),(107663,'auguria',1,'','left','members',107661,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107664,'auguria',1,'','left','members',107661,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107861,'auguria',1,'','left','members',103174,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107862,'auguria',1,'','left','members',107861,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(107863,'auguria',1,'','left','members',107861,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-03-24 02:31:48'),(108261,'auguria',1,'','left','commercial',103166,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108262,'auguria',1,'','left','commercial',108261,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108263,'auguria',1,'','left','commercial',108261,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108269,'auguria',1,'','left','commercial',108261,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2013-03-24 02:31:47'),(108361,'auguria',1,'','left','members',103174,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108362,'auguria',1,'','left','members',108361,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-03-24 02:31:48'),(108457,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=home&leftmenu=modulesadmintools','','BarCodePrintsheet','products',NULL,'barcodeprint','1','$conf->barcode->enabled',2,'2014-03-02 15:37:26'),(108458,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'1','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2014-03-02 15:37:26'),(108459,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108460,'all',1,'agenda','left','agenda',108459,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108461,'all',1,'agenda','left','agenda',108460,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108462,'all',1,'agenda','left','agenda',108460,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108463,'all',1,'agenda','left','agenda',108462,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108464,'all',1,'agenda','left','agenda',108462,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108465,'all',1,'agenda','left','agenda',108462,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108466,'all',1,'agenda','left','agenda',108462,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108467,'all',1,'agenda','left','agenda',108460,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108468,'all',1,'agenda','left','agenda',108467,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108469,'all',1,'agenda','left','agenda',108467,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108470,'all',1,'agenda','left','agenda',108467,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108471,'all',1,'agenda','left','agenda',108467,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2014-12-21 12:51:26'),(108472,'all',1,'agenda','left','agenda',108460,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2014-12-21 12:51:26'),(108473,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2014-12-21 12:51:28'),(108474,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108475,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108476,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2014-12-21 12:51:28'),(108477,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'),(108478,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'),(108479,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2014-12-21 19:52:31'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.8.0.sql b/dev/initdemo/mysqldump_dolibarr_3.8.0.sql index 2daea375c02..f3177d5d3ed 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.8.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.8.0.sql @@ -5274,7 +5274,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(124179,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'$user->rights->cashdesk->use','$conf->cashdesk->enabled',0,'2015-11-15 22:38:33'),(124197,'all',1,'expensereport','left','hrm',-1,NULL,'hrm',100,'/expensereport/index.php','','TripsAndExpenses','trips',NULL,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124198,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/card.php?action=create','','New','trips',NULL,'expensereport_detailnew','$user->rights->expensereport->creer','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124199,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/list.php','','List','trips',NULL,'expensereport_detaillist','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124200,'all',1,'expensereport','left','hrm',-1,'expensereport_detaillist','hrm',100,'/expensereport/list.php?search_status=2','','ListToApprove','trips',NULL,'expensereport_detaillist_approve','$user->rights->expensereport->approve','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124201,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/stats/index.php','','Statistics','trips',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124202,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/export_csv.php','','ExportTripCSV','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124203,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/synchro_compta.php','','Synchro_Compta','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124210,'all',1,'margins','left','accountancy',-1,NULL,'accountancy',100,'/margin/index.php','','Margins','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2015-11-15 22:41:47'),(134659,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134660,'all',1,'agenda','left','agenda',134659,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134661,'all',1,'agenda','left','agenda',134660,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134662,'all',1,'agenda','left','agenda',134660,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134663,'all',1,'agenda','left','agenda',134662,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134664,'all',1,'agenda','left','agenda',134662,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134665,'all',1,'agenda','left','agenda',134662,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134666,'all',1,'agenda','left','agenda',134662,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134667,'all',1,'agenda','left','agenda',134660,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134668,'all',1,'agenda','left','agenda',134667,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134669,'all',1,'agenda','left','agenda',134667,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134670,'all',1,'agenda','left','agenda',134667,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134671,'all',1,'agenda','left','agenda',134667,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134672,'all',1,'agenda','left','agenda',134660,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134673,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2016-01-22 17:26:42'),(134674,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2016-01-22 17:26:42'),(134675,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2016-01-22 17:26:43'),(134676,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134677,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134678,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134679,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134680,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134681,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134682,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2016-01-22 17:26:44'),(134683,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2016-01-22 17:26:44'),(134684,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2016-01-22 17:26:44'),(134686,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(134687,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2016-01-22 17:26:44'),(134688,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(134689,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2016-01-22 17:26:44'),(134694,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(134695,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2016-01-22 17:26:44'),(134696,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2016-01-22 17:26:44'),(134781,'auguria',1,'','left','home',134682,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2016-01-22 17:26:44'),(134782,'auguria',1,'','left','home',134781,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134783,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134784,'auguria',1,'','left','home',134781,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134785,'auguria',1,'','left','home',134781,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134786,'auguria',1,'','left','home',134781,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134787,'auguria',1,'','left','home',134781,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134788,'auguria',1,'','left','home',134781,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134789,'auguria',1,'','left','home',134781,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134790,'auguria',1,'','left','home',134781,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134791,'auguria',1,'','left','home',134781,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134792,'auguria',1,'','left','home',134781,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134793,'auguria',1,'','left','home',134781,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134794,'auguria',1,'','left','home',134781,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134795,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134882,'auguria',1,'','left','home',134981,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134883,'auguria',1,'','left','home',134882,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134884,'auguria',1,'','left','home',134882,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134886,'auguria',1,'','left','home',134981,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134887,'auguria',1,'','left','home',134981,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134888,'auguria',1,'','left','home',134981,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134889,'auguria',1,'','left','home',134981,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134891,'auguria',1,'','left','home',134981,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134981,'auguria',1,'','left','home',134682,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2016-01-22 17:26:44'),(134982,'auguria',1,'','left','home',134981,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134983,'auguria',1,'','left','home',134981,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134986,'auguria',1,'','left','home',134981,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134987,'auguria',1,'','left','home',134981,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2016-01-22 17:26:44'),(134988,'auguria',1,'','left','home',134981,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134989,'auguria',1,'','left','home',134981,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134990,'auguria',1,'','left','home',134981,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134991,'auguria',1,'','left','home',134981,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134992,'auguria',1,'','left','home',134981,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(135081,'auguria',1,'','left','home',134682,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2016-01-22 17:26:44'),(135082,'auguria',1,'','left','home',135081,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135083,'auguria',1,'','left','home',135082,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135084,'auguria',1,'','left','home',135081,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135085,'auguria',1,'','left','home',135084,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135181,'auguria',1,'','left','companies',134683,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135182,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135183,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/list.php?action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135184,'auguria',1,'','left','companies',135181,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135185,'auguria',1,'','left','companies',135184,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135187,'auguria',1,'','left','companies',135181,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135188,'auguria',1,'','left','companies',135187,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135190,'auguria',1,'','left','companies',135181,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135191,'auguria',1,'','left','companies',135190,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135281,'auguria',1,'','left','companies',134683,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135282,'auguria',1,'','left','companies',135281,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135283,'auguria',1,'','left','companies',135281,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135285,'auguria',1,'','left','companies',135283,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135286,'auguria',1,'','left','companies',135283,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135287,'auguria',1,'','left','companies',135283,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135288,'auguria',1,'','left','companies',135283,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135331,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135332,'auguria',1,'','left','companies',135331,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135341,'auguria',1,'','left','companies',134683,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135342,'auguria',1,'','left','companies',135341,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135351,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135352,'auguria',1,'','left','companies',135351,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135781,'auguria',1,'','left','commercial',134686,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135782,'auguria',1,'','left','commercial',135781,NULL,NULL,0,'/comm/propal.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135783,'auguria',1,'','left','commercial',135781,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135784,'auguria',1,'','left','commercial',135783,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135785,'auguria',1,'','left','commercial',135783,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135786,'auguria',1,'','left','commercial',135783,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135787,'auguria',1,'','left','commercial',135783,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135788,'auguria',1,'','left','commercial',135783,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135791,'auguria',1,'','left','commercial',135781,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135881,'auguria',1,'','left','commercial',134686,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135882,'auguria',1,'','left','commercial',135881,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135883,'auguria',1,'','left','commercial',135881,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135884,'auguria',1,'','left','commercial',135883,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135885,'auguria',1,'','left','commercial',135883,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135886,'auguria',1,'','left','commercial',135883,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135887,'auguria',1,'','left','commercial',135883,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135888,'auguria',1,'','left','commercial',135883,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135889,'auguria',1,'','left','commercial',135883,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135890,'auguria',1,'','left','commercial',135881,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135981,'auguria',1,'','left','commercial',134684,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2016-01-22 17:26:44'),(135982,'auguria',1,'','left','commercial',135981,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135983,'auguria',1,'','left','commercial',135981,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135984,'auguria',1,'','left','commercial',135981,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(136081,'auguria',1,'','left','commercial',134686,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136082,'auguria',1,'','left','commercial',136081,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136083,'auguria',1,'','left','commercial',136081,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136084,'auguria',1,'','left','commercial',136081,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136085,'auguria',1,'','left','commercial',136084,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136086,'auguria',1,'','left','commercial',136084,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136087,'auguria',1,'','left','commercial',136084,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136088,'auguria',1,'','left','commercial',136084,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136181,'auguria',1,'','left','commercial',134686,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136182,'auguria',1,'','left','commercial',136181,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136183,'auguria',1,'','left','commercial',136181,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136281,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136282,'auguria',1,'','left','accountancy',136281,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136283,'auguria',1,'','left','accountancy',136281,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136284,'auguria',1,'','left','accountancy',136281,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136285,'auguria',1,'','left','accountancy',136281,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136381,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136382,'auguria',1,'','left','accountancy',136381,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136383,'auguria',1,'','left','accountancy',136381,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136384,'auguria',1,'','left','accountancy',136381,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136385,'auguria',1,'','left','accountancy',136381,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136386,'auguria',1,'','left','accountancy',136381,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136391,'auguria',1,'','left','accountancy',136385,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136392,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136393,'auguria',1,'','left','accountancy',136392,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136394,'auguria',1,'','left','accountancy',136392,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136395,'auguria',1,'','left','accountancy',136381,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136401,'auguria',1,'','left','accountancy',136386,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136402,'auguria',1,'','left','accountancy',136386,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136403,'auguria',1,'','left','accountancy',136386,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136404,'auguria',1,'','left','accountancy',136386,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136581,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2016-01-22 17:26:44'),(136681,'auguria',1,'','left','accountancy',134687,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2016-01-22 17:26:44'),(136682,'auguria',1,'','left','accountancy',136681,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136683,'auguria',1,'','left','accountancy',136681,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136781,'auguria',1,'','left','accountancy',134696,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136782,'auguria',1,'','left','accountancy',136781,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136783,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136784,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136881,'auguria',1,'','left','accountancy',134687,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136891,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136892,'auguria',1,'','left','accountancy',136891,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136893,'auguria',1,'','left','accountancy',136891,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136901,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2016-01-22 17:26:44'),(136902,'auguria',1,'','left','accountancy',136901,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136903,'auguria',1,'','left','accountancy',136901,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136904,'auguria',1,'','left','accountancy',136901,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136931,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2016-01-22 17:26:44'),(136932,'auguria',1,'','left','accountancy',136931,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136933,'auguria',1,'','left','accountancy',136931,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136981,'auguria',1,'','left','accountancy',136881,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2016-01-22 17:26:44'),(136982,'auguria',1,'','left','accountancy',136981,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136983,'auguria',1,'','left','accountancy',136981,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136984,'auguria',1,'','left','accountancy',136981,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136985,'auguria',1,'','left','accountancy',136981,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(137081,'auguria',1,'','left','accountancy',134687,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137082,'auguria',1,'','left','accountancy',137081,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137083,'auguria',1,'','left','accountancy',137081,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137091,'auguria',1,'','left','accountancy',134687,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2016-01-22 17:26:44'),(137092,'auguria',1,'','left','accountancy',137091,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137093,'auguria',1,'','left','accountancy',137091,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137181,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2016-01-22 17:26:44'),(137183,'auguria',1,'','left','accountancy',137181,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137184,'auguria',1,'','left','accountancy',137181,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137185,'auguria',1,'','left','accountancy',137181,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137187,'auguria',1,'','left','accountancy',137181,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137188,'auguria',1,'','left','accountancy',137181,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137281,'auguria',1,'','left','accountancy',134695,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2016-01-22 17:26:44'),(137282,'auguria',1,'','left','accountancy',137281,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137283,'auguria',1,'','left','accountancy',137281,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137284,'auguria',1,'','left','accountancy',137281,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137285,'auguria',1,'','left','accountancy',137281,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137287,'auguria',1,'','left','accountancy',137281,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137381,'auguria',1,'','left','accountancy',134687,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137382,'auguria',1,'','left','accountancy',137381,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137383,'auguria',1,'','left','accountancy',137382,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137384,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137385,'auguria',1,'','left','accountancy',137384,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137386,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137387,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137388,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137389,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137401,'auguria',1,'','left','accountancy',134687,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137402,'auguria',1,'','left','accountancy',137401,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137403,'auguria',1,'','left','accountancy',137401,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137431,'auguria',1,'','left','home',134687,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137432,'auguria',1,'','left','home',134687,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137481,'auguria',1,'','left','products',134684,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137482,'auguria',1,'','left','products',137481,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137483,'auguria',1,'','left','products',137481,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137484,'auguria',1,'','left','products',137481,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137485,'auguria',1,'','left','products',137481,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137486,'auguria',1,'','left','products',137481,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2016-01-22 17:26:44'),(137581,'auguria',1,'','left','products',134684,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137582,'auguria',1,'','left','products',137581,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137583,'auguria',1,'','left','products',137581,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137584,'auguria',1,'','left','products',137581,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137781,'auguria',1,'','left','products',134684,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137782,'auguria',1,'','left','products',137781,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137783,'auguria',1,'','left','products',137781,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137785,'auguria',1,'','left','products',137781,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137786,'auguria',1,'','left','products',137781,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(137787,'auguria',1,'','left','products',137781,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137881,'auguria',1,'','left','products',134684,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(137882,'auguria',1,'','left','products',137881,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(138281,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138282,'auguria',1,'','left','project',138281,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138283,'auguria',1,'','left','project',138281,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138291,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138292,'auguria',1,'','left','project',138291,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138293,'auguria',1,'','left','project',138291,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138381,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138382,'auguria',1,'','left','project',138381,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138383,'auguria',1,'','left','project',138381,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138384,'auguria',1,'','left','project',138381,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138481,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138482,'auguria',1,'','left','project',138481,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138483,'auguria',1,'','left','project',138481,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138484,'auguria',1,'','left','project',138481,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138581,'auguria',1,'','left','tools',134689,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138582,'auguria',1,'','left','tools',138581,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138583,'auguria',1,'','left','tools',138581,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138781,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138782,'auguria',1,'','left','tools',138781,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138811,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138812,'auguria',1,'','left','tools',138811,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138881,'auguria',1,'','left','members',134694,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138882,'auguria',1,'','left','members',138881,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138883,'auguria',1,'','left','members',138881,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138884,'auguria',1,'','left','members',138883,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138885,'auguria',1,'','left','members',138883,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138886,'auguria',1,'','left','members',138883,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138887,'auguria',1,'','left','members',138883,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138888,'auguria',1,'','left','members',138883,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138889,'auguria',1,'','left','members',138881,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138981,'auguria',1,'','left','members',134694,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138982,'auguria',1,'','left','members',138981,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138983,'auguria',1,'','left','members',138981,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138984,'auguria',1,'','left','members',138981,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139181,'auguria',1,'','left','members',134694,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139182,'auguria',1,'','left','members',139181,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2016-01-22 17:26:44'),(139183,'auguria',1,'','left','members',139181,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139184,'auguria',1,'','left','members',139181,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139381,'auguria',1,'','left','members',134694,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139382,'auguria',1,'','left','members',139381,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139383,'auguria',1,'','left','members',139381,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139681,'auguria',1,'','left','hrm',134696,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139682,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139683,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List','holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139684,'auguria',1,'','left','hrm',139683,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove','trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139685,'auguria',1,'','left','hrm',139681,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139686,'auguria',1,'','left','hrm',139681,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139687,'auguria',1,'','left','hrm',139681,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139781,'auguria',1,'','left','commercial',134686,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139782,'auguria',1,'','left','commercial',139781,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139783,'auguria',1,'','left','commercial',139781,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139789,'auguria',1,'','left','commercial',139781,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139881,'auguria',1,'','left','members',134694,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(139882,'auguria',1,'','left','members',139881,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'); +INSERT INTO `llx_menu` VALUES (87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(124179,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'$user->rights->cashdesk->use','$conf->cashdesk->enabled',0,'2015-11-15 22:38:33'),(124197,'all',1,'expensereport','left','hrm',-1,NULL,'hrm',100,'/expensereport/index.php','','TripsAndExpenses','trips',NULL,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124198,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/card.php?action=create','','New','trips',NULL,'expensereport_detailnew','$user->rights->expensereport->creer','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124199,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/list.php','','List','trips',NULL,'expensereport_detaillist','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124200,'all',1,'expensereport','left','hrm',-1,'expensereport_detaillist','hrm',100,'/expensereport/list.php?search_status=2','','ListToApprove','trips',NULL,'expensereport_detaillist_approve','$user->rights->expensereport->approve','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124201,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/stats/index.php','','Statistics','trips',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124202,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/export_csv.php','','ExportTripCSV','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124203,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/synchro_compta.php','','Synchro_Compta','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124210,'all',1,'margins','left','accountancy',-1,NULL,'accountancy',100,'/margin/index.php','','Margins','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2015-11-15 22:41:47'),(134659,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134660,'all',1,'agenda','left','agenda',134659,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134661,'all',1,'agenda','left','agenda',134660,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134662,'all',1,'agenda','left','agenda',134660,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134663,'all',1,'agenda','left','agenda',134662,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134664,'all',1,'agenda','left','agenda',134662,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134665,'all',1,'agenda','left','agenda',134662,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134666,'all',1,'agenda','left','agenda',134662,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134667,'all',1,'agenda','left','agenda',134660,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134668,'all',1,'agenda','left','agenda',134667,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134669,'all',1,'agenda','left','agenda',134667,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134670,'all',1,'agenda','left','agenda',134667,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134671,'all',1,'agenda','left','agenda',134667,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134672,'all',1,'agenda','left','agenda',134660,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134673,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2016-01-22 17:26:42'),(134674,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2016-01-22 17:26:42'),(134675,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2016-01-22 17:26:43'),(134676,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134677,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134678,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134679,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134680,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134681,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134682,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2016-01-22 17:26:44'),(134683,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2016-01-22 17:26:44'),(134684,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2016-01-22 17:26:44'),(134686,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(134687,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2016-01-22 17:26:44'),(134688,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(134689,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2016-01-22 17:26:44'),(134694,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(134695,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2016-01-22 17:26:44'),(134696,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2016-01-22 17:26:44'),(134781,'auguria',1,'','left','home',134682,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2016-01-22 17:26:44'),(134782,'auguria',1,'','left','home',134781,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134783,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134784,'auguria',1,'','left','home',134781,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134785,'auguria',1,'','left','home',134781,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134786,'auguria',1,'','left','home',134781,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134787,'auguria',1,'','left','home',134781,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134788,'auguria',1,'','left','home',134781,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134789,'auguria',1,'','left','home',134781,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134790,'auguria',1,'','left','home',134781,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134791,'auguria',1,'','left','home',134781,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134792,'auguria',1,'','left','home',134781,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134793,'auguria',1,'','left','home',134781,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134794,'auguria',1,'','left','home',134781,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134795,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134882,'auguria',1,'','left','home',134981,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134883,'auguria',1,'','left','home',134882,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134884,'auguria',1,'','left','home',134882,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134886,'auguria',1,'','left','home',134981,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134887,'auguria',1,'','left','home',134981,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134888,'auguria',1,'','left','home',134981,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134889,'auguria',1,'','left','home',134981,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134891,'auguria',1,'','left','home',134981,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134981,'auguria',1,'','left','home',134682,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2016-01-22 17:26:44'),(134982,'auguria',1,'','left','home',134981,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134983,'auguria',1,'','left','home',134981,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134986,'auguria',1,'','left','home',134981,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134987,'auguria',1,'','left','home',134981,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2016-01-22 17:26:44'),(134988,'auguria',1,'','left','home',134981,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134989,'auguria',1,'','left','home',134981,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134990,'auguria',1,'','left','home',134981,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134991,'auguria',1,'','left','home',134981,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134992,'auguria',1,'','left','home',134981,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(135081,'auguria',1,'','left','home',134682,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2016-01-22 17:26:44'),(135082,'auguria',1,'','left','home',135081,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135083,'auguria',1,'','left','home',135082,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135084,'auguria',1,'','left','home',135081,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135085,'auguria',1,'','left','home',135084,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135181,'auguria',1,'','left','companies',134683,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135182,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135183,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/list.php?action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135184,'auguria',1,'','left','companies',135181,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135185,'auguria',1,'','left','companies',135184,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135187,'auguria',1,'','left','companies',135181,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135188,'auguria',1,'','left','companies',135187,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135190,'auguria',1,'','left','companies',135181,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135191,'auguria',1,'','left','companies',135190,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135281,'auguria',1,'','left','companies',134683,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135282,'auguria',1,'','left','companies',135281,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135283,'auguria',1,'','left','companies',135281,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135285,'auguria',1,'','left','companies',135283,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135286,'auguria',1,'','left','companies',135283,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135287,'auguria',1,'','left','companies',135283,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135288,'auguria',1,'','left','companies',135283,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135331,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135332,'auguria',1,'','left','companies',135331,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135341,'auguria',1,'','left','companies',134683,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135342,'auguria',1,'','left','companies',135341,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135351,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135352,'auguria',1,'','left','companies',135351,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135781,'auguria',1,'','left','commercial',134686,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135782,'auguria',1,'','left','commercial',135781,NULL,NULL,0,'/comm/propal/card.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135783,'auguria',1,'','left','commercial',135781,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135784,'auguria',1,'','left','commercial',135783,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135785,'auguria',1,'','left','commercial',135783,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135786,'auguria',1,'','left','commercial',135783,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135787,'auguria',1,'','left','commercial',135783,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135788,'auguria',1,'','left','commercial',135783,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135791,'auguria',1,'','left','commercial',135781,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135881,'auguria',1,'','left','commercial',134686,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135882,'auguria',1,'','left','commercial',135881,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135883,'auguria',1,'','left','commercial',135881,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135884,'auguria',1,'','left','commercial',135883,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135885,'auguria',1,'','left','commercial',135883,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135886,'auguria',1,'','left','commercial',135883,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135887,'auguria',1,'','left','commercial',135883,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135888,'auguria',1,'','left','commercial',135883,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135889,'auguria',1,'','left','commercial',135883,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135890,'auguria',1,'','left','commercial',135881,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135981,'auguria',1,'','left','commercial',134684,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2016-01-22 17:26:44'),(135982,'auguria',1,'','left','commercial',135981,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135983,'auguria',1,'','left','commercial',135981,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135984,'auguria',1,'','left','commercial',135981,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(136081,'auguria',1,'','left','commercial',134686,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136082,'auguria',1,'','left','commercial',136081,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136083,'auguria',1,'','left','commercial',136081,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136084,'auguria',1,'','left','commercial',136081,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136085,'auguria',1,'','left','commercial',136084,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136086,'auguria',1,'','left','commercial',136084,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136087,'auguria',1,'','left','commercial',136084,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136088,'auguria',1,'','left','commercial',136084,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136181,'auguria',1,'','left','commercial',134686,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136182,'auguria',1,'','left','commercial',136181,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136183,'auguria',1,'','left','commercial',136181,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136281,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136282,'auguria',1,'','left','accountancy',136281,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136283,'auguria',1,'','left','accountancy',136281,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136284,'auguria',1,'','left','accountancy',136281,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136285,'auguria',1,'','left','accountancy',136281,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136381,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136382,'auguria',1,'','left','accountancy',136381,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136383,'auguria',1,'','left','accountancy',136381,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136384,'auguria',1,'','left','accountancy',136381,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136385,'auguria',1,'','left','accountancy',136381,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136386,'auguria',1,'','left','accountancy',136381,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136391,'auguria',1,'','left','accountancy',136385,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136392,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136393,'auguria',1,'','left','accountancy',136392,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136394,'auguria',1,'','left','accountancy',136392,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136395,'auguria',1,'','left','accountancy',136381,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136401,'auguria',1,'','left','accountancy',136386,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136402,'auguria',1,'','left','accountancy',136386,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136403,'auguria',1,'','left','accountancy',136386,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136404,'auguria',1,'','left','accountancy',136386,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136581,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2016-01-22 17:26:44'),(136681,'auguria',1,'','left','accountancy',134687,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2016-01-22 17:26:44'),(136682,'auguria',1,'','left','accountancy',136681,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136683,'auguria',1,'','left','accountancy',136681,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136781,'auguria',1,'','left','accountancy',134696,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136782,'auguria',1,'','left','accountancy',136781,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136783,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136784,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136881,'auguria',1,'','left','accountancy',134687,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136891,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136892,'auguria',1,'','left','accountancy',136891,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136893,'auguria',1,'','left','accountancy',136891,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136901,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2016-01-22 17:26:44'),(136902,'auguria',1,'','left','accountancy',136901,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136903,'auguria',1,'','left','accountancy',136901,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136904,'auguria',1,'','left','accountancy',136901,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136931,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2016-01-22 17:26:44'),(136932,'auguria',1,'','left','accountancy',136931,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136933,'auguria',1,'','left','accountancy',136931,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136981,'auguria',1,'','left','accountancy',136881,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2016-01-22 17:26:44'),(136982,'auguria',1,'','left','accountancy',136981,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136983,'auguria',1,'','left','accountancy',136981,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136984,'auguria',1,'','left','accountancy',136981,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136985,'auguria',1,'','left','accountancy',136981,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(137081,'auguria',1,'','left','accountancy',134687,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137082,'auguria',1,'','left','accountancy',137081,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137083,'auguria',1,'','left','accountancy',137081,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137091,'auguria',1,'','left','accountancy',134687,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2016-01-22 17:26:44'),(137092,'auguria',1,'','left','accountancy',137091,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137093,'auguria',1,'','left','accountancy',137091,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137181,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2016-01-22 17:26:44'),(137183,'auguria',1,'','left','accountancy',137181,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137184,'auguria',1,'','left','accountancy',137181,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137185,'auguria',1,'','left','accountancy',137181,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137187,'auguria',1,'','left','accountancy',137181,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137188,'auguria',1,'','left','accountancy',137181,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137281,'auguria',1,'','left','accountancy',134695,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2016-01-22 17:26:44'),(137282,'auguria',1,'','left','accountancy',137281,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137283,'auguria',1,'','left','accountancy',137281,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137284,'auguria',1,'','left','accountancy',137281,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137285,'auguria',1,'','left','accountancy',137281,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137287,'auguria',1,'','left','accountancy',137281,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137381,'auguria',1,'','left','accountancy',134687,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137382,'auguria',1,'','left','accountancy',137381,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137383,'auguria',1,'','left','accountancy',137382,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137384,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137385,'auguria',1,'','left','accountancy',137384,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137386,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137387,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137388,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137389,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137401,'auguria',1,'','left','accountancy',134687,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137402,'auguria',1,'','left','accountancy',137401,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137403,'auguria',1,'','left','accountancy',137401,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137431,'auguria',1,'','left','home',134687,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137432,'auguria',1,'','left','home',134687,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137481,'auguria',1,'','left','products',134684,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137482,'auguria',1,'','left','products',137481,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137483,'auguria',1,'','left','products',137481,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137484,'auguria',1,'','left','products',137481,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137485,'auguria',1,'','left','products',137481,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137486,'auguria',1,'','left','products',137481,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2016-01-22 17:26:44'),(137581,'auguria',1,'','left','products',134684,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137582,'auguria',1,'','left','products',137581,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137583,'auguria',1,'','left','products',137581,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137584,'auguria',1,'','left','products',137581,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137781,'auguria',1,'','left','products',134684,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137782,'auguria',1,'','left','products',137781,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137783,'auguria',1,'','left','products',137781,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137785,'auguria',1,'','left','products',137781,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137786,'auguria',1,'','left','products',137781,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(137787,'auguria',1,'','left','products',137781,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137881,'auguria',1,'','left','products',134684,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(137882,'auguria',1,'','left','products',137881,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(138281,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138282,'auguria',1,'','left','project',138281,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138283,'auguria',1,'','left','project',138281,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138291,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138292,'auguria',1,'','left','project',138291,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138293,'auguria',1,'','left','project',138291,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138381,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138382,'auguria',1,'','left','project',138381,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138383,'auguria',1,'','left','project',138381,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138384,'auguria',1,'','left','project',138381,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138481,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138482,'auguria',1,'','left','project',138481,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138483,'auguria',1,'','left','project',138481,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138484,'auguria',1,'','left','project',138481,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138581,'auguria',1,'','left','tools',134689,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138582,'auguria',1,'','left','tools',138581,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138583,'auguria',1,'','left','tools',138581,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138781,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138782,'auguria',1,'','left','tools',138781,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138811,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138812,'auguria',1,'','left','tools',138811,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138881,'auguria',1,'','left','members',134694,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138882,'auguria',1,'','left','members',138881,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138883,'auguria',1,'','left','members',138881,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138884,'auguria',1,'','left','members',138883,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138885,'auguria',1,'','left','members',138883,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138886,'auguria',1,'','left','members',138883,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138887,'auguria',1,'','left','members',138883,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138888,'auguria',1,'','left','members',138883,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138889,'auguria',1,'','left','members',138881,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138981,'auguria',1,'','left','members',134694,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138982,'auguria',1,'','left','members',138981,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138983,'auguria',1,'','left','members',138981,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138984,'auguria',1,'','left','members',138981,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139181,'auguria',1,'','left','members',134694,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139182,'auguria',1,'','left','members',139181,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2016-01-22 17:26:44'),(139183,'auguria',1,'','left','members',139181,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139184,'auguria',1,'','left','members',139181,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139381,'auguria',1,'','left','members',134694,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139382,'auguria',1,'','left','members',139381,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139383,'auguria',1,'','left','members',139381,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139681,'auguria',1,'','left','hrm',134696,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139682,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139683,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List','holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139684,'auguria',1,'','left','hrm',139683,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove','trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139685,'auguria',1,'','left','hrm',139681,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139686,'auguria',1,'','left','hrm',139681,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139687,'auguria',1,'','left','hrm',139681,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139781,'auguria',1,'','left','commercial',134686,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139782,'auguria',1,'','left','commercial',139781,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139783,'auguria',1,'','left','commercial',139781,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139789,'auguria',1,'','left','commercial',139781,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139881,'auguria',1,'','left','members',134694,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(139882,'auguria',1,'','left','members',139881,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/initdemo/mysqldump_dolibarr_3.9.0.sql b/dev/initdemo/mysqldump_dolibarr_3.9.0.sql index bef24b5b89f..7fbe9673f21 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.9.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.9.0.sql @@ -5328,7 +5328,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(124179,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'$user->rights->cashdesk->use','$conf->cashdesk->enabled',0,'2015-11-15 22:38:33'),(124197,'all',1,'expensereport','left','hrm',-1,NULL,'hrm',100,'/expensereport/index.php','','TripsAndExpenses','trips',NULL,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124198,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/card.php?action=create','','New','trips',NULL,'expensereport_detailnew','$user->rights->expensereport->creer','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124199,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/list.php','','List','trips',NULL,'expensereport_detaillist','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124200,'all',1,'expensereport','left','hrm',-1,'expensereport_detaillist','hrm',100,'/expensereport/list.php?search_status=2','','ListToApprove','trips',NULL,'expensereport_detaillist_approve','$user->rights->expensereport->approve','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124201,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/stats/index.php','','Statistics','trips',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124202,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/export_csv.php','','ExportTripCSV','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124203,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/synchro_compta.php','','Synchro_Compta','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124210,'all',1,'margins','left','accountancy',-1,NULL,'accountancy',100,'/margin/index.php','','Margins','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2015-11-15 22:41:47'),(134659,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134660,'all',1,'agenda','left','agenda',134659,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134661,'all',1,'agenda','left','agenda',134660,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134662,'all',1,'agenda','left','agenda',134660,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134663,'all',1,'agenda','left','agenda',134662,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134664,'all',1,'agenda','left','agenda',134662,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134665,'all',1,'agenda','left','agenda',134662,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134666,'all',1,'agenda','left','agenda',134662,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134667,'all',1,'agenda','left','agenda',134660,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134668,'all',1,'agenda','left','agenda',134667,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134669,'all',1,'agenda','left','agenda',134667,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134670,'all',1,'agenda','left','agenda',134667,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134671,'all',1,'agenda','left','agenda',134667,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134672,'all',1,'agenda','left','agenda',134660,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134673,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2016-01-22 17:26:42'),(134674,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2016-01-22 17:26:42'),(134675,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2016-01-22 17:26:43'),(134676,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134677,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134678,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134679,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134680,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134681,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134682,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2016-01-22 17:26:44'),(134683,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2016-01-22 17:26:44'),(134684,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2016-01-22 17:26:44'),(134686,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(134687,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2016-01-22 17:26:44'),(134688,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(134689,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2016-01-22 17:26:44'),(134694,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(134695,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2016-01-22 17:26:44'),(134696,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2016-01-22 17:26:44'),(134781,'auguria',1,'','left','home',134682,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2016-01-22 17:26:44'),(134782,'auguria',1,'','left','home',134781,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134783,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134784,'auguria',1,'','left','home',134781,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134785,'auguria',1,'','left','home',134781,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134786,'auguria',1,'','left','home',134781,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134787,'auguria',1,'','left','home',134781,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134788,'auguria',1,'','left','home',134781,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134789,'auguria',1,'','left','home',134781,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134790,'auguria',1,'','left','home',134781,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134791,'auguria',1,'','left','home',134781,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134792,'auguria',1,'','left','home',134781,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134793,'auguria',1,'','left','home',134781,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134794,'auguria',1,'','left','home',134781,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134795,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134882,'auguria',1,'','left','home',134981,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134883,'auguria',1,'','left','home',134882,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134884,'auguria',1,'','left','home',134882,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134886,'auguria',1,'','left','home',134981,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134887,'auguria',1,'','left','home',134981,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134888,'auguria',1,'','left','home',134981,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134889,'auguria',1,'','left','home',134981,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134891,'auguria',1,'','left','home',134981,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134981,'auguria',1,'','left','home',134682,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2016-01-22 17:26:44'),(134982,'auguria',1,'','left','home',134981,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134983,'auguria',1,'','left','home',134981,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134986,'auguria',1,'','left','home',134981,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134987,'auguria',1,'','left','home',134981,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2016-01-22 17:26:44'),(134988,'auguria',1,'','left','home',134981,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134989,'auguria',1,'','left','home',134981,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134990,'auguria',1,'','left','home',134981,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134991,'auguria',1,'','left','home',134981,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134992,'auguria',1,'','left','home',134981,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(135081,'auguria',1,'','left','home',134682,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2016-01-22 17:26:44'),(135082,'auguria',1,'','left','home',135081,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135083,'auguria',1,'','left','home',135082,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135084,'auguria',1,'','left','home',135081,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135085,'auguria',1,'','left','home',135084,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135181,'auguria',1,'','left','companies',134683,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135182,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135183,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/list.php?action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135184,'auguria',1,'','left','companies',135181,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135185,'auguria',1,'','left','companies',135184,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135187,'auguria',1,'','left','companies',135181,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135188,'auguria',1,'','left','companies',135187,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135190,'auguria',1,'','left','companies',135181,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135191,'auguria',1,'','left','companies',135190,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135281,'auguria',1,'','left','companies',134683,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135282,'auguria',1,'','left','companies',135281,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135283,'auguria',1,'','left','companies',135281,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135285,'auguria',1,'','left','companies',135283,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135286,'auguria',1,'','left','companies',135283,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135287,'auguria',1,'','left','companies',135283,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135288,'auguria',1,'','left','companies',135283,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135331,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135332,'auguria',1,'','left','companies',135331,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135341,'auguria',1,'','left','companies',134683,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135342,'auguria',1,'','left','companies',135341,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135351,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135352,'auguria',1,'','left','companies',135351,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135781,'auguria',1,'','left','commercial',134686,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135782,'auguria',1,'','left','commercial',135781,NULL,NULL,0,'/comm/propal.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135783,'auguria',1,'','left','commercial',135781,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135784,'auguria',1,'','left','commercial',135783,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135785,'auguria',1,'','left','commercial',135783,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135786,'auguria',1,'','left','commercial',135783,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135787,'auguria',1,'','left','commercial',135783,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135788,'auguria',1,'','left','commercial',135783,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135791,'auguria',1,'','left','commercial',135781,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135881,'auguria',1,'','left','commercial',134686,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135882,'auguria',1,'','left','commercial',135881,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135883,'auguria',1,'','left','commercial',135881,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135884,'auguria',1,'','left','commercial',135883,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135885,'auguria',1,'','left','commercial',135883,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135886,'auguria',1,'','left','commercial',135883,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135887,'auguria',1,'','left','commercial',135883,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135888,'auguria',1,'','left','commercial',135883,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135889,'auguria',1,'','left','commercial',135883,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135890,'auguria',1,'','left','commercial',135881,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135981,'auguria',1,'','left','commercial',134684,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2016-01-22 17:26:44'),(135982,'auguria',1,'','left','commercial',135981,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135983,'auguria',1,'','left','commercial',135981,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135984,'auguria',1,'','left','commercial',135981,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(136081,'auguria',1,'','left','commercial',134686,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136082,'auguria',1,'','left','commercial',136081,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136083,'auguria',1,'','left','commercial',136081,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136084,'auguria',1,'','left','commercial',136081,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136085,'auguria',1,'','left','commercial',136084,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136086,'auguria',1,'','left','commercial',136084,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136087,'auguria',1,'','left','commercial',136084,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136088,'auguria',1,'','left','commercial',136084,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136181,'auguria',1,'','left','commercial',134686,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136182,'auguria',1,'','left','commercial',136181,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136183,'auguria',1,'','left','commercial',136181,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136281,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136282,'auguria',1,'','left','accountancy',136281,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136283,'auguria',1,'','left','accountancy',136281,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136284,'auguria',1,'','left','accountancy',136281,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136285,'auguria',1,'','left','accountancy',136281,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136381,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136382,'auguria',1,'','left','accountancy',136381,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136383,'auguria',1,'','left','accountancy',136381,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136384,'auguria',1,'','left','accountancy',136381,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136385,'auguria',1,'','left','accountancy',136381,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136386,'auguria',1,'','left','accountancy',136381,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136391,'auguria',1,'','left','accountancy',136385,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136392,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136393,'auguria',1,'','left','accountancy',136392,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136394,'auguria',1,'','left','accountancy',136392,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136395,'auguria',1,'','left','accountancy',136381,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136401,'auguria',1,'','left','accountancy',136386,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136402,'auguria',1,'','left','accountancy',136386,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136403,'auguria',1,'','left','accountancy',136386,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136404,'auguria',1,'','left','accountancy',136386,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136581,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2016-01-22 17:26:44'),(136681,'auguria',1,'','left','accountancy',134687,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2016-01-22 17:26:44'),(136682,'auguria',1,'','left','accountancy',136681,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136683,'auguria',1,'','left','accountancy',136681,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136781,'auguria',1,'','left','accountancy',134696,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136782,'auguria',1,'','left','accountancy',136781,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136783,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136784,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136881,'auguria',1,'','left','accountancy',134687,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136891,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136892,'auguria',1,'','left','accountancy',136891,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136893,'auguria',1,'','left','accountancy',136891,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136901,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2016-01-22 17:26:44'),(136902,'auguria',1,'','left','accountancy',136901,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136903,'auguria',1,'','left','accountancy',136901,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136904,'auguria',1,'','left','accountancy',136901,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136931,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2016-01-22 17:26:44'),(136932,'auguria',1,'','left','accountancy',136931,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136933,'auguria',1,'','left','accountancy',136931,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136981,'auguria',1,'','left','accountancy',136881,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2016-01-22 17:26:44'),(136982,'auguria',1,'','left','accountancy',136981,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136983,'auguria',1,'','left','accountancy',136981,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136984,'auguria',1,'','left','accountancy',136981,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136985,'auguria',1,'','left','accountancy',136981,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(137081,'auguria',1,'','left','accountancy',134687,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137082,'auguria',1,'','left','accountancy',137081,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137083,'auguria',1,'','left','accountancy',137081,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137091,'auguria',1,'','left','accountancy',134687,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2016-01-22 17:26:44'),(137092,'auguria',1,'','left','accountancy',137091,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137093,'auguria',1,'','left','accountancy',137091,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137181,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2016-01-22 17:26:44'),(137183,'auguria',1,'','left','accountancy',137181,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137184,'auguria',1,'','left','accountancy',137181,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137185,'auguria',1,'','left','accountancy',137181,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137187,'auguria',1,'','left','accountancy',137181,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137188,'auguria',1,'','left','accountancy',137181,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137281,'auguria',1,'','left','accountancy',134695,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2016-01-22 17:26:44'),(137282,'auguria',1,'','left','accountancy',137281,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137283,'auguria',1,'','left','accountancy',137281,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137284,'auguria',1,'','left','accountancy',137281,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137285,'auguria',1,'','left','accountancy',137281,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137287,'auguria',1,'','left','accountancy',137281,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137381,'auguria',1,'','left','accountancy',134687,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137382,'auguria',1,'','left','accountancy',137381,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137383,'auguria',1,'','left','accountancy',137382,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137384,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137385,'auguria',1,'','left','accountancy',137384,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137386,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137387,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137388,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137389,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137401,'auguria',1,'','left','accountancy',134687,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137402,'auguria',1,'','left','accountancy',137401,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137403,'auguria',1,'','left','accountancy',137401,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137431,'auguria',1,'','left','home',134687,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137432,'auguria',1,'','left','home',134687,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137481,'auguria',1,'','left','products',134684,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137482,'auguria',1,'','left','products',137481,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137483,'auguria',1,'','left','products',137481,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137484,'auguria',1,'','left','products',137481,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137485,'auguria',1,'','left','products',137481,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137486,'auguria',1,'','left','products',137481,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2016-01-22 17:26:44'),(137581,'auguria',1,'','left','products',134684,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137582,'auguria',1,'','left','products',137581,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137583,'auguria',1,'','left','products',137581,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137584,'auguria',1,'','left','products',137581,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137781,'auguria',1,'','left','products',134684,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137782,'auguria',1,'','left','products',137781,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137783,'auguria',1,'','left','products',137781,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137785,'auguria',1,'','left','products',137781,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137786,'auguria',1,'','left','products',137781,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(137787,'auguria',1,'','left','products',137781,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137881,'auguria',1,'','left','products',134684,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(137882,'auguria',1,'','left','products',137881,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(138281,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138282,'auguria',1,'','left','project',138281,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138283,'auguria',1,'','left','project',138281,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138291,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138292,'auguria',1,'','left','project',138291,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138293,'auguria',1,'','left','project',138291,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138381,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138382,'auguria',1,'','left','project',138381,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138383,'auguria',1,'','left','project',138381,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138384,'auguria',1,'','left','project',138381,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138481,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138482,'auguria',1,'','left','project',138481,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138483,'auguria',1,'','left','project',138481,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138484,'auguria',1,'','left','project',138481,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138581,'auguria',1,'','left','tools',134689,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138582,'auguria',1,'','left','tools',138581,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138583,'auguria',1,'','left','tools',138581,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138781,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138782,'auguria',1,'','left','tools',138781,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138811,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138812,'auguria',1,'','left','tools',138811,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138881,'auguria',1,'','left','members',134694,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138882,'auguria',1,'','left','members',138881,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138883,'auguria',1,'','left','members',138881,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138884,'auguria',1,'','left','members',138883,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138885,'auguria',1,'','left','members',138883,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138886,'auguria',1,'','left','members',138883,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138887,'auguria',1,'','left','members',138883,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138888,'auguria',1,'','left','members',138883,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138889,'auguria',1,'','left','members',138881,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138981,'auguria',1,'','left','members',134694,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138982,'auguria',1,'','left','members',138981,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138983,'auguria',1,'','left','members',138981,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138984,'auguria',1,'','left','members',138981,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139181,'auguria',1,'','left','members',134694,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139182,'auguria',1,'','left','members',139181,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2016-01-22 17:26:44'),(139183,'auguria',1,'','left','members',139181,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139184,'auguria',1,'','left','members',139181,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139381,'auguria',1,'','left','members',134694,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139382,'auguria',1,'','left','members',139381,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139383,'auguria',1,'','left','members',139381,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139681,'auguria',1,'','left','hrm',134696,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139682,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139683,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List','holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139684,'auguria',1,'','left','hrm',139683,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove','trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139685,'auguria',1,'','left','hrm',139681,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139686,'auguria',1,'','left','hrm',139681,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139687,'auguria',1,'','left','hrm',139681,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139781,'auguria',1,'','left','commercial',134686,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139782,'auguria',1,'','left','commercial',139781,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139783,'auguria',1,'','left','commercial',139781,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139789,'auguria',1,'','left','commercial',139781,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139881,'auguria',1,'','left','members',134694,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(139882,'auguria',1,'','left','members',139881,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'); +INSERT INTO `llx_menu` VALUES (87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal/card.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal/card.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal/card.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal/card.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(124179,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'$user->rights->cashdesk->use','$conf->cashdesk->enabled',0,'2015-11-15 22:38:33'),(124197,'all',1,'expensereport','left','hrm',-1,NULL,'hrm',100,'/expensereport/index.php','','TripsAndExpenses','trips',NULL,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124198,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/card.php?action=create','','New','trips',NULL,'expensereport_detailnew','$user->rights->expensereport->creer','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124199,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/list.php','','List','trips',NULL,'expensereport_detaillist','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124200,'all',1,'expensereport','left','hrm',-1,'expensereport_detaillist','hrm',100,'/expensereport/list.php?search_status=2','','ListToApprove','trips',NULL,'expensereport_detaillist_approve','$user->rights->expensereport->approve','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124201,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/stats/index.php','','Statistics','trips',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->expensereport->enabled',2,'2015-11-15 22:39:05'),(124202,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/export_csv.php','','ExportTripCSV','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124203,'all',1,'expensereport','left','hrm',-1,'expensereport','hrm',100,'/expensereport/synchro_compta.php','','Synchro_Compta','expensereport',NULL,'expensereport_detail','$user->rights->expensereport->lire','$conf->global->DEPLACEMENT_TO_CLEAN',2,'2015-11-15 22:39:05'),(124210,'all',1,'margins','left','accountancy',-1,NULL,'accountancy',100,'/margin/index.php','','Margins','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2015-11-15 22:41:47'),(134659,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134660,'all',1,'agenda','left','agenda',134659,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134661,'all',1,'agenda','left','agenda',134660,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134662,'all',1,'agenda','left','agenda',134660,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134663,'all',1,'agenda','left','agenda',134662,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134664,'all',1,'agenda','left','agenda',134662,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134665,'all',1,'agenda','left','agenda',134662,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134666,'all',1,'agenda','left','agenda',134662,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134667,'all',1,'agenda','left','agenda',134660,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134668,'all',1,'agenda','left','agenda',134667,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134669,'all',1,'agenda','left','agenda',134667,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134670,'all',1,'agenda','left','agenda',134667,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134671,'all',1,'agenda','left','agenda',134667,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2016-01-22 17:26:42'),(134672,'all',1,'agenda','left','agenda',134660,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2016-01-22 17:26:42'),(134673,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2016-01-22 17:26:42'),(134674,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2016-01-22 17:26:42'),(134675,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2016-01-22 17:26:43'),(134676,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134677,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134678,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2016-01-22 17:26:43'),(134679,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134680,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134681,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2016-01-22 17:26:43'),(134682,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2016-01-22 17:26:44'),(134683,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2016-01-22 17:26:44'),(134684,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2016-01-22 17:26:44'),(134686,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(134687,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2016-01-22 17:26:44'),(134688,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(134689,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2016-01-22 17:26:44'),(134694,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(134695,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2016-01-22 17:26:44'),(134696,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2016-01-22 17:26:44'),(134781,'auguria',1,'','left','home',134682,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2016-01-22 17:26:44'),(134782,'auguria',1,'','left','home',134781,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134783,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134784,'auguria',1,'','left','home',134781,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134785,'auguria',1,'','left','home',134781,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134786,'auguria',1,'','left','home',134781,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134787,'auguria',1,'','left','home',134781,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134788,'auguria',1,'','left','home',134781,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134789,'auguria',1,'','left','home',134781,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134790,'auguria',1,'','left','home',134781,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134791,'auguria',1,'','left','home',134781,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134792,'auguria',1,'','left','home',134781,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134793,'auguria',1,'','left','home',134781,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134794,'auguria',1,'','left','home',134781,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134795,'auguria',1,'','left','home',134781,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2016-01-22 17:26:44'),(134882,'auguria',1,'','left','home',134981,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134883,'auguria',1,'','left','home',134882,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134884,'auguria',1,'','left','home',134882,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134886,'auguria',1,'','left','home',134981,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134887,'auguria',1,'','left','home',134981,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134888,'auguria',1,'','left','home',134981,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134889,'auguria',1,'','left','home',134981,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134891,'auguria',1,'','left','home',134981,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134981,'auguria',1,'','left','home',134682,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2016-01-22 17:26:44'),(134982,'auguria',1,'','left','home',134981,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134983,'auguria',1,'','left','home',134981,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134986,'auguria',1,'','left','home',134981,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134987,'auguria',1,'','left','home',134981,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2016-01-22 17:26:44'),(134988,'auguria',1,'','left','home',134981,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134989,'auguria',1,'','left','home',134981,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134990,'auguria',1,'','left','home',134981,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134991,'auguria',1,'','left','home',134981,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(134992,'auguria',1,'','left','home',134981,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2016-01-22 17:26:44'),(135081,'auguria',1,'','left','home',134682,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2016-01-22 17:26:44'),(135082,'auguria',1,'','left','home',135081,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135083,'auguria',1,'','left','home',135082,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135084,'auguria',1,'','left','home',135081,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135085,'auguria',1,'','left','home',135084,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2016-01-22 17:26:44'),(135181,'auguria',1,'','left','companies',134683,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135182,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135183,'auguria',1,'','left','companies',135181,NULL,NULL,0,'/societe/list.php?action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135184,'auguria',1,'','left','companies',135181,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135185,'auguria',1,'','left','companies',135184,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135187,'auguria',1,'','left','companies',135181,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135188,'auguria',1,'','left','companies',135187,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135190,'auguria',1,'','left','companies',135181,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135191,'auguria',1,'','left','companies',135190,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135281,'auguria',1,'','left','companies',134683,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135282,'auguria',1,'','left','companies',135281,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135283,'auguria',1,'','left','companies',135281,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135285,'auguria',1,'','left','companies',135283,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135286,'auguria',1,'','left','companies',135283,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135287,'auguria',1,'','left','companies',135283,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(135288,'auguria',1,'','left','companies',135283,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2016-01-22 17:26:44'),(135331,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135332,'auguria',1,'','left','companies',135331,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135341,'auguria',1,'','left','companies',134683,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135342,'auguria',1,'','left','companies',135341,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135351,'auguria',1,'','left','companies',134683,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135352,'auguria',1,'','left','companies',135351,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(135781,'auguria',1,'','left','commercial',134686,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135782,'auguria',1,'','left','commercial',135781,NULL,NULL,0,'/comm/propal/card.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135783,'auguria',1,'','left','commercial',135781,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135784,'auguria',1,'','left','commercial',135783,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135785,'auguria',1,'','left','commercial',135783,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135786,'auguria',1,'','left','commercial',135783,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135787,'auguria',1,'','left','commercial',135783,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135788,'auguria',1,'','left','commercial',135783,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2016-01-22 17:26:44'),(135791,'auguria',1,'','left','commercial',135781,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(135881,'auguria',1,'','left','commercial',134686,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135882,'auguria',1,'','left','commercial',135881,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135883,'auguria',1,'','left','commercial',135881,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135884,'auguria',1,'','left','commercial',135883,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135885,'auguria',1,'','left','commercial',135883,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135886,'auguria',1,'','left','commercial',135883,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135887,'auguria',1,'','left','commercial',135883,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135888,'auguria',1,'','left','commercial',135883,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135889,'auguria',1,'','left','commercial',135883,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2016-01-22 17:26:44'),(135890,'auguria',1,'','left','commercial',135881,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2016-01-22 17:26:44'),(135981,'auguria',1,'','left','commercial',134684,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2016-01-22 17:26:44'),(135982,'auguria',1,'','left','commercial',135981,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135983,'auguria',1,'','left','commercial',135981,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(135984,'auguria',1,'','left','commercial',135981,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2016-01-22 17:26:44'),(136081,'auguria',1,'','left','commercial',134686,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136082,'auguria',1,'','left','commercial',136081,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136083,'auguria',1,'','left','commercial',136081,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136084,'auguria',1,'','left','commercial',136081,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2016-01-22 17:26:44'),(136085,'auguria',1,'','left','commercial',136084,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136086,'auguria',1,'','left','commercial',136084,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136087,'auguria',1,'','left','commercial',136084,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136088,'auguria',1,'','left','commercial',136084,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2016-01-22 17:26:44'),(136181,'auguria',1,'','left','commercial',134686,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136182,'auguria',1,'','left','commercial',136181,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136183,'auguria',1,'','left','commercial',136181,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2016-01-22 17:26:44'),(136281,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136282,'auguria',1,'','left','accountancy',136281,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136283,'auguria',1,'','left','accountancy',136281,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136284,'auguria',1,'','left','accountancy',136281,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136285,'auguria',1,'','left','accountancy',136281,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(136381,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136382,'auguria',1,'','left','accountancy',136381,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136383,'auguria',1,'','left','accountancy',136381,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136384,'auguria',1,'','left','accountancy',136381,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136385,'auguria',1,'','left','accountancy',136381,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136386,'auguria',1,'','left','accountancy',136381,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136391,'auguria',1,'','left','accountancy',136385,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136392,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136393,'auguria',1,'','left','accountancy',136392,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136394,'auguria',1,'','left','accountancy',136392,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2016-01-22 17:26:44'),(136395,'auguria',1,'','left','accountancy',136381,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136401,'auguria',1,'','left','accountancy',136386,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136402,'auguria',1,'','left','accountancy',136386,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136403,'auguria',1,'','left','accountancy',136386,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136404,'auguria',1,'','left','accountancy',136386,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2016-01-22 17:26:44'),(136581,'auguria',1,'','left','accountancy',134687,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2016-01-22 17:26:44'),(136681,'auguria',1,'','left','accountancy',134687,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2016-01-22 17:26:44'),(136682,'auguria',1,'','left','accountancy',136681,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136683,'auguria',1,'','left','accountancy',136681,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2016-01-22 17:26:44'),(136781,'auguria',1,'','left','accountancy',134696,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136782,'auguria',1,'','left','accountancy',136781,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136783,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136784,'auguria',1,'','left','accountancy',136781,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2016-01-22 17:26:44'),(136881,'auguria',1,'','left','accountancy',134687,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136891,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2016-01-22 17:26:44'),(136892,'auguria',1,'','left','accountancy',136891,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136893,'auguria',1,'','left','accountancy',136891,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2016-01-22 17:26:44'),(136901,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2016-01-22 17:26:44'),(136902,'auguria',1,'','left','accountancy',136901,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136903,'auguria',1,'','left','accountancy',136901,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136904,'auguria',1,'','left','accountancy',136901,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2016-01-22 17:26:44'),(136931,'auguria',1,'','left','accountancy',136881,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2016-01-22 17:26:44'),(136932,'auguria',1,'','left','accountancy',136931,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136933,'auguria',1,'','left','accountancy',136931,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2016-01-22 17:26:44'),(136981,'auguria',1,'','left','accountancy',136881,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2016-01-22 17:26:44'),(136982,'auguria',1,'','left','accountancy',136981,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136983,'auguria',1,'','left','accountancy',136981,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136984,'auguria',1,'','left','accountancy',136981,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(136985,'auguria',1,'','left','accountancy',136981,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2016-01-22 17:26:44'),(137081,'auguria',1,'','left','accountancy',134687,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137082,'auguria',1,'','left','accountancy',137081,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137083,'auguria',1,'','left','accountancy',137081,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2016-01-22 17:26:44'),(137091,'auguria',1,'','left','accountancy',134687,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2016-01-22 17:26:44'),(137092,'auguria',1,'','left','accountancy',137091,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137093,'auguria',1,'','left','accountancy',137091,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2016-01-22 17:26:44'),(137181,'auguria',1,'','left','accountancy',134695,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2016-01-22 17:26:44'),(137183,'auguria',1,'','left','accountancy',137181,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137184,'auguria',1,'','left','accountancy',137181,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137185,'auguria',1,'','left','accountancy',137181,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137187,'auguria',1,'','left','accountancy',137181,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137188,'auguria',1,'','left','accountancy',137181,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2016-01-22 17:26:44'),(137281,'auguria',1,'','left','accountancy',134695,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2016-01-22 17:26:44'),(137282,'auguria',1,'','left','accountancy',137281,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137283,'auguria',1,'','left','accountancy',137281,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137284,'auguria',1,'','left','accountancy',137281,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137285,'auguria',1,'','left','accountancy',137281,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137287,'auguria',1,'','left','accountancy',137281,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2016-01-22 17:26:44'),(137381,'auguria',1,'','left','accountancy',134687,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137382,'auguria',1,'','left','accountancy',137381,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137383,'auguria',1,'','left','accountancy',137382,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137384,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137385,'auguria',1,'','left','accountancy',137384,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137386,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137387,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137388,'auguria',1,'','left','accountancy',137381,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137389,'auguria',1,'','left','accountancy',137384,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2016-01-22 17:26:44'),(137401,'auguria',1,'','left','accountancy',134687,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2016-01-22 17:26:44'),(137402,'auguria',1,'','left','accountancy',137401,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137403,'auguria',1,'','left','accountancy',137401,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2016-01-22 17:26:44'),(137431,'auguria',1,'','left','home',134687,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137432,'auguria',1,'','left','home',134687,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2016-01-22 17:26:44'),(137481,'auguria',1,'','left','products',134684,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137482,'auguria',1,'','left','products',137481,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137483,'auguria',1,'','left','products',137481,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137484,'auguria',1,'','left','products',137481,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2016-01-22 17:26:44'),(137485,'auguria',1,'','left','products',137481,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137486,'auguria',1,'','left','products',137481,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2016-01-22 17:26:44'),(137581,'auguria',1,'','left','products',134684,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137582,'auguria',1,'','left','products',137581,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137583,'auguria',1,'','left','products',137581,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2016-01-22 17:26:44'),(137584,'auguria',1,'','left','products',137581,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2016-01-22 17:26:44'),(137781,'auguria',1,'','left','products',134684,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137782,'auguria',1,'','left','products',137781,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137783,'auguria',1,'','left','products',137781,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137785,'auguria',1,'','left','products',137781,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137786,'auguria',1,'','left','products',137781,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(137787,'auguria',1,'','left','products',137781,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2016-01-22 17:26:44'),(137881,'auguria',1,'','left','products',134684,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(137882,'auguria',1,'','left','products',137881,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2016-01-22 17:26:44'),(138281,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138282,'auguria',1,'','left','project',138281,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138283,'auguria',1,'','left','project',138281,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138291,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138292,'auguria',1,'','left','project',138291,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138293,'auguria',1,'','left','project',138291,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138381,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138382,'auguria',1,'','left','project',138381,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138383,'auguria',1,'','left','project',138381,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138384,'auguria',1,'','left','project',138381,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138481,'auguria',1,'','left','project',134688,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138482,'auguria',1,'','left','project',138481,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138483,'auguria',1,'','left','project',138481,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138484,'auguria',1,'','left','project',138481,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2016-01-22 17:26:44'),(138581,'auguria',1,'','left','tools',134689,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138582,'auguria',1,'','left','tools',138581,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138583,'auguria',1,'','left','tools',138581,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2016-01-22 17:26:44'),(138781,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138782,'auguria',1,'','left','tools',138781,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2016-01-22 17:26:44'),(138811,'auguria',1,'','left','tools',134689,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138812,'auguria',1,'','left','tools',138811,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2016-01-22 17:26:44'),(138881,'auguria',1,'','left','members',134694,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138882,'auguria',1,'','left','members',138881,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138883,'auguria',1,'','left','members',138881,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138884,'auguria',1,'','left','members',138883,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138885,'auguria',1,'','left','members',138883,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138886,'auguria',1,'','left','members',138883,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138887,'auguria',1,'','left','members',138883,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138888,'auguria',1,'','left','members',138883,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138889,'auguria',1,'','left','members',138881,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138981,'auguria',1,'','left','members',134694,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138982,'auguria',1,'','left','members',138981,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138983,'auguria',1,'','left','members',138981,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(138984,'auguria',1,'','left','members',138981,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139181,'auguria',1,'','left','members',134694,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139182,'auguria',1,'','left','members',139181,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2016-01-22 17:26:44'),(139183,'auguria',1,'','left','members',139181,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139184,'auguria',1,'','left','members',139181,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139381,'auguria',1,'','left','members',134694,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139382,'auguria',1,'','left','members',139381,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139383,'auguria',1,'','left','members',139381,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2016-01-22 17:26:44'),(139681,'auguria',1,'','left','hrm',134696,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139682,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139683,'auguria',1,'','left','hrm',139681,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List','holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139684,'auguria',1,'','left','hrm',139683,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove','trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139685,'auguria',1,'','left','hrm',139681,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139686,'auguria',1,'','left','hrm',139681,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139687,'auguria',1,'','left','hrm',139681,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2016-01-22 17:26:44'),(139781,'auguria',1,'','left','commercial',134686,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139782,'auguria',1,'','left','commercial',139781,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139783,'auguria',1,'','left','commercial',139781,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139789,'auguria',1,'','left','commercial',139781,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2016-01-22 17:26:44'),(139881,'auguria',1,'','left','members',134694,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'),(139882,'auguria',1,'','left','members',139881,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2016-01-22 17:26:44'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index a5c4d4980e8..17098310769 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -970,7 +970,7 @@ if ($id > 0) if (! empty($conf->propal->enabled) && $user->rights->propal->creer && $object->status==1) { $langs->load("propal"); - print ''; + print ''; } if (! empty($conf->commande->enabled) && $user->rights->commande->creer && $object->status==1) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal/card.php similarity index 99% rename from htdocs/comm/propal.php rename to htdocs/comm/propal/card.php index d05f9078828..b4c12fbcdab 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal/card.php @@ -27,11 +27,11 @@ */ /** - * \file htdocs/comm/propal.php + * \file htdocs/comm/propal/card.php * \ingroup propale * \brief Page of commercial proposals card and list */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formpropal.class.php'; @@ -2062,7 +2062,7 @@ if ($action == 'create') print '
      '.$langs->trans("AccountancyCode").''.length_accountg($account->account_number).'
      '; + if (! empty($conf->accounting->enabled)) { + print length_accountg($account->account_number).'
      '; print $langs->trans('IncotermLabel'); print ''; - if ($user->rights->propal->creer) print ''.img_edit().''; + if ($user->rights->propal->creer) print ''.img_edit().''; else print ' '; print '
      '; print ''; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 99f5058ad3f..3d43d6b00f2 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2816,10 +2816,10 @@ class Propal extends CommonObject $label.= '
      ' . $langs->trans('AmountTTC') . ': ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option == '') { - $link = '
      '; if (! empty($conf->propal->enabled)) { $var=false; - print '
      '; + print ''; print ''; print ''; print ''; @@ -142,7 +142,7 @@ if (! empty($conf->propal->enabled) && $user->rights->propale->lire) $obj = $db->fetch_object($resql); $var=!$var; print '"; diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php index bfe427db708..d9b1f42132a 100644 --- a/htdocs/core/boxes/modules_boxes.php +++ b/htdocs/core/boxes/modules_boxes.php @@ -236,8 +236,6 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" // Show box title if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto'])) { - //$out.= '
      '."\n"; - //$out.= '
      '.$langs->trans("SearchAProposal").'
      '; - print ''.img_object($langs->trans("ShowPropal"),"propal").' '.$obj->ref.''; + print ''.img_object($langs->trans("ShowPropal"),"propal").' '.$obj->ref.''; print ''; print price($obj->price); print "
      '."\n"; $out.= ''; $out.= ' 0) { $out.= ' colspan="'.$nbcol.'"'; } @@ -268,14 +266,11 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" } $out.= ''; $out.= "\n"; - //$out.= "
      \n"; - //$out.= "
      \n"; } // Show box lines if ($nblines) { - //$out.= ''."\n"; // Loop on each record for ($i=0, $n=$nblines; $i < $n; $i++) { diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 579e83a744c..60548969376 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -515,7 +515,7 @@ class FormFile $arraykeys=array_keys($modellist); $modelselected=$arraykeys[0]; } - $out.= $form->selectarray('model', $modellist, $modelselected, $showempty, 0, 0, '', 0, 0, 0, '', ''); + $out.= $form->selectarray('model', $modellist, $modelselected, $showempty, 0, 0, '', 0, 0, 0, '', 'minwidth100'); $out.= ajax_combobox('model'); } else diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 61446dca4b7..f84e91a3312 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -311,7 +311,7 @@ class Notify $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$newref); break; case 'PROPAL_VALIDATE': - $link='/comm/propal.php?id='.$object->id; + $link='/comm/propal/card.php?id='.$object->id; $dir_output = $conf->propal->dir_output; $object_type = 'propal'; $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$newref); @@ -470,7 +470,7 @@ class Notify $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$newref); break; case 'PROPAL_VALIDATE': - $link='/comm/propal.php?id='.$object->id; + $link='/comm/propal/card.php?id='.$object->id; $dir_output = $conf->propal->dir_output; $object_type = 'propal'; $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$newref); diff --git a/htdocs/core/lib/propal.lib.php b/htdocs/core/lib/propal.lib.php index 0beff079bce..9d4874cb2f3 100644 --- a/htdocs/core/lib/propal.lib.php +++ b/htdocs/core/lib/propal.lib.php @@ -38,7 +38,7 @@ function propal_prepare_head($object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/comm/propal.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/card.php?id='.$object->id; $head[$h][1] = $langs->trans('ProposalCard'); $head[$h][2] = 'comm'; $h++; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 944220894a6..28c1efe8a6c 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -127,7 +127,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left -- Commercial - Proposals insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled', __HANDLER__, 'left', 1100__+MAX_llx_menu__, 'commercial', 'propals', 5__+MAX_llx_menu__, '/comm/propal/index.php?leftmenu=propals', 'Prop', 0, 'propal', '$user->rights->propale->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled', __HANDLER__, 'left', 1101__+MAX_llx_menu__, 'commercial', '', 1100__+MAX_llx_menu__, '/comm/propal.php?action=create&leftmenu=propals', 'NewPropal', 1, 'propal', '$user->rights->propale->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled', __HANDLER__, 'left', 1101__+MAX_llx_menu__, 'commercial', '', 1100__+MAX_llx_menu__, '/comm/propal/card.php?action=create&leftmenu=propals', 'NewPropal', 1, 'propal', '$user->rights->propale->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled', __HANDLER__, 'left', 1102__+MAX_llx_menu__, 'commercial', '', 1100__+MAX_llx_menu__, '/comm/propal/list.php?leftmenu=propals', 'List', 1, 'propal', '$user->rights->propale->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled && $leftmenu=="propals"', __HANDLER__, 'left', 1103__+MAX_llx_menu__, 'commercial', '', 1102__+MAX_llx_menu__, '/comm/propal/list.php?leftmenu=propals&viewstatut=0', 'PropalsDraft', 1, 'propal', '$user->rights->propale->lire', '', 2, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->propal->enabled && $leftmenu=="propals"', __HANDLER__, 'left', 1104__+MAX_llx_menu__, 'commercial', '', 1102__+MAX_llx_menu__, '/comm/propal/list.php?leftmenu=propals&viewstatut=1', 'PropalsOpened', 1, 'propal', '$user->rights->propale->lire', '', 2, 3, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 13af259290c..7cb2eb41200 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -692,7 +692,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { $langs->load("propal"); $newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Prop"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals', 100); - $newmenu->add("/comm/propal.php?action=create&leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer); + $newmenu->add("/comm/propal/card.php?action=create&leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer); $newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire); if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire); if (empty($leftmenu) || $leftmenu=="propals") $newmenu->add("/comm/propal/list.php?leftmenu=propals&viewstatut=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire); diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index d3316ad1411..86bd4a9fd63 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1715,7 +1715,7 @@ else if ($id > 0 || ! empty($ref)) $langs->load("propal"); if ($object->statut < 2) { - if ($user->rights->propal->creer) print ''; + if ($user->rights->propal->creer) print ''; else print ''; } } diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 0307c4aed5e..841d1b1b73a 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -687,7 +687,7 @@ if (empty($reshook)) $object->fk_unit ); if ($result > 0) { - header("Location: " . DOL_URL_ROOT . "/comm/propal.php?id=" . $propal->id); + header("Location: " . DOL_URL_ROOT . "/comm/propal/card.php?id=" . $propal->id); return; } diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 9f9dbc3bd2c..f6937cff239 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -913,7 +913,7 @@ else if (! empty($conf->propal->enabled) && $user->rights->propal->creer) { $langs->load("propal"); - print ''; + print ''; } if (! empty($conf->commande->enabled) && $user->rights->commande->creer) { diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 0a12d87fc2d..cf8d5c3665f 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -189,7 +189,7 @@ $listofreferent=array( 'class'=>'Propal', 'table'=>'propal', 'datefieldname'=>'datep', - 'urlnew'=>DOL_URL_ROOT.'/comm/propal.php?action=create&projectid='.$id.'&socid='.$socid, + 'urlnew'=>DOL_URL_ROOT.'/comm/propal/card.php?action=create&projectid='.$id.'&socid='.$socid, 'lang'=>'propal', 'buttonnew'=>'AddProp', 'testnew'=>$user->rights->propal->creer, diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 173f5a7fd1e..21e8fcd8cac 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2204,6 +2204,11 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.2em; border-radius: 0.2em;*/ } +#tablelines tr.liste_titre td, tr.liste_titre.trnoborder td { + border-top-width: 1px; + border-top-color: rgb(); + border-top-style: solid; +} table.liste tr, table.noborder tr, div.noborder form { border-top-color: #FEFEFE; min-height: 20px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index b79b5c2404a..63b42726382 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2074,7 +2074,11 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.1em; border-radius: 0.1em; } - +#tablelines tr.liste_titre td, tr.liste_titre.trnoborder td { + border-top-width: 1px; + border-top-color: rgb(); + border-top-style: solid; +} table.noborder tr, div.noborder form { border-top-color: #FEFEFE; From 04fd5a20ef5b28c83bbdeb90baa40d16ce3ea950 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 15:43:28 +0200 Subject: [PATCH 285/380] 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 286/380] 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 287/380] 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 '
      '; 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 288/380] 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 289/380] 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 00a658143d5f159a937749b2065e2b7248068383 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 23 Apr 2016 16:51:22 +0200 Subject: [PATCH 290/380] NEW List of user in agenda view per user show photo thumb --- htdocs/comm/action/card.php | 10 +++++----- htdocs/comm/action/index.php | 3 ++- htdocs/comm/action/listactions.php | 20 +++++++++++++------- htdocs/comm/action/peruser.php | 6 ++++-- htdocs/core/lib/agenda.lib.php | 23 +++++++++++++---------- htdocs/core/tpl/contacts.tpl.php | 12 ++++++++---- htdocs/theme/eldy/style.css.php | 3 ++- htdocs/theme/md/style.css.php | 3 ++- 8 files changed, 49 insertions(+), 31 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 4ca75ade9b9..9734602c41d 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -937,7 +937,7 @@ if ($id > 0) 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 '
      '; // Ref - print ''; + print ''; // Type of event if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) @@ -951,7 +951,7 @@ if ($id > 0) print 'global->AGENDA_USE_EVENT_TYPE)?' class="fieldrequired"':'').'>'.$langs->trans("Title").''; // Full day event - print ''; + print ''; // Date start print ''; + print ''; print ''; diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index c894647bb29..29191fce68a 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -360,6 +360,7 @@ $showextcals=$listofextcals; if (! empty($conf->use_javascript_ajax)) // If javascript on { + $s.=''."\n"; $s.='' . "\n"; // Local calendar - $s.='
      ' . $langs->trans("LocalAgenda").'  
      '; + $s.='
      ' . $langs->trans("LocalAgenda").'  
      '; // External calendars if (is_array($showextcals) && count($showextcals) > 0) diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index ed8227a1cb8..cfb3bc92333 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -306,10 +306,11 @@ if ($resql) if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"c.libelle",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"a.datep",$param,'','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"a.datep2",$param,'','align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom",$param,"","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Contact"),$_SERVER["PHP_SELF"],"a.fk_contact",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("ActionsOwnedBy"),$_SERVER["PHP_SELF"],"",$param,"","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"a.percent",$param,"",'align="right"',$sortfield,$sortorder); + print_liste_field_titre(""); print "\n"; print ''; @@ -329,9 +330,12 @@ if ($resql) print ''; //print ''; print ''; - print ''; + print ''; + // Action column + print ''; print "\n"; $contactstatic = new Contact($db); @@ -371,7 +375,7 @@ if ($resql) { $labeltype=$obj->type_code; if (! empty($arraylist[$labeltype])) $labeltype=$arraylist[$labeltype]; - print ''; + print ''; } // Start date @@ -397,7 +401,7 @@ if ($resql) $societestatic->id=$obj->socid; $societestatic->client=$obj->client; $societestatic->name=$obj->societe; - print $societestatic->getNomUrl(1,'',10); + print $societestatic->getNomUrl(1,'',28); } else print ' '; print ''; @@ -409,7 +413,7 @@ if ($resql) $contactstatic->lastname=$obj->lastname; $contactstatic->firstname=$obj->firstname; $contactstatic->id=$obj->fk_contact; - print $contactstatic->getNomUrl(1,'',10); + print $contactstatic->getNomUrl(1,'',28); } else { @@ -430,6 +434,8 @@ if ($resql) // Status/Percent print ''; + print ''; + print "\n"; $i++; } diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index fa24935316e..033c67839f0 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -420,7 +420,7 @@ if ($filtert > 0 || $usergroup > 0) $sql.= ' ORDER BY fk_user_action, datep'; //fk_user_action //print $sql; -dol_syslog("comm/action/index.php", LOG_DEBUG); +dol_syslog("comm/action/peruser.php", LOG_DEBUG); $resql=$db->query($sql); if ($resql) { @@ -703,7 +703,9 @@ foreach ($usernames as $username) { $var = ! $var; echo ""; - echo ''; + echo ''; $tmpday = $sav; // Lopp on each day of week diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index bfd9314f945..919a72c5ec5 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -65,7 +65,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print '
      '; if (! empty($conf->browser->phone)) print '
      '; - else print '
      '.$langs->trans("Ref").''.$object->id.'
      '.$langs->trans("Ref").''.$object->id.'
      '.$langs->trans("EventOnFullDay").'fulldayevent?' checked':'').'>
      '.$langs->trans("EventOnFullDay").'fulldayevent?' checked':'').'>
      '.$langs->trans("DateActionStart").''; @@ -1090,7 +1090,7 @@ if ($id > 0) // Thirdparty - Contact if ($conf->societe->enabled) { - print '
      '.$langs->trans("ActionOnCompany").'
      '.$langs->trans("ActionOnCompany").''; print '
      '; $events=array(); @@ -1115,7 +1115,7 @@ if ($id > 0) $langs->load("projects"); - print '
      '.$langs->trans("Project").''; + print '
      '.$langs->trans("Project").''; $numprojet=$formproject->select_projects($object->socid, $object->fk_project, 'projectid'); if ($numprojet==0) { @@ -1125,7 +1125,7 @@ if ($id > 0) } // Priority - print '
      '.$langs->trans("Priority").''; + print '
      '.$langs->trans("Priority").''; print ''; print '
      '; - print ''; - print ''; + $searchpitco=$form->showFilterAndCheckAddButtons(0); + print $searchpitco; + print '
      '.dol_trunc($labeltype,24).''.dol_trunc($labeltype,28).''.$actionstatic->LibStatut($obj->percent,6).'
      ' . $username->getNomUrl(1). ''; + print $username->getNomUrl(-1,'',0,0,24,1,''); + print '
      '; diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 275724d3012..7f4c5282098 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1089,7 +1089,7 @@ else $i++; } } - else print ''; + else print ''; print "
      '; + else 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 294/380] 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 bcb4b2b607e38d5bdb2c8e643135d4968bcaf52e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 23 Apr 2016 21:34:10 +0200 Subject: [PATCH 295/380] Work on website module --- htdocs/adherents/cotisations.php | 6 +- htdocs/admin/menus/index.php | 2 +- htdocs/core/class/html.form.class.php | 7 +- .../mysql/tables/llx_website_pages.sql | 2 +- htdocs/product/admin/product_tools.php | 4 +- htdocs/websites/class/website.class.php | 3 - htdocs/websites/class/websitepage.class.php | 88 ++++--- htdocs/websites/index.php | 218 ++++++++++++++---- 8 files changed, 225 insertions(+), 105 deletions(-) diff --git a/htdocs/adherents/cotisations.php b/htdocs/adherents/cotisations.php index 301664fab83..d0f8206f269 100644 --- a/htdocs/adherents/cotisations.php +++ b/htdocs/adherents/cotisations.php @@ -128,7 +128,9 @@ if ($result) if (! empty($date_select)) $title.=' ('.$langs->trans("Year").' '.$date_select.')'; $param=''; - $param.="&statut=$statut&date_select=$date_select"; + if ($statut != '') $param.="&statut=".$statut; + if ($date_select) $param.="&date_select=".$date_select; + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; if ($search_lastname) $param.="&search_lastname=".$search_lastname; if ($search_login) $param.="&search_login=".$search_login; if ($search_acount) $param.="&search_account=".$search_account; @@ -214,7 +216,7 @@ if ($result) $var=true; $total=0; - while ($i < $num && $i < $conf->liste_limit) + while ($i < min($num, $limit)) { $objp = $db->fetch_object($result); $total+=$objp->cotisation; diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index 7da0673b196..28d8d353905 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -262,7 +262,7 @@ print ''; print '
      '; -print '
      '; print ''; @@ -74,7 +74,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; print ''; - - // Status - print ''; - print ''; } if (! empty($conf->societe->enabled) && $user->rights->societe->lire) @@ -128,6 +120,17 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh print ''; } + if ($canedit) + { + // Status + print ''; + print ''; + } + if ($canedit && $action == 'show_peruser') { // Filter on hours diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 88169314211..b3eaeeec503 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -54,7 +54,9 @@ $userstatic=new User($db);
      - +
      trans("Nature"); ?>
      trans("ThirdParty"); ?>
      @@ -132,10 +134,12 @@ $userstatic=new User($db);
      - + - +
      trans("Nature"); ?>
      trans("ThirdParty"); ?>
      trans("Users").'/'.$langs->trans("Contacts"); ?>
      diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 21e8fcd8cac..ca27d42c995 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -582,6 +582,7 @@ div.myavailability { .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } .minheight20 { min-height: 20px; } +.minheight40 { min-height: 40px; } .titlefield { width: 25%; } .titlefieldcreate { width: 20%; } @@ -2204,7 +2205,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.2em; border-radius: 0.2em;*/ } -#tablelines tr.liste_titre td, tr.liste_titre.trnoborder td { +#tablelines tr.liste_titre td, form.formnoborder div, tr.liste_titre.trnoborder td { border-top-width: 1px; border-top-color: rgb(); border-top-style: solid; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 63b42726382..5cb3995c6ba 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -580,6 +580,7 @@ div.myavailability { .maxwidth400 { max-width: 400px; } .maxwidth500 { max-width: 500px; } .minheight20 { min-height: 20px; } +.minheight40 { min-height: 40px; } .titlefield { width: 30%; } .titlefieldcreate { width: 20%; } @@ -2074,7 +2075,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.1em; border-radius: 0.1em; } -#tablelines tr.liste_titre td, tr.liste_titre.trnoborder td { +#tablelines tr.liste_titre td, form.formnoborder, tr.liste_titre.trnoborder td { border-top-width: 1px; border-top-color: rgb(); border-top-style: solid; From 9d21b635628c262b1645a97688857a92247a7315 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 23 Apr 2016 16:55:08 +0200 Subject: [PATCH 291/380] Beautify a page --- htdocs/comm/action/rapport/index.php | 2 +- htdocs/theme/eldy/img/title_agenda.png | Bin 0 -> 750 bytes htdocs/theme/md/img/title_agenda.png | Bin 0 -> 750 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 htdocs/theme/eldy/img/title_agenda.png create mode 100644 htdocs/theme/md/img/title_agenda.png diff --git a/htdocs/comm/action/rapport/index.php b/htdocs/comm/action/rapport/index.php index e62af271c49..a65a9153078 100644 --- a/htdocs/comm/action/rapport/index.php +++ b/htdocs/comm/action/rapport/index.php @@ -112,7 +112,7 @@ if ($resql) print ''; print ''; - print_barre_liste($langs->trans("Actions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, '', 0, '', '', $limit); + print_barre_liste($langs->trans("Actions"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_agenda', 0, '', '', $limit); $i = 0; print '
      '; print $langs->trans("ActionsToDoBy").'   '; - print ''; + print ''; print $form->select_dolusers($filtert, 'usertodo', 1, '', ! $canedit, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); if (empty($conf->dol_optimize_smallscreen)) print '   '.$langs->trans("or") . ' '.$langs->trans("ToUserOfGroup").'   '; print $form->select_dolgroups($usergroupid, 'usergroup', 1, '', ! $canedit); @@ -95,14 +95,6 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh } print $formactions->select_type_actions($actioncode, "actioncode", $excludetype, (empty($conf->global->AGENDA_USE_EVENT_TYPE)?1:0), 0, $multiselect); print '
      '; - print $langs->trans("Status"); - print '  '; - $formactions->form_select_status_action('formaction',$status,1,'status',1,2); - print '
      '; + print $langs->trans("Status"); + print '  '; + $formactions->form_select_status_action('formaction',$status,1,'status',1,2); + print '
      '; diff --git a/htdocs/theme/eldy/img/title_agenda.png b/htdocs/theme/eldy/img/title_agenda.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4c8d2bea24113f1edcecffeaeec78d3f0b8b87 GIT binary patch literal 750 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXg}q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd-FgZ~$CP4{e5|AJYMhkxhB?tk|7$ z?wgsnb22l^YF(7rI`AF%qTwY?CR`gYi}EidElL`fG%0BnxYsWD18sw5h|vQ~1G&TRc#1Pt#A@RU ze!a}_-;00`JjEF-GyHCu(IU$CNp9Az`ki#ry3W{);=-NV6l7?qocf=v+A5U~csKhX2|`!PJ)lUv*ER zFC*3uukdD8mGlef{*Rh%)qS4INWrys)HX|dEO7xg%&ZQ-opLS{0yQ)H)0Pu6N!Ng5 zdw98+GqX+K<#(&K%{>2(Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXg}q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd-FgZ~$CP4{e5|AJYMhkxhB?tk|7$ z?wgsnb22l^YF(7rI`AF%qTwY?CR`gYi}EidElL`fG%0BnxYsWD18sw5h|vQ~1G&TRc#1Pt#A@RU ze!a}_-;00`JjEF-GyHCu(IU$CNp9Az`ki#ry3W{);=-NV6l7?qocf=v+A5U~csKhX2|`!PJ)lUv*ER zFC*3uukdD8mGlef{*Rh%)qS4INWrys)HX|dEO7xg%&ZQ-opLS{0yQ)H)0Pu6N!Ng5 zdw98+GqX+K<#(&K%{>2( Date: Sat, 23 Apr 2016 17:35:33 +0200 Subject: [PATCH 292/380] Uniformize style --- htdocs/barcode/printsheet.php | 2 +- htdocs/commande/card.php | 8 +------- htdocs/holiday/card.php | 6 +++--- htdocs/holiday/class/holiday.class.php | 14 +++++++++----- htdocs/holiday/define_holiday.php | 12 ++++++++++-- htdocs/holiday/document.php | 6 +++--- htdocs/projet/card.php | 5 ++--- htdocs/projet/element.php | 8 +++++--- htdocs/theme/eldy/style.css.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 10 files changed, 36 insertions(+), 29 deletions(-) diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php index bd1fb2156c6..a60ac19d0af 100644 --- a/htdocs/barcode/printsheet.php +++ b/htdocs/barcode/printsheet.php @@ -384,7 +384,7 @@ print ''; print ' '.$langs->trans("FillBarCodeTypeAndValueFromThirdParty").'   '; print '
      '; print '
      '; -print $form->select_company(GETPOST('socid'), 'socid', '', 1, 0, 0, array(), 0, 'minwidth300'); +print $form->select_company(GETPOST('socid'), 'socid', '', 'SelectThirdParty', 0, 0, array(), 0, 'minwidth300'); print '   '; print '
      '; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index d6fa064df39..08ca0e6b067 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2587,12 +2587,8 @@ if ($action == 'create' && $user->rights->commande->creer) if ($action != 'presend') { print '
      '; - // print '
      '; - // print ''; // ancre - /* - * Documents generes - */ + // Documents $comref = dol_sanitizeFileName($object->ref); $file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf'; $relativepath = $comref . '/' . $comref . '.pdf'; @@ -2611,14 +2607,12 @@ if ($action == 'create' && $user->rights->commande->creer) print '
      '; - // print '
      '; // List of actions on element include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; $formactions = new FormActions($db); $somethingshown = $formactions->showactions($object, 'order', $socid); - // print '
      '; print ''; } diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index 66941d3ded7..50679085f12 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -885,7 +885,7 @@ else { print '
      '; print $error; - print '

      '; + print '

      '; print '
      '; } else @@ -994,10 +994,10 @@ else print ''; print ''; - $linkback=''; + $linkback=''.$langs->trans("BackToList").''; print ''; - print ''; + print ''; print ''; diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index fb791d84ee6..03ffcf2b465 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1219,7 +1219,7 @@ class Holiday extends CommonObject // List for Dolibarr users if ($type) { - $sql = "SELECT u.rowid, u.lastname, u.firstname"; + $sql = "SELECT u.rowid, u.lastname, u.firstname, u.gender, u.photo, u.employee, u.statut"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)) @@ -1250,11 +1250,15 @@ class Holiday extends CommonObject $obj = $this->db->fetch_object($resql); $tab_result[$i]['rowid'] = $obj->rowid; - $tab_result[$i]['name'] = $obj->lastname; + $tab_result[$i]['name'] = $obj->lastname; // deprecated $tab_result[$i]['lastname'] = $obj->lastname; $tab_result[$i]['firstname'] = $obj->firstname; - $tab_result[$i]['type'] = $obj->type; - $tab_result[$i]['nb_holiday'] = $obj->nb_holiday; + $tab_result[$i]['gender'] = $obj->gender; + $tab_result[$i]['status'] = $obj->statut; + $tab_result[$i]['employee'] = $obj->employee; + $tab_result[$i]['photo'] = $obj->photo; + //$tab_result[$i]['type'] = $obj->type; + //$tab_result[$i]['nb_holiday'] = $obj->nb_holiday; $i++; } @@ -1264,7 +1268,7 @@ class Holiday extends CommonObject else { // Erreur SQL - $this->error="Error ".$this->db->lasterror(); + $this->errors[]="Error ".$this->db->lasterror(); return -1; } } diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 52876b1d1cd..6af57716648 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -181,6 +181,10 @@ if ($result < 0) } $listUsers = $holiday->fetchUsers(false,true); +if (is_numeric($listUsers) && $listUsers < 0) +{ + setEventMessages($holiday->error, $holiday->errors, 'errors'); +} $var=true; $i = 0; @@ -260,9 +264,13 @@ else print ''; print ''; if (count($typeleaves)) diff --git a/htdocs/holiday/document.php b/htdocs/holiday/document.php index ab588812c32..e2554cffffb 100644 --- a/htdocs/holiday/document.php +++ b/htdocs/holiday/document.php @@ -108,12 +108,12 @@ if ($object->id) } - print '
      '.$langs->trans("Ref").''.$langs->trans("Ref").''; print $form->showrefnav($cp, 'id', $linkback, 1, 'rowid', 'ref'); print '
      '; $userstatic->id=$users['rowid']; - $userstatic->lastname=$users['name']; + $userstatic->lastname=$users['lastname']; $userstatic->firstname=$users['firstname']; - print $userstatic->getNomUrl(1); + $userstatic->gender=$users['gender']; + $userstatic->photo=$users['photo']; + $userstatic->statut=$users['status']; + $userstatic->employee=$users['employee']; + print $userstatic->getNomUrl(-1); print '
      '; + print '
      '; - $linkback=''; + $linkback=''.$langs->trans("BackToList").''; print ''; - print ''; + print ''; print ''; diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index f6937cff239..5ef9b0e1ce4 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -991,7 +991,6 @@ else } print ""; - print "
      \n"; if ($action != 'presend') { @@ -1011,7 +1010,7 @@ else $somethingshown=$formfile->show_documents('project',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf); - print ''; + print '
      '; if (!empty($object->id)) { @@ -1021,7 +1020,7 @@ else $somethingshown=$formactions->showactions($object,'project',$socid); } - print '
      '; + print '
      '; } // Hook to add more things on page diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index cf8d5c3665f..fe6fe738110 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -378,10 +378,11 @@ $showdatefilter=0; // Show the filter on date on top of element list if (! $showdatefilter) { - print ''; + print '
      '; + print ''; print ''; print ''; - print '
      '.$langs->trans("Ref").''.$langs->trans("Ref").''; print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref'); print '
      '; + print '
      '; print ''; @@ -393,7 +394,8 @@ if (! $showdatefilter) print ''; print '
      '.$langs->trans("From").' '; print $form->select_date($dates,'dates',0,0,1,'',1,0,1); print '
      '; print ''; - + print ''; + $showdatefilter++; } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ca27d42c995..59238e786f1 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2205,7 +2205,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.2em; border-radius: 0.2em;*/ } -#tablelines tr.liste_titre td, form.formnoborder div, tr.liste_titre.trnoborder td { +#tablelines tr.liste_titre:first-child td, form.formnoborder div, tr.liste_titre.trnoborder td { border-top-width: 1px; border-top-color: rgb(); border-top-style: solid; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 5cb3995c6ba..c45055a96f5 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -2075,7 +2075,7 @@ table.liste, table.noborder, table.formdoc, div.noborder { -webkit-border-radius: 0.1em; border-radius: 0.1em; } -#tablelines tr.liste_titre td, form.formnoborder, tr.liste_titre.trnoborder td { +#tablelines tr.liste_titre:first-child td, form.formnoborder, tr.liste_titre.trnoborder td { border-top-width: 1px; border-top-color: rgb(); border-top-style: solid; 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 293/380] 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 '
      '.$langs->trans("SocialContributions").' ('.$langs->trans("Type").' 0)
      '.$langs->trans("SocialContributionsNondeductibles").'
      '.$langs->trans("SocialContributions").' ('.$langs->trans("Type").' 1)
      '.$langs->trans("SocialContributionsDeductibles").'
      '; +print '
      '; print ''; print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f4b8bfc610c..697e5e8bdeb 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4205,7 +4205,7 @@ class Form $code_country="'".$societe_vendeuse->country_code."'"; } else - { + { $code_country="'".$mysoc->country_code."'"; // Pour compatibilite ascendente } if (! empty($conf->global->SERVICE_ARE_ECOMMERCE_200238EC)) // If option to have vat for end customer for services is on @@ -4243,8 +4243,9 @@ class Form // Definition du taux a pre-selectionner (si defaulttx non force et donc vaut -1 ou '') if ($defaulttx < 0 || dol_strlen($defaulttx) == 0) { - $defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$idprod); - $defaultnpr=get_default_npr($societe_vendeuse,$societe_acheteuse,$idprod); + $tmpthirdparty=new Societe($this->db); + $defaulttx=get_default_tva($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod); + $defaultnpr=get_default_npr($societe_vendeuse, (is_object($societe_acheteuse)?$societe_acheteuse:$tmpthirdparty), $idprod); if (empty($defaulttx)) $defaultnpr=0; } diff --git a/htdocs/install/mysql/tables/llx_website_pages.sql b/htdocs/install/mysql/tables/llx_website_pages.sql index 379fa08582e..28f0c870dea 100644 --- a/htdocs/install/mysql/tables/llx_website_pages.sql +++ b/htdocs/install/mysql/tables/llx_website_pages.sql @@ -20,7 +20,7 @@ CREATE TABLE llx_website_page ( rowid integer AUTO_INCREMENT NOT NULL PRIMARY KEY, - fk_website integer, + fk_website integer NOT NULL, pageurl varchar(16) NOT NULL, title varchar(255), description varchar(255), diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php index 0d3ea7584f1..55f54d10613 100644 --- a/htdocs/product/admin/product_tools.php +++ b/htdocs/product/admin/product_tools.php @@ -275,7 +275,7 @@ else print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; @@ -283,7 +283,7 @@ else print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; diff --git a/htdocs/websites/class/website.class.php b/htdocs/websites/class/website.class.php index 464223a8ed3..4b6d4e04245 100644 --- a/htdocs/websites/class/website.class.php +++ b/htdocs/websites/class/website.class.php @@ -187,7 +187,6 @@ class Website extends CommonObject $sql = 'SELECT'; $sql .= ' t.rowid,'; - $sql .= " t.entity,"; $sql .= " t.ref,"; $sql .= " t.description,"; @@ -195,8 +194,6 @@ class Website extends CommonObject $sql .= " t.date_creation,"; $sql .= " t.date_modification,"; $sql .= " t.tms"; - - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; if (null !== $ref) { $sql .= ' WHERE t.ref = ' . '\'' . $ref . '\''; diff --git a/htdocs/websites/class/websitepage.class.php b/htdocs/websites/class/websitepage.class.php index 88b6cee2401..ac9adf8f480 100644 --- a/htdocs/websites/class/websitepage.class.php +++ b/htdocs/websites/class/websitepage.class.php @@ -86,9 +86,9 @@ class WebsitePage extends CommonObject dol_syslog(__METHOD__, LOG_DEBUG); $error = 0; - + $now=dol_now(); + // Clean parameters - if (isset($this->fk_website)) { $this->fk_website = trim($this->fk_website); } @@ -110,15 +110,18 @@ class WebsitePage extends CommonObject if (isset($this->status)) { $this->status = trim($this->status); } - - + if (isset($this->date_creation)) { + $this->date_creation = $now; + } + if (isset($this->date_modification)) { + $this->date_modification = $now; + } // Check parameters // Put here code to add control on parameters values // Insert request $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '('; - $sql.= 'fk_website,'; $sql.= 'pageurl,'; $sql.= 'title,'; @@ -128,10 +131,7 @@ class WebsitePage extends CommonObject $sql.= 'status,'; $sql.= 'date_creation,'; $sql.= 'date_modification'; - - $sql .= ') VALUES ('; - $sql .= ' '.(! isset($this->fk_website)?'NULL':$this->fk_website).','; $sql .= ' '.(! isset($this->pageurl)?'NULL':"'".$this->db->escape($this->pageurl)."'").','; $sql .= ' '.(! isset($this->title)?'NULL':"'".$this->db->escape($this->title)."'").','; @@ -141,20 +141,18 @@ class WebsitePage extends CommonObject $sql .= ' '.(! isset($this->status)?'NULL':$this->status).','; $sql .= ' '.(! isset($this->date_creation) || dol_strlen($this->date_creation)==0?'NULL':"'".$this->db->idate($this->date_creation)."'").','; $sql .= ' '.(! isset($this->date_modification) || dol_strlen($this->date_modification)==0?'NULL':"'".$this->db->idate($this->date_modification)."'"); - - $sql .= ')'; $this->db->begin(); $resql = $this->db->query($sql); - if (!$resql) { - $error ++; + if (! $resql) { + $error++; $this->errors[] = 'Error ' . $this->db->lasterror(); dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); } - if (!$error) { + if (! $error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . $this->table_element); if (!$notrigger) { @@ -169,7 +167,8 @@ class WebsitePage extends CommonObject } // Commit or rollback - if ($error) { + if ($error) + { $this->db->rollback(); return - 1 * $error; @@ -254,22 +253,23 @@ class WebsitePage extends CommonObject /** * Load object in memory from the database * - * @param string $sortorder Sort Order - * @param string $sortfield Sort field - * @param int $limit offset limit - * @param int $offset offset limit - * @param array $filter filter array - * @param string $filtermode filter mode (AND or OR) + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit limit + * @param int $offset Offset + * @param array $filter Filter array + * @param string $filtermode Filter mode (AND or OR) * - * @return int <0 if KO, >0 if OK + * @return array|int int <0 if KO, array of pages if OK */ - public function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter = array(), $filtermode='AND') + public function fetchAll($website_id, $sortorder='', $sortfield='', $limit=0, $offset=0, array $filter = array(), $filtermode='AND') { dol_syslog(__METHOD__, LOG_DEBUG); + $records=array(); + $sql = 'SELECT'; $sql .= ' t.rowid,'; - $sql .= " t.fk_website,"; $sql .= " t.pageurl,"; $sql .= " t.title,"; @@ -280,10 +280,8 @@ class WebsitePage extends CommonObject $sql .= " t.date_creation,"; $sql .= " t.date_modification,"; $sql .= " t.tms"; - - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; - + $sql .= ' WHERE t.fk_website = '.$website_id; // Manage filter $sqlwhere = array(); if (count($filter) > 0) { @@ -292,7 +290,7 @@ class WebsitePage extends CommonObject } } if (count($sqlwhere) > 0) { - $sql .= ' WHERE ' . implode(' '.$filtermode.' ', $sqlwhere); + $sql .= ' AND ' . implode(' '.$filtermode.' ', $sqlwhere); } if (!empty($sortfield)) { @@ -307,34 +305,32 @@ class WebsitePage extends CommonObject if ($resql) { $num = $this->db->num_rows($resql); - while ($obj = $this->db->fetch_object($resql)) { - $line = new WebsitepageLine(); + while ($obj = $this->db->fetch_object($resql)) + { + $record = new Websitepage($this->db); - $line->id = $obj->rowid; - - $line->fk_website = $obj->fk_website; - $line->pageurl = $obj->pageurl; - $line->title = $obj->title; - $line->description = $obj->description; - $line->keywords = $obj->keywords; - $line->content = $obj->content; - $line->status = $obj->status; - $line->date_creation = $this->db->jdate($obj->date_creation); - $line->date_modification = $this->db->jdate($obj->date_modification); - $line->tms = $this->db->jdate($obj->tms); + $record->id = $obj->rowid; + $record->fk_website = $obj->fk_website; + $record->pageurl = $obj->pageurl; + $record->title = $obj->title; + $record->description = $obj->description; + $record->keywords = $obj->keywords; + $record->content = $obj->content; + $record->status = $obj->status; + $record->date_creation = $this->db->jdate($obj->date_creation); + $record->date_modification = $this->db->jdate($obj->date_modification); + $record->tms = $this->db->jdate($obj->tms); - - - $this->lines[$line->id] = $line; + $records[$record->id] = $record; } $this->db->free($resql); - return $num; + return $records; } else { $this->errors[] = 'Error ' . $this->db->lasterror(); dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); - return - 1; + return -1; } } diff --git a/htdocs/websites/index.php b/htdocs/websites/index.php index ba2a4466b4d..58a2981d2da 100644 --- a/htdocs/websites/index.php +++ b/htdocs/websites/index.php @@ -77,30 +77,79 @@ $conf->dol_hide_leftmenu = 1; $error=0; $website=GETPOST('website', 'alpha'); $page=GETPOST('page', 'alpha'); -$action = GETPOST('action','alpha'); +$pageid=GETPOST('pageid', 'alpha'); +$action=GETPOST('action','alpha'); if (GETPOST('preview')) $action='preview'; -if (GETPOST('editmeta')) { $action='editmeta'; } +if (GETPOST('create')) { $action='create'; } if (GETPOST('editmenu')) { $action='editmenu'; } +if (GETPOST('editmeta')) { $action='editmeta'; } if (GETPOST('editcontent')) { $action='editcontent'; } if (empty($action)) $action='preview'; - $object=new Website($db); $objectpage=new WebsitePage($db); +if ($website) +{ + $res = $object->fetch(0, $website); +} +if ($pageid) +{ + $res = $objectpage->fetch($pageid); +} + /* * Actions */ -// Action mise a jour ou ajout d'une constante +// Add page +if ($action == 'add') +{ + $db->begin(); + + $objectpage->fk_website = $object->id; + + $objectpage->title = GETPOST('WEBSITE_TITLE'); + $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME'); + $objectpage->description = GETPOST('WEBSITE_DESCRIPTION'); + $objectpage->keyword = GETPOST('WEBSITE_KEYWORD'); + + if (empty($objectpage->title)) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("WEBSITE_PAGENAME")), null, 'errors'); + $error++; + } + + if (! $error) + { + $res = $objectpage->create($user); + if ($res <= 0) + { + $error++; + setEventMessages($objectpage->error, $objectpage->errors, 'errors'); + } + } + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("PageAdded"), null, 'mesgs'); + $action=''; + } + else + { + $db->rollback(); + } +} + +// Update page if ($action == 'update') { $db->begin(); - $object->fetch(0, $website); + $res = $object->fetch(0, $website); $objectpage->fk_website = $object->id; $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME'); @@ -137,6 +186,45 @@ if ($action == 'update') } } +// Update page +if ($action == 'updatecontent') +{ + $db->begin(); + + $object->fetch(0, $website); + + $objectpage->fk_website = $object->id; + $objectpage->pageurl = GETPOST('WEBSITE_PAGENAME'); + + $res = $objectpage->fetch(0, $object->fk_website, $objectpage->pageurl); + + if ($res > 0) + { + $objectpage->content = GETPOST('PAGE_CONTENT'); + + $res = $objectpage->update($user); + if (! $res > 0) + { + $error++; + setEventMessages($objectpage->error, $objectpage->errors, 'errors'); + } + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("Saved"), null, 'mesgs'); + $action=''; + } + else + { + $db->rollback(); + } + } + else + { + dol_print_error($db); + } +} @@ -150,15 +238,27 @@ $help_url=''; llxHeader('', $langs->trans("WebsiteSetup"), $help_url); - print "\n".''; - print ''; +print "\n".''; +print ''; +if ($action == 'create') +{ + print ''; +} +if ($action == 'editcontent') +{ + print ''; +} +if ($action == 'edit') +{ print ''; - print ''; - print ''; +} +if ($website) print ''; +// Add a margin under toolbar ? $style=''; -if ($action != 'preview') $style=' margin-bottom: 5px;'; +if ($action != 'preview' && $action != 'editcontent') $style=' margin-bottom: 5px;'; + print '
      '; @@ -172,15 +272,15 @@ if (count($object->records) > 0) print '
      '; // Loop on each sites $i=0; - foreach($object->records as $key => $websitearray) + foreach($object->records as $key => $valwebsite) { - if (empty($website)) $website=$websitearray->ref; - + if (empty($website)) $website=$valwebsite->ref; + if ($i) print ' - '; - print ''; - if ($websitearray->ref == $website) print ''; - print $websitearray->ref; - if ($websitearray->ref == $website) print ''; + print ''; + if ($valwebsite->ref == $website) print ''; + print $valwebsite->ref; + if ($valwebsite->ref == $website) print ''; print ''; $i++; @@ -196,25 +296,43 @@ if (count($object->records) > 0) if (empty($user->rights->websites->create)) $disabled=' disabled="disabled"'; print ''; + print ''; } //else print ''; - if (preg_match('/^edit/',$action)) print ''; - + print '
      '; + + // Part for pages if ($website) { print '
      '; + + $array=$objectpage->fetchAll($object->id); + print '
      '; print '
      '; print $langs->trans("Page").': '; print '
      '; print '
      '; - $array=$objectpage->fetchAll(); - print $form->selectarray('page', $array); + $out=''; + $out.=''; + print $out; + print ''; + //print $form->selectarray('page', $array); print '
      '; print ''; print '
      '; @@ -224,14 +342,15 @@ if (count($object->records) > 0) $disabled=''; if (empty($user->rights->websites->create)) $disabled=' disabled="disabled"'; - if ($page) + if ($pageid > 0) { print ''; print ''; } } else print ''; - if (preg_match('/^addpage/',$action)) print ''; + if (preg_match('/^create/',$action)) print ''; + if (preg_match('/^edit/',$action)) print ''; print '
      '; @@ -256,13 +375,13 @@ $head = array(); * Edit mode */ -if ($action == 'editmeta' || $action == 'addpage') +if ($action == 'editmeta' || $action == 'create') { - print '
      '.$langs->trans("TreeMenuPersonalized").'
      '.$langs->trans("OldVATRates").''."\n"; - print $form->load_tva('oldvatrate', $oldvatrate); + print $form->load_tva('oldvatrate', $oldvatrate, $mysoc); print '
      '.$langs->trans("NewVATRates").''."\n"; - print $form->load_tva('newvatrate', $newvatrate); + print $form->load_tva('newvatrate', $newvatrate, $mysoc); print '
      '; - print ''; - print ''; - print ''; - print "\n"; + print '
      '; + + dol_fiche_head(); + + print '
      '.$langs->trans("Description").''.$langs->trans("Value").'
      '; print ''; - if ($action != 'addpage') + if ($action != 'create') { print ''; } @@ -299,6 +418,10 @@ if ($action == 'editmeta' || $action == 'addpage') print '
      '; print $langs->trans('WEBSITE_PAGENAME'); @@ -270,12 +389,12 @@ if ($action == 'editmeta' || $action == 'addpage') print ''; print '
      '; print $langs->trans('WEBSITE_URL'); print ''; - print '/public/websites/'.$website.'/index.php?page='.urlencode($page); + print '/public/websites/'.$website.'/index.php?pageid='.urlencode($pageid); print '
      '; + dol_fiche_end(); + + print ''; + print '
      '; } @@ -309,22 +432,11 @@ if ($action == 'editmenu') if ($action == 'editcontent') { -/* + /* * Editing global variables not related to a specific theme */ - - print load_fiche_titre($langs->trans("Other"),'',''); - require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('WEBSITE_HEADER',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); - $doleditor->Create(); - - require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('WEBSITE_CONTENT',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); - $doleditor->Create(); - - require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('WEBSITE_FOOTER',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); + $doleditor=new DolEditor('PAGE_CONTENT',$obj->value,'',160,'dolibarr_notes','',false,false,$conf->fckeditor->enabled,5,60); $doleditor->Create(); } @@ -334,8 +446,20 @@ print ''; if ($action == 'preview') { - print '

      '.$langs->trans("PreviewOfSiteNotYetAvailable", $website).'


      '; - print '
      '; + if ($pageid > 0) + { + $objectpage->fetch($pageid); + + print ''."\n"; + print '
      '; + print $objectpage->content; + print '
      '; + } + else + { + print '

      '.$langs->trans("PreviewOfSiteNotYetAvailable", $website).'


      '; + print '
      '; + } } From dde4f7ed851a1925c6150ad7aae22ef83663e1c4 Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sun, 24 Apr 2016 02:01:29 +0200 Subject: [PATCH 296/380] 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 297/380] 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 298/380] 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 299/380] 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 ccdbf69cd58edcd8833adcde76687d0ec00682e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 Apr 2016 18:11:19 +0200 Subject: [PATCH 300/380] Bette explanation on how to create an repeatable invoice --- htdocs/compta/facture.php | 9 +++++++++ htdocs/compta/facture/fiche-rec.php | 2 +- htdocs/langs/en_US/bills.lang | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index a27f13cbb77..95ddde4719f 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2329,6 +2329,15 @@ if ($action == 'create') } } + // Template invoice + print '
      '; + $tmp=' '; + $text = $tmp.$langs->trans("RepeatableInvoice") . ' '; + //$text.= '('.$langs->trans("YouMustCreateStandardInvoiceFirst").') '; + $desc = $form->textwithpicto($text, $langs->transnoentities("YouMustCreateStandardInvoiceFirstDesc"), 1, 'help', '', 0, 3); + print $desc; + print '
      '; + print '
      '; print '
      '.$langs->trans("NoneF").'
      '.$langs->trans("NoneF").'
      "; $db->free($resql); diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 04b7a6ecb33..7b6604dce51 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -433,6 +433,7 @@ ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. RevenueStamp=Revenue stamp YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for invoice situation TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 From c73f4e5d7b934fac686ee0a9bebc9b41a7cd7766 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 Apr 2016 18:55:19 +0200 Subject: [PATCH 301/380] FIX Project was lost when creating invoice from a template Can set project on invoice during creation of invoice from a template Replace duplicated code to show lines with mutualized code --- htdocs/compta/facture.php | 17 +- .../facture/class/facture-rec.class.php | 56 +- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/compta/facture/fiche-rec.php | 503 ++++++++++++++---- htdocs/core/class/commonobject.class.php | 10 +- htdocs/core/tpl/objectline_create.tpl.php | 3 +- htdocs/core/tpl/objectline_view.tpl.php | 14 +- 7 files changed, 482 insertions(+), 123 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 95ddde4719f..55f259aa2fe 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -126,8 +126,8 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { if ($cancel) $action=''; - - include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once + + include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; // Must be include, not include_once @@ -672,7 +672,7 @@ if (empty($reshook)) /* * Insert new invoice in database - */ + */ else if ($action == 'add' && $user->rights->facture->creer) { if ($socid > 0) $object->socid = GETPOST('socid', 'int'); @@ -722,7 +722,7 @@ if (empty($reshook)) $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); $object->multicurrency_code = GETPOST('multicurrency_code', 'alpha'); $object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int'); - + // Proprietes particulieres a facture de remplacement $object->fk_facture_source = $_POST['fac_replacement']; $object->type = Facture::TYPE_REPLACEMENT; @@ -868,6 +868,15 @@ if (empty($reshook)) $object->ref_client = $_POST['ref_client']; $object->ref_int = $_POST['ref_int']; $object->modelpdf = $_POST['model']; + $object->fk_project = $_POST['projectid']; + $object->cond_reglement_id = ($_POST['type'] == 3?1:$_POST['cond_reglement_id']); + $object->mode_reglement_id = $_POST['mode_reglement_id']; + $object->fk_account = GETPOST('fk_account', 'int'); + $object->amount = $_POST['amount']; + $object->remise_absolue = $_POST['remise_absolue']; + $object->remise_percent = $_POST['remise_percent']; + $object->fk_incoterms = GETPOST('incoterm_id', 'int'); + $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); $object->multicurrency_code = GETPOST('multicurrency_code', 'alpha'); $object->multicurrency_tx = GETPOST('originmulticurrency_tx', 'int'); diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 8e4e05037a8..0acd58f0202 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -348,7 +348,7 @@ class FactureRec extends CommonInvoice */ function fetch_lines() { - $sql = 'SELECT l.rowid, l.fk_product, l.product_type, l.label as custom_label, l.description, l.price, l.qty, l.tva_tx, '; + $sql = 'SELECT l.rowid, l.fk_product, l.product_type, l.label as custom_label, l.description, l.product_type, l.price, l.qty, l.tva_tx, '; $sql.= ' l.remise, l.remise_percent, l.subprice,'; $sql.= ' l.total_ht, l.total_tva, l.total_ttc,'; $sql.= ' l.rang, l.special_code,'; @@ -358,7 +358,7 @@ class FactureRec extends CommonInvoice $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; $sql.= ' WHERE l.fk_facture = '.$this->id; - dol_syslog('Facture::fetch_lines', LOG_DEBUG); + dol_syslog('FactureRec::fetch_lines', LOG_DEBUG); $result = $this->db->query($sql); if ($result) { @@ -369,10 +369,13 @@ class FactureRec extends CommonInvoice $objp = $this->db->fetch_object($result); $line = new FactureLigne($this->db); + $line->id = $objp->rowid; $line->rowid = $objp->rowid; $line->label = $objp->custom_label; // Label line $line->desc = $objp->description; // Description line + $line->description = $objp->description; // Description line $line->product_type = $objp->product_type; // Type of line + $line->ref = $objp->product_ref; // Ref product $line->product_ref = $objp->product_ref; // Ref product $line->libelle = $objp->product_label; // deprecated $line->product_label = $objp->product_label; // Label product @@ -904,3 +907,52 @@ class FactureRec extends CommonInvoice } } } + + + +/** + * Class to manage invoice lines of templates. + * Saved into database table llx_facturedet_rec + */ +class FactureLigneRec extends CommonInvoiceLine +{ + + /** + * Delete line in database + * + * @return int <0 if KO, >0 if OK + */ + function delete() + { + global $conf,$langs,$user; + + $error=0; + + $this->db->begin(); + + // Call trigger + /*$result=$this->call_trigger('LINEBILLREC_DELETE',$user); + if ($result < 0) + { + $this->db->rollback(); + return -1; + }*/ + // End call triggers + + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE rowid = ".($this->rowid > 0 ? $this->rowid : $this->id); + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + if ($this->db->query($sql) ) + { + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error()." sql=".$sql; + $this->db->rollback(); + return -1; + } + } + +} \ No newline at end of file diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index b7531719646..4dbf4b9020a 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -280,7 +280,7 @@ class Facture extends CommonInvoice $this->socid = $_facrec->socid; - $this->fk_project = $_facrec->fk_project; + $this->fk_project = GETPOST('projectid','int') > 0 ? GETPOST('projectid','int') : $_facrec->fk_project; $this->fk_account = $_facrec->fk_account; $this->cond_reglement_id = $_facrec->cond_reglement_id; $this->mode_reglement_id = $_facrec->mode_reglement_id; diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 7f4c5282098..ad9626718c6 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -32,18 +32,23 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; $langs->load('bills'); $langs->load('compta'); // Security check $id=(GETPOST('facid','int')?GETPOST('facid','int'):GETPOST('id','int')); +$confirm = GETPOST('confirm', 'alpha'); +$cancel = GETPOST('cancel', 'alpha'); +$lineid=GETPOST('lineid','int'); $ref=GETPOST('ref','alpha'); $action=GETPOST('action', 'alpha'); if ($user->societe_id) $socid=$user->societe_id; $objecttype = 'facture_rec'; if ($action == "create" || $action == "add") $objecttype = ''; $result = restrictedArea($user, 'facture', $id, $objecttype); +$projectid = GETPOST('projectid','int'); if ($page == -1) { @@ -68,10 +73,16 @@ if (($id > 0 || $ref) && $action != 'create' && $action != 'add') } } + /* * Actions */ +// Set note +$permissionnote=$user->rights->facture->creer; // Used by the include of actions_setnotes.inc.php +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once + +include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; // Must be include, not include_once // Create predefined invoice if ($action == 'add') @@ -119,6 +130,8 @@ if ($action == 'add') $object->nb_gen_max = $nb_gen_max; $object->auto_validate = GETPOST('auto_validate', 'int'); + $object->fk_project = $projectid; + $date_next_execution = dol_mktime($rehour, $remin, 0, $remonth, $reday, $reyear); $object->date_when = $date_next_execution; @@ -233,9 +246,329 @@ elseif ($action == 'setauto_validate' && $user->rights->facture->creer) { $object->setAutoValidate(GETPOST('auto_validate', 'int')); } -// Set note -$permissionnote=$user->rights->facture->creer; // Used by the include of actions_setnotes.inc.php -include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once + +// Delete line +if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->facture->creer) +{ + $object->fetch($id); + $object->fetch_thirdparty(); + + $db->begin(); + + $line=new FactureLigneRec($db); + + // For triggers + $line->id = $lineid; + + if ($line->delete() > 0) + { + $result=$object->update_price(1); + + if ($result > 0) + { + $db->commit(); + $object->fetch($object->id); // Reload lines + } + else + { + $db->rollback(); + setEventMessages($db->lasterror(), null, 'errors'); + } + } + else + { + $db->rollback(); + setEventMessages($line->error, $line->errors, 'errors'); + } +} + +// Add a new line +if ($action == 'addline' && $user->rights->facture->creer) +{ + $langs->load('errors'); + $error = 0; + + // Set if we used free entry or predefined product + $predef=''; + $product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):''); + $price_ht = GETPOST('price_ht'); + if (GETPOST('prod_entry_mode') == 'free') + { + $idprod=0; + $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); + } + else + { + $idprod=GETPOST('idprod', 'int'); + $tva_tx = ''; + } + + $qty = GETPOST('qty' . $predef); + $remise_percent = GETPOST('remise_percent' . $predef); + + // Extrafields + $extrafieldsline = new ExtraFields($db); + $extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line); + $array_options = $extrafieldsline->getOptionalsFromPost($extralabelsline, $predef); + // Unset extrafield + if (is_array($extralabelsline)) { + // Get extra fields + foreach ($extralabelsline as $key => $value) { + unset($_POST["options_" . $key . $predef]); + } + } + + if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) { + setEventMessages($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), null, 'errors'); + $error ++; + } + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && GETPOST('type') < 0) { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors'); + $error ++; + } + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && (! ($price_ht >= 0) || $price_ht == '')) // Unit price can be 0 but not '' + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), null, 'errors'); + $error ++; + } + if ($qty == '') { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors'); + $error ++; + } + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && empty($product_desc)) { + setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), null, 'errors'); + $error ++; + } + if ($qty < 0) { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors'); + $error ++; + } + + if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) { + $ret = $object->fetch($id); + if ($ret < 0) { + dol_print_error($db, $object->error); + exit(); + } + $ret = $object->fetch_thirdparty(); + + // Clean parameters + $date_start = dol_mktime(GETPOST('date_start' . $predef . 'hour'), GETPOST('date_start' . $predef . 'min'), GETPOST('date_start' . $predef . 'sec'), GETPOST('date_start' . $predef . 'month'), GETPOST('date_start' . $predef . 'day'), GETPOST('date_start' . $predef . 'year')); + $date_end = dol_mktime(GETPOST('date_end' . $predef . 'hour'), GETPOST('date_end' . $predef . 'min'), GETPOST('date_end' . $predef . 'sec'), GETPOST('date_end' . $predef . 'month'), GETPOST('date_end' . $predef . 'day'), GETPOST('date_end' . $predef . 'year')); + $price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT'); + + // Define special_code for special lines + $special_code = 0; + // if (empty($_POST['qty'])) $special_code=3; // Options should not exists on invoices + + // Ecrase $pu par celui du produit + // Ecrase $desc par celui du produit + // Ecrase $txtva par celui du produit + // Ecrase $base_price_type par celui du produit + // Replaces $fk_unit with the product's + if (! empty($idprod)) + { + $prod = new Product($db); + $prod->fetch($idprod); + + $label = ((GETPOST('product_label') && GETPOST('product_label') != $prod->label) ? GETPOST('product_label') : ''); + + // Update if prices fields are defined + $tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id); + $tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id); + if (empty($tva_tx)) $tva_npr=0; + + $pu_ht = $prod->price; + $pu_ttc = $prod->price_ttc; + $price_min = $prod->price_min; + $price_base_type = $prod->price_base_type; + + // We define price for product + if (! empty($conf->global->PRODUIT_MULTIPRICES) && ! empty($object->thirdparty->price_level)) + { + $pu_ht = $prod->multiprices[$object->thirdparty->price_level]; + $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level]; + $price_min = $prod->multiprices_min[$object->thirdparty->price_level]; + $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level]; + if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility + { + if (isset($prod->multiprices_tva_tx[$object->thirdparty->price_level])) $tva_tx=$prod->multiprices_tva_tx[$object->thirdparty->price_level]; + if (isset($prod->multiprices_recuperableonly[$object->thirdparty->price_level])) $tva_npr=$prod->multiprices_recuperableonly[$object->thirdparty->price_level]; + if (empty($tva_tx)) $tva_npr=0; + } + } + elseif (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) + { + require_once DOL_DOCUMENT_ROOT . '/product/class/productcustomerprice.class.php'; + + $prodcustprice = new Productcustomerprice($db); + + $filter = array('t.fk_product' => $prod->id,'t.fk_soc' => $object->thirdparty->id); + + $result = $prodcustprice->fetch_all('', '', 0, 0, $filter); + if ($result) { + if (count($prodcustprice->lines) > 0) { + $pu_ht = price($prodcustprice->lines[0]->price); + $pu_ttc = price($prodcustprice->lines[0]->price_ttc); + $price_base_type = $prodcustprice->lines[0]->price_base_type; + $prod->tva_tx = $prodcustprice->lines[0]->tva_tx; + } + } + } + + // if price ht was forced (ie: from gui when calculated by margin rate and cost price) + if (! empty($price_ht)) + { + $pu_ht = price2num($price_ht, 'MU'); + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx / 100)), 'MU'); + } + // On reevalue prix selon taux tva car taux tva transaction peut etre different + // de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur). + elseif ($tva_tx != $prod->tva_tx) + { + if ($price_base_type != 'HT') + { + $pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); + } + else + { + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx / 100)), 'MU'); + } + } + + $desc = ''; + + // Define output language + if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) { + $outputlangs = $langs; + $newlang = ''; + if (empty($newlang) && GETPOST('lang_id')) + $newlang = GETPOST('lang_id'); + if (empty($newlang)) + $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + + $desc = (! empty($prod->multilangs [$outputlangs->defaultlang] ["description"])) ? $prod->multilangs [$outputlangs->defaultlang] ["description"] : $prod->description; + } else { + $desc = $prod->description; + } + + $desc = dol_concatdesc($desc, $product_desc); + + // Add custom code and origin country into description + if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) { + $tmptxt = '('; + if (! empty($prod->customcode)) + $tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode; + if (! empty($prod->customcode) && ! empty($prod->country_code)) + $tmptxt .= ' - '; + if (! empty($prod->country_code)) + $tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0); + $tmptxt .= ')'; + $desc = dol_concatdesc($desc, $tmptxt); + } + + $type = $prod->type; + $fk_unit = $prod->fk_unit; + } else { + $pu_ht = price2num($price_ht, 'MU'); + $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); + $tva_npr = (preg_match('/\*/', $tva_tx) ? 1 : 0); + $tva_tx = str_replace('*', '', $tva_tx); + if (empty($tva_tx)) $tva_npr=0; + $label = (GETPOST('product_label') ? GETPOST('product_label') : ''); + $desc = $product_desc; + $type = GETPOST('type'); + $fk_unit= GETPOST('units', 'alpha'); + } + + // Margin + $fournprice = price2num(GETPOST('fournprice' . $predef) ? GETPOST('fournprice' . $predef) : ''); + $buyingprice = price2num(GETPOST('buying_price' . $predef) != '' ? GETPOST('buying_price' . $predef) : ''); // If buying_price is '0', we must keep this value + + // Local Taxes + $localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty, $mysoc, $tva_npr); + $localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty, $mysoc, $tva_npr); + + $info_bits = 0; + if ($tva_npr) + $info_bits |= 0x01; + + if (! empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + } else { + // Insert line + $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $idprod, $remise_percent, $price_base_type, $info_bits, '', $pu_ttc, $type, - 1, $special_code, $label, $fk_unit); + + if ($result > 0) + { + // Define output language + /*if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model=$object->modelpdf; + $ret = $object->fetch($id); // Reload to get new records + + $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); + if ($result < 0) setEventMessages($object->error, $object->errors, 'errors'); + }*/ + $object->fetch($object->id); // Reload lines + + unset($_POST['prod_entry_mode']); + + unset($_POST['qty']); + unset($_POST['type']); + unset($_POST['remise_percent']); + unset($_POST['price_ht']); + unset($_POST['multicurrency_price_ht']); + unset($_POST['price_ttc']); + unset($_POST['tva_tx']); + unset($_POST['product_ref']); + unset($_POST['product_label']); + unset($_POST['product_desc']); + unset($_POST['fournprice']); + unset($_POST['buying_price']); + unset($_POST['np_marginRate']); + unset($_POST['np_markRate']); + unset($_POST['dp_desc']); + unset($_POST['idprod']); + unset($_POST['units']); + + unset($_POST['date_starthour']); + unset($_POST['date_startmin']); + unset($_POST['date_startsec']); + unset($_POST['date_startday']); + unset($_POST['date_startmonth']); + unset($_POST['date_startyear']); + unset($_POST['date_endhour']); + unset($_POST['date_endmin']); + unset($_POST['date_endsec']); + unset($_POST['date_endday']); + unset($_POST['date_endmonth']); + unset($_POST['date_endyear']); + + unset($_POST['situations']); + unset($_POST['progress']); + } else { + setEventMessages($object->error, $object->errors, 'errors'); + } + + $action = ''; + } + } +} @@ -262,7 +595,8 @@ if ($action == 'create') $object = new Facture($db); // Source invoice $product_static = new Product($db); - + $formproject = new FormProjets($db); + if ($object->fetch($id, $ref) > 0) { print '
      '; @@ -281,14 +615,14 @@ if ($action == 'create') $object->fetch_thirdparty(); // Third party - print ''.$langs->trans("Customer").''.$object->thirdparty->getNomUrl(1,'customer').''; + print ''.$langs->trans("Customer").''.$object->thirdparty->getNomUrl(1,'customer').''; print ''; print $langs->trans("Comment"); print ''; // Title print ''.$langs->trans("Title").''; - print ''; + print ''; print ''; // Note @@ -310,18 +644,16 @@ if ($action == 'create') print ""; // Project - if (! empty($conf->projet->enabled)) - { - print "".$langs->trans("Project").""; - if ($object->fk_project > 0) - { - $project = new Project($db); - $project->fetch($object->fk_project); - print $project->getNomUrl(1); - } - print ""; - } - + if (! empty($conf->projet->enabled) && is_object($object->thirdparty) && $object->thirdparty->id > 0) + { + $projectid = $object->fk_project; + $langs->load('projects'); + print '' . $langs->trans('Project') . ''; + $numprojet = $formproject->select_projects($socid, $projectid, 'projectid', 0); + print '   id).'">' . $langs->trans("AddProject") . ''; + print ''; + } + // Bank account if ($object->fk_account > 0) { @@ -342,7 +674,7 @@ if ($action == 'create') print ''; // Frequency - print ""; @@ -375,6 +707,7 @@ if ($action == 'create') print load_fiche_titre($title, '', ''); + /* * Invoice lines */ @@ -580,9 +913,16 @@ else { $object->fetch_thirdparty(); + // Confirmation de la suppression d'une ligne produit + if ($action == 'ask_deleteline') { + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 'no', 1); + } + + print $formconfirm; + $author = new User($db); $author->fetch($object->user_author); - + $head=array(); $h=0; $head[$h][0] = $_SERVER["PHP_SELF"].'?id='.$object->id; @@ -851,96 +1191,45 @@ else print '
      '; } - /* - * Lines - */ - - print '
      ".$form->textwithpicto($langs->trans("Frequency"), $langs->transnoentitiesnoconv('toolTipFrequency')).""; + print '
      '.$form->textwithpicto($langs->trans("Frequency"), $langs->transnoentitiesnoconv('toolTipFrequency')).""; print " ".$form->selectarray('unit_frequency', array('d'=>$langs->trans('Day'), 'm'=>$langs->trans('Month'), 'y'=>$langs->trans('Year')), (GETPOST('unit_frequency')?GETPOST('unit_frequency'):'m')); print "
      '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - if ($conf->global->PRODUCT_USE_UNITS) { - print ''; + // Lines + print ' + + + + + '; + + if (! empty($conf->use_javascript_ajax) && $object->statut == 0) { + include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php'; } - print ''; - - $num = count($object->lines); - $i = 0; - $var=true; - while ($i < $num) + + print '
      '.$langs->trans("Description").''.$langs->trans("VAT").''.$langs->trans("PriceUHT").''.$langs->trans("Qty").''.$langs->trans("ReductionShort").''.$langs->trans("Unit").'
      '; + // Show object lines + if (! empty($object->lines)) { - $var=!$var; - - $product_static=new Product($db); - - // Show product and description - $type=(isset($object->lines[$i]->product_type)?$object->lines[$i]->product_type:$object->lines[$i]->fk_product_type); - // Try to enhance type detection using date_start and date_end for free lines when type - // was not saved. - if (! empty($objp->date_start)) $type=1; - if (! empty($objp->date_end)) $type=1; - - // Show line - print ""; - if ($object->lines[$i]->fk_product > 0) - { - print ''; - } - else - { - print ''; - } - print ''; - print ''; - print ''; - print ''; - if ($conf->global->PRODUCT_USE_UNITS) { - print ""; - } - print "\n"; - $i++; + $disableedit=1; + $disablemove=1; + $ret = $object->printObjectLines($action, $mysoc, $soc, $lineid, 0); // No date selector for template invoice } - print '
      '; - print ''; // ancre pour retourner sur la ligne - - // Show product and description - $product_static->type=$object->lines[$i]->fk_product_type; - $product_static->id=$object->lines[$i]->fk_product; - $product_static->ref=$object->lines[$i]->product_ref; - $text=$product_static->getNomUrl(1); - $text.= ' - '.(! empty($object->lines[$i]->label)?$object->lines[$i]->label:$object->lines[$i]->product_label); - $description=(! empty($conf->global->PRODUIT_DESC_IN_FORM)?'':dol_htmlentitiesbr($object->lines[$i]->desc)); - print $form->textwithtooltip($text,$description,3,'','',$i); - - // Show range - print_date_range($object->lines[$i]->date_start, $object->lines[$i]->date_end); - - // Add description in form - if (! empty($conf->global->PRODUIT_DESC_IN_FORM)) - print (! empty($object->lines[$i]->desc) && $object->lines[$i]->desc!=$fac->lines[$i]->product_label)?'
      '.dol_htmlentitiesbr($object->lines[$i]->desc):''; - - print '
      '; - - if ($type==1) $text = img_object($langs->trans('Service'),'service'); - else $text = img_object($langs->trans('Product'),'product'); - - if (! empty($object->lines[$i]->label)) { - - $text.= ' '.$object->lines[$i]->label.''; - print $form->textwithtooltip($text,dol_htmlentitiesbr($object->lines[$i]->desc),3,'','',$i); - - } else { - - print $text.' '.nl2br($object->lines[$i]->desc); - } - - // Show range - print_date_range($object->lines[$i]->date_start, $object->lines[$i]->date_end); - - print ''.vatrate($object->lines[$i]->tva_tx, 1).''.price($object->lines[$i]->price).''.$object->lines[$i]->qty.''.$object->lines[$i]->remise_percent.' %".$object->lines[$i]->getLabelOfUnit()."
      '; + + // Form to add new line + if ($object->statut == 0 && $user->rights->facture->creer && $action != 'valid' && $action != 'editline') + { + if ($action != 'editline') + { + $var = true; + + // Add free products/services + $object->formAddObjectLine(0, $mysoc, $soc); // No date selector for template invoice + + $parameters = array(); + $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + } + } + + print "\n"; + + print "
      \n"; dol_fiche_end(); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 33c70d57ae6..ec02fce3dae 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3236,7 +3236,7 @@ abstract class CommonObject */ function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0) { - global $conf, $hookmanager, $inputalsopricewithtax, $usemargins, $langs, $user; + global $conf, $hookmanager, $inputalsopricewithtax, $usemargins, $disableedit, $disablemove, $langs, $user; // Define usemargins $usemargins=0; @@ -3365,7 +3365,8 @@ abstract class CommonObject function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0) { global $conf,$langs,$user,$object,$hookmanager; - global $form,$bc,$bcdd, $object_rights; + global $form,$bc,$bcdd; + global $object_rights, $disableedit, $disablemove; // TODO We should not use global var for this ! $object_rights = $this->getRights(); @@ -4458,7 +4459,10 @@ abstract class CommonObject { global $user; - return $user->rights->{$this->element}; + $element = $this->element; + if ($element == 'facturerec') $element='facture'; + + return $user->rights->{$element}; } /** diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 77b58bd83cd..f89184cedc1 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -46,7 +46,7 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0; // Define colspan for button Add $colspan = 3; // Col total ht + col edit + col delete -if (in_array($object->element,array('propal', 'supplier_proposal','facture','invoice','commande','order','order_supplier','invoice_supplier'))) $colspan++; // With this, there is a column move button +if (in_array($object->element,array('propal', 'supplier_proposal','facture','facturerec','invoice','commande','order','order_supplier','invoice_supplier'))) $colspan++; // With this, there is a column move button //print $object->element; ?> @@ -360,6 +360,7 @@ if ((! empty($conf->service->enabled) || ($object->element == 'contrat')) && $da 'propal', 'supplier_proposal', 'facture', + 'facturerec', 'invoice', 'commande', 'order', diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index c264bac205d..967d9f81970 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -30,7 +30,9 @@ * $senderissupplier (0 by default, 1 for supplier invoices/orders) * $inputalsopricewithtax (0 by default, 1 to also show column with unit price including tax) * $usemargins (0 to disable all margins columns, 1 to show according to margin setup) - * + * $object_rights->creer initialized from = $object->getRights() + * $disableedit, $disablemove + * * $type, $text, $description, $line */ @@ -201,9 +203,10 @@ if (empty($usemargins)) $usemargins=0; - statut == 0 && ($object_rights->creer)) { ?> + statut == 0 && ($object_rights->creer)) { ?> - info_bits & 2) == 2) { ?> + info_bits & 2) == 2 || ! empty($disableedit)) { ?> id.'#line_'.$line->id; ?>"> @@ -221,7 +224,8 @@ if (empty($usemargins)) $usemargins=0; ?> - 1 && empty($conf->browser->phone) && ($this->situation_counter == 1 || !$this->situation_cycle_ref)) { ?> + 1 && empty($conf->browser->phone) && ($this->situation_counter == 1 || !$this->situation_cycle_ref) && empty($disablemove)) { ?> 0) { ?> id; ?>"> @@ -235,7 +239,7 @@ if (empty($usemargins)) $usemargins=0; - browser->phone)?' class="linecolmove tdlineupdown"':' class="linecolmove"'); ?>> + browser->phone) && empty($disablemove)) ?' class="linecolmove tdlineupdown"':' class="linecolmove"'); ?>> From 1746f8f96cd94aaa94035071476901c3b4d3e561 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 25 Apr 2016 11:25:49 +0200 Subject: [PATCH 302/380] 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 303/380] 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 304/380] 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 305/380] 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 a2a5fa6f4f810dd9cdad80ecd47e4a351c1a3d9a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 26 Apr 2016 01:13:55 +0200 Subject: [PATCH 306/380] Update screenshots --- build/exe/doliwamp/doliwamp.bmp | Bin 52574 -> 52642 bytes doc/images/dolibarr_screenshot1_1280x800.png | Bin 159840 -> 256972 bytes doc/images/dolibarr_screenshot1_300x188.png | Bin 40871 -> 37784 bytes doc/images/dolibarr_screenshot1_640x400.png | Bin 86560 -> 98739 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/build/exe/doliwamp/doliwamp.bmp b/build/exe/doliwamp/doliwamp.bmp index 52b1320d1113e36e744c5ebb2f1aaa5b397e5b0f..87191204d8c3c761212b3b902091a976bc9a495e 100644 GIT binary patch literal 52642 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 literal 52574 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%0DxJpFJax~)biBC*t?L=V4D`#)^nSP|VzK|N@D0tZ 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%0D92-MnkDtJQqJUht@Aj&I`-A)&;%VeWe*lVSDlHM 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 F41C#+3pQwEjzv6{8_nJ&(Z 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 z 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 literal 159840 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 Y0ixRFAp}rAC;$Ke07*qoM6N<$g6B>dwg3PC diff --git a/doc/images/dolibarr_screenshot1_300x188.png b/doc/images/dolibarr_screenshot1_300x188.png index 9fab4daa8ef1b419d2c135dd9a71008d65c8a0cc..b849e20220668168fe1792ce2f13be1b228a960e 100644 GIT binary patch literal 37784 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 Whb^d58mYGc0000`I!QH}krm>3;3XdrNOX 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 Tk1ODd00000NkvXXu0mjfyXvl7 diff --git a/doc/images/dolibarr_screenshot1_640x400.png b/doc/images/dolibarr_screenshot1_640x400.png index 3f0d38832e1f06c5fd28eef667140e8c3b94e811..9efefcc2405a29c62482a310fc1a947f602eff1c 100644 GIT binary patch literal 98739 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