Close #18607 : Implementation of salary button

This commit is contained in:
lmarcouiller 2021-09-07 10:39:41 +02:00
parent 5b801665e3
commit 0d9280f945
4 changed files with 116 additions and 3 deletions

View File

@ -21,4 +21,5 @@ LastSalaries=Latest %s salaries
AllSalaries=All salaries
SalariesStatistics=Salary statistics
SalariesAndPayments=Salaries and payments
ConfirmDeleteSalaryPayment=Do you want to delete this salary payment ?
ConfirmDeleteSalaryPayment=Do you want to delete this salary payment ?
FillFieldFirst=Fill employee field first

View File

@ -22,3 +22,4 @@ AllSalaries=Tous les salaires
SalariesStatistics=Statistiques
SalariesAndPayments=Salaires et paiements
ConfirmDeleteSalaryPayment=Voulez-vous supprimer ce paiement de salaire ?
FillFieldFirst=Remplisez d'abord le champ salarié

View File

@ -0,0 +1,73 @@
<?php
/* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010 Cyrille de Lambert <info@auguria.net>
*
* 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 <https://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/salaries/ajax/ajaxsalaries.php
* \brief File to return Ajax response on salary request
*/
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('NOCSRFCHECK')) {
define('NOCSRFCHECK', '1');
}
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/salaries/class/salary.class.php';
restrictedArea($user, 'salaries');
$fk_user = GETPOST('fk_user', 'int');
$return_arr = array();
if (!empty(GETPOST('fk_user', 'int'))) {
$sql = "SELECT s.amount, s.rowid FROM ".MAIN_DB_PREFIX."salary as s";
$sql .= " WHERE s.fk_user = ".$fk_user;
$sql .= " AND s.paye = 1";
$sql .= $db->order("s.dateep", "DESC");
$resql = $db->query($sql);
if ($resql) {
$obj = $db->fetch_object($resql);
$label = "Salary amount";
$row_array['label'] = $label;
$row_array['value'] = $obj->amount;
$row_array['key'] = "Amount";
array_push($return_arr, $row_array);
echo json_encode($return_arr);
} else {
echo json_encode(array('nom'=>'Error', 'label'=>'Error', 'key'=>'Error', 'value'=>'Error'));
}
} else {
echo json_encode(array('nom'=>'ErrorBadParameter', 'label'=>'ErrorBadParameter', 'key'=>'ErrorBadParameter', 'value'=>'ErrorBadParameter'));
}

View File

@ -466,8 +466,10 @@ if ($action == 'create') {
// Amount
print '<tr><td>';
print $form->editfieldkey('Amount', 'amount', '', $object, 0, 'string', '', 1).'</td><td>';
print '<input name="amount" id="amount" class="minwidth75 maxwidth100" value="'.GETPOST("amount").'">';
print '</td></tr>';
print '<input name="amount" id="amount" class="minwidth75 maxwidth100" value="'.GETPOST("amount").'">&nbsp;';
print '<button class="dpInvisibleButtons" id="updateAmountWithLastSalary" name="_useless" type="button">'.$langs->trans('UpdateAmountWithLastSalary').'</a>';
print '</td>';
print '</tr>';
// Project
if (!empty($conf->projet->enabled)) {
@ -560,6 +562,42 @@ if ($action == 'create') {
print $form->buttonsSaveCancel("Save", "Cancel", $addition_button);
print '</form>';
print '<script>';
print '$( document ).ready(function() {';
print '$("#updateAmountWithLastSalary").on("click",function updateAmountWithLastSalary(){
var fk_user = $("#fk_user").val()
var url = "'.DOL_URL_ROOT.'/salaries/ajax/ajaxsalaries.php?fk_user="+fk_user;
if(fk_user != -1){
$.get(
url,
function( data ) {
if(data!=null){
console.log("Data returned: "+data);
item = JSON.parse(data);
if(item[0].key == "Amount"){
value = item[0].value;
if(value != null){
$("#amount").val(item[0].value);
}else{
console.error("Error: Ajax url "+url+" has returned a null value.");
}
}else{
console.error("Error: Ajax url "+url+" has returned the wrong key.");
}
}else{
console.error("Error: Ajax url "+url+" has returned an empty page.");
}
}
);
}else{
alert("'.$langs->trans("FillFieldFirst").'");
}
});
})';
print '</script>';
}