From a5dc5839060a3fdcfa45ac8851ad5a3331412166 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 14 Mar 2018 19:10:22 +0100 Subject: [PATCH 01/12] use loadLangs for translation files --- .../modules/commande/doc/pdf_einstein.modules.php | 7 +++---- .../modules/contract/doc/pdf_strato.modules.php | 10 ++++------ .../modules/expedition/doc/pdf_merou.modules.php | 13 +++---------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 9d15b263b66..7c002f969aa 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -97,10 +97,9 @@ class pdf_einstein extends ModelePDFCommandes public function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); - $langs->load("products"); + + // Translations + $langs->loadLangs(array("main", "bills", "products")); $this->db = $db; $this->name = "einstein"; diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 74b5d43f489..7a009876fac 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -4,7 +4,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2008 Raphael Bertrand (Resultic) * Copyright (C) 2011 Fabrice CHERRIER - * Copyright (C) 2013 Philippe Grand + * Copyright (C) 2013-2018 Philippe Grand * Copyright (C) 2015 Marcos García * * This program is free software; you can redistribute it and/or modify @@ -126,11 +126,9 @@ class pdf_strato extends ModelePDFContract if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("companies"); - $outputlangs->load("contracts"); + + // Translations + $langs->loadLangs(array("main", "dict", "companies", "contracts")); if ($conf->contrat->dir_output) { diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 0ae6ed3ebe5..9fed3e6589b 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -91,16 +91,9 @@ class pdf_merou extends ModelePdfExpedition if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("companies"); - $outputlangs->load("bills"); - $outputlangs->load("products"); - $outputlangs->load("propal"); - $outputlangs->load("deliveries"); - $outputlangs->load("sendings"); - $outputlangs->load("productbatch"); + + // Translations + $langs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); if ($conf->expedition->dir_output) { From 13ce041313d9c44a9ac04211dac7ba3db6f83077 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 14 Mar 2018 19:26:46 +0100 Subject: [PATCH 02/12] use loadLangs for translation files --- .../modules/expedition/doc/pdf_rouget.modules.php | 13 +++---------- .../expensereport/doc/pdf_standard.modules.php | 10 ++++------ .../core/modules/facture/doc/pdf_crabe.modules.php | 9 +++------ .../modules/fichinter/doc/pdf_soleil.modules.php | 8 +++----- 4 files changed, 13 insertions(+), 27 deletions(-) diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 978f15d2ae8..56b2c8d7dc4 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -122,16 +122,9 @@ class pdf_rouget extends ModelePdfExpedition if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("companies"); - $outputlangs->load("bills"); - $outputlangs->load("products"); - $outputlangs->load("propal"); - $outputlangs->load("deliveries"); - $outputlangs->load("sendings"); - $outputlangs->load("productbatch"); + + // Translations + $langs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); $nblignes = count($object->lines); diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index c236c9ad017..1b8db6d02c3 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -1,7 +1,7 @@ * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2016 Philippe Grand + * Copyright (C) 2016-2018 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 @@ -154,11 +154,9 @@ class pdf_standard extends ModeleExpenseReport if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("trips"); - $outputlangs->load("projects"); + + // Translations + $langs->loadLangs(array("main", "trips", "projects", "dict")); $nblignes = count($object->lines); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 6a063ec0e86..1af1cd1875c 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -176,12 +176,9 @@ class pdf_crabe extends ModelePDFFactures if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("companies"); - $outputlangs->load("bills"); - $outputlangs->load("products"); + + // Translations + $langs->loadLangs(array("main", "bills", "products", "dict", "companies")); $nblignes = count($object->lines); diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 2307f896973..b7600f0869f 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -112,11 +112,9 @@ class pdf_soleil extends ModelePDFFicheinter if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; - - $outputlangs->load("main"); - $outputlangs->load("dict"); - $outputlangs->load("companies"); - $outputlangs->load("interventions"); + + // Translations + $langs->loadLangs(array("main", "interventions", "dict", "companies")); if ($conf->ficheinter->dir_output) { From 743a61159d2cc6c882956419ecab85e190bc5f7f Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 14 Mar 2018 19:34:33 +0100 Subject: [PATCH 03/12] use loadLangs for translation files --- .../core/modules/livraison/doc/pdf_typhon.modules.php | 10 ++++------ .../core/modules/project/doc/pdf_baleine.modules.php | 7 +++---- htdocs/core/modules/project/doc/pdf_beluga.modules.php | 7 +++---- .../core/modules/project/doc/pdf_timespent.modules.php | 7 +++---- htdocs/core/modules/propale/doc/pdf_azur.modules.php | 6 +++--- .../supplier_invoice/pdf/pdf_canelle.modules.php | 6 +++--- .../supplier_order/pdf/pdf_muscadet.modules.php | 6 +++--- .../supplier_payment/doc/pdf_standard.modules.php | 6 +++--- .../supplier_proposal/doc/pdf_aurore.modules.php | 6 +++--- 9 files changed, 28 insertions(+), 33 deletions(-) diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index 06d6920e866..e3f5471a6c3 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -3,7 +3,7 @@ * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * Copyright (C) 2008 Chiptronik - * Copyright (C) 2011-2012 Philippe Grand + * Copyright (C) 2011-2018 Philippe Grand * Copyright (C) 2015 Marcos García * This program is free software; you can redistribute it and/or modify @@ -65,11 +65,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); - $langs->load("sendings"); - $langs->load("companies"); + + // Translations + $langs->loadLangs(array("main", "bills", "sendings", "companies")); $this->db = $db; $this->name = "typhon"; diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 66108da54f8..4b6273388ad 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -48,10 +48,9 @@ class pdf_baleine extends ModelePDFProjects function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("projects"); - $langs->load("companies"); + + // Translations + $langs->loadLangs(array("main", "projects", "companies")); $this->db = $db; $this->name = "baleine"; diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index f2d06d2ebb2..959cc152a0f 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -64,10 +64,9 @@ class pdf_beluga extends ModelePDFProjects function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("projects"); - $langs->load("companies"); + + // Translations + $langs->loadLangs(array("main", "projects", "companies")); $this->db = $db; $this->name = "beluga"; diff --git a/htdocs/core/modules/project/doc/pdf_timespent.modules.php b/htdocs/core/modules/project/doc/pdf_timespent.modules.php index 21853f1bbf8..6843e9c5a33 100644 --- a/htdocs/core/modules/project/doc/pdf_timespent.modules.php +++ b/htdocs/core/modules/project/doc/pdf_timespent.modules.php @@ -47,10 +47,9 @@ class pdf_timespent extends ModelePDFProjects function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("projects"); - $langs->load("companies"); + + // Translations + $langs->loadLangs(array("main", "projects", "companies")); $this->db = $db; $this->name = "timespent"; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index fba77613828..c27b8a7008e 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -68,9 +68,9 @@ class pdf_azur extends ModelePDFPropales function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); + + // Translations + $langs->loadLangs(array("main", "bills")); $this->db = $db; $this->name = "azur"; 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 f927b064a69..22b746486c8 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -63,9 +63,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); + + // Translations + $langs->loadLangs(array("main", "bills")); $this->db = $db; $this->name = "canelle"; 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 f61000d3b08..374dde2c64f 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -3,7 +3,7 @@ * Copyright (C) 2005-2011 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke * Copyright (C) 2010-2014 Juanjo Menent - * Copyright (C) 2015 Marcos García + * Copyright (C) 2015 Marcos García * Copyright (C) 2017 Ferran Marcet * * This program is free software; you can redistribute it and/or modify @@ -68,8 +68,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { global $conf,$langs,$mysoc; - $langs->load("main"); - $langs->load("bills"); + // Translations + $langs->loadLangs(array("main", "bills")); $this->db = $db; $this->name = "muscadet"; diff --git a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php index ffecb1dbdd7..8c9ed049841 100644 --- a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php @@ -65,9 +65,9 @@ class pdf_standard extends ModelePDFSuppliersPayments function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); + + // Translations + $langs->loadLangs(array("main", "bills")); $this->db = $db; $this->name = "standard"; 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 46d4e35d10e..5d790f3c6dc 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -65,9 +65,9 @@ class pdf_aurore extends ModelePDFSupplierProposal function __construct($db) { global $conf,$langs,$mysoc; - - $langs->load("main"); - $langs->load("bills"); + + // Translations + $langs->loadLangs(array("main", "bills")); $this->db = $db; $this->name = "aurore"; From 5eccc6bcbcc1ecfe8a46103250541358f3cd4440 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 15 Mar 2018 06:23:20 +0100 Subject: [PATCH 04/12] NEW Add stats in salaries module --- .../salaries/class/paymentsalary.class.php | 6 +- .../salaries/class/salariesstats.class.php | 164 ++++++++++ htdocs/compta/salaries/stats/index.php | 293 ++++++++++++++++++ htdocs/core/menus/init_menu_auguria.sql | 1 + htdocs/core/menus/standard/eldy.lib.php | 19 +- htdocs/core/modules/modSalaries.class.php | 7 + .../mysql/tables/llx_payment_salary.sql | 18 +- htdocs/langs/en_US/salaries.lang | 3 +- 8 files changed, 489 insertions(+), 22 deletions(-) create mode 100644 htdocs/compta/salaries/class/salariesstats.class.php create mode 100644 htdocs/compta/salaries/stats/index.php diff --git a/htdocs/compta/salaries/class/paymentsalary.class.php b/htdocs/compta/salaries/class/paymentsalary.class.php index eab661c6614..71cfe997fe0 100644 --- a/htdocs/compta/salaries/class/paymentsalary.class.php +++ b/htdocs/compta/salaries/class/paymentsalary.class.php @@ -31,9 +31,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; */ class PaymentSalary extends CommonObject { - //public $element='payment_salary'; //!< Id that identify managed objects - //public $table_element='payment_salary'; //!< Name of table without prefix where object is stored - public $picto='payment'; + public $element='payment_salary'; //!< Id that identify managed objects + public $table_element='payment_salary'; //!< Name of table without prefix where object is stored + public $picto='payment'; public $tms; public $fk_user; diff --git a/htdocs/compta/salaries/class/salariesstats.class.php b/htdocs/compta/salaries/class/salariesstats.class.php new file mode 100644 index 00000000000..647dc27f4a5 --- /dev/null +++ b/htdocs/compta/salaries/class/salariesstats.class.php @@ -0,0 +1,164 @@ + + * Copyright (c) 2018 Fidesio + * + * 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/compta/salaries/class/salariesstats.class.php + * \ingroup salaries + * \brief Fichier de la classe de gestion des stats des salaires + */ +include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php'; +include_once DOL_DOCUMENT_ROOT . '/compta/salaries/class/paymentsalary.class.php'; + +/** + * Classe permettant la gestion des stats des salaires + */ +class SalariesStats extends Stats +{ + public $table_element; + + var $socid; + var $userid; + + var $from; + var $field; + var $where; + + /** + * Constructor + * + * @param DoliDB $db Database handler + * @param int $socid Id third party + * @param mixed $userid Id user for filter or array of user ids + * @return void + */ + function __construct($db, $socid=0, $userid=0) + { + global $conf; + + $this->db = $db; + $this->socid = $socid; + $this->userid = $userid; + + $object=new PaymentSalary($this->db); + $this->from = MAIN_DB_PREFIX.$object->table_element; + $this->field='amount'; + + $this->where.= " entity = ".$conf->entity; + if ($this->socid) + { + $this->where.=" AND fk_soc = ".$this->socid; + } + if (is_array($this->userid) && count($this->userid) > 0) $this->where.=' AND fk_user IN ('.join(',',$this->userid).')'; + else if ($this->userid > 0) $this->where.=' AND fk_user = '.$this->userid; + } + + + /** + * Return the number of salary by year + * + * @return array Array of values + */ + function getNbByYear() + { + $sql = "SELECT YEAR(datep) as dm, count(*)"; + $sql.= " FROM ".$this->from; + $sql.= " GROUP BY dm DESC"; + $sql.= " WHERE ".$this->where; + + return $this->_getNbByYear($sql); + } + + + /** + * Return the number of salary by month, for a given year + * + * @param string $year Year to scan + * @param int $format 0=Label of absiss is a translated text, 1=Label of absiss is month number, 2=Label of absiss is first letter of month + * @return array Array of values + */ + function getNbByMonth($year, $format=0) + { + $sql = "SELECT MONTH(datep) as dm, count(*)"; + $sql.= " FROM ".$this->from; + $sql.= " WHERE YEAR(datep) = ".$year; + $sql.= " AND ".$this->where; + $sql.= " GROUP BY dm"; + $sql.= $this->db->order('dm','DESC'); + + $res=$this->_getNbByMonth($year, $sql, $format); + //var_dump($res);print '
'; + return $res; + } + + + /** + * Return amount of salaries by month for a given year + * + * @param int $year Year to scan + * @param int $format 0=Label of absiss is a translated text, 1=Label of absiss is month number, 2=Label of absiss is first letter of month + * @return array Array of values + */ + function getAmountByMonth($year, $format=0) + { + $sql = "SELECT date_format(datep,'%m') as dm, sum(".$this->field.")"; + $sql.= " FROM ".$this->from; + $sql.= " WHERE date_format(datep,'%Y') = '".$year."'"; + $sql.= " AND ".$this->where; + $sql.= " GROUP BY dm"; + $sql.= $this->db->order('dm','DESC'); + + $res=$this->_getAmountByMonth($year, $sql, $format); + //var_dump($res);print '
'; + return $res; + } + + /** + * Return average amount + * + * @param int $year Year to scan + * @return array Array of values + */ + function getAverageByMonth($year) + { + $sql = "SELECT date_format(datep,'%m') as dm, avg(".$this->field.")"; + $sql.= " FROM ".$this->from; + $sql.= " WHERE date_format(datep,'%Y') = '".$year."'"; + $sql.= " AND ".$this->where; + $sql.= " GROUP BY dm"; + $sql.= $this->db->order('dm','DESC'); + + return $this->_getAverageByMonth($year, $sql); + } + + /** + * Return nb, total and average + * + * @return array Array of values + */ + function getAllByYear() + { + $sql = "SELECT date_format(datep,'%Y') as year, count(*) as nb, sum(".$this->field.") as total, avg(".$this->field.") as avg"; + $sql.= " FROM ".$this->from; + $sql.= " WHERE ".$this->where; + $sql.= " GROUP BY year"; + $sql.= $this->db->order('year','DESC'); + + return $this->_getAllByYear($sql); + } +} + diff --git a/htdocs/compta/salaries/stats/index.php b/htdocs/compta/salaries/stats/index.php new file mode 100644 index 00000000000..0ba0c29ea6f --- /dev/null +++ b/htdocs/compta/salaries/stats/index.php @@ -0,0 +1,293 @@ + + * Copyright (C) 2018 Fidesio + * + * 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/compta/salaries/stats/index.php + * \ingroup salaries + * \brief Page for statistics of module salaries + */ + +require '../../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/salariesstats.class.php'; + +$langs->load("salaries"); +$langs->load("companies"); + +$WIDTH=DolGraph::getDefaultGraphSizeForStats('width'); +$HEIGHT=DolGraph::getDefaultGraphSizeForStats('height'); + +$userid=GETPOST('userid','int'); if ($userid < 0) $userid=0; +$socid=GETPOST('socid','int'); if ($socid < 0) $socid=0; +$id = GETPOST('id','int'); + +// Security check +$socid = GETPOST("socid","int"); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'salaries', '', '', ''); + +// Other security check +$childids = $user->getAllChildIds(); +$childids[]=$user->id; +if ($userid > 0) +{ + if (empty($user->rights->salaries->payment->readall) && ! in_array($userid, $childids)) + { + accessforbidden(); + exit; + } +} + +$nowyear=strftime("%Y", dol_now()); +$year = GETPOST('year')>0?GETPOST('year'):$nowyear; +//$startyear=$year-2; +$startyear=$year-1; +$endyear=$year; + +/* + * View + */ + +$form=new Form($db); + + +llxHeader(); + +$title=$langs->trans("SalariesStatistics"); +$dir=$conf->salaries->dir_temp; + +print load_fiche_titre($title, $mesg); + +dol_mkdir($dir); + +$useridtofilter=$userid; // Filter from parameters +if (empty($useridtofilter)) +{ + $useridtofilter=$childids; + if (! empty($user->rights->salaries->payment->readall)) $useridtofilter=0; +} + +$stats = new SalariesStats($db, $socid, $useridtofilter); + + +// Build graphic number of object +// $data = array(array('Lib',val1,val2,val3),...) +//print "$endyear, $startyear"; +$data = $stats->getNbByMonthWithPrevYear($endyear,$startyear); +//var_dump($data); + +$filenamenb = $dir."/salariesnbinyear-".$year.".png"; +$fileurlnb = DOL_URL_ROOT.'/viewimage.php?modulepart=salariesstats&file=salariesnbinyear-'.$year.'.png'; + +$px1 = new DolGraph(); +$mesg = $px1->isGraphKo(); +if (! $mesg) +{ + $px1->SetData($data); + $px1->SetPrecisionY(0); + $i=$startyear;$legend=array(); + while ($i <= $endyear) + { + $legend[]=$i; + $i++; + } + $px1->SetLegend($legend); + $px1->SetMaxValue($px1->GetCeilMaxValue()); + $px1->SetWidth($WIDTH); + $px1->SetHeight($HEIGHT); + $px1->SetYLabel($langs->trans("Number")); + $px1->SetShading(3); + $px1->SetHorizTickIncrement(1); + $px1->SetPrecisionY(0); + $px1->mode='depth'; + $px1->SetTitle($langs->trans("NumberByMonth")); + + $px1->draw($filenamenb,$fileurlnb); +} + +// Build graphic amount of object +$data = $stats->getAmountByMonthWithPrevYear($endyear,$startyear); +//var_dump($data); +// $data = array(array('Lib',val1,val2,val3),...) + +$filenameamount = $dir."/salariesamountinyear-".$year.".png"; +$fileurlamount = DOL_URL_ROOT.'/viewimage.php?modulepart=salariesstats&file=salariesamountinyear-'.$year.'.png'; + +$px2 = new DolGraph(); +$mesg = $px2->isGraphKo(); +if (! $mesg) +{ + $px2->SetData($data); + $i=$startyear;$legend=array(); + while ($i <= $endyear) + { + $legend[]=$i; + $i++; + } + $px2->SetLegend($legend); + $px2->SetMaxValue($px2->GetCeilMaxValue()); + $px2->SetMinValue(min(0,$px2->GetFloorMinValue())); + $px2->SetWidth($WIDTH); + $px2->SetHeight($HEIGHT); + $px2->SetYLabel($langs->trans("Amount")); + $px2->SetShading(3); + $px2->SetHorizTickIncrement(1); + $px2->SetPrecisionY(0); + $px2->mode='depth'; + $px2->SetTitle($langs->trans("AmountTotal")); + + $px2->draw($filenameamount,$fileurlamount); +} + + +$data = $stats->getAverageByMonthWithPrevYear($endyear, $startyear); + +$filename_avg = $dir."/salariesaverageinyear-".$year.".png"; +$fileurl_avg = DOL_URL_ROOT.'/viewimage.php?modulepart=salariesstats&file=salariesaverageinyear-'.$year.'.png'; + +$px3 = new DolGraph(); +$mesg = $px3->isGraphKo(); +if (! $mesg) +{ + $px3->SetData($data); + $i = $startyear;$legend=array(); + while ($i <= $endyear) + { + $legend[]=$i; + $i++; + } + $px3->SetLegend($legend); + $px3->SetYLabel($langs->trans("AmountAverage")); + $px3->SetMaxValue($px3->GetCeilMaxValue()); + $px3->SetMinValue($px3->GetFloorMinValue()); + $px3->SetWidth($WIDTH); + $px3->SetHeight($HEIGHT); + $px3->SetShading(3); + $px3->SetHorizTickIncrement(1); + $px3->SetPrecisionY(0); + $px3->mode='depth'; + $px3->SetTitle($langs->trans("AmountAverage")); + + $px3->draw($filename_avg,$fileurl_avg); +} + + +// Show array +$data = $stats->getAllByYear(); +$arrayyears=array(); +foreach($data as $val) { + $arrayyears[$val['year']]=$val['year']; +} +if (! count($arrayyears)) $arrayyears[$nowyear]=$nowyear; + + +$h=0; +$head = array(); +$head[$h][0] = DOL_URL_ROOT . '/compta/salaries/stats/index.php'; +$head[$h][1] = $langs->trans("ByMonthYear"); +$head[$h][2] = 'byyear'; +$h++; + +complete_head_from_modules($conf,$langs,null,$head,$h,'trip_stats'); + +dol_fiche_head($head, 'byyear', $langs->trans("Statistics"), -1); + + +print '
'; + + +// Show filter box +print '
'; +print ''; +print ''; +// User +print ''; +// Year +print ''; +print ''; +print '
'.$langs->trans("Filter").'
'.$langs->trans("User").''; +print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); +print '
'.$langs->trans("Year").''; +if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year; +arsort($arrayyears); +print $form->selectarray('year',$arrayyears,$year,0); +print '
'; +print '
'; +print '

'; + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; + +$oldyear=0; +foreach ($data as $val) +{ + $year = $val['year']; + while ($year && $oldyear > $year+1) + { + // If we have empty year + $oldyear--; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + $oldyear=$year; +} + +print '
'.$langs->trans("Year").''.$langs->trans("Number").''.$langs->trans("AmountTotal").''.$langs->trans("AmountAverage").'
'.$oldyear.'000
'.$year.''.$val['nb'].''.price(price2num($val['total'],'MT'),1).''.price(price2num($val['avg'],'MT'),1).'
'; + + +print '
'; + + +// Show graphs +print '
'; +if ($mesg) { print $mesg; } +else { + print $px1->show(); + print "
\n"; + print $px2->show(); + print "
\n"; + print $px3->show(); +} +print '
'; + + +print '
'; +print '
'; + + +dol_fiche_end(); + + +llxFooter(); + +$db->close(); diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 28eb9fa044a..139914c87bf 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -199,6 +199,7 @@ 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', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'billing', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing', 'Salaries', 1, 'salaries', '$user->rights->salaries->payment->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->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->payment->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->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->payment->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->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2213__+MAX_llx_menu__, 'billing', '', 2210__+MAX_llx_menu__, '/compta/salaries/stats/index.php?leftmenu=tax_salary', 'Statistics', 2, 'companies', '$user->rights->salaries->payment->read', '', 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', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'billing', 'tax_loan', 2200__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan&mainmenu=billing', '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__, 'billing', '', 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__, 'billing', '', 2220__+MAX_llx_menu__, '/loan/payment/list.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 75630841225..c64dfc232b7 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -926,20 +926,21 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Salaries if (! empty($conf->salaries->enabled)) { - $langs->load("salaries"); - $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing",$langs->trans("Salaries"),1,$user->rights->salaries->payment->read, '', $mainmenu, 'tax_salary'); - if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->payment->write); - if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->payment->read); + $langs->load("salaries"); + $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=billing",$langs->trans("Salaries"),1,$user->rights->salaries->payment->read, '', $mainmenu, 'tax_salary'); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->payment->write); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->payment->read); + if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/stats/index.php?leftmenu=tax_salary", $langs->trans("Statistics"),2,$user->rights->salaries->payment->read); } // Loan if (! empty($conf->loan->enabled)) { - $langs->load("loan"); - $newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=billing",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); - if ($usemenuhider || 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/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); - if (($usemenuhider || 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); + $langs->load("loan"); + $newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=billing",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); + if ($usemenuhider || 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/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + if (($usemenuhider || 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); } // Various payment diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php index 1edfd419378..e3d418d182e 100644 --- a/htdocs/core/modules/modSalaries.class.php +++ b/htdocs/core/modules/modSalaries.class.php @@ -136,6 +136,13 @@ class modSalaries extends DolibarrModules $this->rights[$r][4] = 'delete'; $this->rights[$r][5] = ''; + $this->rights[$r][0] = 515; + $this->rights[$r][1] = 'Read all salaries'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'payment'; + $this->rights[$r][5] = 'readall'; + $r++; $this->rights[$r][0] = 517; $this->rights[$r][1] = 'Export employee contracts and salaries payments'; diff --git a/htdocs/install/mysql/tables/llx_payment_salary.sql b/htdocs/install/mysql/tables/llx_payment_salary.sql index 171c356415f..e3bcd0a9c4a 100644 --- a/htdocs/install/mysql/tables/llx_payment_salary.sql +++ b/htdocs/install/mysql/tables/llx_payment_salary.sql @@ -1,5 +1,5 @@ -- =================================================================== --- Copyright (C) 2011-2014 Alexandre Spangaro +-- Copyright (C) 2011-2018 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 @@ -22,18 +22,18 @@ create table llx_payment_salary tms timestamp, datec datetime, -- Create date fk_user integer NOT NULL, - datep date, -- date de paiement - datev date, -- date de valeur (this field should not be here, only into bank tables) - salary double(24,8), -- salary of user when payment was done + datep date, -- payment date + datev date, -- value date (this field should not be here, only into bank tables) + salary double(24,8), -- salary of user when payment was done amount double(24,8) NOT NULL DEFAULT 0, fk_typepayment integer NOT NULL, - num_payment varchar(50), -- ref + num_payment varchar(50), -- ref label varchar(255), datesp date, -- date start period dateep date, -- date end period - entity integer DEFAULT 1 NOT NULL, -- multi company id + entity integer DEFAULT 1 NOT NULL, -- multi company id note text, - fk_bank integer, - fk_user_author integer, -- utilisateur qui a cree l'info - fk_user_modif integer -- utilisateur qui a modifié l'info + fk_bank integer, + fk_user_author integer, -- user creating + fk_user_modif integer -- user making last change )ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index f1db7ea1cf3..432ab894040 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -14,4 +14,5 @@ CurrentSalary=Current salary THMDescription=This value may be used to calculate cost of time consumed on a project entered by users if module project is used TJMDescription=This value is currently as information only and is not used for any calculation LastSalaries=Latest %s salary payments -AllSalaries=All salary payments \ No newline at end of file +AllSalaries=All salary payments +SalariesStatistics=Statistiques salaires \ No newline at end of file From f6fd03a4f33edc57d7c32b191ad633444d0f88c0 Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Thu, 15 Mar 2018 09:06:01 +0100 Subject: [PATCH 05/12] Change $langs by $outputlangs --- htdocs/core/modules/contract/doc/pdf_strato.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 7a009876fac..a42ac2c7e8d 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -128,7 +128,7 @@ class pdf_strato extends ModelePDFContract if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "dict", "companies", "contracts")); + $outputlangs->loadLangs(array("main", "dict", "companies", "contracts")); if ($conf->contrat->dir_output) { From 09d0dc7ba71ae7cbe18a525c16c98fddd52a8790 Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Thu, 15 Mar 2018 09:14:09 +0100 Subject: [PATCH 06/12] use $outputlangs instead of $langs --- htdocs/core/modules/expedition/doc/pdf_rouget.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 56b2c8d7dc4..1b7c1edcd7b 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -124,7 +124,7 @@ class pdf_rouget extends ModelePdfExpedition if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); + $outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); $nblignes = count($object->lines); From e6d2effba1d7243d358f9faaaaa1a5a996bdc0bd Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Thu, 15 Mar 2018 09:15:22 +0100 Subject: [PATCH 07/12] use $outputlangs instead of $langs --- htdocs/core/modules/expensereport/doc/pdf_standard.modules.php | 2 +- 1 file changed, 1 insertion(+), 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 1b8db6d02c3..baf43ecd538 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -156,7 +156,7 @@ class pdf_standard extends ModeleExpenseReport if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "trips", "projects", "dict")); + $outputlangs->loadLangs(array("main", "trips", "projects", "dict")); $nblignes = count($object->lines); From 3f0764f282f0ef6fa7a5f8a062e5d5ab9718485f Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Thu, 15 Mar 2018 09:17:53 +0100 Subject: [PATCH 08/12] use $outputlangs instead of $langs --- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 1af1cd1875c..25bee86088c 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -178,7 +178,7 @@ class pdf_crabe extends ModelePDFFactures if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "bills", "products", "dict", "companies")); + $outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies")); $nblignes = count($object->lines); From c8e672d01a0fcf14d24ea100f01894948dba699f Mon Sep 17 00:00:00 2001 From: Philippe Grand Date: Thu, 15 Mar 2018 09:18:40 +0100 Subject: [PATCH 09/12] use $outputlangs instead of $langs --- htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index b7600f0869f..26cdc3f5dfc 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -114,7 +114,7 @@ class pdf_soleil extends ModelePDFFicheinter if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "interventions", "dict", "companies")); + $outputlangs->loadLangs(array("main", "interventions", "dict", "companies")); if ($conf->ficheinter->dir_output) { From 8ae90bebaf66fdfa2b1ceb505833fcfb682b05d3 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 15 Mar 2018 09:50:33 +0100 Subject: [PATCH 10/12] New rule for FR siret value check --- htdocs/societe/class/societe.class.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index be5de50fd23..abf0475008d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2888,7 +2888,23 @@ class Societe extends CommonObject $chaine=trim($this->idprof2); $chaine=preg_replace('/(\s)/','',$chaine); + if (!is_numeric($chaine)) return -1; if (dol_strlen($chaine) != 14) return -1; + + // on prend chaque chiffre un par un + // si son index (position dans la chaîne en commence à 0 au premier caractère) est pair + // on double sa valeur et si cette dernière est supérieure à 9, on lui retranche 9 + // on ajoute cette valeur à la somme totale + + for ($index = 0; $index < 14; $index ++) + { + $number = (int) $chaine[$index]; + if (($index % 2) == 0) { if (($number *= 2) > 9) $number -= 9; } + $sum += $number; + } + + // le numéro est valide si la somme des chiffres est multiple de 10 + if (($sum % 10) != 0) return -1; } //Verify CIF/NIF/NIE if pays ES From 3de6e1a6cb494dde108f70ce95cd012e9aed7a5e Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 15 Mar 2018 12:00:32 +0100 Subject: [PATCH 11/12] Simplify SIREN check function --- htdocs/societe/class/societe.class.php | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index abf0475008d..72bd3b58426 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2859,27 +2859,23 @@ class Societe extends CommonObject $chaine=trim($this->idprof1); $chaine=preg_replace('/(\s)/','',$chaine); + if (!is_numeric($chaine)) return -1; if (dol_strlen($chaine) != 9) return -1; - $sum = 0; + // on prend chaque chiffre un par un + // si son index (position dans la chaîne en commence à 0 au premier caractère) est impair + // on double sa valeur et si cette dernière est supérieure à 9, on lui retranche 9 + // on ajoute cette valeur à la somme totale - for ($i = 0 ; $i < 10 ; $i = $i+2) + for ($index = 0; $index < 9; $index ++) { - $sum = $sum + substr($this->idprof1, (8 - $i), 1); + $number = (int) $siren[$index]; + if (($index % 2) != 0) { if (($number *= 2) > 9) $number -= 9; } + $sum += $number; } - for ($i = 1 ; $i < 9 ; $i = $i+2) - { - $ps = 2 * substr($this->idprof1, (8 - $i), 1); - - if ($ps > 9) - { - $ps = substr($ps, 0,1) + substr($ps, 1, 1); - } - $sum = $sum + $ps; - } - - if (substr($sum, -1) != 0) return -1; + // le numéro est valide si la somme des chiffres est multiple de 10 + if (($sum % 10) != 0) return -1; } // Verifie SIRET si pays FR From 9256faf6fba3a39173fba8212360cfa5e04af0c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 15 Mar 2018 15:07:08 +0100 Subject: [PATCH 12/12] Update pdf_merou.modules.php --- htdocs/core/modules/expedition/doc/pdf_merou.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 9fed3e6589b..c535d231a67 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -93,7 +93,7 @@ class pdf_merou extends ModelePdfExpedition if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; // Translations - $langs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); + $outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies", "propal", "deliveries", "sendings", "productbatch")); if ($conf->expedition->dir_output) {