NEW Add stats in salaries module
This commit is contained in:
parent
93f4d6fdcd
commit
5eccc6bcbc
@ -31,9 +31,9 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
|
|||||||
*/
|
*/
|
||||||
class PaymentSalary extends CommonObject
|
class PaymentSalary extends CommonObject
|
||||||
{
|
{
|
||||||
//public $element='payment_salary'; //!< Id that identify managed objects
|
public $element='payment_salary'; //!< Id that identify managed objects
|
||||||
//public $table_element='payment_salary'; //!< Name of table without prefix where object is stored
|
public $table_element='payment_salary'; //!< Name of table without prefix where object is stored
|
||||||
public $picto='payment';
|
public $picto='payment';
|
||||||
|
|
||||||
public $tms;
|
public $tms;
|
||||||
public $fk_user;
|
public $fk_user;
|
||||||
|
|||||||
164
htdocs/compta/salaries/class/salariesstats.class.php
Normal file
164
htdocs/compta/salaries/class/salariesstats.class.php
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
|
* Copyright (c) 2018 Fidesio <contact@fidesio.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \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 '<br>';
|
||||||
|
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 '<br>';
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
293
htdocs/compta/salaries/stats/index.php
Normal file
293
htdocs/compta/salaries/stats/index.php
Normal file
@ -0,0 +1,293 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
|
* Copyright (C) 2018 Fidesio <contact@fidesio.com>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \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 '<div class="fichecenter"><div class="fichethirdleft">';
|
||||||
|
|
||||||
|
|
||||||
|
// Show filter box
|
||||||
|
print '<form name="stats" method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<table class="border" width="100%">';
|
||||||
|
print '<tr class="liste_titre"><td class="liste_titre" colspan="2">'.$langs->trans("Filter").'</td></tr>';
|
||||||
|
// User
|
||||||
|
print '<tr><td>'.$langs->trans("User").'</td><td>';
|
||||||
|
print $form->select_dolusers($userid, 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300');
|
||||||
|
print '</td></tr>';
|
||||||
|
// Year
|
||||||
|
print '<tr><td>'.$langs->trans("Year").'</td><td>';
|
||||||
|
if (! in_array($year,$arrayyears)) $arrayyears[$year]=$year;
|
||||||
|
arsort($arrayyears);
|
||||||
|
print $form->selectarray('year',$arrayyears,$year,0);
|
||||||
|
print '</td></tr>';
|
||||||
|
print '<tr><td align="center" colspan="2"><input type="submit" name="submit" class="button" value="'.$langs->trans("Refresh").'"></td></tr>';
|
||||||
|
print '</table>';
|
||||||
|
print '</form>';
|
||||||
|
print '<br><br>';
|
||||||
|
|
||||||
|
print '<table class="border" width="100%">';
|
||||||
|
print '<tr height="24">';
|
||||||
|
print '<td align="center">'.$langs->trans("Year").'</td>';
|
||||||
|
print '<td align="center">'.$langs->trans("Number").'</td>';
|
||||||
|
print '<td align="center">'.$langs->trans("AmountTotal").'</td>';
|
||||||
|
print '<td align="center">'.$langs->trans("AmountAverage").'</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
$oldyear=0;
|
||||||
|
foreach ($data as $val)
|
||||||
|
{
|
||||||
|
$year = $val['year'];
|
||||||
|
while ($year && $oldyear > $year+1)
|
||||||
|
{
|
||||||
|
// If we have empty year
|
||||||
|
$oldyear--;
|
||||||
|
print '<tr height="24">';
|
||||||
|
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$oldyear.'">'.$oldyear.'</a></td>';
|
||||||
|
print '<td align="right">0</td>';
|
||||||
|
print '<td align="right">0</td>';
|
||||||
|
print '<td align="right">0</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
print '<tr height="24">';
|
||||||
|
print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?year='.$year.'">'.$year.'</a></td>';
|
||||||
|
print '<td align="right">'.$val['nb'].'</td>';
|
||||||
|
print '<td align="right">'.price(price2num($val['total'],'MT'),1).'</td>';
|
||||||
|
print '<td align="right">'.price(price2num($val['avg'],'MT'),1).'</td>';
|
||||||
|
print '</tr>';
|
||||||
|
$oldyear=$year;
|
||||||
|
}
|
||||||
|
|
||||||
|
print '</table>';
|
||||||
|
|
||||||
|
|
||||||
|
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
||||||
|
|
||||||
|
|
||||||
|
// Show graphs
|
||||||
|
print '<table class="border" width="100%"><tr valign="top"><td align="center">';
|
||||||
|
if ($mesg) { print $mesg; }
|
||||||
|
else {
|
||||||
|
print $px1->show();
|
||||||
|
print "<br>\n";
|
||||||
|
print $px2->show();
|
||||||
|
print "<br>\n";
|
||||||
|
print $px3->show();
|
||||||
|
}
|
||||||
|
print '</td></tr></table>';
|
||||||
|
|
||||||
|
|
||||||
|
print '</div></div></div>';
|
||||||
|
print '<div style="clear:both"></div>';
|
||||||
|
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
llxFooter();
|
||||||
|
|
||||||
|
$db->close();
|
||||||
@ -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', __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', 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', 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', __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', 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__);
|
--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__);
|
||||||
|
|||||||
@ -926,20 +926,21 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
// Salaries
|
// Salaries
|
||||||
if (! empty($conf->salaries->enabled))
|
if (! empty($conf->salaries->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("salaries");
|
$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');
|
$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/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/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
|
// Loan
|
||||||
if (! empty($conf->loan->enabled))
|
if (! empty($conf->loan->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("loan");
|
$langs->load("loan");
|
||||||
$newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=billing",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_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 ($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 (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);
|
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
|
// Various payment
|
||||||
|
|||||||
@ -136,6 +136,13 @@ class modSalaries extends DolibarrModules
|
|||||||
$this->rights[$r][4] = 'delete';
|
$this->rights[$r][4] = 'delete';
|
||||||
$this->rights[$r][5] = '';
|
$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++;
|
$r++;
|
||||||
$this->rights[$r][0] = 517;
|
$this->rights[$r][0] = 517;
|
||||||
$this->rights[$r][1] = 'Export employee contracts and salaries payments';
|
$this->rights[$r][1] = 'Export employee contracts and salaries payments';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
-- Copyright (C) 2011-2014 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
-- Copyright (C) 2011-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
--
|
--
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
-- 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
|
-- it under the terms of the GNU General Public License as published by
|
||||||
@ -22,18 +22,18 @@ create table llx_payment_salary
|
|||||||
tms timestamp,
|
tms timestamp,
|
||||||
datec datetime, -- Create date
|
datec datetime, -- Create date
|
||||||
fk_user integer NOT NULL,
|
fk_user integer NOT NULL,
|
||||||
datep date, -- date de paiement
|
datep date, -- payment date
|
||||||
datev date, -- date de valeur (this field should not be here, only into bank tables)
|
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
|
salary double(24,8), -- salary of user when payment was done
|
||||||
amount double(24,8) NOT NULL DEFAULT 0,
|
amount double(24,8) NOT NULL DEFAULT 0,
|
||||||
fk_typepayment integer NOT NULL,
|
fk_typepayment integer NOT NULL,
|
||||||
num_payment varchar(50), -- ref
|
num_payment varchar(50), -- ref
|
||||||
label varchar(255),
|
label varchar(255),
|
||||||
datesp date, -- date start period
|
datesp date, -- date start period
|
||||||
dateep date, -- date end 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,
|
note text,
|
||||||
fk_bank integer,
|
fk_bank integer,
|
||||||
fk_user_author integer, -- utilisateur qui a cree l'info
|
fk_user_author integer, -- user creating
|
||||||
fk_user_modif integer -- utilisateur qui a modifié l'info
|
fk_user_modif integer -- user making last change
|
||||||
)ENGINE=innodb;
|
)ENGINE=innodb;
|
||||||
@ -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
|
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
|
TJMDescription=This value is currently as information only and is not used for any calculation
|
||||||
LastSalaries=Latest %s salary payments
|
LastSalaries=Latest %s salary payments
|
||||||
AllSalaries=All salary payments
|
AllSalaries=All salary payments
|
||||||
|
SalariesStatistics=Statistiques salaires
|
||||||
Loading…
Reference in New Issue
Block a user