9 changed files with 1250 additions and 8 deletions
@ -0,0 +1,269 @@ |
|||
<?php |
|||
// ini_set('display_errors', 'on'); |
|||
include "header.php"; |
|||
|
|||
// 出貨台數 |
|||
function getShipping($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND ( |
|||
real_arrival_date IS NOT NULL |
|||
AND real_arrival_date != '' |
|||
) |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 在裝台數 |
|||
function getInstalling($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND ( |
|||
install_end_date IS NULL |
|||
OR install_end_date = '' |
|||
) |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 完工台數 |
|||
function getInstalling2($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND install_end_date IS NOT NULL |
|||
AND install_end_date != '' |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// QC台數 |
|||
function getQCing($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND end_qc_date IS NOT NULL |
|||
AND end_qc_date != '' |
|||
|
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 移交台數 |
|||
function getDeliverying($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND delivery_date IS NOT NULL |
|||
AND delivery_date != '' |
|||
|
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
$contract_type = [ |
|||
'' => '新梯 + 汰改', |
|||
'A' => '新梯', |
|||
'B' => '汰改' |
|||
]; |
|||
foreach ($contract_type as $c_val => $c_key) { |
|||
|
|||
?> |
|||
|
|||
<table class="table table-striped table-bordered" style="width:98.5%;overflow-x:auto"> |
|||
<thead> |
|||
<tr> |
|||
<th style='text-align:center;vertical-align:middle;' colspan='15'> |
|||
<h4>出貨完工推移表(<?php echo $c_key; ?>)</h4> |
|||
</th> |
|||
</tr> |
|||
<tr> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;' rowspan='2'>階段台數</th> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;' rowspan='2'>年度</th> |
|||
<th style='text-align:center;vertical-align:middle;' colspan='12'>月份</th> |
|||
<th style='text-align:center;vertical-align:middle;' rowspan='2'>合計</th> |
|||
</tr> |
|||
<tr> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td style='text-align:center;'>" . $i . "月</td>"; |
|||
} |
|||
?> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<?php |
|||
$type_arr = [ |
|||
'A' => '出貨台數', |
|||
'B' => '在裝台數', |
|||
'C' => '完工台數', |
|||
'D' => 'QC台數', |
|||
'E' => '移交台數' |
|||
]; |
|||
foreach ($type_arr as $val => $key) { |
|||
?> |
|||
<tr> |
|||
<td style='text-align:center;vertical-align:middle;' rowspan='2'> |
|||
<?php |
|||
echo $key; |
|||
echo "<br/>"; |
|||
if ($val == 'A') |
|||
echo "<span style='font-size:12px;'>有出貨日</span>"; |
|||
if ($val == 'B') |
|||
echo "<span style='font-size:12px;'>有安裝開工日,沒安裝完工日</span> "; |
|||
if ($val == 'C') |
|||
echo "<span style='font-size:12px;'>有安裝完工日</span> "; |
|||
if ($val == 'D') |
|||
echo "<span style='font-size:12px;'>有QC完工日</span> "; |
|||
if ($val == 'E') |
|||
echo "<span style='font-size:12px;'>移交日</span> "; |
|||
?> |
|||
|
|||
</td> |
|||
<td>前一年度(<?php echo (date("Y") - 1); ?>)</td> |
|||
<?php |
|||
$a_count = 0; |
|||
$b_count = 0; |
|||
$c_count = 0; |
|||
$d_count = 0; |
|||
$e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
if ($val == 'A') { |
|||
$a = getShipping($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$a_count += $a; |
|||
echo '<td style="text-align:center;">' . $a . '</td>'; |
|||
} |
|||
if ($val == 'B') { |
|||
$b = getInstalling($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$b_count += $b; |
|||
echo '<td style="text-align:center;">' . $b . '</td>'; |
|||
} |
|||
if ($val == 'C') { |
|||
$c = getInstalling2($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$c_count += $c; |
|||
echo '<td style="text-align:center;">' . $c . '</td>'; |
|||
} |
|||
if ($val == 'D') { |
|||
$d = getQCing($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$d_count += $d; |
|||
echo '<td style="text-align:center;">' . $d . '</td>'; |
|||
} |
|||
if ($val == 'E') { |
|||
$e = getDeliverying($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$e_count += $e; |
|||
echo '<td style="text-align:center;">' . $e . '</td>'; |
|||
} |
|||
} |
|||
if ($val == 'A') |
|||
echo '<td style="text-align:center;">' . $a_count . '</td>'; |
|||
if ($val == 'B') |
|||
echo '<td style="text-align:center;">' . $b_count . '</td>'; |
|||
if ($val == 'C') |
|||
echo '<td style="text-align:center;">' . $c_count . '</td>'; |
|||
if ($val == 'D') |
|||
echo '<td style="text-align:center;">' . $d_count . '</td>'; |
|||
if ($val == 'E') |
|||
echo '<td style="text-align:center;">' . $e_count . '</td>'; |
|||
?> |
|||
</tr> |
|||
<tr> |
|||
<td>本年度(<?php echo date("Y"); ?>)</td> |
|||
<?php |
|||
$a_count = 0; |
|||
$b_count = 0; |
|||
$c_count = 0; |
|||
$d_count = 0; |
|||
$e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
if ($val == 'A') { |
|||
$a = getShipping($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$a_count += $a; |
|||
echo '<td style="text-align:center;">' . $a . '</td>'; |
|||
} |
|||
if ($val == 'B') { |
|||
$b = getInstalling($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$b_count += $b; |
|||
echo '<td style="text-align:center;">' . $b . '</td>'; |
|||
} |
|||
if ($val == 'C') { |
|||
$c = getInstalling2($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$c_count += $c; |
|||
echo '<td style="text-align:center;">' . $c . '</td>'; |
|||
} |
|||
if ($val == 'D') { |
|||
$d = getQCing($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$d_count += $d; |
|||
echo '<td style="text-align:center;">' . $d . '</td>'; |
|||
} |
|||
if ($val == 'E') { |
|||
$e = getDeliverying($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$e_count += $e; |
|||
echo '<td style="text-align:center;">' . $e . '</td>'; |
|||
} |
|||
} |
|||
if ($val == 'A') |
|||
echo '<td style="text-align:center;">' . $a_count . '</td>'; |
|||
if ($val == 'B') |
|||
echo '<td style="text-align:center;">' . $b_count . '</td>'; |
|||
if ($val == 'C') |
|||
echo '<td style="text-align:center;">' . $c_count . '</td>'; |
|||
if ($val == 'D') |
|||
echo '<td style="text-align:center;">' . $d_count . '</td>'; |
|||
if ($val == 'E') |
|||
echo '<td style="text-align:center;">' . $e_count . '</td>'; |
|||
?> |
|||
</tr> |
|||
<?php |
|||
} |
|||
?> |
|||
</tbody> |
|||
</table> |
|||
<?php |
|||
} |
|||
?> |
@ -0,0 +1,659 @@ |
|||
<?php |
|||
include("header.php"); |
|||
|
|||
$this_year = 2024; |
|||
|
|||
function getMAdetails($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
-- 全機汰改 |
|||
SELECT |
|||
count(*) |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
WHERE ssod.MaterialId = 'A40010' |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
"; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
|
|||
function getM1details($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
-- M1汰改 |
|||
SELECT |
|||
count(*) |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
where ssod.MaterialId = 'A40002' |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
"; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
|
|||
function getM1Freedetails($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
-- M1汰改送免費一年保養 |
|||
SELECT |
|||
count(*) |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
where ssod.PresentSQty >0 |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
"; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
|
|||
function getMContractAllAmount($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
SELECT |
|||
SUM(T.OAmountWithTax) AS OAmountWithTax |
|||
FROM( |
|||
-- 全機汰改 |
|||
SELECT |
|||
SUM(ssod.OAmountWithTax) AS OAmountWithTax |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
WHERE ssod.MaterialId = 'A40010' |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
UNION ALL |
|||
-- M1汰改 |
|||
SELECT |
|||
SUM(ssod.OAmountWithTax) AS OAmountWithTax |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
where ssod.MaterialId = 'A40002' |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
UNION ALL |
|||
-- M1汰改送免費一年保養 |
|||
SELECT |
|||
SUM(ssod.OAmountWithTax) AS OAmountWithTax |
|||
FROM salSalesOrder AS sso |
|||
LEFT JOIN salSalesOrderDetail AS ssod |
|||
ON ssod.BillNo = sso.BillNo |
|||
where ssod.PresentSQty >0 |
|||
AND SUBSTRING(CONVERT(VARCHAR, sso.BillDate, 112), 1, 6) = '$date' |
|||
-- AND SUBSTR(sso.CustomerOrderDate, 1, 6) = '$date', |
|||
) AS T |
|||
"; |
|||
// echo "<pre>$sql</pre>"; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
|
|||
function getMataincedetails($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
-- 保養合約 |
|||
SELECT |
|||
COUNT(sia_tmp.CU_MaterialId) |
|||
FROM( |
|||
SELECT |
|||
MIN(siam.BillDate) AS BillDate, |
|||
siad.CU_MaterialId |
|||
FROM salIncomeApplyMaster AS siam |
|||
LEFT JOIN salIncomeApplyDetail AS siad |
|||
ON siam.BillNo = siad.BillNo |
|||
GROUP BY siad.CU_MaterialId |
|||
)AS sia_tmp |
|||
WHERE 1=1 |
|||
AND SUBSTRING(CONVERT(VARCHAR, sia_tmp.BillDate, 112), 1, 6) = '$date' |
|||
"; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
|
|||
function getFixdetails($conn, $this_year, $i) |
|||
{ |
|||
$date = $this_year . str_pad($i, 2, '0', STR_PAD_LEFT); |
|||
$sql = " |
|||
SELECT |
|||
SUM(sia_tmp.OAmountWithTax) AS OAmountWithTax |
|||
FROM( |
|||
SELECT |
|||
sdlm.BillDate AS BillDate, |
|||
sdld.OAmountWithTax |
|||
FROM salDispatchListMaster AS sdlm |
|||
LEFT JOIN salDispatchListDetail AS sdld |
|||
ON sdlm.BillNo = sdld.BillNo |
|||
)AS sia_tmp |
|||
WHERE 1=1 |
|||
AND SUBSTRING(CONVERT(VARCHAR, sia_tmp.BillDate, 112), 1, 6) = '$date' |
|||
"; |
|||
// echo $sql; |
|||
$result = $conn->query($sql); |
|||
foreach ($result as $row) { |
|||
return $row[0]; |
|||
} |
|||
} |
|||
?> |
|||
<table class="table table-striped table-bordered" style="width:98.5%;overflow-x:auto"> |
|||
<thead> |
|||
<tr> |
|||
<th style='text-align:center;vertical-align:middle;' colspan='17'> |
|||
<h4><?php echo date("Y"); ?>年指標與實績</h4> |
|||
</th> |
|||
</tr> |
|||
<tr> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;' colspan='2'>項目</th> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;'><?php echo (date("Y") - 1); ?>年</th> |
|||
<th style='text-align:center;vertical-align:middle;'>月份</th> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td style='text-align:center;'>" . $i . "月</td>"; |
|||
} |
|||
?> |
|||
<th style='text-align:center;vertical-align:middle;' rowspan='2'>累計</th> |
|||
</tr> |
|||
<tr> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<tr> |
|||
<td rowspan="3">1</td> |
|||
<td rowspan="3">舊梯全汰改(台數)</td> |
|||
<td rowspan="3"> |
|||
X/X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_a['2024'] = [ |
|||
1 => 10, |
|||
2 => 20, |
|||
3 => 10, |
|||
4 => 26, |
|||
5 => 13, |
|||
6 => 26, |
|||
7 => 13, |
|||
8 => 26, |
|||
9 => 13, |
|||
10 => 26, |
|||
11 => 13, |
|||
12 => 14 |
|||
]; |
|||
$expected_a_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_a_count += $expected_a[$this_year][$i]; |
|||
echo "<td>" . $expected_a[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_a_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_a['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_a_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_a[$this_year][$i] = getMAdetails($conn, $this_year, $i); |
|||
$real_a_count += $real_a[$this_year][$i]; |
|||
echo "<td>" . $real_a[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_a_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_a[$this_year][$i] / $expected_a[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_a_count / $expected_a_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
|
|||
|
|||
|
|||
<tr> |
|||
<td rowspan="6">2</td> |
|||
<td rowspan="3">舊梯M1改(台數)</td> |
|||
<td rowspan="3"> |
|||
X/X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_b['2024'] = [ |
|||
1 => 15, |
|||
2 => 30, |
|||
3 => 15, |
|||
4 => 40, |
|||
5 => 20, |
|||
6 => 40, |
|||
7 => 20, |
|||
8 => 40, |
|||
9 => 20, |
|||
10 => 40, |
|||
11 => 20, |
|||
12 => 30 |
|||
]; |
|||
$expected_b_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_b_count += $expected_b[$this_year][$i]; |
|||
echo "<td>" . $expected_b[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_b_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_b['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_b_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_b[$this_year][$i] = getM1details($conn, $this_year, $i); |
|||
$real_b_count += $real_b[$this_year][$i]; |
|||
echo "<td>" . $real_b[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_b_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_b[$this_year][$i] / $expected_b[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_b_count / $expected_b_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<td rowspan="3">保養簽長約,免費M1</td> |
|||
<td rowspan="3"> |
|||
X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_c['2024'] = [ |
|||
1 => 18, |
|||
2 => 18, |
|||
3 => 19, |
|||
4 => 20, |
|||
5 => 20, |
|||
6 => 20, |
|||
7 => 20, |
|||
8 => 20, |
|||
9 => 20, |
|||
10 => 20, |
|||
11 => 20, |
|||
12 => 20 |
|||
]; |
|||
$expected_c_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_c_count += $expected_c[$this_year][$i]; |
|||
echo "<td>" . $expected_c[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_c_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_c['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_c_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_c[$this_year][$i] = getM1Freedetails($conn, $this_year, $i); |
|||
$real_c_count += $real_c[$this_year][$i]; |
|||
echo "<td>" . $real_c[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_c_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_c[$this_year][$i] / $expected_c[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_c_count / $expected_c_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
|
|||
|
|||
<tr> |
|||
<td rowspan="3">3</td> |
|||
<td rowspan="3">汰改合計金額(千元)</td> |
|||
<td rowspan="3"> |
|||
X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_d['2024'] = [ |
|||
1 => 12650, |
|||
2 => 12650, |
|||
3 => 12650, |
|||
4 => 18150, |
|||
5 => 18150, |
|||
6 => 19800, |
|||
7 => 23650, |
|||
8 => 23650, |
|||
9 => 23650, |
|||
10 => 26400, |
|||
11 => 26400, |
|||
12 => 26400 |
|||
]; |
|||
$expected_d_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_d_count += $expected_d[$this_year][$i]; |
|||
echo "<td>" . $expected_d[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_d_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_d['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_d_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_d[$this_year][$i] = round(getMContractAllAmount($conn, $this_year, $i)/1000,0); |
|||
$real_d_count += $real_d[$this_year][$i]; |
|||
echo "<td>" . $real_d[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_d_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_d[$this_year][$i] / $expected_d[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_d_count / $expected_d_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td rowspan="3">4</td> |
|||
<td rowspan="3">保養契約台數(台)</td> |
|||
<td rowspan="3"> |
|||
X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_e['2024'] = [ |
|||
1 => 192, |
|||
2 => 192, |
|||
3 => 192, |
|||
4 => 272, |
|||
5 => 272, |
|||
6 => 272, |
|||
7 => 272, |
|||
8 => 272, |
|||
9 => 272, |
|||
10 => 272, |
|||
11 => 272, |
|||
12 => 272 |
|||
]; |
|||
$expected_e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_e_count += $expected_e[$this_year][$i]; |
|||
echo "<td>" . $expected_e[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_e_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_e['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_e[$this_year][$i] = getMataincedetails($conn, $this_year, $i, $real_e[$this_year]); |
|||
$real_e_count += $real_e[$this_year][$i]; |
|||
echo "<td>" . $real_e[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_e_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_e[$this_year][$i] / $expected_e[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_e_count / $expected_e_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td rowspan="3">5</td> |
|||
<td rowspan="3">修理金額(千元)/台.年</td> |
|||
<td rowspan="3"> |
|||
X |
|||
</td> |
|||
<td>預定</td> |
|||
<?php |
|||
$expected_f['2024'] = [ |
|||
1 => 822, |
|||
2 => 957, |
|||
3 => 1092, |
|||
4 => 1227, |
|||
5 => 1362, |
|||
6 => 1497, |
|||
7 => 2162, |
|||
8 => 2297, |
|||
9 => 2432, |
|||
10 => 2567, |
|||
11 => 2702, |
|||
12 => 2838, |
|||
]; |
|||
$expected_f_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_f_count += $expected_f[$this_year][$i]; |
|||
echo "<td>" . $expected_f[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_f_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>實際</td> |
|||
<?php |
|||
$real_f['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0 |
|||
]; |
|||
$real_f_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$real_f[$this_year][$i] = round(getFixdetails($conn, $this_year, $i)/1000,0); |
|||
$real_f_count += $real_f[$this_year][$i]; |
|||
echo "<td>" . $real_f[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $real_f_count; ?></td> |
|||
</tr> |
|||
<tr> |
|||
<td>達成率</td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td>" . round(($real_f[$this_year][$i] / $expected_f[$this_year][$i]) * 100, 2) . "%" . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo round(($real_f_count / $expected_f_count) * 100, 2) . "%"; ?></td> |
|||
</tr> |
|||
|
|||
<!-- <tr> |
|||
<td rowspan="2">6</td> |
|||
<td>併購</td> |
|||
<td> |
|||
X |
|||
</td> |
|||
<td></td> |
|||
<?php |
|||
$expected_f['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 1000, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0, |
|||
]; |
|||
$expected_f_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_f_count += $expected_f[$this_year][$i]; |
|||
echo "<td>" . $expected_f[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_f_count; ?></td> |
|||
</tr> --> |
|||
|
|||
<!-- <tr> |
|||
<td>未續保流失台數</td> |
|||
<td> |
|||
X |
|||
</td> |
|||
<td>3</td> |
|||
<?php |
|||
$expected_g['2024'] = [ |
|||
1 => 0, |
|||
2 => 0, |
|||
3 => 0, |
|||
4 => 0, |
|||
5 => 0, |
|||
6 => 0, |
|||
7 => 0, |
|||
8 => 0, |
|||
9 => 0, |
|||
10 => 0, |
|||
11 => 0, |
|||
12 => 0, |
|||
]; |
|||
$expected_g_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
$expected_g_count += $expected_g[$this_year][$i]; |
|||
echo "<td>" . $expected_g[$this_year][$i] . "</td>"; |
|||
} |
|||
?> |
|||
<td><?php echo $expected_g_count; ?></td> |
|||
</tr> --> |
|||
|
|||
<!-- <tr> |
|||
<td>7</td> |
|||
<td>目前累計台數(台)</td> |
|||
<td> |
|||
X |
|||
</td> |
|||
<td></td> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td></td>"; |
|||
} |
|||
?> |
|||
<td>sum</td> |
|||
</tr> --> |
|||
|
|||
</tbody> |
|||
</table> |
|||
|
|||
<?php |
|||
include("footer.php"); |
|||
?> |
@ -0,0 +1,280 @@ |
|||
<?php |
|||
// ini_set('display_errors', 'on'); |
|||
include "header.php"; |
|||
|
|||
// 出貨台數 |
|||
function getShipping($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND ( |
|||
real_arrival_date IS NOT NULL |
|||
AND real_arrival_date != '' |
|||
) |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 在裝台數 |
|||
function getInstalling($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND ( |
|||
install_start_date IS NOT NULL |
|||
OR install_start_date != '' |
|||
) |
|||
AND ( |
|||
install_end_date IS NULL |
|||
OR install_end_date = '' |
|||
) |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 完工台數 |
|||
function getInstalling2($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND install_start_date IS NOT NULL |
|||
AND install_start_date != '' |
|||
AND install_end_date IS NOT NULL |
|||
AND install_end_date != '' |
|||
) |
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// QC台數 |
|||
function getQCing($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND end_qc_date IS NOT NULL |
|||
AND end_qc_date != '' |
|||
|
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
|
|||
// 移交台數 |
|||
function getDeliverying($type, $mtype, $year, $month) |
|||
{ |
|||
global $link; |
|||
$sql = " |
|||
SELECT |
|||
count(*) AS all_count |
|||
FROM wipwholestatus |
|||
WHERE status = '1' |
|||
AND real_arrival_date BETWEEN '$year-$month-01' AND '$year-$month-31' |
|||
AND delivery_date IS NOT NULL |
|||
AND delivery_date != '' |
|||
|
|||
"; |
|||
$sql .= !empty($type) ? " AND contract_type = '$type'" : ""; |
|||
$sql .= !empty($mtype) ? " AND renovate_type Like '%$mtype%'" : ""; |
|||
echo $sql; |
|||
echo "<br>"; |
|||
$result = mysqli_query($link, $sql); |
|||
$data = mysqli_fetch_array($result, MYSQLI_ASSOC); |
|||
return $data['all_count']; |
|||
} |
|||
$contract_type = [ |
|||
'' => '新梯+汰改', |
|||
'A' => '新梯', |
|||
'B' => '汰改' |
|||
]; |
|||
foreach ($contract_type as $c_val => $c_key) { |
|||
|
|||
?> |
|||
|
|||
<table class="table table-striped table-bordered" style="width:98.5%;overflow-x:auto"> |
|||
<thead> |
|||
<tr> |
|||
<th style='text-align:center;vertical-align:middle;' colspan='15'> |
|||
<h4>出貨完工推移表(<?php echo $c_key; ?>)</h4> |
|||
</th> |
|||
</tr> |
|||
<tr> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;' rowspan='2'>階段台數</th> |
|||
<th style='text-align:center;width:150px;vertical-align:middle;' rowspan='2'>年度</th> |
|||
<th style='text-align:center;vertical-align:middle;' colspan='12'>月份</th> |
|||
<th style='text-align:center;vertical-align:middle;' rowspan='2'>合計</th> |
|||
</tr> |
|||
<tr> |
|||
<?php |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
echo "<td style='text-align:center;'>" . $i . "月</td>"; |
|||
} |
|||
?> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<?php |
|||
$type_arr = [ |
|||
'A' => '出貨台數', |
|||
'B' => '在裝台數', |
|||
'C' => '完工台數', |
|||
'D' => 'QC台數', |
|||
'E' => '移交台數' |
|||
]; |
|||
foreach ($type_arr as $val => $key) { |
|||
?> |
|||
<tr> |
|||
<td style='text-align:center;vertical-align:middle;' rowspan='2'> |
|||
<?php |
|||
echo $key; |
|||
echo "<br/>"; |
|||
if ($val == 'A') |
|||
echo "<span style='font-size:12px;'>有出貨日</span>"; |
|||
if ($val == 'B') |
|||
echo "<span style='font-size:12px;'>有安裝開工日,沒安裝完工日</span> "; |
|||
if ($val == 'C') |
|||
echo "<span style='font-size:12px;'>有安裝完工日</span> "; |
|||
if ($val == 'D') |
|||
echo "<span style='font-size:12px;'>有QC完工日</span> "; |
|||
if ($val == 'E') |
|||
echo "<span style='font-size:12px;'>移交日</span> "; |
|||
?> |
|||
|
|||
</td> |
|||
<td>前一年度(<?php echo (date("Y") - 1); ?>)</td> |
|||
<?php |
|||
$a_count = 0; |
|||
$b_count = 0; |
|||
$c_count = 0; |
|||
$d_count = 0; |
|||
$e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
if ($val == 'A') { |
|||
$a = getShipping($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$a_count += $a; |
|||
echo '<td style="text-align:center;">' . $a . '</td>'; |
|||
} |
|||
if ($val == 'B') { |
|||
$b = getInstalling($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$b_count += $b; |
|||
echo '<td style="text-align:center;">' . $b . '</td>'; |
|||
} |
|||
if ($val == 'C') { |
|||
$c = getInstalling2($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$c_count += $c; |
|||
echo '<td style="text-align:center;">' . $c . '</td>'; |
|||
} |
|||
if ($val == 'D') { |
|||
$d = getQCing($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$d_count += $d; |
|||
echo '<td style="text-align:center;">' . $d . '</td>'; |
|||
} |
|||
if ($val == 'E') { |
|||
$e = getDeliverying($c_val, null, (date("Y") - 1), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$e_count += $e; |
|||
echo '<td style="text-align:center;">' . $e . '</td>'; |
|||
} |
|||
} |
|||
if ($val == 'A') |
|||
echo '<td style="text-align:center;">' . $a_count . '</td>'; |
|||
if ($val == 'B') |
|||
echo '<td style="text-align:center;">' . $b_count . '</td>'; |
|||
if ($val == 'C') |
|||
echo '<td style="text-align:center;">' . $c_count . '</td>'; |
|||
if ($val == 'D') |
|||
echo '<td style="text-align:center;">' . $d_count . '</td>'; |
|||
if ($val == 'E') |
|||
echo '<td style="text-align:center;">' . $e_count . '</td>'; |
|||
?> |
|||
</tr> |
|||
<tr> |
|||
<td>本年度(<?php echo date("Y"); ?>)</td> |
|||
<?php |
|||
$a_count = 0; |
|||
$b_count = 0; |
|||
$c_count = 0; |
|||
$d_count = 0; |
|||
$e_count = 0; |
|||
for ($i = 1; $i <= 12; $i++) { |
|||
if ($val == 'A') { |
|||
$a = getShipping($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$a_count += $a; |
|||
echo '<td style="text-align:center;">' . $a . '</td>'; |
|||
} |
|||
if ($val == 'B') { |
|||
$b = getInstalling($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$b_count += $b; |
|||
echo '<td style="text-align:center;">' . $b . '</td>'; |
|||
} |
|||
if ($val == 'C') { |
|||
$c = getInstalling2($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$c_count += $c; |
|||
echo '<td style="text-align:center;">' . $c . '</td>'; |
|||
} |
|||
if ($val == 'D') { |
|||
$d = getQCing($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$d_count += $d; |
|||
echo '<td style="text-align:center;">' . $d . '</td>'; |
|||
} |
|||
if ($val == 'E') { |
|||
$e = getDeliverying($c_val, null, (date("Y")), str_pad($i, 2, '0', STR_PAD_LEFT)); |
|||
$e_count += $e; |
|||
echo '<td style="text-align:center;">' . $e . '</td>'; |
|||
} |
|||
} |
|||
if ($val == 'A') |
|||
echo '<td style="text-align:center;">' . $a_count . '</td>'; |
|||
if ($val == 'B') |
|||
echo '<td style="text-align:center;">' . $b_count . '</td>'; |
|||
if ($val == 'C') |
|||
echo '<td style="text-align:center;">' . $c_count . '</td>'; |
|||
if ($val == 'D') |
|||
echo '<td style="text-align:center;">' . $d_count . '</td>'; |
|||
if ($val == 'E') |
|||
echo '<td style="text-align:center;">' . $e_count . '</td>'; |
|||
?> |
|||
</tr> |
|||
<?php |
|||
} |
|||
?> |
|||
</tbody> |
|||
</table> |
|||
<?php |
|||
} |
|||
|
|||
include("footer.php"); |
|||
?> |
Loading…
Reference in new issue