Joywork/ajax/stat_sales_plan.php
2026-05-22 21:21:54 +03:00

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);