918 lines
42 KiB
PHP
918 lines
42 KiB
PHP
<?php
|
|
|
|
require_once 'include/utils/utils.php';
|
|
|
|
require_once 'includes/Loader.php';
|
|
|
|
vimport ('includes.runtime.EntryPoint');
|
|
|
|
require_once 'SUtiles.php';
|
|
|
|
@session_start();
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
|
|
$roleid = $current_user->get('roleid');
|
|
|
|
$userId = $current_user->get('id');
|
|
|
|
|
|
|
|
$viewer = new Vtiger_Viewer();
|
|
|
|
|
|
|
|
$viewer->assign('CURRENTDATE', Vtiger_Date_UIType::getDisplayDateValue(date('Y-n-j')));
|
|
|
|
$viewer->assign('MODULE', 'Home');
|
|
|
|
$viewer->assign('MODULE_NAME', 'Home');
|
|
|
|
$viewer->assign('QUALIFIED_MODULE', 'Home');
|
|
|
|
$viewer->assign('PARENT_MODULE', '');
|
|
|
|
$viewer->assign('VIEW', 'DashBoard');
|
|
|
|
$menuModelsList = Vtiger_Menu_Model::getAll(true);
|
|
|
|
$menuStructure = Vtiger_MenuStructure_Model::getInstanceFromMenuList($menuModelsList, 'Home');
|
|
|
|
uksort($menuModelsList, array('Vtiger_MenuStructure_Model', 'sortMenuItemsByProcess'));
|
|
|
|
$viewer->assign('SELECTED_MENU_CATEGORY', 'MARKETING');
|
|
|
|
$viewer->assign('SELECTED_MENU_CATEGORY_LABEL', 'Tableau de bord');
|
|
|
|
//$viewer->assign('SELECTED_CATEGORY_MENU_LIST', $menuGroupedByParent['MARKETING']);
|
|
|
|
$viewer->assign('MENUS', $menuModelsList);
|
|
|
|
$viewer->assign('QUICK_CREATE_MODULES', Vtiger_Menu_Model::getAllForQuickCreate());
|
|
|
|
$viewer->assign('MENU_STRUCTURE', $menuStructure);
|
|
|
|
$viewer->assign('MENU_SELECTED_MODULENAME', 'Home');
|
|
|
|
$viewer->assign('MENU_TOPITEMS_LIMIT', $menuStructure->getLimit());
|
|
|
|
$viewer->assign('COMPANY_LOGO', Vtiger_CompanyDetails_Model::getInstanceById()->getLogo());
|
|
|
|
$viewer->assign('COMPANY_DETAILS_SETTINGS',new Settings_Vtiger_CompanyDetails_Model());
|
|
|
|
$viewer->assign('USER_MODEL', $current_user);
|
|
|
|
$viewer->assign('CURRENT_USER_MODEL', $current_user);
|
|
|
|
require_once 'libraries/csrf-magic/csrf-magic.php';
|
|
|
|
$viewer->assign('HOME_MODULE_MODEL', Vtiger_Module_Model::getInstance('Home'));
|
|
|
|
$viewer->assign('HEADER_LINKS', Vtiger_Header_View::getHeaderLinks());
|
|
|
|
$viewer->assign('ANNOUNCEMENT', Vtiger_Header_View::getAnnouncement());
|
|
|
|
$viewer->assign('SEARCHABLE_MODULES', Vtiger_Module_Model::getSearchableModules());
|
|
|
|
$viewer->assign('INVENTORY_MODULES', getInventoryModules());
|
|
|
|
$viewer->assign('PAGETITLE','Edition Note De Frais');
|
|
|
|
$viewer->assign('LANGUAGE_STRINGS', Vtiger_Language_Handler::export('Home', 'jsLanguageStrings'));
|
|
|
|
$viewer->view('CustomDashboard.tpl');
|
|
|
|
|
|
|
|
if(filter_var($_GET['id'], FILTER_VALIDATE_INT) === FALSE){
|
|
|
|
header("Location: index.php?module=NoteDeFraisList&view=NoteDeFraisList");
|
|
|
|
}
|
|
|
|
|
|
|
|
function getFullname($id){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
|
|
|
|
$query = "SELECT first_name,last_name FROM `vtiger_users` where id ='".$id."' ";
|
|
|
|
$sql_get_result = $adb->query($query);
|
|
|
|
$res= array();
|
|
|
|
|
|
|
|
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
|
|
|
|
$res[] = $recordinfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $res[0]['first_name']." ".$res[0]['last_name'];
|
|
|
|
}
|
|
|
|
|
|
|
|
function getAllUsers(){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query5 = "SELECT id,CONCAT(first_name,' ', last_name) as fullname FROM `vtiger_users` where status ='Active' ";
|
|
|
|
$result5 =$adb->query($query5);
|
|
|
|
$users=array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($result5)) {
|
|
|
|
$users[] = $recordinfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $users;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getUser($id){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query5 = "SELECT id,CONCAT(first_name,' ', last_name) as fullname FROM `vtiger_users` where status ='Active' and id={$id}";
|
|
|
|
$result5 =$adb->query($query5);
|
|
|
|
|
|
|
|
|
|
|
|
if ($adb->num_rows($result5) > 0) {
|
|
|
|
$user=array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($result5)) {
|
|
|
|
$user[] = $recordinfo;
|
|
|
|
}
|
|
|
|
return $user[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getDetails($id_note_de_frais){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query = "SELECT * FROM `note_de_frais` WHERE `id_note_de_frais` ='".$id_note_de_frais."' ";
|
|
|
|
$result =$adb->query($query);
|
|
|
|
$res=array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($result)) {
|
|
|
|
$res[] = $recordinfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $res[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
function getlignes($id_note_de_frais){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query = "SELECT * FROM `lignes_note_de_frais` WHERE `id_note_de_frais` ='".$id_note_de_frais."' ORDER BY id ASC";
|
|
|
|
$result =$adb->query($query);
|
|
|
|
$res=array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($result)) {
|
|
|
|
$res[] = $recordinfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
|
|
|
|
function result($ligne,$types){
|
|
|
|
|
|
|
|
echo'<td style="text-align:center;"><i class="fa fa-trash deleteRow cursorPointer" onclick="supprimer(this)" title="Supprimer" style="display: inline-block;" ></i></td>
|
|
|
|
<td class="ndf-type">
|
|
|
|
<select class="js-example-basic-single form-control picklist" name="type[]" required>';
|
|
|
|
foreach ($types as $type) {
|
|
|
|
if( $type == $ligne['type']){
|
|
|
|
echo '<option value="'.$type.'" selected>'.$type.'</option>';
|
|
|
|
$last_value = $type;
|
|
|
|
}else{
|
|
|
|
echo '<option value="'.$type.'">'.$type.'</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo' </select>
|
|
|
|
</td>
|
|
|
|
<td><input type="date" name="jour[]" class="qty smallInputBox inputElement" value="'.$ligne['jour'].'" ></td>
|
|
|
|
<td><input type="text" name="localite[]" class="qty smallInputBox inputElement" value="'.$ligne['localite'].'" ></td>';
|
|
|
|
if($last_value == 'Autre'){
|
|
|
|
echo'<td><input type="number" name="kilometrage[]" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement km" required value="'.$ligne['kilometrage'].'" readonly></td>';
|
|
|
|
}else{
|
|
|
|
echo'<td><input type="number" name="kilometrage[]" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement km" required value="'.$ligne['kilometrage'].'"></td>';
|
|
|
|
}
|
|
|
|
echo'<td style="display : none;"><input type="hidden" name="ids[]" value="'.$ligne['id'].'">'.$ligne['id'].'</td>
|
|
|
|
</tr>';
|
|
|
|
}
|
|
|
|
|
|
|
|
function CanEdit($userId , array $res , array $perm){
|
|
|
|
|
|
|
|
if( $userId != '1' && $userId != $perm['id_validateur_2']){
|
|
|
|
$redirected == false;
|
|
|
|
|
|
|
|
switch ($res['avancement']) {
|
|
|
|
case 0:
|
|
|
|
$redirected = ($res['id_validateur_0'] == $userId) ? true : false;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
$redirected = ($res['id_validateur_1'] == $userId) ? true : false;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
$redirected = ($res['id_validateur_2'] == $userId) ? true : false;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
$redirected = ($res['id_validateur_3'] == $userId) ? true : false;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
$redirected = ($res['id_validateur_4'] == $userId) ? true : false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if( $redirected == false){
|
|
|
|
header("Location: index.php?module=NoteDeFraisPermission&view=NoteDeFraisPermission");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function isValidateur($userId , array $res , $roleid){
|
|
|
|
|
|
|
|
$validateurs = array($res['id_validateur_1'],$res['id_validateur_2'],$res['id_validateur_3'] , $res['id_validateur_4']);
|
|
|
|
|
|
|
|
$isValidateur = in_array($userId , $validateurs) ;
|
|
|
|
|
|
|
|
if( $roleid == 'H2'){
|
|
|
|
return true;
|
|
|
|
}else{
|
|
|
|
return $isValidateur;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function getTypesDetails($id_note_de_frais){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query = "SELECT * FROM `note_de_frais_types` where id_note_de_frais = {$id_note_de_frais} ORDER BY `ordre` ASC ";
|
|
|
|
$result =$adb->query($query);
|
|
|
|
$res=array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($result)) {
|
|
|
|
$res[] = $recordinfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $res;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Parametrages(){
|
|
|
|
global $adb;
|
|
|
|
|
|
|
|
$query = "SELECT * FROM `note_de_frais_parametres`";
|
|
|
|
$sql_get_result = $adb->query($query);
|
|
|
|
|
|
|
|
$result = array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
|
|
|
|
$result[] = $recordinfo;
|
|
|
|
|
|
|
|
}
|
|
|
|
return $result[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$Parametrages = Parametrages();
|
|
|
|
$nbr_jour = $Parametrages['jour'];
|
|
|
|
|
|
|
|
$months = array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE");
|
|
|
|
$years = array("2020", "2021", "2022", "2023", "2024");
|
|
|
|
$regions = array("OUEST", "CENTRE", "EST");
|
|
|
|
$types = array("Prise en charge H.R", "Prise en charge S.R","Autre");
|
|
|
|
|
|
|
|
$Details = getDetails($_GET['id']);
|
|
|
|
$resultlignes = getlignes($_GET['id']);
|
|
|
|
$TypesDetails = getTypesDetails($_GET['id']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CanEdit($userId,$Details,$Parametrages) ;
|
|
|
|
|
|
|
|
|
|
|
|
echo'<div class="main-container main-container-Accounts">
|
|
|
|
|
|
|
|
<form id="form" action="?module=NoteDeFraisAjax&view=NoteDeFraisAjax" method="post" enctype="multipart/form-data">
|
|
|
|
<div class="container-fluid" style="margin:15px 15px 15px 15px;">
|
|
|
|
|
|
|
|
<div class="editViewHeader">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-lg-12 col-md-12 col-lg-pull-0">
|
|
|
|
<h4 class="editHeader" style="margin-top:5px;">Edition Note De Frais</h4>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class=" detailview-header-block">
|
|
|
|
<div class="fieldBlockContainer" data-block="LBL_ADDRESS_INFORMATION">
|
|
|
|
<h4 class="fieldBlockHeader">Détail Note de Frais</h4>
|
|
|
|
<hr>
|
|
|
|
<table class="table table-borderless addressBlock">
|
|
|
|
<input type="hidden" name="id_note_de_frais" value='.$Details['id_note_de_frais'].'>
|
|
|
|
<tbody>
|
|
|
|
<tr>';
|
|
|
|
echo'
|
|
|
|
<td class="fieldLabel alignMiddle"><span class="redColor">*</span> Assigné à </td>
|
|
|
|
<td class="fieldValue">';
|
|
|
|
if($roleid == "H2"){
|
|
|
|
echo'<select class="js-example-basic-single form-control" style="width:300px;" onchange="calcul();" name="assigned_user_id" required disabled>';
|
|
|
|
echo'<option value=""></option>';
|
|
|
|
$users=getAllUsers();
|
|
|
|
foreach ($users as $user) {
|
|
|
|
if($user['id'] == $Details['assigned_user_id']){
|
|
|
|
echo '<option value="'.$user['id'].'" selected>'.$user['fullname'].'</option>';
|
|
|
|
}else{
|
|
|
|
echo '<option value="'.$user['id'].'">'.$user['fullname'].'</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo '</select>';
|
|
|
|
}else{
|
|
|
|
$user=getUser($Details['assigned_user_id']);
|
|
|
|
echo"<input type='text' value='".$user['fullname']."' class='qty smallInputBox inputElement' readonly>
|
|
|
|
<input type='hidden' name='assigned_user_id' value='".$userId."' class='qty smallInputBox inputElement' >";
|
|
|
|
}
|
|
|
|
|
|
|
|
echo'</td>
|
|
|
|
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td class="fieldLabel alignMiddle"><span class="redColor">*</span> Mois </td>
|
|
|
|
<td class="fieldValue">
|
|
|
|
<select class="js-example-basic-single form-control" style="width:300px;" name="mois" required disabled>
|
|
|
|
<option value=""></option>';
|
|
|
|
foreach ($months as $month) {
|
|
|
|
if($Details['mois'] == $month){
|
|
|
|
echo '<option value="'.$month.'" selected>'.$month.'</option>';
|
|
|
|
}else{
|
|
|
|
echo '<option value="'.$month.'" >'.$month.'</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo '</select>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td class="fieldLabel alignMiddle"><span class="redColor">*</span> Année </td>
|
|
|
|
<td class="fieldValue">
|
|
|
|
<select class="js-example-basic-single form-control" style="width:300px;" name="annee" required disabled>
|
|
|
|
<option value=""></option>';
|
|
|
|
foreach ($years as $year) {
|
|
|
|
if($Details['annee'] == $year){
|
|
|
|
echo '<option value="'.$year.'" selected>'.$year.'</option>';
|
|
|
|
}else{
|
|
|
|
echo '<option value="'.$year.'" >'.$year.'</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo '</select>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td class="fieldLabel alignMiddle"><span class="redColor">*</span> Région </td>
|
|
|
|
<td class="fieldValue">
|
|
|
|
<select class="js-example-basic-single form-control" style="width:300px;" name="region" required>
|
|
|
|
<option value=""></option>';
|
|
|
|
foreach ($regions as $region) {
|
|
|
|
if($Details['region'] == $region){
|
|
|
|
echo '<option value="'.$region.'" selected>'.$region.'</option>';
|
|
|
|
}else{
|
|
|
|
echo '<option value="'.$region.'" >'.$region.'</option>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo '</select>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr >
|
|
|
|
<td class="fieldLabel alignMiddle">Supérieur Hiérachique </td>
|
|
|
|
<td class="fieldValue">';
|
|
|
|
$user = getUser($Details['id_validateur_1']);
|
|
|
|
$fullname = $user <> null ? $user['fullname'] : null;
|
|
|
|
echo"<input type='text' value='".$fullname."' class='qty smallInputBox inputElement' readonly>";
|
|
|
|
echo'</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class=" detailview-header-block" style="margin-top:15px; margin-bottom:15px;">
|
|
|
|
<h4 class="fieldBlockHeader">Ville et Itinerarire </h4>
|
|
|
|
<hr>
|
|
|
|
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th style="width:20px;" >Outils</th>
|
|
|
|
<th><span class="redColor">*</span>RH</th>
|
|
|
|
<th>Jour</th>
|
|
|
|
<th><span class="redColor">*</span>Localités</th>
|
|
|
|
<th><span class="redColor">*</span>kilométrage</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>';
|
|
|
|
foreach ($resultlignes as $ligne) {
|
|
|
|
result($ligne ,$types);
|
|
|
|
}
|
|
|
|
echo'</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
|
|
|
|
<button type="button" class="add-row btn btn-primary" >
|
|
|
|
<div class="fa fa-plus" aria-hidden="true"></div>
|
|
|
|
Ajouter
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class=" detailview-header-block" style="margin-bottom:15px;">
|
|
|
|
<h4 class="fieldBlockHeader">Frais HR et SR </h4>
|
|
|
|
<hr>
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th width="35%">Type</th>
|
|
|
|
<th width="25%">Nombre</th>
|
|
|
|
<th width="25%">Indemnité</th>
|
|
|
|
<th width="15%">Total</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Prise en charge S.R</strong></td>
|
|
|
|
<td id="nombre_sr">'.$TypesDetails[0]['nombre'].'</td>
|
|
|
|
<td>'.$TypesDetails[0]['indemnite'].'</td>
|
|
|
|
<td id="total_sr">'.$TypesDetails[0]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Prise en charge H.R</strong></td>
|
|
|
|
<td id="nombre_hr">'.$TypesDetails[1]['nombre'].'</td>
|
|
|
|
<td>'.$TypesDetails[1]['indemnite'].'</td>
|
|
|
|
<td id="total_hr">'.$TypesDetails[1]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="2"></td>
|
|
|
|
<td style="direction: rtl;"><strong>Total</strong></td>
|
|
|
|
<td id="total_1">'.$Details['total_1'].'</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class=" detailview-header-block" style="margin-bottom:15px;">
|
|
|
|
<h4 class="fieldBlockHeader">Vehicule et Indemnité</h4>
|
|
|
|
<hr>
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th width="35%">Item</th>
|
|
|
|
<th width="25%">Nombre</th>
|
|
|
|
<th width="25%">Indemnité</th>
|
|
|
|
<th width="15%">Total</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Parking</strong></td>
|
|
|
|
<td>'.$TypesDetails[2]['nombre'].'</td>
|
|
|
|
<td id="indemnite_parking">'.$TypesDetails[2]['total'].'</td>
|
|
|
|
<td id="total_parking">'.$TypesDetails[2]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Forfait Carburant</strong></td>
|
|
|
|
<td>'.$TypesDetails[3]['nombre'].'</td>
|
|
|
|
<td id="indemnite_carburant">'.$TypesDetails[3]['total'].'</td>
|
|
|
|
<td id="total_carburant">'.$TypesDetails[3]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Forfait Entretien</strong></td>
|
|
|
|
<td>'.$TypesDetails[4]['nombre'].'</td>
|
|
|
|
<td id="indemnite_entretien">'.$TypesDetails[4]['total'].'</td>
|
|
|
|
<td id="total_entretien">'.$TypesDetails[4]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Indemnité kilométrique</strong></td>
|
|
|
|
<td id="sum_kilometrique">'.$TypesDetails[5]['nombre'].'</td>
|
|
|
|
<td>'.$TypesDetails[5]['indemnite'].'</td>
|
|
|
|
<td id="total_indemnite_kilometrique">'.$TypesDetails[5]['total'].'</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td colspan="2"></td>
|
|
|
|
<td style="direction: rtl;"><strong>Total</strong></td>
|
|
|
|
<td id="total_2">'.$Details['total_2'].'</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class=" detailview-header-block" style="margin-bottom:15px;">
|
|
|
|
<h4 class="fieldBlockHeader">Frais Divers</h4>
|
|
|
|
<hr>
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th width="38%">Type de frais</th>
|
|
|
|
<th width="38%">Commentaires</th>
|
|
|
|
<th width="14%">Total</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Bureau, P et T </strong></td>
|
|
|
|
<td><input type="text" name="bureau_c" class="qty smallInputBox inputElement" value="'.$TypesDetails[6]['commentaire'].'"></td>
|
|
|
|
<td><input type="number" name="bureau_t" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement" min=0 step="any" value="'.$TypesDetails[6]['total'].'"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Internet</strong></td>
|
|
|
|
<td><input type="text" name="internet_c" class="qty smallInputBox inputElement" value="'.$TypesDetails[7]['commentaire'].'"></td>
|
|
|
|
<td><input type="number" name="internet_t" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement" min=0 step="any" value="'.$TypesDetails[7]['total'].'"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Divers </strong></td>
|
|
|
|
<td><input type="text" name="divers_c" class="qty smallInputBox inputElement" value="'.$TypesDetails[8]['commentaire'].'"></td>
|
|
|
|
<td><input type="number" name="divers_t" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement" min=0 step="any" value="'.$TypesDetails[8]['total'].'"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Taxi</strong></td>
|
|
|
|
<td><input type="text" name="taxi_c" class="qty smallInputBox inputElement" value="'.$TypesDetails[9]['commentaire'].'"></td>
|
|
|
|
<td><input type="number" name="taxi_t" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement" min=0 step="any" value="'.$TypesDetails[9]['total'].'"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><strong>Facture Hotel</strong></td>
|
|
|
|
<td><input type="text" name="facture_c" class="qty smallInputBox inputElement" value="'.$TypesDetails[10]['commentaire'].'"></td>
|
|
|
|
<td><input type="number" name="facture_t" onchange="calcul();" onmouseout="calcul();" class="qty smallInputBox inputElement" min=0 step="any" value="'.$TypesDetails[10]['total'].'"></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td ></td>
|
|
|
|
<td style="direction: rtl;"><strong>Total</strong></td>
|
|
|
|
<td id="total_3">'.$Details['total_3'].'</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class=" detailview-header-block" style="margin-bottom:15px;">
|
|
|
|
<div class="row" style="margin: 5px 0px 0px 0px;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable">
|
|
|
|
<tbody>
|
|
|
|
<tr style= "BACKGROUND: #eee;">
|
|
|
|
<td width="85%" style="direction: rtl;"><strong style="font-size: 1.3em;">Total à Virer</strong></td>
|
|
|
|
<td style="text-align: center;" ><strong style="font-size: 1.3em;" id="total_final">'.$Details['total_final'].'</strong></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//validations
|
|
|
|
echo '
|
|
|
|
<div class=" detailview-header-block" style="margin-bottom:50px;">
|
|
|
|
<h4 class="fieldBlockHeader" id="suivi_validation" >Suivi Validation <span class="fa fa-chevron-down"></span></h4>
|
|
|
|
<hr>
|
|
|
|
|
|
|
|
<div class="row cacher" style="margin: 5px 0px 0px 0px; display:none;">
|
|
|
|
<table id="dynamique" class="table table-bordered table-editable" >
|
|
|
|
<tbody>';
|
|
|
|
for($p = 0 ; $p < 5 ; $p++){
|
|
|
|
if($p == 0){
|
|
|
|
$isValidateur = true ;
|
|
|
|
}else{
|
|
|
|
$isValidateur = isValidateur($userId,$Details ,$roleid);
|
|
|
|
}
|
|
|
|
if($isValidateur == true){
|
|
|
|
if( !empty( $Details['id_validateur_'.$p.''] )){
|
|
|
|
echo '<tr>
|
|
|
|
<td style="border-right:hidden;">Valideur : </td>
|
|
|
|
<td><strong>'.getFullname($Details['id_validateur_'.$p.'']).'</strong></td>
|
|
|
|
</tr>
|
|
|
|
<tr style="border-top:hidden;">
|
|
|
|
<td style="border-right:hidden;">Commentaires : </td>
|
|
|
|
<td>';
|
|
|
|
if($userId != $Details['id_validateur_'.$p.'']){
|
|
|
|
echo'<textarea cols="60" rows="3" name="commentaire_'.$p.'" style="border: 1px solid #D3D3D3; width:100%;" disabled>'.$Details['commentaire_'.$p.''].'</textarea></td>';
|
|
|
|
echo '<input type="hidden" name="commentaire_'.$p.'" value="'.$Details['commentaire_'.$p.''].'">';
|
|
|
|
}else{
|
|
|
|
echo'<textarea cols="60" rows="3" name="commentaire_'.$p.'" style="border: 1px solid #D3D3D3; width:100%;">'.$Details['commentaire_'.$p.''].'</textarea></td>';
|
|
|
|
}
|
|
|
|
echo'
|
|
|
|
</tr>
|
|
|
|
<tr style="border-top:hidden;">
|
|
|
|
<td style="border-right:hidden;">Validée : </td>
|
|
|
|
<td>
|
|
|
|
<input type="checkbox" name="valid'.$p.'" value="1" ';
|
|
|
|
if($userId != $Details['id_validateur_'.$p.'']) echo "disabled=''";
|
|
|
|
if($Details['is_valid_'.$p.''] == 1) echo "checked";
|
|
|
|
echo '></td>';
|
|
|
|
if($Details['is_valid_'.$p.''] == 1) echo '<input type="hidden" name="valid'.$p.'" value="1">';
|
|
|
|
echo '
|
|
|
|
</td>
|
|
|
|
</tr>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
echo'</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>';
|
|
|
|
|
|
|
|
|
|
|
|
echo'
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>';
|
|
|
|
|
|
|
|
if($Details['avancement'] <> 5){
|
|
|
|
echo '
|
|
|
|
<div class="modal-overlay-footer" style="border-left: 42px solid #efefef;">
|
|
|
|
<div class="row clearfix">
|
|
|
|
<div class="textAlignCenter col-lg-12 col-md-12 col-sm-12 ">
|
|
|
|
<button class="btn btn-success saveButton" onclick="saveData()" name="add">Enregistrer</button>
|
|
|
|
<a class="cancelLink" href="index.php?module=NoteDeFraisList&view=NoteDeFraisList" type="reset">Annuler</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>';
|
|
|
|
}
|
|
|
|
echo '</form>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$viewer->view('CustomDashboardFooter.tpl');
|
|
|
|
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/purl.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/select2/select2.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery.class.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery-ui-1.11.3.custom/jquery-ui.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/todc/js/bootstrap.min.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jstorage.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery-validation/jquery.validate.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery.slimscroll.min.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jquery.ba-outside-events.min.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/defunkt-jquery-pjax/jquery.pjax.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/multiplefileupload/jquery_MultiFile.js"></script>
|
|
|
|
<script type="text/javascript" src="resources/jquery.additions.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/bootstrap-notify/bootstrap-notify.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/websockets/reconnecting-websocket.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery-play-sound/jquery.playSound.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/malihu-custom-scrollbar/jquery.mousewheel.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/malihu-custom-scrollbar/jquery.mCustomScrollbar.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/autoComplete/jquery.textcomplete.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery.qtip.custom/jquery.qtip.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jquery-visibility.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/momentjs/moment.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/daterangepicker/moment.min.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/daterangepicker/jquery.daterangepicker.js"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/jquery.timeago.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/ckeditor/ckeditor.js"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/ckeditor/adapters/jquery.js"></script>
|
|
|
|
<script type='text/javascript' src='layouts/v7/lib/anchorme_js/anchorme.min.js'></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Class.js?v=7.1.0"></script>
|
|
|
|
<script type='text/javascript' src="layouts/v7/resources/helper.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/resources/application.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Utils.js?v=7.1.0"></script>
|
|
|
|
<script type='text/javascript' src="layouts/v7/modules/Vtiger/resources/validation.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/bootbox/bootbox.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Base.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Vtiger.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Calendar/resources/TaskManagement.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Import/resources/Import.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Emails/resources/EmailPreview.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Base.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Google/resources/Settings.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/CkEditor.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Documents/resources/Documents.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/bootstrap/js/eternicode-bootstrap-datepicker/js/bootstrap-datepicker.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/bootstrap/js/eternicode-bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/timepicker/jquery.timepicker.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/lazyYT/lazyYT.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Header.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Edit.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Popup.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Field.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jquery_windowmsg.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/BasicSearch.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/AdvanceFilter.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/SearchAdvanceFilter.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/AdvanceSearch.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/BaseList.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/List.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/AdvanceSearchList.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/RecordSelectTracker.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Pagination.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Import/resources/Popup.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Emails/resources/MassEdit.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/EmailsRelatedPopup.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/sadropdown.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/posabsolute-jQuery-Validation-Engine/js/languages/jquery.validationEngine-fr.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Vtiger.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jquery.stickytableheaders.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/gridster/jquery.gridster.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/jquery.jqplot.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.canvasTextRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.pieRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.barRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.categoryAxisRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.pointLabels.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.funnelRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/jqplot/plugins/jqplot.logAxisRenderer.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/VtJqplotInterface.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="libraries/jquery/vtchart.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/jquery/gridster/jquery.gridster.min.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/DashBoard.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/dashboards/Widget.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/Detail.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Reports/resources/Detail.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Reports/resources/ChartDetail.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/modules/Vtiger/resources/CkEditor.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/bootstrap-daterangepicker/moment.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/lib/bootstrap-daterangepicker/daterangepicker.js?v=7.1.0"></script>
|
|
|
|
<script type="text/javascript" src="layouts/v7/resources/v7_client_compat.js?v=7.1.0"></script>
|
|
|
|
<!-- Added in the end since it should be after less file loaded -->
|
|
|
|
<script type="text/javascript" src="libraries/bootstrap/js/less.min.js"></script>
|
|
|
|
<!-- Enable tracking pageload time -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">var _REQSTARTTIME = "1589749969";
|
|
|
|
jQuery(document).ready(function() {
|
|
|
|
window._PAGEREADYAT = new Date();
|
|
|
|
}
|
|
|
|
);
|
|
|
|
jQuery(window).load(function() {
|
|
|
|
window._PAGELOADAT = new Date();
|
|
|
|
window._PAGELOADREQSENT = false;
|
|
|
|
// Transmit the information to server about page render time now.
|
|
|
|
if (typeof _REQSTARTTIME != 'undefined') {
|
|
|
|
// Work with time converting it to GMT (assuming _REQSTARTTIME set by server is also in GMT)
|
|
|
|
var _PAGEREADYTIME = _PAGEREADYAT.getTime() / 1000.0;
|
|
|
|
// seconds
|
|
|
|
var _PAGELOADTIME = _PAGELOADAT.getTime() / 1000.0;
|
|
|
|
// seconds
|
|
|
|
var data = {
|
|
|
|
page_request: _REQSTARTTIME, page_ready: _PAGEREADYTIME, page_load: _PAGELOADTIME };
|
|
|
|
data['page_xfer'] = (_PAGELOADTIME - _REQSTARTTIME).toFixed(3);
|
|
|
|
data['client_tzoffset']= -1*_PAGELOADAT.getTimezoneOffset()*60;
|
|
|
|
data['client_now'] = JSON.parse(JSON.stringify(new Date()));
|
|
|
|
if (!window._PAGELOADREQSENT) {
|
|
|
|
// To overcome duplicate firing on Chrome
|
|
|
|
window._PAGELOADREQSENT = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
|
|
|
|
var idsToDelete = [];
|
|
|
|
|
|
|
|
function supprimer(e){
|
|
|
|
var id = $(e).closest('tr').find('td:eq(5)').text();
|
|
|
|
|
|
|
|
if(id != 0){
|
|
|
|
idsToDelete.push(id );
|
|
|
|
}
|
|
|
|
$(e).parents("tr").remove();
|
|
|
|
calcul();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$(document).ready(function(){
|
|
|
|
|
|
|
|
$(".add-row").click(function(){
|
|
|
|
|
|
|
|
var markup = "<tr>"
|
|
|
|
+"<td style='text-align:center;'><i class='fa fa-trash deleteRow cursorPointer' onclick='supprimer(this)' title='Supprimer' style='display: inline-block;' ></i></td>"
|
|
|
|
+"<td class='ndf-type'><select class='js-example-basic-single form-control picklist' name='type[]' required><option value='Prise en charge S.R'>Prise en charge S.R</option><option value='Prise en charge H.R'>Prise en charge H.R</option><option value='Autre'>Autre</option></select></td>"
|
|
|
|
+"<td><input type='date' name='jour[]' class='qty smallInputBox inputElement' required></td>"
|
|
|
|
+"<td><input type='text' name='localite[]' class='qty smallInputBox inputElement' required></td>"
|
|
|
|
+"<td><input type='number' name='kilometrage[]' onchange='calcul();' onmouseout='calcul();' min='0' class='qty smallInputBox inputElement km' required ></td>"
|
|
|
|
+"<td style='display : none;'><input type='hidden' name='ids[]' value='0'>0</td>"
|
|
|
|
+"</tr>";
|
|
|
|
|
|
|
|
$("#dynamique").append(markup);
|
|
|
|
$('select.js-example-basic-single').select2();
|
|
|
|
calcul();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<!-- script pour liste déroulante -->
|
|
|
|
<script>
|
|
|
|
$(document).ready(function() {
|
|
|
|
$('.js-example-basic-single').select2();
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
//si picklist egal a autre => kilométrage = 0
|
|
|
|
$(".picklist").live('change', function(){
|
|
|
|
var currentRow = $(this).closest("tr");
|
|
|
|
if($(this).val() == 'Autre'){
|
|
|
|
currentRow.find("td:eq(4) input[type='number']").val(0);
|
|
|
|
currentRow.find("td:eq(4) input[type='number']").attr('readonly', true)
|
|
|
|
}else{
|
|
|
|
currentRow.find("td:eq(4) input[type='number']").attr('readonly', false)
|
|
|
|
}
|
|
|
|
|
|
|
|
calcul();
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
function saveData(){
|
|
|
|
|
|
|
|
|
|
|
|
if($("#form")[0].checkValidity()) {
|
|
|
|
|
|
|
|
jQuery("button[name='add']").attr("disabled","disabled");
|
|
|
|
event.preventDefault();//important
|
|
|
|
$.ajax({
|
|
|
|
type: "POST",
|
|
|
|
url: "index.php?module=NoteDeFraisAjax&view=NoteDeFraisAjax&idsToDelete="+idsToDelete.join()+"&action=updatenotedefrais",
|
|
|
|
data: $('#form').serialize(),
|
|
|
|
success: function (data) {
|
|
|
|
window.location.replace("index.php?module=NoteDeFraisList&view=NoteDeFraisList");
|
|
|
|
},
|
|
|
|
error: function(){
|
|
|
|
$("button[name='add']").removeAttr("disabled");
|
|
|
|
alert('<strong>Aucun accès à Internet</strong>');
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
// traitement pour la mis a jour des calcules
|
|
|
|
|
|
|
|
// return number S.R OU H.R
|
|
|
|
function count(typs){
|
|
|
|
var res;
|
|
|
|
$('#dynamique').each(function() {
|
|
|
|
var customerId = $(this).find(".ndf-type").find(":selected").text();
|
|
|
|
res = (customerId.split(typs)).length - 1 ;
|
|
|
|
|
|
|
|
});
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_sum_kilometrage(){
|
|
|
|
var calculated_total_sum = 0;
|
|
|
|
|
|
|
|
$("#dynamique .km").each(function () {
|
|
|
|
var get_textbox_value = $(this).val();
|
|
|
|
if ($.isNumeric(get_textbox_value)) {
|
|
|
|
calculated_total_sum += parseFloat(get_textbox_value);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return calculated_total_sum;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function calcul(){
|
|
|
|
var parametrages = <?php echo json_encode($Parametrages); ?>;
|
|
|
|
|
|
|
|
//Frais HR et SR
|
|
|
|
var sr = count("Prise en charge S.R");
|
|
|
|
var hr = count("Prise en charge H.R");
|
|
|
|
var sum_SR_HR = sr + hr ;
|
|
|
|
$("#nombre_sr").text(sr);
|
|
|
|
$("#nombre_hr").text(hr);
|
|
|
|
$("#total_sr").text(sr*parametrages['sr']);
|
|
|
|
$("#total_hr").text(hr*parametrages['hr']);
|
|
|
|
var total_1 = (sr*parametrages['sr'])+(hr*parametrages['hr']);
|
|
|
|
$("#total_1").text(total_1.toFixed(2));
|
|
|
|
|
|
|
|
//Vehicule et Indemnité
|
|
|
|
$("#sum_kilometrique").text(get_sum_kilometrage());
|
|
|
|
$("#indemnite_parking").text((sum_SR_HR*parametrages['parking'])/parametrages['jour']);
|
|
|
|
var t1 = (sum_SR_HR*parametrages['parking'])/parametrages['jour']
|
|
|
|
$("#total_parking").text(t1);
|
|
|
|
$("#indemnite_carburant").text((sum_SR_HR*parametrages['forfait_carburant'])/parametrages['jour']);
|
|
|
|
var t2 = (sum_SR_HR*parametrages['forfait_carburant'])/parametrages['jour'];
|
|
|
|
$("#total_carburant").text(t2);
|
|
|
|
$("#indemnite_entretien").text((sum_SR_HR*parametrages['forfait_entretien'])/parametrages['jour']);
|
|
|
|
var t3 = (sum_SR_HR*parametrages['forfait_entretien'])/parametrages['jour'];
|
|
|
|
$("#total_entretien").text(t3);
|
|
|
|
var t4 = get_sum_kilometrage()*parametrages['indemnite_kilometrique'];
|
|
|
|
$("#total_indemnite_kilometrique").text(t4);
|
|
|
|
var total_2 = parseFloat(t1)+parseFloat(t2)+parseFloat(t3)+parseFloat(t4);
|
|
|
|
$("#total_2").text(total_2.toFixed(2));
|
|
|
|
|
|
|
|
//Frais Divers
|
|
|
|
var a1 = 0 , a2 = 0,a3 = 0,a4 = 0,a5 = 0 ;
|
|
|
|
|
|
|
|
if (!isNaN($('input[name="bureau_t"]').val()) && $('input[name="bureau_t"]').val().length != 0) {
|
|
|
|
a1 = parseFloat($('input[name="bureau_t"]').val());
|
|
|
|
}
|
|
|
|
if (!isNaN($('input[name="internet_t"]').val()) && $('input[name="internet_t"]').val().length != 0) {
|
|
|
|
a2 = parseFloat($('input[name="internet_t"]').val());
|
|
|
|
}
|
|
|
|
if (!isNaN($('input[name="divers_t"]').val()) && $('input[name="divers_t"]').val().length != 0) {
|
|
|
|
a3 = parseFloat($('input[name="divers_t"]').val());
|
|
|
|
}
|
|
|
|
if (!isNaN($('input[name="taxi_t"]').val()) && $('input[name="taxi_t"]').val().length != 0) {
|
|
|
|
a4 = parseFloat($('input[name="taxi_t"]').val());
|
|
|
|
}
|
|
|
|
if (!isNaN($('input[name="facture_t"]').val()) && $('input[name="facture_t"]').val().length != 0) {
|
|
|
|
a5 = parseFloat($('input[name="facture_t"]').val());
|
|
|
|
}
|
|
|
|
var total_3 = a1 + a2 + a3 + a4 + a5;
|
|
|
|
$("#total_3").text(total_3.toFixed(2));
|
|
|
|
|
|
|
|
// total_final
|
|
|
|
var total_final = total_1 + total_2 + total_3;
|
|
|
|
$("#total_final").text(total_final.toFixed(2));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$( "#suivi_validation" ).click(function() {
|
|
|
|
$(".cacher").slideToggle( "slow" );
|
|
|
|
$(this).children('.fa').toggleClass('fa-chevron-up fa-chevron-down');
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
</html>
|