268 lines
12 KiB
PHP
268 lines
12 KiB
PHP
<?php
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|
|
|
|
|
$cl = new Clients();
|
|
|
|
/*ini_set('display_errors', 1);
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);*/
|
|
ini_set('max_execution_time', 300);
|
|
|
|
$usersArr = json_decode($_POST['responsible'], true);
|
|
//file_put_contents(__DIR__.'/log.txt', date('H:i:s'));
|
|
$usersId = $cl -> getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']);
|
|
//var_dump($usersId);
|
|
$rows = $row = $row_obj = $row_add = $row_do = $row_pr = array();
|
|
//file_put_contents(__DIR__.'/log.txt', var_dump($_POST));
|
|
//var_dump($_POST);
|
|
//$_SESSION['filter_emp'] = $_POST['responsible'];
|
|
$bd_usl_managers = '';
|
|
$bd_usl = '';
|
|
$arrIdUser = array();
|
|
$arrIdAgent = array();
|
|
foreach($usersId as $userId){
|
|
$arrIdUser[] = "who_work = $userId";
|
|
$arrIdAgent[] = "id_agent = $userId";
|
|
}
|
|
$period = 'all';
|
|
$whereTasks = "";
|
|
$bd_period = '';
|
|
$bd_do_period = '';
|
|
|
|
if(isset($_POST['period'])){
|
|
|
|
$period = $_POST['period'];
|
|
}
|
|
$onDate = null;
|
|
$offDate = null;
|
|
if(isset($_POST['onDate'])){
|
|
$onDate = $_POST['onDate'];
|
|
}
|
|
if(isset($_POST['offDate'])){
|
|
$offDate = $_POST['offDate'];
|
|
}
|
|
$dates = getPeriod($period, $onDate, $offDate);
|
|
$date_between = $dates['between'];
|
|
$monthsyears = $dates['monthsyears'];
|
|
|
|
$array_menedgers = array();
|
|
|
|
$departmentClass = new Department;
|
|
$departments = $departmentClass->getDepartments();
|
|
//var_dump($departments);
|
|
|
|
$users = array();
|
|
$sql_users = "SELECT id, agency, manager, agency_name, first_name, last_name, middle_name, id_manager, role_id FROM users WHERE id in (". implode(', ', $usersId).")";
|
|
|
|
$q_users = mysql_query($sql_users);
|
|
$res = array();
|
|
while($r_users = mysql_fetch_assoc($q_users)){
|
|
$users[$r_users['id']] = $r_users;
|
|
}
|
|
$plan = array();
|
|
$year = $dates['years'][0];
|
|
$sql_plan = "SELECT * FROM `sales_plan` where user_id in (". implode(', ', $usersId).") and year = '{$year}'";
|
|
if(!empty($monthsyears)){
|
|
$sql_plan = "SELECT * FROM `sales_plan` where user_id in (". implode(', ', $usersId).") AND CONCAT(month,'-', year) in ('". implode('\', \'', $monthsyears) ."')";
|
|
|
|
}
|
|
//echo $sql_plan;
|
|
$q_plan = mysql_query($sql_plan);
|
|
while($r_plan = mysql_fetch_assoc($q_plan)){
|
|
$plan[$r_plan['user_id']][] = $r_plan;
|
|
}
|
|
|
|
//var_dump($plan);
|
|
|
|
$plan_real = array();
|
|
|
|
$sql = "SELECT sum(summa) as summa, count(*) as total, who_work, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1), '%m') as m, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1), '%Y') as y FROM requisitions WHERE cancel=0 and confirm=10 AND who_work in (".implode(',', $usersId).") and deleted=1 AND ((SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1) $date_between)>0 group by who_work, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1), '%m'), DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE req_id=requisitions.id and event='delete' order by id desc limit 1), '%Y')
|
|
UNION ALL
|
|
SELECT sum(summa) as summa, count(*) as total, who_work, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1), '%m') as m, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1), '%Y') as y FROM clients WHERE cancel=0 and confirm=10 AND who_work in (".implode(',', $usersId).") and deleted=1 AND ((SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1) $date_between)>0 group by who_work, DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1), '%m'), DATE_FORMAT((SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' order by id desc limit 1), '%Y')";
|
|
|
|
//echo $sql;
|
|
|
|
$q = mysql_query($sql);
|
|
while($r = mysql_fetch_assoc($q)){
|
|
|
|
$plan_real[] = $r;
|
|
}
|
|
//var_dump($plan_real);
|
|
|
|
$deposits = array();
|
|
|
|
$sql_d = "SELECT sum(deposit) as deposit, count(*) as total, user_id, DATE_FORMAT(created_at, '%m') as m, DATE_FORMAT(created_at, '%Y') as y FROM deposits_clients_req WHERE user_id in (".implode(',', $usersId).") AND created_at {$date_between} group by user_id, DATE_FORMAT(created_at, '%m'), DATE_FORMAT(created_at, '%Y')";
|
|
|
|
$q_d = mysql_query($sql_d);
|
|
while($r_d = mysql_fetch_assoc($q_d)){
|
|
$deposits[$r_d['user_id']] = $r_d;
|
|
}
|
|
$pid=0;
|
|
|
|
foreach($usersId as $key => $id){
|
|
$arrTemp = array();
|
|
//$usersArrM = array();
|
|
$mstr = $users[$id];//mysql_fetch_assoc(mysql_query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, id_manager FROM users WHERE id=".$id));
|
|
if($mstr['agency']){
|
|
$master = "Агентство ". trim($mstr['agency_name']) ." (". trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']).")";
|
|
$arrTemp['post'] = 'agency';
|
|
$arrTemp['agency_name'] = $mstr['agency_name'];
|
|
//$arrTemp['usersIdm'] = $usersId;
|
|
}
|
|
else if($mstr['role_id'] > 0 && isset($departments[$mstr['role_id']])){
|
|
$master = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']).' ('.$departments[$mstr['role_id']]['role_name'].' '.$departments[$mstr['role_id']]['dep_name'].')';
|
|
if($mstr['manager']){
|
|
$arrTemp['post'] = 'manager';
|
|
// $usersArrM[] = 'all_'.$id;
|
|
//$usersIdm = $cl -> getUsersFilter($usersArrM);
|
|
//$arrTemp['usersIdm'] = $usersIdm;
|
|
|
|
} else {
|
|
$arrTemp['post'] = 'agent';
|
|
//$arrTemp['usersIdm'][] = $id;
|
|
|
|
}
|
|
|
|
}
|
|
else if($mstr['manager']){
|
|
$master = "Менеджер " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']);
|
|
$arrTemp['post'] = 'manager';
|
|
|
|
$usersArrM[] = 'all_'.$id;
|
|
//$usersIdm = $cl -> getUsersFilter($usersArrM);
|
|
//$arrTemp['usersIdm'] = $usersIdm;
|
|
}
|
|
else {
|
|
$master = "Агент " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']);
|
|
$arrTemp['post'] = 'agent';
|
|
//$arrTemp['usersIdm'][] = $id;
|
|
|
|
}
|
|
$arrTemp['id_manager'] = $mstr['id_manager'];
|
|
$arrTemp['id'] = $id;
|
|
$arrTemp['fio'] = $master;
|
|
$arrTemp['summa_commission'] = 0;
|
|
$arrTemp['deals_quantity'] = 0;
|
|
$arrTemp['real_summa_commission'] = 0;
|
|
$arrTemp['real_deals_quantity'] = 0;
|
|
$arrTemp['pid'] = 0;
|
|
if(in_array((int)$mstr['id_manager'], $usersId)){
|
|
$arrTemp['pid'] = (int)$mstr['id_manager'];
|
|
}
|
|
$arrTemp['real_pr'] = 0;
|
|
$arrTemp['makings'] = 0;
|
|
$arrTemp['makings_total'] = 0;
|
|
foreach($dates['months'] as $month){
|
|
$arrTemp['summa_commission_'.$month] = 0;
|
|
$arrTemp['deals_quantity_'.$month] = 0;
|
|
$arrTemp['real_summa_commission_'.$month] = 0;
|
|
$arrTemp['real_deals_quantity_'.$month] = 0;
|
|
$arrTemp['real_pr_'.$month] = 0;
|
|
$arrTemp['makings_'.$month] = 0;
|
|
$arrTemp['makings_total_'.$month] = 0;
|
|
}
|
|
|
|
foreach ($plan as $user_id => $pl) {
|
|
foreach($pl as $val){
|
|
//if(in_array($user_id, $arrTemp['usersIdm'])){
|
|
if($user_id == $id){
|
|
$arrTemp['summa_commission'] += (int)$val['summa'];
|
|
$arrTemp['deals_quantity'] += (int)$val['quantity'];
|
|
|
|
|
|
foreach($dates['months'] as $month){
|
|
|
|
if($month == (int)$val['month'] && $dates['years'][0] == $val['year']){
|
|
$arrTemp['summa_commission_'.$month] += (int)$val['summa'];
|
|
$arrTemp['deals_quantity_'.$month] += (int)$val['quantity'];
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
foreach ($plan_real as $val) {
|
|
// if(in_array($user_id, $arrTemp['usersIdm'])){
|
|
if($id == (int)$val['who_work']){
|
|
if($dates['years'][0] == $val['y']){
|
|
$arrTemp['real_summa_commission'] += $val['summa'];
|
|
$arrTemp['real_deals_quantity'] += $val['total'];
|
|
}
|
|
foreach($dates['months'] as $month){
|
|
if($month == (int)$val['m'] && $dates['years'][0] == $val['y']){
|
|
$arrTemp['real_summa_commission_'.$month] += $val['summa'];
|
|
$arrTemp['real_deals_quantity_'.$month] += $val['total'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach($deposits as $user_id => $val){
|
|
|
|
if($user_id == $id){
|
|
if($dates['years'][0] == $val['y']){
|
|
$arrTemp['makings'] += $val['deposit'];
|
|
$arrTemp['makings_total'] += $val['total'];
|
|
}
|
|
foreach($dates['months'] as $month){
|
|
if($month == (int)$val['m'] && $dates['years'][0] == $val['y']){
|
|
$arrTemp['makings_'.$month] += $val['deposit'];
|
|
$arrTemp['makings_total_'.$month] += $val['total'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if($arrTemp['real_summa_commission'] > 0 && $arrTemp['summa_commission'] == 0) {
|
|
$arrTemp['real_pr'] = '100%';
|
|
} else if ($arrTemp['real_summa_commission'] > 0 && $arrTemp['summa_commission'] > 0) {
|
|
$arrTemp['real_pr'] = (int)($arrTemp['real_summa_commission']/$arrTemp['summa_commission']*100) .'%';
|
|
} else {
|
|
$arrTemp['real_pr'] = '0%';
|
|
}
|
|
|
|
foreach($dates['months'] as $month){
|
|
if($arrTemp['real_summa_commission_'.$month] > 0 && $arrTemp['summa_commission_'.$month] == 0) {
|
|
$arrTemp['real_pr_'.$month] = '100%';
|
|
} else if ($arrTemp['real_summa_commission_'.$month] > 0 && $arrTemp['summa_commission_'.$month] > 0) {
|
|
$arrTemp['real_pr_'.$month] = (int)($arrTemp['real_summa_commission_'.$month]/$arrTemp['summa_commission_'.$month]*100) .'%';
|
|
} else {
|
|
$arrTemp['real_pr_'.$month] = '0%';
|
|
}
|
|
}
|
|
|
|
$arrTemp['summa_commission'] = number_format($arrTemp['summa_commission'],0 , '.', ' ');
|
|
//$arrTemp['deals_quantity'] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['deals_quantity'].'</a>';
|
|
$arrTemp['real_summa_commission'] = number_format($arrTemp['real_summa_commission'],0 , '.', ' ');
|
|
//$arrTemp['real_deals_quantity'] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.'<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['deals_quantity'].'</a>';
|
|
|
|
|
|
$arrTemp['makings'] = number_format($arrTemp['makings'],0 , '.', ' ');
|
|
// $arrTemp['makings_total'] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['makings_total'].'</a>';
|
|
foreach($dates['months'] as $month){
|
|
$arrTemp['summa_commission_'.$month] = number_format($arrTemp['summa_commission_'.$month],0 , '.', ' ');
|
|
//$arrTemp['deals_quantity_'.$month] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['deals_quantity_'.$month].'</a>';
|
|
$arrTemp['real_summa_commission_'.$month] = number_format($arrTemp['real_summa_commission_'.$month],0 , '.', ' ');
|
|
// $arrTemp['real_deals_quantity_'.$month] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['real_deals_quantity_'.$month].'</a>';
|
|
$arrTemp['makings_'.$month] = number_format($arrTemp['makings_'.$month],0 , '.', ' ');
|
|
//$arrTemp['makings_total_'.$month] = '<a style="cursor: grab; color: #000; border-bottom: none;">'.$arrTemp['makings_total_'.$month].'</a>';
|
|
}
|
|
|
|
$rows[$id] = $arrTemp;
|
|
$res[] = $arrTemp;
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = array(
|
|
'total' => count($usersId),
|
|
'rows' => $res,
|
|
|
|
);
|
|
/*$time = microtime(true) - $start;
|
|
file_put_contents(__DIR__.'/log.txt', 'Время выполнения скрипта: '.round($time, 4).' сек.');*/
|
|
echo json_encode($result);
|