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

446 lines
24 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','Création du Nouveau Note De Frais');
$viewer->assign('LANGUAGE_STRINGS', Vtiger_Language_Handler::export('Home', 'jsLanguageStrings'));
$viewer->view('CustomDashboard.tpl');
$currentDate = new DateTime();
$current_year = $currentDate->format("Y");
$current_month = $currentDate->format("m");
$current_day = $currentDate->format("d");
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);
$user=array();
while ($recordinfo = $adb->fetch_array($result5)) {
$user[] = $recordinfo;
}
return $user[0];
}
$months = array( 1=>"JANVIER", 2=>"FEVRIER", 3=>"MARS", 4=>"AVRIL", 5=>"MAI", 6=>"JUIN",
7=>"JUILLET", 8=>"AOUT", 9=>"SEPTEMBRE", 10=>"OCTOBRE", 11=>"NOVEMBRE",12=>"DECEMBRE");
$years = array("2020", "2021", "2022", "2023", "2024");
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;">Création du Nouveau 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">
<tbody>
<tr>';
echo'<tr >
<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;" name="assigned_user_id" required >';
echo'<option value=""></option>';
$users=getAllUsers();
foreach ($users as $user) {
if($user['id'] == $userId){
echo '<option value="'.$user['id'].'" selected>'.$user['fullname'].'</option>';
}else{
echo '<option value="'.$user['id'].'">'.$user['fullname'].'</option>';
}
}
echo '</select>';
}else{
$user=getUser($userId);
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 $key => $month) {
if($current_month == $key){
echo '<option value="'.$month.'" selected>'.$month.'</option>';
$set_month = $month;
}else{
echo '<option value="'.$month.'" >'.$month.'</option>';
}
}
echo '</select>';
echo'<input type="hidden" name="mois" value="'.$set_month.'">';
echo '</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>';
foreach ($years as $year) {
if($current_year == $year){
echo '<option value="'.$year.'" selected>'.$year.'</option>';
$set_year= $year;
}else{
echo '<option value="'.$year.'" >'.$year.'</option>';
}
}
echo '</select>';
echo'<input type="hidden" name="annee" value="'.$set_year.'">';
echo'</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>
<option value="OUEST">OUEST</option>
<option value="CENTRE">CENTRE</option>
<option value="EST">EST</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class=" detailview-header-block" style="margin-top:15px; margin-bottom:50px;">
<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>
<tr>
<td style="text-align:center;"></td>
<td><select class="js-example-basic-single form-control picklist" name="type[]" required><option value=""></option><option value="Prise en charge H.R">Prise en charge H.R</option><option value="Prise en charge S.R">Prise en charge S.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[]" min="0" class="qty smallInputBox inputElement" required ></td>
</tr>
</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>
</div>
</div>
<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="javascript:history.back()" type="reset">Annuler</a>
</div>
</div>
</div></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>
function supprimer(e){
$(e).parents("tr").remove();
}
$(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><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[]' min='0' class='qty smallInputBox inputElement' required ></td>"
+"</tr>";
$("#dynamique").append(markup);
$('select.js-example-basic-single').select2();
});
});
$(".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)
}
});
</script>
<!-- script pour liste déroulante -->
<script>
$(document).ready(function() {
$('.js-example-basic-single').select2();
});
</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&action=addnotedefrais",
data: $('#form').serialize(),
success: function (data) {
var dataResult = JSON.parse(data);
if(dataResult == 1){
$("button[name='add']").removeAttr("disabled");
alert("-Note de Frais déjà existe \n-Vérifiez le mois et l'année");
}else if(dataResult == 0){
window.location.replace("index.php?module=NoteDeFraisList&view=NoteDeFraisList");
}
},
error: function(){
$("button[name='add']").removeAttr("disabled");
alert('<strong>Aucun accès à Internet</strong>');
}
});
}
}
</script>
</html>