513 lines
27 KiB
PHP
513 lines
27 KiB
PHP
<?php
|
|
require_once 'include/utils/utils.php';
|
|
require_once 'includes/Loader.php';
|
|
require_once 'SUtiles.php';
|
|
vimport ('includes.runtime.EntryPoint');
|
|
global $current_user;
|
|
$current_user = Users_Record_Model::getCurrentUserModel();
|
|
$roleid = $current_user->get('roleid');
|
|
$userId = $current_user->get('id');
|
|
|
|
if(isset($_POST["Export"])){
|
|
$filename = "ETAT_DES_STOCKS".date('Ymd') . ".xls";
|
|
header("Content-Type: application/vnd.ms-excel");
|
|
header("Content-Disposition: attachment; filename=\"$filename\"");
|
|
$export_res = getExportResult($_POST["initDate"],$_POST["endDate"]);
|
|
// print_r($export_res);die;
|
|
ExportFile($export_res);
|
|
}
|
|
|
|
$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','ETAT DES STOCKS');
|
|
$viewer->assign('LANGUAGE_STRINGS', Vtiger_Language_Handler::export('Home', 'jsLanguageStrings'));
|
|
$viewer->view('CustomDashboard.tpl');
|
|
|
|
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
|
|
$monthNumber = date('m');
|
|
$currentDate = new DateTime();
|
|
$year = $currentDate->format("Y");
|
|
|
|
//all function
|
|
function getResultat($year , $monthNumber){
|
|
global $adb;
|
|
|
|
$query = "SELECT etat_stock.grossiste as grossiste , lignes_etat_stock.produit as produit, sum(qte) as quantite ,etat_stock.date,
|
|
EXTRACT(YEAR FROM etat_stock.date) as year,EXTRACT(MONTH FROM etat_stock.date) as month
|
|
FROM `etat_stock` , `lignes_etat_stock`
|
|
WHERE etat_stock.id=lignes_etat_stock.id_etat_stock
|
|
GROUP by etat_stock.grossiste,lignes_etat_stock.produit,EXTRACT(YEAR FROM etat_stock.date) ,EXTRACT(MONTH FROM etat_stock.date)
|
|
having year = {$year} and month = {$monthNumber}";
|
|
$sql_get_result = $adb->query($query);
|
|
$res= array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
|
|
$res[] = $recordinfo;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
function getExportResult($date_start,$date_end){
|
|
global $adb;
|
|
|
|
$query = "SELECT lignes_etat_stock.*,etat_stock.*,vtiger_users.user_name
|
|
FROM `lignes_etat_stock`
|
|
LEFT JOIN etat_stock on etat_stock.id = lignes_etat_stock.id_etat_stock
|
|
LEFT JOIN vtiger_users ON etat_stock.creator_id = vtiger_users.id
|
|
WHERE date BETWEEN ? AND ?
|
|
ORDER BY etat_stock.date_creation DESC;";
|
|
$sql_get_result = $adb->pquery($query,array($date_start,$date_end));
|
|
$res= array();
|
|
|
|
while ($recordinfo = $adb->fetch_array($sql_get_result)) {
|
|
$res[] = $recordinfo;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
function getLastStockUpdate($clause){
|
|
global $adb;
|
|
|
|
$query = "SELECT
|
|
CASE
|
|
WHEN Max(date_creation) IS null THEN Max(date_creation)
|
|
ELSE Max(date_creation)
|
|
END as last_update
|
|
FROM `etat_stock`
|
|
WHERE grossiste = ?;";
|
|
$sql_get_result = $adb->pquery($query,array($clause));
|
|
|
|
return $adb->fetch_array($sql_get_result);
|
|
}
|
|
|
|
function getGrossiste(){
|
|
global $adb;
|
|
|
|
$query5 = "SELECT accountname FROM `vtiger_account` WHERE industry like '%Grossiste%' ";
|
|
$result5 =$adb->query($query5);
|
|
$res=array();
|
|
while ($recordinfo = $adb->fetch_array($result5)) {
|
|
$res[] = $recordinfo;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
function ExportFile($records) {
|
|
$heading = false;
|
|
if(!empty($records))
|
|
foreach($records as $row) {
|
|
if(!$heading) {
|
|
// display field/column names as a first row
|
|
echo implode("\t;", array("Produit","Quantité","Date de péremption","Grossiste",
|
|
"Date détat du stock","KAM","Date de saisie")) . "\n";
|
|
$heading = true;
|
|
}
|
|
echo implode("\t;", array($row['produit'],$row['qte'],$row['dper'],
|
|
html_entity_decode($row['grossiste']),$row['date'],$row['user_name'],
|
|
$row['date_creation'])) . "\n";
|
|
}
|
|
exit;
|
|
}
|
|
|
|
function getProduits(){
|
|
global $adb;
|
|
|
|
$query5 = "SELECT productname FROM `vtiger_products` ";
|
|
$result5 =$adb->query($query5);
|
|
$res=array();
|
|
while ($recordinfo = $adb->fetch_array($result5)) {
|
|
$res[] = $recordinfo;
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
function search($array, $search_list) {
|
|
|
|
// Create the result array
|
|
$result = array();
|
|
|
|
// Iterate over each array element
|
|
foreach ($array as $key => $value) {
|
|
|
|
// Iterate over each search condition
|
|
foreach ($search_list as $k => $v) {
|
|
|
|
// If the array element does not meet
|
|
// the search condition then continue
|
|
// to the next element
|
|
if (!isset($value[$k]) || $value[$k] != $v)
|
|
{
|
|
|
|
// Skip two loops
|
|
continue 2;
|
|
}
|
|
}
|
|
|
|
// Append array element's key to the
|
|
//result array
|
|
$result[] = $value;
|
|
}
|
|
|
|
// Return result
|
|
return $result;
|
|
}
|
|
function convertArray($result){
|
|
|
|
$a = array();
|
|
$b = array();
|
|
$c = array();
|
|
if(isset($result) > 0 && sizeof($result) > 0 ){
|
|
$produits = getProduits();
|
|
for($i = 0 ; $i < sizeof($produits) ; $i++){
|
|
$d = array();
|
|
if(in_array($produits[$i]['productname'], $a) == false){
|
|
|
|
|
|
$grossistes = getGrossiste();
|
|
for($bb = 0 ; $bb < sizeof($grossistes); $bb++){
|
|
$search_items = array('produit'=>$produits[$i]['productname'], 'grossiste'=>$grossistes[$bb]['accountname']);
|
|
$val = search($result, $search_items);
|
|
if(sizeof($val) == 0 || $val[0]['quantite'] == null){
|
|
$d = $d + [$bb+1=>0];
|
|
}else{
|
|
$d = $d + [$bb+1=> (int) $val[0]['quantite']];
|
|
}
|
|
}
|
|
|
|
|
|
$b = [0=>$produits[$i]['productname']];
|
|
$total =[ $bb+1=>array_sum($d)] ;
|
|
$b = $b + $d + $total;
|
|
array_push($c,$b);
|
|
}
|
|
|
|
array_push($a,$produits[$i]['productname']);
|
|
}
|
|
|
|
|
|
// SUM LIGNES
|
|
$derniereLigne = ["TOTAL"];
|
|
for($u = 1 ; $u < $bb+2; $u++){
|
|
$long = sizeof($c);
|
|
$sum = 0;
|
|
for($ligne = 1 ; $ligne < $long; $ligne++){
|
|
$valeur = $c[$ligne][$u];
|
|
$sum = $sum + $valeur;
|
|
}
|
|
array_push($derniereLigne,$sum);
|
|
}
|
|
|
|
array_push($c,$derniereLigne);
|
|
|
|
}
|
|
return $c;
|
|
|
|
|
|
}
|
|
|
|
if(isset($_POST['year']) || isset($_POST['month'])){
|
|
$year = $_POST['year'];
|
|
$monthNumber = $_POST['month'];
|
|
}
|
|
|
|
|
|
$result = getResultat($year ,$monthNumber);
|
|
$result = convertArray($result);
|
|
$grossistes = getGrossiste();
|
|
$produit = getProduits();
|
|
|
|
|
|
// print_r($export_res);die;
|
|
echo '<div class="dashBoardContainer clearfix">
|
|
<div class="tabContainer">
|
|
<ul class="nav nav-tabs tabs sortable container-fluid">
|
|
<li class="dashboardTab active" ><a href="index.php?module=EtatStockReporting&view=EtatStockReporting"><div><strong>Etat Des Stocks</strong></div></a></li>
|
|
<li class="dashboardTab"><a href="index.php?module=EtatStockReportingValorisation&view=EtatStockReportingValorisation"><div><strong>Etat Des Stock / Valeur</strong></div></a></li>
|
|
<li class="dashboardTab" ><a href="index.php?module=EtatStockReportingPreemption&view=EtatStockReportingPreemption"><div><strong>Etat Des Stock / Preemption</strong></div></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>';
|
|
|
|
echo'<div class="main-container main-container-Accounts">
|
|
<div id="scrollbar" style="margin:15px 15px 15px 15px; border:1px solid #ecf0f1; overflow-y: scroll; overflow-x: scroll; border:1px solid #bdc3c7;">
|
|
<div style=" text-align: center"><h3>ETAT DES STOCKS</h3></div>
|
|
<div class="row" style="margin:5px 5px 5px 15px;">
|
|
<form method="post">
|
|
<input type="hidden" id="Export" name="Export">
|
|
<div class="form-group col-md-3">
|
|
<span>De </span>
|
|
<input type="date" name="initDate" id="initDate" value="'.date('Y-m-01').'">
|
|
</div>
|
|
<div class="form-group col-md-3">
|
|
<span>à </span>
|
|
<input type="date" name="endDate" id="endDate" value="'.date('Y-m-t').'">
|
|
</div>
|
|
<div class="form-group col-md-3">
|
|
</div>
|
|
<div class="form-group col-md-2">
|
|
<button type="submit" class="btn btn-success" style="position: absolute; top: 50%; -ms-transform: translateY(50%); transform: translateY(50%);">Exporter Vers Excel</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<hr>';
|
|
|
|
//<button type="button" onclick=\'exportThisWithParameter("tabcenter", "ETAT_DES_STOCKS.xls")\' class="btn btn-success">Exporter Vers Excel</button>
|
|
//print("<pre>".print_r($result,true)."</pre>");
|
|
|
|
|
|
echo '<div class="row" style="margin:5px 5px 5px 15px;">
|
|
<form method="post">
|
|
<div class="form-group col-md-2">
|
|
<label for="month">Mois</label>
|
|
<select class="js-example-basic-single form-control" id="month" name="month" onchange="this.form.submit()">';
|
|
$i = 0;
|
|
foreach($months as $month) {
|
|
$i++;
|
|
if(($monthp == '' && $monthNumber == $i) || $i == $monthp)
|
|
echo '<option selected value = "'.$i.'">'.$month.'</option>';
|
|
else
|
|
echo '<option value = "'.$i.'">'.$month.'</option>';
|
|
}
|
|
|
|
echo'</select>
|
|
</div>
|
|
|
|
<div class="form-group col-md-2">
|
|
<label for="year">Année</label>
|
|
<select id="year" class="js-example-basic-single form-control" id="year" name="year" onchange="this.form.submit()">
|
|
<option value="2020"'; if($year == 2020) echo "selected"; echo'>2020</option>
|
|
<option value="2021"'; if($year == 2021) echo "selected"; echo'>2021</option>
|
|
<option value="2022"'; if($year == 2022) echo "selected"; echo'>2022</option>
|
|
<option value="2023"'; if($year == 2023) echo "selected"; echo'>2023</option>
|
|
</select>
|
|
</div>
|
|
</form>
|
|
<div class="form-group col-md-8">
|
|
<label for="produit">Produit</label>
|
|
<input class="form-control mb-4 w-20" type="text" id="produit" name="produit" placeholder="Rechercher" onkeyup="produit(this)">
|
|
</div>
|
|
</div>
|
|
|
|
<table id="tabcenter" class="table table-bordered table-striped" >
|
|
<tr class="center borderline">
|
|
<th id="produit" >produit/grossiste</th>';
|
|
for($p = 0 ; $p < sizeof($grossistes); $p++){
|
|
echo '<th>'.$grossistes[$p]['accountname'].'</th>';
|
|
}
|
|
echo'
|
|
<th>Total</th>
|
|
</tr>
|
|
<tbody id="values"></tbody>
|
|
</table></div></div>';
|
|
|
|
$viewer->view('CustomDashboardFooter.tpl');
|
|
?>
|
|
<style>
|
|
#scrollbar::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
#scrollbar::-webkit-scrollbar-thumb {
|
|
background: #aaa;
|
|
border-radius: 10px;
|
|
}
|
|
#scrollbar::-webkit-scrollbar-track {
|
|
background: #F0F0F0;
|
|
border-radius: 10px;
|
|
}
|
|
#scrollbar::-webkit-scrollbar-thumb:horizontal:hover,
|
|
#scrollbar::-webkit-scrollbar-thumb:vertical:hover {
|
|
background: #999999;
|
|
border-radius: 10px;
|
|
}
|
|
th, td
|
|
{
|
|
|
|
text-align : center;
|
|
|
|
}
|
|
.center
|
|
{
|
|
text-align : center;
|
|
}
|
|
.divselection {
|
|
|
|
margin-left: 0px;
|
|
padding: 20px;
|
|
display: inline-block;
|
|
}
|
|
[type="date"] {
|
|
background:#fff url(https://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/calendar_2.png) 97% 50% no-repeat ;
|
|
}
|
|
[type="date"]::-webkit-inner-spin-button {
|
|
display: none;
|
|
}
|
|
[type="date"]::-webkit-calendar-picker-indicator {
|
|
opacity: 0;
|
|
}
|
|
|
|
/* custom styles */
|
|
label {
|
|
display: block;
|
|
}
|
|
input {
|
|
border: 1px solid #c4c4c4;
|
|
border-radius: 5px;
|
|
background-color: #fff;
|
|
padding: 3px 5px;
|
|
box-shadow: inset 0 3px 6px rgba(0,0,0,0.1);
|
|
width: 190px;
|
|
}
|
|
</style>
|
|
<script>
|
|
|
|
function htmlDecode(input) {
|
|
var doc = new DOMParser().parseFromString(input, "text/html");
|
|
return doc.documentElement.textContent;
|
|
}
|
|
function loadTable(data)
|
|
{
|
|
$('#tabcenter tr').slice(1).remove();
|
|
|
|
|
|
|
|
var produit = <?php echo json_encode($produit); ?>;
|
|
var modified_header = <?php
|
|
$temp = array();
|
|
for($p = 0 ; $p < sizeof($grossistes); $p++){
|
|
$modified_date = getLastStockUpdate($grossistes[$p]['accountname'])['last_update'];
|
|
if(is_null($modified_date))
|
|
array_push($temp,'<td><b style="padding: 5px;border-radius: 6px;background:red;color:white;">N/A</b></td>');
|
|
else{
|
|
$td_style = "";
|
|
if(date("Y-m", strtotime($modified_date)) < date("Y-m"))
|
|
$td_style = 'style="padding: 5px;border-radius: 6px;background:red;color:white;"';
|
|
array_push($temp,'<td><b '.$td_style.'>'.date("Y/m/d", strtotime($modified_date)).'</b></td>');
|
|
}
|
|
}
|
|
echo json_encode(implode($temp));
|
|
?>.toString()
|
|
$('#tabcenter').append(
|
|
"<tr class='center borderline'> <td><b>Date de derniére mise à jour</b></td>"
|
|
+modified_header
|
|
+"<td></td></tr>"
|
|
);
|
|
if(data.length > 0) {
|
|
|
|
for(var i = 0; i < data.length; i++) {
|
|
var temp=[];
|
|
var row = data[i];
|
|
for(var x = 0; x < row.length; x++) {
|
|
if(jQuery.type(row[x]) == 'number' && row[x] != 0){
|
|
var td ="<td><b>"+row[x]+"</b></td>";
|
|
}else{
|
|
var td ="<td>"+row[x]+"</td>";
|
|
}
|
|
temp.push(td);
|
|
}
|
|
//console.log(temp);
|
|
$('#tabcenter').append(
|
|
"<tr class='center borderline'>"
|
|
+temp.toString()
|
|
+"</tr>"
|
|
);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//filtre nom/prenom
|
|
function produit(e) {
|
|
var res = result.filter(a => a[0].toUpperCase().includes(e.value.toUpperCase()) );
|
|
loadTable(res);
|
|
}
|
|
|
|
var result = <?php echo json_encode($result); ?>;
|
|
loadTable(result);
|
|
|
|
</script>
|
|
<!-- script pour liste déroulante -->
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('.js-example-basic-single').select2();
|
|
});
|
|
|
|
|
|
$(document).ready(function() {
|
|
$('.js-example-basic-multiple').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>
|
|
<script type="text/javascript">CsrfMagic.end();</script></body>
|
|
<script>
|
|
var exportThisWithParameter = (function () {
|
|
var uri = 'data:application/vnd.ms-excel;base64,',
|
|
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv=Content-Type content="text/html; charset=utf-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets> <x:ExcelWorksheet><x:Name>{worksheet}</x:Name> <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions> </x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook> </xml><![endif]--></head><body> <table>{table}</table></body></html>',
|
|
base64 = function (s) {
|
|
return window.btoa(unescape(encodeURIComponent(s)))
|
|
},
|
|
format = function (s, c) {
|
|
return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; })
|
|
}
|
|
return function (tableID, excelName) {
|
|
tableID = document.getElementById(tableID)
|
|
var ctx = { worksheet: excelName || 'Worksheet', table: tableID.innerHTML }
|
|
// window.location.href = uri + base64(format(template, ctx))
|
|
var link = document.createElement("a");
|
|
link.download = excelName;
|
|
//link.charset = 'utf-8';
|
|
link.href = uri + base64(format(template, ctx));
|
|
link.click();
|
|
}
|
|
})()
|
|
</script>
|
|
</html>
|