Вы сказали:
Есть запрос данные получаем и создать new Chart(document.getElementById("chartWeek"), {
type: "bar"
С описанием
номеров этапов всех количества s0....s100... которое равно ["Новый запрос", "Подготовка КП",'КП отправлено','Подготовка договора','Договор отправлен','Выставить счет/спецификацию','Контроль оплаты','Заказ в производстве','Заказ на сборке','Заказ готов к отгрузке','Заказ доставлен','ОПИ','Приобретен','Не приобретено' ]
И цветом backgroundColor: ["#79c4f7","#78d1dc",'6de3c7','f7cd7b','8dc3e5','b0e3f3','de7174','74d1ed','a6e7fa','44a46d','f6f312','b57eee','ffa500','ff0000']
Где в каждом этапе есть ...._bill и ...._order
выводить этап в котором есть сумма _bill и _order окрашивая их нужный цвет
$dayOfWeek = date('N');
if ($dayOfWeek == 1) {
// Если понедельник — берем даты прошлой недели
$startDate = date('Y-m-d', strtotime('monday last week'));
$endDate = date('Y-m-d', strtotime('friday last week'));
} else {
// В остальные дни — текущая неделя
$startDate = date('Y-m-d', strtotime('monday this week'));
$endDate = date('Y-m-d', strtotime('friday this week'));
}
$sqlW = "
SELECT
COUNT(CASE
WHEN status_deal = 0
THEN 1 ELSE 0 END) AS s0,
COUNT(CASE
WHEN status_deal = 2
THEN 1 ELSE 0 END) AS s2,
COUNT(CASE
WHEN status_deal = 3
THEN 1 ELSE 0 END) AS s3,
COUNT(CASE
WHEN status_deal = 4
THEN 1 ELSE 0 END) AS s4,
COUNT(CASE
WHEN status_deal = 5
THEN 1 ELSE 0 END) AS s5,
COUNT(CASE
WHEN status_deal = 6
THEN 1 ELSE 0 END) AS s6,
COUNT(CASE
WHEN status_deal = 7
THEN 1 ELSE 0 END) AS s7,
COUNT(CASE
WHEN status_deal = 8
THEN 1 ELSE 0 END) AS s8,
COUNT(CASE
WHEN status_deal = 9
THEN 1 ELSE 0 END) AS s9,
COUNT(CASE
WHEN status_deal = 10
THEN 1 ELSE 0 END) AS s10,
COUNT(CASE
WHEN status_deal = 11
THEN 1 ELSE 0 END) AS s11,
COUNT(CASE
WHEN status_deal = 12
THEN 1 ELSE 0 END) AS s12,
COUNT(CASE
WHEN status_deal = 150 AND payment_step != 0
THEN 1 ELSE 0 END) AS s150,
COUNT(CASE
WHEN status_deal = 100 AND payment_step >= 2 AND payment_step IS NOT NULL
THEN 1 ELSE 0 END) AS s100,
SUM(CASE WHEN status_deal = 0 THEN o.bill_amount ELSE 0 END) AS deal0_bill,
SUM(CASE WHEN status_deal = 0 THEN o.sum_order ELSE 0 END) AS deal0_order,
SUM(CASE WHEN status_deal = 2 THEN o.bill_amount ELSE 0 END) AS deal2_bill,
SUM(CASE WHEN status_deal = 2 THEN o.sum_order ELSE 0 END) AS deal2_order,
SUM(CASE WHEN status_deal = 3 THEN o.bill_amount ELSE 0 END) AS deal3_bill,
SUM(CASE WHEN status_deal = 3 THEN o.sum_order ELSE 0 END) AS deal3_order,
SUM(CASE WHEN status_deal = 4 THEN o.bill_amount ELSE 0 END) AS deal4_bill,
SUM(CASE WHEN status_deal = 4 THEN o.sum_order ELSE 0 END) AS deal4_order,
SUM(CASE WHEN status_deal = 5 THEN o.bill_amount ELSE 0 END) AS deal5_bill,
SUM(CASE WHEN status_deal = 5 THEN o.sum_order ELSE 0 END) AS deal5_order,
SUM(CASE WHEN status_deal = 6 THEN o.bill_amount ELSE 0 END) AS deal6_bill,
SUM(CASE WHEN status_deal = 6 THEN o.sum_order ELSE 0 END) AS deal6_order,
SUM(CASE WHEN status_deal = 7 THEN o.bill_amount ELSE 0 END) AS deal7_bill,
SUM(CASE WHEN status_deal = 7 THEN o.sum_order ELSE 0 END) AS deal7_order,
SUM(CASE WHEN status_deal = 8 THEN o.bill_amount ELSE 0 END) AS deal8_bill,
SUM(CASE WHEN status_deal = 8 THEN o.sum_order ELSE 0 END) AS deal8_order,
SUM(CASE WHEN status_deal = 9 THEN o.bill_amount ELSE 0 END) AS deal9_bill,
SUM(CASE WHEN status_deal = 9 THEN o.sum_order ELSE 0 END) AS deal9_order,
SUM(CASE WHEN status_deal = 10 THEN o.bill_amount ELSE 0 END) AS deal10_bill,
SUM(CASE WHEN status_deal = 10 THEN o.sum_order ELSE 0 END) AS deal10_order,
SUM(CASE WHEN status_deal = 11 THEN o.bill_amount ELSE 0 END) AS deal11_bill,
SUM(CASE WHEN status_deal = 11 THEN o.sum_order ELSE 0 END) AS deal11_order,
SUM(CASE WHEN status_deal = 12 THEN o.bill_amount ELSE 0 END) AS deal12_bill,
SUM(CASE WHEN status_deal = 12 THEN o.sum_order ELSE 0 END) AS deal12_order,
SUM(CASE WHEN status_deal = 150 AND payment_step != 0 THEN o.bill_amount ELSE 0 END) AS deal150_bill,
SUM(CASE WHEN status_deal = 150 AND payment_step != 0 THEN o.sum_order ELSE 0 END) AS deal150_order,
SUM(CASE WHEN status_deal = 100 AND payment_step >= 2 AND payment_step IS NOT NULL THEN o.bill_amount ELSE 0 END) AS deal100_bill,
SUM(CASE WHEN status_deal = 100 AND payment_step >= 2 AND payment_step IS NOT NULL THEN o.sum_order ELSE 0 END) AS deal100_order
FROM orders
WHERE date(deal_update) BETWEEN :m AND :f
-- WHERE date(invoice_date) BETWEEN :m AND :f
";
$stmtW = $SQLite3->prepare($sqlW);
$stmtW->bindValue(':m', $startDate, SQLITE3_TEXT);
$stmtW->bindValue(':f', $endDate, SQLITE3_TEXT);
$weekStats = $stmtW->execute()->fetchArray(SQLITE3_ASSOC);
//$res = $stmtW->execute();
//$weekStats = $res ? $res->fetchArray(SQLITE3_ASSOC) : ['s150' => 0, 's100' => 0];
//$weekStats = $res ? $res->fetchArray(SQLITE3_ASSOC) : $weekStats;