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

332 lines
23 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('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','PLANIFICATION DIRECTEUR REGIONAL');
$viewer->assign('LANGUAGE_STRINGS', Vtiger_Language_Handler::export('Home', 'jsLanguageStrings'));
$viewer->view('CustomDashboard.tpl');
$wilayap = "";
$datep = "";
if(isset($_POST['wilaya']) && isset($_POST['date'])) {
$wilayap = $_POST['wilaya'];
$datep = $_POST['date'];
$Visites = getVisitesPlanifie($current_user->get('roleid') , $_POST['date'] , $wilayap );
}
if(isset($_POST['Enregistrer'])){
$visites = $_POST['visites'];
$wilayap = $_POST['wilaya'];
$datep = $_POST['date'];
foreach ($visites as $visite) {
$query = "UPDATE vtiger_activity SET duo_id = {$current_user->get('id')} WHERE vtiger_activity.activityid = {$visite} ";
$adb->pquery($query);
}
//header("Location: index.php?module=PlanificationDR&view=PlanificationDR");
//exit;
$Visites = getVisitesPlanifie($current_user->get('roleid') , $datep , $wilayap );
}
function getWilayas(){
global $adb;
$query = "SELECT DISTINCT cf_992 FROM `vtiger_accountscf`";
$sql_get_result = $adb->pquery($query);
$wilayas = array();
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
$wilayas[] = $recordinfo['cf_992'];
}
return $wilayas;
}
function getfullname($userId){
global $adb;
$query = "SELECT CONCAT(first_name,' ', last_name) as fullname FROM `vtiger_users` where id = ? ";
$sql_get_result = $adb->pquery($query, array($userId));
$fullname = array();
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
$fullname[] = $recordinfo;
}
return $fullname[0]['fullname'];
}
function getVisitesPlanifie($roleid ,$date,$wiliya){
global $adb;
if(isTopDG($roleid)){$roleid="H8";}
$query = "SELECT vtiger_activity.activityid, acc.accountname,CONCAT(first_name,' ', last_name) as fullname ,
vtiger_activity.date_start,vtiger_role.rolename,vtiger_accountscf.cf_992 as wilaya_account,
vtiger_accountscf.cf_994 as commune_account,vtiger_activity.duo_id , acc.accountid as account_accountid
FROM vtiger_activity
INNER JOIN vtiger_crmentity ON vtiger_activity.activityid = vtiger_crmentity.crmid
LEFT JOIN vtiger_seactivityrel ON vtiger_activity.activityid = vtiger_seactivityrel.activityid
LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id
LEFT JOIN vtiger_user2role ON vtiger_user2role.userid = vtiger_users.id
LEFT JOIN vtiger_role ON vtiger_role.roleid = vtiger_user2role.roleid
LEFT JOIN vtiger_account AS acc ON acc.accountid = vtiger_seactivityrel.crmid
LEFT JOIN vtiger_accountscf on vtiger_accountscf.accountid = acc.accountid
WHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.activitytype = 'Visite'
and ((vtiger_activity.eventstatus = 'Planned' ) OR (vtiger_activity.status = 'Planned' )) and vtiger_activity.date_start = '{$date}'
AND vtiger_role.roleid in (SELECT roleid FROM `vtiger_role` WHERE `parentrole` like '%{$roleid}:%' or `parentrole` like '%{$roleid}')
and vtiger_accountscf.cf_992 = '{$wiliya}' ";
$sql_get_result = $adb->pquery($query);
$Visites = array();
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
$Visites[] = $recordinfo;
}
return $Visites;
}
$tomorrow = date("Y-m-d", strtotime('today'));
echo '<div class="main-container main-container-Accounts">
<form method="post">
<div class="container-fluid" style="margin:15px 15px 15px 15px;">
<div class=" detailview-header-block">
<div class="row" >
<div class="col-md-3">
<label for="inputCity">Wilaya</label>
<select class="js-example-basic-single form-control" style="width:200px;" id="wilayaop" name="wilaya" ">
<option value=""></option>';
$wilayas = getWilayas();
foreach ($wilayas as $wilaya) {
if( $wilayap == $wilaya)
echo '<option selected value="'.$wilayap.'">'.$wilayap.'</option>';
else
echo '<option value="'.$wilaya.'">'.$wilaya.'</option>';
}
echo '
</select>
</div>
<div class="col-md-3">
<label for="Date">Date</label>';
if(!empty($datep))
echo '<input class="form-control" type="date" id="date" name="date" value='.$datep.'>';
else
echo '<input class="form-control" type="date" id="date" name="date" value='.$tomorrow.'>';
echo '</div>
</div>
<div class="row">
<button class="btn btn-default addButton" style="margin: 10px 0 5px 14px;"> Rechercher</button>
</div>
</div>
<div class=" detailview-header-block" style="margin-top:15px; margin-bottom:45px;">
<div class="row" style="margin: 5px 0px 0px 0px;">
<div class="col">
<table class="js-dynamitable table table-bordered" id="comptestabcenter">
<thead>
<tr class="center borderline">
<th></th>
<th id="Compte"><center> COMPTE</center></th>
<th id="VM"><center> VM </center></th>
<th id="VM"><center> WILAYA </center></th>
<th id="VM"><center> COMMUNE </center></th>
<th id="DUE"><center> DUO </center></th>
</tr>
<tr class="center borderline">
<th></th>
<th id="Compte"><input class="js-filter form-control" type="text" value=""></th>
<th id="VM"><input class="js-filter form-control" type="text" value=""></th>
<th id="wilaya"><input class="js-filter form-control" type="text" value=""></th>
<th id="commun"><input class="js-filter form-control" type="text" value=""></th>
<th id="due"><input class="js-filter form-control" type="text" value=""></th>
</tr> </thead>
';
if(isset($Visites)) {
foreach ($Visites as $Visite) {
echo '<tr class="center borderline">
<td><input class="listViewEntriesCheckBox" type="checkbox" name="visites[]" value='.$Visite['activityid'].' /></td>
<td><center>
<span class="fieldValue">
<span class="value">
<a href="index.php?module=Accounts&amp;view=Detail&amp;record='.$Visite['account_accountid'].'&amp;app=INVENTORY"> '.$Visite['accountname'].'</a>
</span>
</span></center>
</td>
<td><center>'.$Visite['fullname'].'</center></td>
<td><center>'.$Visite['wilaya_account'].'</center></td>
<td><center>'.$Visite['commune_account'].'</center></td>
<td><center>'.getfullname($Visite['duo_id']).'</center></td>
</tr>';
}
}
echo '</table>
</div>
</div>
</div>
</div>
</div>';
if(isset($Visites) && !empty($Visites)) {
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" type="submit" name="Enregistrer" value="Enregistrer">Enregistrer</button>
</div>
</div>
</div>
</form>';
}
$viewer->view('CustomDashboardFooter.tpl');
?>
<!-- script pour liste déroulante -->
<script>
$(document).ready(function() {
$('.js-example-basic-single').select2();
});
</script>
<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>
<!-- dynamitable pour le filtre-->
<script>
! function (t) {
"use strict";
t.fn.dynamitable = function (e) {
var n = this,
i = new function (t) {
this.getIndex = function (t) {
return t.parents("tr").children("td, th").index(t)
}, this.getBody = function () {
return t.find("tbody")
}, this.getRows = function () {
return this.getBody().children("tr")
}, this.getField = function (t, e) {
return e.children("td, th").eq(t)
}, this.getValue = function (t, e) {
return this.getField(t, e).text()
}
}(t(this));
return this.filterList = [], this.displayAll = function () {
return i.getRows().each(function () {
t(this).show()
}), this
}, this.filter = function (e, n) {
var r = new RegExp(n, "i");
return i.getRows().each(function () {
!0 !== r.test(i.getValue(e, t(this))) && t(this).hide()
}), this
}, this.addFilter = function (e) {
n.filterList.push(e);
var r = function () {
n.displayAll(), t(n.filterList).each(function (e, r) {
t(n).find(r).each(function () {
var e = t(this);
n.filter(i.getIndex(e.parent("td, th")), e.val())
})
})
};
return t(e).on("change keyup keydown", r), r(), this
}, this.addSorter = function (e, r) {
return t(n).find(e).each(function () {
var e = t(this),
s = i.getIndex(e.parent("td, th"));
e.on("click", function () {
n.sorter(s, r)
})
}), this
}, this.sorter = function (e, n) {
return i.getBody().append(i.getRows().detach().sort(function (r, s) {
var d = i.getValue(e, t(r)),
a = i.getValue(e, t(s)),
c = "desc" === n ? !0 : !1;
return "" !== d.replace(/[^\d-]/g, "") && "" !== a.replace(/[^\d-]/g, "") && (d = parseFloat(d.replace(/[^\d,.-]/g, "")), a = parseFloat(a.replace(/[^\d,.-]/g, ""))), d === a ? 0 : d > a ? c ? 1 : -1 : c ? -1 : 1
})), this
}, this
}, t(document).find(".js-dynamitable").each(function () {
t(this).dynamitable().addFilter(".js-filter").addSorter(".js-sorter-asc", "asc").addSorter(".js-sorter-desc", "desc")
})
}(jQuery);
</script>
</html>