Files
CRM/NoteDeFraisEdit.php
BACHIR SOULDI 2794e62571 first commit
2025-09-28 08:49:37 +01:00

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&nbsp;</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&nbsp;</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&nbsp;</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>
&nbsp;&nbsp;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>