Szatuna/dashboard/monthlystat.php
2026-02-26 14:35:27 +01:00

2623 lines
120 KiB
PHP

<?php
include '../managers/menu.php';
if (!(UserHasPerm('statistics_menu'))) {
StopAndDie();
}
if (isset($_POST["func"])) {
if (htmlspecialchars($_POST["func"]) == "classicProduction") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
SUM(db_start) AS db_start,
SUM(db_cut_r) AS db_cut_r,
SUM(db_cut_l) AS db_cut_l,
SUM(db_press_r) AS db_press_r,
SUM(db_press_l) AS db_press_l,
SUM(db_process_r) AS db_process_r,
SUM(db_process_l) AS db_process_l,
SUM(db_clean_r) AS db_clean_r,
SUM(db_clean_l) AS db_clean_l,
SUM(db_revenue_bulk_r) AS db_revenue_bulk_r,
SUM(db_revenue_bulk_l) AS db_revenue_bulk_l,
SUM(db_table) AS db_table,
(SUM(db_cut_r) + SUM(db_cut_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l)) AS db_scrap,
((SUM(db_cut_r) + SUM(db_cut_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l))) / (SUM(db_cut_r) + SUM(db_cut_l)) * 100 AS percent_scrap,
AVG(date_prepend - date_prep) AS prep_time,
AVG(date_cutend - date_cut) AS cut_time,
AVG(date_pressend - date_press) AS press_time,
AVG(date_processend - date_process) AS process_time,
AVG(date_cleanend - date_clean) AS clean_time,
AVG(date_revenue - date_start) AS product_time,
SUM(date_prepend - date_prep) AS prep_time_sum,
SUM(date_cutend - date_cut) AS cut_time_sum,
SUM(date_pressend - date_press) AS press_time_sum,
SUM(date_processend - date_process) AS process_time_sum,
SUM(date_cleanend - date_clean) AS clean_time_sum,
SUM(date_revenue - date_start) AS product_time_sum,
SUM((tablesize_x * tablesize_y) / 1000000 * db_table) AS tablesize
FROM
production_classic
WHERE
stage = 0 $query_item_id
AND FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59'");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "sportyProduction") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
SUM(db_start) AS db_start,
SUM(db_cut_r) AS db_cut_r,
SUM(db_cut_l) AS db_cut_l,
SUM(db_press_r) AS db_press_r,
SUM(db_press_l) AS db_press_l,
SUM(db_revenue_bulk_r) AS db_revenue_bulk_r,
SUM(db_revenue_bulk_l) AS db_revenue_bulk_l,
SUM(db_table) AS db_table,
(SUM(db_cut_r) + SUM(db_cut_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l)) AS db_scrap,
((SUM(db_cut_r) + SUM(db_cut_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l))) / (SUM(db_cut_r) + SUM(db_cut_l)) * 100 AS percent_scrap,
AVG(date_cutend - date_cut) AS cut_time,
AVG(date_pressend - date_press) AS press_time,
AVG(date_revenue - date_start) AS product_time,
SUM(date_cutend - date_cut) AS cut_time_sum,
SUM(date_pressend - date_press) AS press_time_sum,
SUM(date_revenue - date_start) AS product_time_sum,
SUM((tablesize_x * tablesize_y) / 1000000 * db_table) AS tablesize
FROM
production_sporty
WHERE
stage = 0 $query_item_id
AND FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59'");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "injmoldProduction") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
SUM(db_start) AS db_start,
SUM(db_process_r) AS db_process_r,
SUM(db_process_l) AS db_process_l,
SUM(db_clean_r) AS db_clean_r,
SUM(db_clean_l) AS db_clean_l,
SUM(db_revenue_bulk_r) AS db_revenue_bulk_r,
SUM(db_revenue_bulk_l) AS db_revenue_bulk_l,
SUM(db_granules_used) AS db_granules_used,
SUM(kwh_stop - kwh_start) AS kwh,
(SUM(db_process_r) + SUM(db_process_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l)) AS db_scrap,
((SUM(db_process_r) + SUM(db_process_l)) - (SUM(db_revenue_bulk_r) + SUM(db_revenue_bulk_l))) / (SUM(db_start) * 2) * 100 AS percent_scrap,
AVG(date_prepend - date_prep) AS prep_time,
AVG(date_processend - date_process) AS process_time,
AVG(date_cleanend - date_clean) AS clean_time,
AVG(date_revenue - date_start) AS product_time,
SUM(date_prepend - date_prep) AS prep_time_sum,
SUM(date_processend - date_process) AS process_time_sum,
SUM(date_cleanend - date_clean) AS clean_time_sum,
SUM(date_revenue - date_start) AS product_time_sum
FROM
production_injmold
WHERE
stage = 0 $query_item_id
AND FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59'");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "boxingProduction") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^[0-9]+$' THEN db_revenue
ELSE 0
END) AS db_revenue_classic,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^F[0-9]{4}$' THEN db_revenue
ELSE 0
END) AS db_revenue_sporty,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^FR[0-9]{4}$' THEN db_revenue
ELSE 0
END) AS db_revenue_injmold,
AVG(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^[0-9]+$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_classic,
AVG(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^F[0-9]{4}$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_sporty,
AVG(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^FR[0-9]{4}$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_injmold,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^[0-9]+$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_classic_sum,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^F[0-9]{4}$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_sporty_sum,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^FR[0-9]{4}$' THEN (date_warehouseend - date_start)
ELSE 0
END) AS product_time_injmold_sum
FROM
production_boxing
WHERE
stage = 0 $query_item_id
AND FROM_UNIXTIME(date_warehouseend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_warehouseend) <= '$to_date 23:59:59'");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} if (htmlspecialchars($_POST["func"]) == "classicDetails") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
COALESCE(SUM(CASE WHEN date_cutend IS NOT NULL AND FROM_UNIXTIME(date_cutend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_cutend) <= '$to_date 23:59:59' THEN db_cut_r ELSE 0 END), 0) AS db_cut_r,
COALESCE(SUM(CASE WHEN date_cutend IS NOT NULL AND FROM_UNIXTIME(date_cutend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_cutend) <= '$to_date 23:59:59' THEN db_cut_l ELSE 0 END), 0) AS db_cut_l,
COALESCE(SUM(CASE WHEN date_pressend IS NOT NULL AND FROM_UNIXTIME(date_pressend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_pressend) <= '$to_date 23:59:59' THEN db_press_r ELSE 0 END), 0) AS db_press_r,
COALESCE(SUM(CASE WHEN date_pressend IS NOT NULL AND FROM_UNIXTIME(date_pressend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_pressend) <= '$to_date 23:59:59' THEN db_press_l ELSE 0 END), 0) AS db_press_l,
COALESCE(SUM(CASE WHEN date_processend IS NOT NULL AND FROM_UNIXTIME(date_processend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_processend) <= '$to_date 23:59:59' THEN db_process_r ELSE 0 END), 0) AS db_process_r,
COALESCE(SUM(CASE WHEN date_processend IS NOT NULL AND FROM_UNIXTIME(date_processend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_processend) <= '$to_date 23:59:59' THEN db_process_l ELSE 0 END), 0) AS db_process_l,
COALESCE(SUM(CASE WHEN date_cleanend IS NOT NULL AND FROM_UNIXTIME(date_cleanend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_cleanend) <= '$to_date 23:59:59' THEN db_clean_r ELSE 0 END), 0) AS db_clean_r,
COALESCE(SUM(CASE WHEN date_cleanend IS NOT NULL AND FROM_UNIXTIME(date_cleanend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_cleanend) <= '$to_date 23:59:59' THEN db_clean_l ELSE 0 END), 0) AS db_clean_l
FROM production_classic;
");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "ordersStat") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$sql = mysqli_query($conn,"SELECT
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^[0-9]+$' THEN
CASE WHEN amount_type != 0 THEN amount / 2 ELSE amount END
ELSE 0
END) AS amount_classic,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^CL[P|M]?[0-9]+$' THEN
CASE WHEN amount_type != 0 THEN amount / 2 ELSE amount END
ELSE 0
END) AS amount_climair,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^F[0-9]{4}$' THEN
CASE WHEN amount_type != 0 THEN amount / 2 ELSE amount END
ELSE 0
END) AS amount_sporty,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^FR[0-9]{4}$' THEN
CASE WHEN amount_type != 0 THEN amount / 2 ELSE amount END
ELSE 0
END) AS amount_injmold,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^[0-9]+$' THEN
CASE WHEN amount_type != 0 THEN taken_out / 2 ELSE taken_out END
ELSE 0
END) AS taken_out_classic,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^CL[P|M]?[0-9]+$' THEN
CASE WHEN amount_type != 0 THEN taken_out / 2 ELSE taken_out END
ELSE 0
END) AS taken_out_climair,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^F[0-9]{4}$' THEN
CASE WHEN amount_type != 0 THEN taken_out / 2 ELSE taken_out END
ELSE 0
END) AS taken_out_sporty,
SUM(CASE
WHEN SUBSTRING_INDEX(item_id, '+', 1) REGEXP '^FR[0-9]{4}$' THEN
CASE WHEN amount_type != 0 THEN taken_out / 2 ELSE taken_out END
ELSE 0
END) AS taken_out_injmold
FROM
warehouse_reservation
WHERE
is_active = 0 AND is_deleted = 0 $query_item_id
AND FROM_UNIXTIME(date_end) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_end) <= '$to_date 23:59:59'");
$parameters = mysqli_fetch_array($sql);
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "scrapTable") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$parameters = array();
$query = "SELECT * FROM scrap_removal WHERE FROM_UNIXTIME(date_create) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_create) <= '$to_date 23:59:59' $query_item_id";
if ($result = $conn->query($query)) {
while ($c_scrap = $result->fetch_assoc()) {
$parameters[] = [
"date_create" => date('Y. m. d. H:i:s', $c_scrap['date_create']),
"wh_id" => $c_scrap['wh_id'],
"item_id" => $c_scrap['item_id'],
"right_db" => $c_scrap['right_db'],
"left_db" => $c_scrap['left_db'],
"reason" => $c_scrap['reason']
];
}
}
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "returnGoodsTable") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$parameters = array();
$query = "SELECT * FROM return_goods WHERE FROM_UNIXTIME(return_date) >= '$from_date 00:00:00' AND FROM_UNIXTIME(return_date) <= '$to_date 23:59:59' $query_item_id";
if ($result = $conn->query($query)) {
while ($c_scrap = $result->fetch_assoc()) {
$parameters[] = [
"date_create" => date('Y. m. d.', $c_scrap['return_date']),
"name" => $c_scrap['name'],
"item_id" => $c_scrap['item_id'],
"pack_id" => $c_scrap['pack_id'],
"order_id" => $c_scrap['order_id'],
"return_reason" => $c_scrap['return_reason'],
"is_withdraw" => $c_scrap['is_withdraw'],
"cancellation_invoice" => $c_scrap['cancellation_invoice'],
"is_scrap" => $c_scrap['is_scrap'],
"is_warehoused" => $c_scrap['is_warehoused'],
"reason" => $c_scrap['reason'],
"note" => $c_scrap['note'],
"is_saved" => $c_scrap['is_saved'] == 1 ? 'igen' : 'nem'
];
}
}
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "warrantyTable") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$parameters = array();
$query = "SELECT * FROM warranty_removal WHERE FROM_UNIXTIME(date_create) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_create) <= '$to_date 23:59:59' $query_item_id";
if ($result = $conn->query($query)) {
while ($c_scrap = $result->fetch_assoc()) {
$parameters[] = [
"date_create" => date('Y. m. d. H:i:s', $c_scrap['date_create']),
"name" => $c_scrap['name'],
"mail" => $c_scrap['mail'],
"order_id" => $c_scrap['order_id'],
"item_id" => $c_scrap['item_id'],
"right_db" => $c_scrap['right_db'],
"left_db" => $c_scrap['left_db'],
"reason" => $c_scrap['reason'],
"note" => $c_scrap['note']
];
}
}
echo json_encode(["result" => "ok", "data" => $parameters]);
} else if (htmlspecialchars($_POST["func"]) == "OpenSettings") {
$keys = ['plexi_price', 'granules_price', 'kwh_price'];
$placeholders = implode(',', array_fill(0, count($keys), '?'));
$stmt = $conn->prepare("SELECT param_key, param_value FROM system_params WHERE param_key IN ($placeholders)");
$stmt->bind_param(str_repeat('s', count($keys)), ...$keys);
$stmt->execute();
$result = $stmt->get_result();
$params = [];
while ($row = $result->fetch_assoc()) {
$params[$row['param_key']] = $row['param_value'];
}
echo json_encode([
'plexi_price' => $params['plexi_price'],
'granules_price' => $params['granules_price'],
'kwh_price' => $params['kwh_price'],
'result' => 'ok'
]);
} else if (htmlspecialchars($_POST["func"]) == "SaveSettings") {
$params = [
'plexi_price' => htmlspecialchars($_POST["plexi_price"]),
'granules_price' => htmlspecialchars($_POST["granules_price"]),
'kwh_price' => htmlspecialchars($_POST["kwh_price"])
];
$stmt = $conn->prepare("UPDATE system_params SET param_value = ? WHERE param_key = ?");
foreach ($params as $key => $value) {
$stmt->bind_param('ss', $value, $key);
$stmt->execute();
}
$stmt->close();
echo json_encode(['result' => 'ok']);
} else if (htmlspecialchars($_POST["func"]) == "ExportGenerator") {
$from_date = htmlspecialchars($_POST["from_date"]);
$to_date = htmlspecialchars($_POST["to_date"]);
$type = htmlspecialchars($_POST["type"]);
$get_item_id = htmlspecialchars(str_replace(' ', '+', $_POST['item_id']));
$query_item_id = '';
if ($get_item_id != '') { $query_item_id = 'AND item_id LIKE "%'.$get_item_id.'%"'; }
$parameters = array();
if ($type == 'classic') {
$parameters[] = [
"item_id" => "Cikkszám", "db_start" => "Mennyiség", "date_start" => "Gyártásba került", "date_prep" => "Szerszám elők.",
"date_prepend" => "Szerszám elők. STOP", "remain_r" => "Maradék j", "remain_l" => "Maradék b", "ordered" => "Megrendelve",
"tablesize_x" => "Táblaméret x", "tablesize_y" => "Táblaméret y", "date_cut" => "Terítékfelvágás", "date_cutend" => "Terítékfelvágás STOP",
"db_cut_r" => "Felvágott j", "db_cut_l" => "Felvágott b", "date_press" => "Préslégformázás", "date_pressend" => "Préslégformázás STOP",
"db_press_r" => "Préslégformázott j", "db_press_l" => "Préslégformázott b", "press_machine" => "Présgép", "date_process" => "Feldolgozás",
"date_processend" => "Feldolgozás STOP", "db_process_r" => "Feldolgozott j", "db_process_l" => "Feldolgozott b", "process_mode" => "Feldolgozás módja",
"date_clean" => "Tisztítás", "date_cleanend" => "Tisztítás STOP", "db_clean_r" => "Tisztított j", "db_clean_l" => "Tisztított b",
"date_warehouseend" => "Raktározás / Gyártás lezárva", "db_revenue_bulk_r" => "Raktározva j", "db_revenue_bulk_l" => "Raktározva b", "db_table" => "Táblamennyiség"
];
$query = "SELECT * FROM production_classic WHERE FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59' AND stage = 0 $query_item_id";
if ($result = $conn->query($query)) {
while ($c_export = $result->fetch_assoc()) {
$parameters[] = [
"item_id" => $c_export['item_id'],
"db_start" => $c_export['db_start'],
"date_start" => date('Y. m. d. H:i:s', $c_export['date_start']),
"date_prep" => date('Y. m. d. H:i:s', $c_export['date_prep']),
"date_prepend" => date('Y. m. d. H:i:s', $c_export['date_prepend']),
"remain_r" => $c_export['remain_r'],
"remain_l" => $c_export['remain_l'],
"ordered" => date('Y. m. d. H:i:s', $c_export['ordered']),
"tablesize_x" => $c_export['tablesize_x'],
"tablesize_y" => $c_export['tablesize_y'],
"db_table" => $c_export['db_table'],
"date_cut" => date('Y. m. d. H:i:s', $c_export['date_cut']),
"date_cutend" => date('Y. m. d. H:i:s', $c_export['date_cutend']),
"db_cut_r" => $c_export['db_cut_r'],
"db_cut_l" => $c_export['db_cut_l'],
"date_press" => date('Y. m. d. H:i:s', $c_export['date_press']),
"date_pressend" => date('Y. m. d. H:i:s', $c_export['date_pressend']),
"db_press_r" => $c_export['db_press_r'],
"db_press_l" => $c_export['db_press_l'],
"press_machine" => $c_export['press_machine'],
"date_process" => date('Y. m. d. H:i:s', $c_export['date_process']),
"date_processend" => date('Y. m. d. H:i:s', $c_export['date_processend']),
"db_process_r" => $c_export['db_process_r'],
"db_process_l" => $c_export['db_process_l'],
"process_mode" => $c_export['process_mode'],
"date_clean" => date('Y. m. d. H:i:s', $c_export['date_clean']),
"date_cleanend" => date('Y. m. d. H:i:s', $c_export['date_cleanend']),
"db_clean_r" => $c_export['db_clean_r'],
"db_clean_l" => $c_export['db_clean_l'],
"date_warehouseend" => date('Y. m. d. H:i:s', $c_export['date_warehouseend']),
"db_revenue_bulk_r" => $c_export['db_revenue_bulk_r'],
"db_revenue_bulk_l" => $c_export['db_revenue_bulk_l']
];
}
}
} else if ($type == 'sporty') {
$parameters[] = [
"item_id" => "Cikkszám", "db_start" => "Mennyiség", "date_start" => "Gyártásba került", "remain_r" => "Maradék j",
"remain_l" => "Maradék b", "ordered" => "Megrendelve", "tablesize_x" => "Táblaméret x", "tablesize_y" => "Táblaméret y",
"db_table" => "Táblamennyiség", "date_cut" => "Terítékfelvágás", "date_cutend" => "Terítékfelvágás STOP", "db_cut_r" => "Felvágott j",
"db_cut_l" => "Felvágott b", "date_press" => "Préselés", "date_pressend" => "Préselés STOP", "db_press_r" => "Préselt j",
"db_press_l" => "Préselt b", "date_warehouseend" => "Raktározás / Gyártás lezárva", "db_revenue_bulk_r" => "Raktározva j", "db_revenue_bulk_l" => "Raktározva b"
];
$query = "SELECT * FROM production_sporty WHERE FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59' AND stage = 0 $query_item_id";
if ($result = $conn->query($query)) {
while ($c_export = $result->fetch_assoc()) {
$parameters[] = [
"item_id" => $c_export['item_id'],
"db_start" => $c_export['db_start'],
"date_start" => date('Y. m. d. H:i:s', $c_export['date_start']),
"remain_r" => $c_export['remain_r'],
"remain_l" => $c_export['remain_l'],
"ordered" => date('Y. m. d. H:i:s', $c_export['ordered']),
"tablesize_x" => $c_export['tablesize_x'],
"tablesize_y" => $c_export['tablesize_y'],
"db_table" => $c_export['db_table'],
"date_cut" => date('Y. m. d. H:i:s', $c_export['date_cut']),
"date_cutend" => date('Y. m. d. H:i:s', $c_export['date_cutend']),
"db_cut_r" => $c_export['db_cut_r'],
"db_cut_l" => $c_export['db_cut_l'],
"date_press" => date('Y. m. d. H:i:s', $c_export['date_press']),
"date_pressend" => date('Y. m. d. H:i:s', $c_export['date_pressend']),
"db_press_r" => $c_export['db_press_r'],
"db_press_l" => $c_export['db_press_l'],
"date_warehouseend" => date('Y. m. d. H:i:s', $c_export['date_warehouseend']),
"db_revenue_bulk_r" => $c_export['db_revenue_bulk_r'],
"db_revenue_bulk_l" => $c_export['db_revenue_bulk_l']
];
}
}
} else if ($type == 'injmold') {
$parameters[] = [
"item_id" => "Cikkszám", "db_start" => "Mennyiség", "date_start" => "Gyártásba került", "date_prep" => "Szerszám elők.",
"date_prepend" => "Szerszám elők. STOP", "ordered" => "Megrendelve", "db_granules" => "Rendelt granulátum", "date_process" => "Fröccsöntés",
"date_processend" => "Fröccsöntés STOP", "db_process_r" => "Fröccsöntött j", "db_process_l" => "Fröccsöntött b", "db_granules_used" => "Használt anyag",
"kwh_start" => "Villanyóra start", "kwh_stop" => "Villanyóra stop", "date_clean" => "Utómunka", "date_cleanend" => "Utómunka STOP",
"db_clean_r" => "Utómunka j", "db_clean_l" => "Utómunka b", "date_warehouseend" => "Raktározás / Gyártás lezárva", "db_revenue_bulk_r" => "Raktározva j",
"db_revenue_bulk_l" => "Raktározva b"
];
$query = "SELECT * FROM production_injmold WHERE FROM_UNIXTIME(date_revenue) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_revenue) <= '$to_date 23:59:59' AND stage = 0 $query_item_id";
if ($result = $conn->query($query)) {
while ($c_export = $result->fetch_assoc()) {
$parameters[] = [
"item_id" => $c_export['item_id'],
"db_start" => $c_export['db_start'],
"date_start" => date('Y. m. d. H:i:s', $c_export['date_start']),
"date_prep" => date('Y. m. d. H:i:s', $c_export['date_prep']),
"date_prepend" => date('Y. m. d. H:i:s', $c_export['date_prepend']),
"ordered" => date('Y. m. d. H:i:s', $c_export['ordered']),
"db_granules" => $c_export['db_granules'],
"date_process" => date('Y. m. d. H:i:s', $c_export['date_process']),
"date_processend" => date('Y. m. d. H:i:s', $c_export['date_processend']),
"db_process_r" => $c_export['db_process_r'],
"db_process_l" => $c_export['db_process_l'],
"db_granules_used" => $c_export['db_granules_used'],
"kwh_start" => $c_export['kwh_start'],
"kwh_stop" => $c_export['kwh_stop'],
"date_clean" => date('Y. m. d. H:i:s', $c_export['date_clean']),
"date_cleanend" => date('Y. m. d. H:i:s', $c_export['date_cleanend']),
"db_clean_r" => $c_export['db_clean_r'],
"db_clean_l" => $c_export['db_clean_l'],
"date_warehouseend" => date('Y. m. d. H:i:s', $c_export['date_warehouseend']),
"db_revenue_bulk_r" => $c_export['db_revenue_bulk_r'],
"db_revenue_bulk_l" => $c_export['db_revenue_bulk_l']
];
}
}
} else if ($type == 'boxing') {
$parameters[] = [
"item_id" => 'Cikkszám', "db_start" => 'Mennyiség', "date_start" => 'Dobozolásra került',
"date_warehouseend" => 'Raktározás / Dobozolás lezárva', "db_revenue" => 'Raktározva'
];
$query = "SELECT * FROM production_boxing WHERE FROM_UNIXTIME(date_warehouseend) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_warehouseend) <= '$to_date 23:59:59' AND stage = 0 $query_item_id";
if ($result = $conn->query($query)) {
while ($c_export = $result->fetch_assoc()) {
$parameters[] = [
"item_id" => $c_export['item_id'],
"db_start" => $c_export['db_start'],
"date_start" => date('Y. m. d. H:i:s', $c_export['date_start']),
"date_warehouseend" => date('Y. m. d. H:i:s', $c_export['date_warehouseend']),
"db_revenue" => $c_export['db_revenue']
];
}
}
} else if ($type == 'orders') {
$parameters[] = [
"item_id" => "Cikkszám", "amount" => "Mennyiség db", "reason" => "Rendelés neve / indoklás", "date_create" => "Létrehozva",
"taken_out" => "Kiszedve db", "order_id" => "Rendelés azonosító", "order_name" => "Rendelő neve", "order_mail" => "Rendelő email-címe",
"receipt_method" => "Átvételi mód", "note" => "Megjegyzés", "primary_source" => "Elsődleges forrás", "amount_type" => "Mennyiség fajtája",
"primary_warehouse" => "Elsődleges raktár", "date_end" => "Lezárva", "is_deleted" => "Törölt rendelés", "customer_type" => "Vevőtípus",
];
$query = "SELECT * FROM warehouse_reservation WHERE FROM_UNIXTIME(date_create) >= '$from_date 00:00:00' AND FROM_UNIXTIME(date_create) <= '$to_date 23:59:59' AND is_active = 0 $query_item_id";
if ($result = $conn->query($query)) {
while ($c_export = $result->fetch_assoc()) {
$amount_type = 'pár';
if ($c_export['amount_type'] == "1") {
$amount_type = 'jobb';
} else if ($c_export['amount_type'] == "2") {
$amount_type = 'bal';
}
$parameters[] = [
"item_id" => $c_export['item_id'],
"amount" => $c_export['amount'],
"reason" => $c_export['reason'],
"date_create" => date('Y. m. d. H:i:s', $c_export['date_create']),
"taken_out" => $c_export['taken_out'],
"order_id" => $c_export['order_id'],
"order_name" => $c_export['order_name'],
"order_mail" => $c_export['order_mail'],
"customer_type" => $c_export['customer_type'],
"receipt_method" => $c_export['receipt_method'],
"note" => $c_export['note'],
"primary_source" => $c_export['primary_source'] == 1 ? 'fóliás' : 'dobozos',
"amount_type" => $amount_type,
"primary_warehouse" => $c_export['primary_warehouse'],
"date_end" => date('Y. m. d. H:i:s', $c_export['date_end']),
"is_deleted" => $c_export['is_deleted'] == 1 ? 'igen' : 'nem'
];
}
}
}
echo json_encode(["result" => "ok", "data" => $parameters]);
}
exit();
}
/* Ár lekérés */
$keys = ['plexi_price', 'granules_price', 'kwh_price'];
$placeholders = implode(',', array_fill(0, count($keys), '?'));
$stmt = $conn->prepare("SELECT param_key, param_value FROM system_params WHERE param_key IN ($placeholders)");
$stmt->bind_param(str_repeat('s', count($keys)), ...$keys);
$stmt->execute();
$result = $stmt->get_result();
$PriceParams = [];
while ($row = $result->fetch_assoc()) {
$PriceParams[$row['param_key']] = $row['param_value'];
}
?>
<!DOCTYPE html>
<html lang="hu" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../css/panel.css">
<script src="../js/feather-icons.js"></script>
<title>Kezelőfelület</title>
</head>
<style>
.container {
max-width: 1400px;
margin: 0 auto;
}
header {
margin-bottom: 32px;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 16px;
}
h1 {
font-size: 28px;
font-weight: 600;
}
.controls {
display: flex;
gap: 12px;
align-items: center;
flex-wrap: wrap;
}
.tabs {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
margin-bottom: 24px;
border-bottom: 1px solid #bdc3c7;
padding-bottom: 2px;
}
.tab {
color: #333333;
padding: 12px 24px;
background: none;
border: none;
border-bottom: 2px solid transparent;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
}
.tab.active {
color: var(--panelcolor);
border-bottom-color: var(--panelcolor);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
.cards-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin-bottom: 20px;
}
.card {
background: var(--toppanel);
border: 1px solid #dddddd;
border-radius: 5px;
padding: 24px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
position: relative;
}
.card .export {
position: absolute;
right: 15px;
top: 15px;
}
.loading .load {
display: flex;
}
.load {
border-radius: 5px;
position: absolute;
inset: 0;
background: rgba(255,255,255,0.5);
backdrop-filter: blur(3px);
display: none;
align-items: center;
justify-content: center;
z-index: 10;
}
.load::before {
content: '';
width: 30px;
height: 4px;
background: var(--panelcolor);
position: relative;
animation: lineToSquare 2s ease-in-out infinite;
}
@keyframes lineToSquare {
0% {
width: 30px; height: 4px;
transform: rotate(0deg);
border-radius: 2;
}
20% {
width: 30px; height: 4px;
transform: rotate(90deg);
border-radius: 2;
}
40% {
width: 30px; height: 30px;
transform: rotate(90deg);
border-radius: 5px;
}
60% {
width: 30px; height: 30px;
transform: rotate(180deg);
border-radius: 5px;
}
80% {
width: 30px; height: 30px;
transform: rotate(180deg);
border-radius: 50%;
}
100% {
width: 30px; height: 4px;
transform: rotate(180deg);
border-radius: 2;
}
}
.card h3 {
font-size: 16px;
font-weight: 600;
margin-bottom: 16px;
}
.stat-row {
display: flex;
justify-content: space-between;
padding: 8px 0;
border-bottom: 1px solid #bdc3c7;
}
.stat-row:last-child {
border-bottom: none;
}
.stat-label {
font-size: 14px;
}
.stat-value {
font-weight: 600;
font-size: 14px;
}
.stat-value.highlight {
color: var(--panelcolor);
}
.stat-value.warning {
color: rgba(168, 75, 47, 1);
}
.stat-value.error {
color: #FF0000;
}
.summary-card {
background: var(--panelcolor);
color: #ffffff;
grid-column: 1 / -1;
margin-bottom: 20px;
}
.summary-card h3 {
color: #ffffff;
}
.summary-card .stat-row {
border-bottom-color: rgba(255, 255, 255, 0.2);
}
.summary-card .stat-label,
.summary-card .stat-value {
color: #ffffff;
}
.chart-container {
background: var(--toppanel);
border: 1px solid #ddd;
border-radius: 5px;
padding: 24px;
margin-bottom: 20px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
position: relative;
}
.chart-container h3 {
font-size: 18px;
margin-bottom: 20px;
}
.bar-chart {
display: flex;
flex-direction: column;
gap: 16px;
}
.bar-item {
display: flex;
align-items: center;
gap: 12px;
}
.bar-label {
min-width: 120px;
font-size: 14px;
}
.bar-visual {
flex: 1;
height: 32px;
background: #bdc3c7;
border-radius: 5px;
position: relative;
overflow: hidden;
}
.bar-fill {
height: 100%;
background: var(--panelcolor);
border-radius: 5px;
transition: width 0.5s ease;
display: flex;
align-items: center;
padding: 0 12px;
color: #ffffff;
font-size: 12px;
font-weight: 600;
}
.time-breakdown {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 12px;
}
.time-item {
background: var(--bgcolor);
padding: 12px;
border-radius: 5px;
border: 1px solid #ddd;
}
.time-item-label {
font-size: 12px;
margin-bottom: 4px;
}
.time-item-value {
font-size: 18px;
font-weight: 600;
}
.export-btn {
margin-left: auto;
display: flex;
gap: 8px;
}
@media (max-width: 768px) {
.cards-grid {
grid-template-columns: 1fr;
}
header {
flex-direction: column;
align-items: flex-start;
}
.controls {
width: 100%;
}
}
</style>
<body>
<?php echo $menuhtml;?>
<div class="window closed" id="win">
<div class="topbar">
<p id="wintitle">Title</p>
<div class="btn fullscrn" onclick="fullscrn();" id="fullscrnbtn"></div>
<div class="btn close" onclick="closewin();"></div>
</div>
<div class="wapp" id="winapp"><div id="errorDIV"></div></div>
<div class="loading" id="winloading"></div>
</div>
<div class="loadingBG" id="loadingBG"><img src="../img/loading.gif"></div>
<div class="content">
<div id="errorDIV" style="z-index: 100; top: 50px; position: fixed; width: calc(100% - 260px);"></div>
<!-- Tartalmi rész kezdete -->
<div class="container">
<header>
<h1>Statisztika</h1>
<div class="controls">
<input type="date" id="filter-date-from" style="height: 17px" value="<?php echo date('Y-m-d', strtotime('first day of last month'));?>">
<input type="date" id="filter-date-to" style="height: 17px" value="<?php echo date('Y-m-d', strtotime('last day of last month'));?>">
<input type="text" id="filter-item_id" placeholder="Cikkszám keresés...">
<button onclick="loadData()">Betöltés</button>
</div>
</header>
<div class="tabs">
<div>
<button class="tab active" onclick="switchTab('gyartas')">Gyártás</button>
<button class="tab" onclick="switchTab('dobozolas')">Dobozolás</button>
<button class="tab" onclick="switchTab('rendelesek')">Rendelések</button>
<button class="tab" onclick="switchTab('selejt')">Selejt</button>
<button class="tab" onclick="switchTab('visszaru')">Visszáru</button>
<button class="tab" onclick="switchTab('garancia')">Garancia</button>
</div>
<a title="Beállítások"><i class="icon" onclick="OpenSettings();" style="width: 35px; height: 35px; opacity: 0.6;"><i data-feather="settings"></i></i></a>
</div>
<!-- Gyártás TAB -->
<div id="gyartas" class="tab-content active">
<!-- Cikkszám részletes nézet -->
<div id="item-detail-view" class="card" style="display: none; margin-bottom: 24px; border: 2px solid var(--panelcolor);">
<div class="load"></div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
<h3 style="margin: 0;">Részletes adatok: <span id="detail-item-id" style="color: var(--panelcolor);"></span></h3>
<button onclick="clearSearch()">Vissza az összesítőhöz</button>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px;">
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Gyártási adatok</h4>
<div class="stat-row">
<span class="stat-label">Darabszám</span>
<span class="stat-value highlight" id="detail-quantity">13 db</span>
</div>
<div class="stat-row">
<span class="stat-label">Selejt</span>
<span class="stat-value error" id="detail-reject">2 db</span>
</div>
<div class="stat-row">
<span class="stat-label">Selejt %</span>
<span class="stat-value warning" id="detail-reject-pct">1 %</span>
</div>
<div class="stat-row">
<span class="stat-label">Felhasznált alapanyag</span>
<span class="stat-value" id="detail-quantity">5 tábla</span>
</div>
<div class="stat-row">
<span class="stat-label">Alapanyag ár</span>
<span class="stat-value" id="detail-quantity">3000 HUF</span>
</div>
</div>
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Gyártás részletek</h4>
<div class="stat-row">
<span class="stat-label">Felvágott</span>
<span class="stat-value" id="detail-material">5</span>
</div>
<div class="stat-row">
<span class="stat-label">Préselt</span>
<span class="stat-value" id="detail-material-cost">4</span>
</div>
<div class="stat-row">
<span class="stat-label">Feldolgozott</span>
<span class="stat-value" id="detail-energy">3</span>
</div>
<div class="stat-row">
<span class="stat-label">Tisztított</span>
<span class="stat-value" id="detail-energy">2</span>
</div>
<div class="stat-row">
<span class="stat-label">Raktározott</span>
<span class="stat-value" id="detail-energy">1</span>
</div>
</div>
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Gyártási lépések ideje</h4>
<div class="stat-row">
<span class="stat-label">Szerszám előkészítése</span>
<span class="stat-value" id="detail-total-time">10:00</span>
</div>
<div class="stat-row">
<span class="stat-label">Terítékfelvágás</span>
<span class="stat-value" id="detail-time-cut">3:00</span>
</div>
<div class="stat-row">
<span class="stat-label">Préslégformázás</span>
<span class="stat-value" id="detail-time-press">7:10</span>
</div>
<div class="stat-row">
<span class="stat-label">Feldolgozás</span>
<span class="stat-value" id="detail-time-process">5:47</span>
</div>
<div class="stat-row">
<span class="stat-label">Tisztítás</span>
<span class="stat-value" id="detail-time-process">3:42</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljes gyártás ideje</span>
<span class="stat-value" id="detail-time-process">50:10</span>
</div>
</div>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px;">
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Dobozolási statisztika</h4>
<div class="stat-row">
<span class="stat-label">Összes raktárra helyezett mennyiség</span>
<span class="stat-value" id="detail-total-time">14</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási átlagidő</span>
<span class="stat-value" id="detail-time-cut">12:10</span>
</div>
</div>
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Rendelési statisztika</h4>
<div class="stat-row">
<span class="stat-label">Rendelt pár mennyisége</span>
<span class="stat-value" id="detail-total-time">3</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített pár mennyisége</span>
<span class="stat-value" id="detail-time-cut">3</span>
</div>
</div>
<div>
<h4 style="font-size: 14px; margin-bottom: 12px;">Ügyintézési statisztika</h4>
<div class="stat-row">
<span class="stat-label">Selejt kivétek</span>
<span class="stat-value" id="detail-total-time">0</span>
</div>
<div class="stat-row">
<span class="stat-label">Visszárú</span>
<span class="stat-value" id="detail-time-cut">1</span>
</div>
<div class="stat-row">
<span class="stat-label">Garanciális</span>
<span class="stat-value" id="detail-time-cut">1</span>
</div>
</div>
</div>
</div>
<!-- Gyártási Statisztika -->
<div class="summary-card card" id="summary-view">
<div class="load"></div>
<h3>Összesített Gyártási Adatok</h3>
<div class="stat-row">
<span class="stat-label">Összes gyártott darab</span>
<span class="stat-value" id="total-produced">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Összes selejt</span>
<span class="stat-value error" id="total-reject">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Átlagos selejt %</span>
<span class="stat-value warning" id="avg-reject-pct">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljes anyagköltség</span>
<span class="stat-value" id="total-material-cost">-</span>
</div>
</div>
<div class="cards-grid">
<div class="card" id="classicProduction">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="ExportGenerator('classic');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<h3>Classic</h3>
<div class="stat-row">
<span class="stat-label">Felvágott</span>
<span class="stat-value" id="classic-cut">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Préselt</span>
<span class="stat-value" id="classic-pressed">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Feldolgozott</span>
<span class="stat-value" id="classic-processed">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Tisztított</span>
<span class="stat-value" id="classic-cleaned">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Raktározott</span>
<span class="stat-value highlight" id="classic-revenued">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Selejt</span>
<span class="stat-value error" id="classic-reject">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Alapanyag</span>
<span class="stat-value" id="classic-material">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Anyagköltség</span>
<span class="stat-value" id="classic-cost">-</span>
</div>
</div>
<div class="card" id="sportyProduction">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="ExportGenerator('sporty');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<h3>Sporty</h3>
<div class="stat-row">
<span class="stat-label">Felvágott</span>
<span class="stat-value" id="sporty-cut">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Préselt</span>
<span class="stat-value" id="sporty-pressed">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Raktározott</span>
<span class="stat-value highlight" id="sporty-revenued">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Selejt</span>
<span class="stat-value error" id="sporty-reject">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Alapanyag</span>
<span class="stat-value" id="sporty-material">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Anyagköltség</span>
<span class="stat-value" id="sporty-cost">-</span>
</div>
</div>
<div class="card" id="injmoldProduction">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="ExportGenerator('injmold');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<h3>Fröccsöntött</h3>
<div class="stat-row">
<span class="stat-label">Fröccsöntött</span>
<span class="stat-value" id="injmold-molded">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Tisztított</span>
<span class="stat-value" id="injmold-cleaned">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Raktározott</span>
<span class="stat-value highlight" id="injmold-revenued">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Selejt</span>
<span class="stat-value error" id="injmold-reject">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Granulátum</span>
<span class="stat-value" id="injmold-granulate">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Anyagköltség</span>
<span class="stat-value" id="injmold-material-cost">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Áram</span>
<span class="stat-value" id="injmold-energy">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Áramköltség</span>
<span class="stat-value" id="injmold-energy-cost">-</span>
</div>
</div>
</div>
<div class="chart-container" id="classicDetails">
<div class="load"></div>
<h3>Lezárt munkafolyamatok - Classic</h3>
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Felvágott</div>
<div class="time-item-value" id="classic-cut-db">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Préselt</div>
<div class="time-item-value" id="classic-press-db">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Feldolgozott</div>
<div class="time-item-value" id="classic-process-db">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Tisztított</div>
<div class="time-item-value" id="classic-clean-db">-</div>
</div>
</div>
</div>
<div class="chart-container" id="classicTime">
<div class="load"></div>
<h3>Időbontás - Classic</h3>
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Átlag szerszám előkészítés</div>
<div class="time-item-value" id="classic-time-1">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag terítékfelvágás</div>
<div class="time-item-value" id="classic-time-2">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag préslégformázás</div>
<div class="time-item-value" id="classic-time-3">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag feldolgozás</div>
<div class="time-item-value" id="classic-time-4">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag tisztítás</div>
<div class="time-item-value" id="classic-time-5">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlagosan összesen</div>
<div class="time-item-value" id="classic-time-6">-</div>
</div>
</div>
<br clear="all">
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Összesen szerszám előkészítés</div>
<div class="time-item-value" id="classic-time-1-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen terítékfelvágás</div>
<div class="time-item-value" id="classic-time-2-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen préslégformázás</div>
<div class="time-item-value" id="classic-time-3-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen feldolgozás</div>
<div class="time-item-value" id="classic-time-4-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen tisztítás</div>
<div class="time-item-value" id="classic-time-5-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen</div>
<div class="time-item-value" id="classic-time-6-sum">-</div>
</div>
</div>
</div>
<div class="chart-container" id="sportyTime">
<div class="load"></div>
<h3>Időbontás - Sporty</h3>
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Átlag terítékfelvágás</div>
<div class="time-item-value" id="sporty-time-1">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag préselés</div>
<div class="time-item-value" id="sporty-time-2">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlagosan összesen</div>
<div class="time-item-value" id="sporty-time-3">-</div>
</div>
</div>
<br clear="all">
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Összesen terítékfelvágás</div>
<div class="time-item-value" id="sporty-time-1-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen préselés</div>
<div class="time-item-value" id="sporty-time-2-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen</div>
<div class="time-item-value" id="sporty-time-3-sum">-</div>
</div>
</div>
</div>
<div class="chart-container" id="injmoldTime">
<div class="load"></div>
<h3>Időbontás - Fröccsöntött</h3>
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Átlag szerszám előkészítés</div>
<div class="time-item-value" id="injmold-time-1">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag fröccsöntés</div>
<div class="time-item-value" id="injmold-time-2">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlag utómunka</div>
<div class="time-item-value" id="injmold-time-3">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Átlagosan összesen</div>
<div class="time-item-value" id="injmold-time-4">-</div>
</div>
</div>
<br clear="all">
<div class="time-breakdown">
<div class="time-item">
<div class="time-item-label">Összesen szerszám előkészítés</div>
<div class="time-item-value" id="injmold-time-1-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen fröccsöntés</div>
<div class="time-item-value" id="injmold-time-2-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">Összesen utómunka</div>
<div class="time-item-value" id="injmold-time-3-sum">-</div>
</div>
<div class="time-item">
<div class="time-item-label">ősszesen</div>
<div class="time-item-value" id="injmold-time-4-sum">-</div>
</div>
</div>
</div>
<div class="chart-container" id="scrapChart">
<div class="load"></div>
<h3>Selejt Összehasonlítás</h3>
<div class="bar-chart">
<div class="bar-item">
<div class="bar-label">Classic</div>
<div class="bar-visual">
<div class="bar-fill" style="width: 92%;" id="classic-bar">4.6%</div>
</div>
</div>
<div class="bar-item">
<div class="bar-label">Sporty</div>
<div class="bar-visual">
<div class="bar-fill" style="width: 62%;" id="sporty-bar">3.1%</div>
</div>
</div>
<div class="bar-item">
<div class="bar-label">Fröccsöntött</div>
<div class="bar-visual">
<div class="bar-fill" style="width: 48%;" id="injmold-bar">2.4%</div>
</div>
</div>
</div>
</div>
</div>
<!-- Dobozolás TAB -->
<div id="dobozolas" class="tab-content">
<div class="cards-grid">
<div class="card boxingProduction">
<div class="load"></div>
<h3>Classic Dobozolás</h3>
<div class="stat-row">
<span class="stat-label">Raktárra helyezett</span>
<span class="stat-value highlight" id="pack-classic-qty">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási átlagidő</span>
<span class="stat-value" id="pack-classic-time">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási összidő</span>
<span class="stat-value" id="pack-classic-time-sum">-</span>
</div>
</div>
<div class="card boxingProduction">
<div class="load"></div>
<h3>Sporty Dobozolás</h3>
<div class="stat-row">
<span class="stat-label">Raktárra helyezett</span>
<span class="stat-value highlight" id="pack-sporty-qty">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási átlagidő</span>
<span class="stat-value" id="pack-sporty-time">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási összidő</span>
<span class="stat-value" id="pack-sporty-time-sum">-</span>
</div>
</div>
<div class="card boxingProduction">
<div class="load"></div>
<h3>Fröccsöntött Dobozolás</h3>
<div class="stat-row">
<span class="stat-label">Raktárra helyezett</span>
<span class="stat-value highlight" id="pack-injmold-qty">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási átlagidő</span>
<span class="stat-value" id="pack-injmold-time">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Dobozolási összidő</span>
<span class="stat-value" id="pack-injmold-time-sum">-</span>
</div>
</div>
</div>
<div class="card boxingProduction">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="ExportGenerator('boxing');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<h3>Adatok letöltése</h3>
<div class="stat-row">
<span class="stat-label">Excel export</span>
<span class="stat-value highlight" onclick="ExportGenerator('boxing');" style="cursor: pointer;">Letöltés</span>
</div>
</div>
</div>
<!-- Rendelések TAB -->
<div id="rendelesek" class="tab-content">
<div class="cards-grid">
<div class="card ordersStat">
<div class="load"></div>
<h3>Classic Rendelések</h3>
<div class="stat-row">
<span class="stat-label">Rendelt pár</span>
<span class="stat-value" id="order-classic-ordered">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített</span>
<span class="stat-value highlight" id="order-classic-fulfilled">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített %</span>
<span class="stat-value" id="order-classic-fulfilled-percent">-</span>
</div>
</div>
<div class="card ordersStat">
<div class="load"></div>
<h3>Sporty Rendelések</h3>
<div class="stat-row">
<span class="stat-label">Rendelt pár</span>
<span class="stat-value" id="order-sporty-ordered">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített</span>
<span class="stat-value highlight" id="order-sporty-fulfilled">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített %</span>
<span class="stat-value" id="order-sporty-fulfilled-percent">-</span>
</div>
</div>
<div class="card ordersStat">
<div class="load"></div>
<h3>Fröccsöntött Rendelések</h3>
<div class="stat-row">
<span class="stat-label">Rendelt pár</span>
<span class="stat-value" id="order-injmold-ordered">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített</span>
<span class="stat-value highlight" id="order-injmold-fulfilled">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített %</span>
<span class="stat-value" id="order-injmold-fulfilled-percent">-</span>
</div>
</div>
<div class="card ordersStat">
<div class="load"></div>
<h3>ClimAir Rendelések</h3>
<div class="stat-row">
<span class="stat-label">Rendelt pár</span>
<span class="stat-value" id="order-climair-ordered">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített</span>
<span class="stat-value highlight" id="order-climair-fulfilled">-</span>
</div>
<div class="stat-row">
<span class="stat-label">Teljesített %</span>
<span class="stat-value" id="order-climair-fulfilled-percent">-</span>
</div>
</div>
</div>
<div class="card ordersStat">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="ExportGenerator('orders');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<h3>Adatok letöltése</h3>
<div class="stat-row">
<span class="stat-label">Excel export</span>
<span class="stat-value highlight" onclick="ExportGenerator('orders');" style="cursor: pointer;">Letöltés</span>
</div>
</div>
</div>
<!-- Selejt TAB -->
<div id="selejt" class="tab-content">
<div class="card" id="scrapTable">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="exportCSV('selejt');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">
<h3 style="margin: 0;">Selejt Kivét Lista</h3>
</div>
<table id="selejt-table">
<thead>
<tr>
<th>Dátum</th>
<th>Raktárhely</th>
<th>Cikkszám</th>
<th>Jobb oldal</th>
<th>Bal oldal</th>
<th>Selejt oka</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<!-- Visszáru TAB -->
<div id="visszaru" class="tab-content">
<div class="card" id="returnGoodsTable">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="exportCSV('visszaru');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">
<h3 style="margin: 0;">Visszáru Lista</h3>
</div>
<table id="visszaru-table">
<thead>
<tr>
<th>Dátum</th>
<th>Név</th>
<th>Cikkszám</th>
<th>Csomagszám</th>
<th>Rendelés szám</th>
<th>Visszaküldés oka</th>
<th>Elállási nyilatkozat</th>
<th>Sztornó számla készült</th>
<th>Selejt</th>
<th>Visszaraktam polcra és bevételeztem</th>
<th>Elállás oka</th>
<th>Megjegyzés</th>
<th>Lezárva</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<!-- Garancia TAB -->
<div id="garancia" class="tab-content">
<div class="card" id="warrantyTable">
<div class="load"></div>
<a title="Excel export" class="export"><i class="icon" onclick="exportCSV('garancia');" style="width: 20px; height: 20px; opacity: 0.6;"><i data-feather="download" style="width: 20px; height:20px;"></i></i></a>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">
<h3 style="margin: 0;">Garanciális Lista</h3>
</div>
<table id="garancia-table">
<thead>
<tr>
<th>Dátum</th>
<th>Ügyfél neve</th>
<th>Email</th>
<th>Rendelés azonosító</th>
<th>Cikkszám</th>
<th>Jobb oldal</th>
<th>Bal oldal</th>
<th>Kivét oka</th>
<th>Megjegyzés</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<br clear="all"><br><br>
<!-- Tartalmi rész vége -->
</div>
<script src="../js/default.js" type="text/javascript"></script>
<script src="../js/xlsx.full.min.js" type="text/javascript"></script>
<script type="text/javascript">
feather.replace();
function switchTab(tabName) {
document.querySelectorAll('.tab').forEach(tab => tab.classList.remove('active'));
document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
event.target.classList.add('active');
document.getElementById(tabName).classList.add('active');
}
var from_date = '';
var to_date = '';
var get_item_id = '';
function loadData() {
from_date = document.getElementById('filter-date-from').value;
to_date = document.getElementById('filter-date-to').value;
get_item_id = document.getElementById('filter-item_id').value.trim();
/*if (get_item_id) {
loadItemDetail();
} else {
showSummaryView();
}*/
showSummaryView();
}
function loadItemDetail() {
document.getElementById('summary-view').style.display = 'none';
document.querySelector('.cards-grid').style.display = 'none';
document.querySelectorAll('.chart-container').forEach(el => el.style.display = 'none');
document.getElementById('item-detail-view').style.display = 'block';
switchTab('gyartas');
}
var isClassic = false;
var isSporty = false;
var isInjmold = false;
var MaxScrap = 0;
var ProdData = { classic: {}, sporty: {}, injmold: {} };
var PriceList = { plexi_price: <?php echo $PriceParams['plexi_price']; ?>, granules_price: <?php echo $PriceParams['granules_price']; ?>, kwh_price: <?php echo $PriceParams['kwh_price']; ?> };
function showSummaryView() {
document.getElementById('item-detail-view').style.display = 'none';
document.getElementById('summary-view').style.display = 'block';
document.querySelector('.cards-grid').style.display = 'grid';
document.querySelectorAll('.chart-container').forEach(el => el.style.display = 'block');
isClassic = false;
isSporty = false;
isInjmold = false;
MaxScrap = 0;
ProdData = { classic: {}, sporty: {}, injmold: {} };
document.getElementById('scrapChart').classList.add('loading');
document.getElementById('summary-view').classList.add('loading');
classicProduction();
classicDetails();
sportyProduction();
injmoldProduction();
boxingProduction();
ordersStat();
scrapTable();
returnGoodsTable();
warrantyTable();
}
function formatTime(seconds) {
const days = Math.floor(seconds / 86400);
const hours = Math.floor((seconds % 86400) / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secs = seconds % 60;
return `${days} <span style="opacity: 0.5;">nap</span> ${hours.toString().padStart(2, '0')} <span style="opacity: 0.5;">óra</span> ${minutes.toString().padStart(2, '0')} <span style="opacity: 0.5;">perc</span>`;
}
function formatDecimal(num, decimals = 1) {
const rounded = Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);
if (Number.isInteger(num)) return num;
const str = rounded.toFixed(decimals);
return str.replace(/\.?0+$/, '');
}
/* Statisztikák lekérése */
function classicProduction() {
document.getElementById('classicProduction').classList.add('loading');
document.getElementById('classicTime').classList.add('loading');
const body = 'func=classicProduction&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("classic-cut").innerHTML = `${response.data.db_cut_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_cut_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-pressed").innerHTML = `${response.data.db_press_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_press_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-processed").innerHTML = `${response.data.db_process_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_process_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-cleaned").innerHTML = `${response.data.db_clean_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_clean_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-revenued").innerHTML = `${response.data.db_revenue_bulk_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_revenue_bulk_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-reject").innerHTML = `${response.data.db_scrap} db (${formatDecimal(response.data.percent_scrap, 2)}%)`;
document.getElementById("classic-material").innerHTML = `${formatDecimal(response.data.tablesize, 2)} <span style="opacity: 0.5; margin-right: 15px;">m<sup style="position: absolute;">2</sup></span>${response.data.db_table} <span style="opacity: 0.5;">tábla</span>`;
document.getElementById('classicProduction').classList.remove('loading');
document.getElementById("classic-time-1").innerHTML = formatTime(response.data.prep_time);
document.getElementById("classic-time-2").innerHTML = formatTime(response.data.cut_time);
document.getElementById("classic-time-3").innerHTML = formatTime(response.data.press_time);
document.getElementById("classic-time-4").innerHTML = formatTime(response.data.process_time);
document.getElementById("classic-time-5").innerHTML = formatTime(response.data.clean_time);
document.getElementById("classic-time-6").innerHTML = formatTime(response.data.product_time);
document.getElementById("classic-time-1-sum").innerHTML = formatTime(response.data.prep_time_sum);
document.getElementById("classic-time-2-sum").innerHTML = formatTime(response.data.cut_time_sum);
document.getElementById("classic-time-3-sum").innerHTML = formatTime(response.data.press_time_sum);
document.getElementById("classic-time-4-sum").innerHTML = formatTime(response.data.process_time_sum);
document.getElementById("classic-time-5-sum").innerHTML = formatTime(response.data.clean_time_sum);
document.getElementById("classic-time-6-sum").innerHTML = formatTime(response.data.product_time_sum);
document.getElementById('classicTime').classList.remove('loading');
isClassic = true;
ProdData.classic.db_scrap = parseInt(response.data.db_scrap);
ProdData.classic.percent_scrap = parseFloat(response.data.percent_scrap);
ProdData.classic.db_revenue = Math.min(parseInt(response.data.db_revenue_bulk_r), parseInt(response.data.db_revenue_bulk_l));
ProdData.classic.tablesize = parseFloat(response.data.tablesize);
if (MaxScrap < parseFloat(response.data.percent_scrap)) MaxScrap = parseFloat(response.data.percent_scrap);
if (isClassic && isSporty && isInjmold) summaryProduction();
calcPrice('classic');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function sportyProduction() {
document.getElementById('sportyProduction').classList.add('loading');
document.getElementById('sportyTime').classList.add('loading');
const body = 'func=sportyProduction&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("sporty-cut").innerHTML = `${response.data.db_cut_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_cut_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("sporty-pressed").innerHTML = `${response.data.db_press_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_press_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("sporty-revenued").innerHTML = `${response.data.db_revenue_bulk_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_revenue_bulk_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("sporty-reject").innerHTML = `${response.data.db_scrap} db (${formatDecimal(response.data.percent_scrap, 2)}%)`;
document.getElementById("sporty-material").innerHTML = `${formatDecimal(response.data.tablesize, 2)} <span style="opacity: 0.5; margin-right: 15px;">m<sup style="position: absolute;">2</sup></span>${response.data.db_table} <span style="opacity: 0.5;">tábla</span>`;
document.getElementById('sportyProduction').classList.remove('loading');
document.getElementById("sporty-time-1").innerHTML = formatTime(response.data.cut_time);
document.getElementById("sporty-time-2").innerHTML = formatTime(response.data.press_time);
document.getElementById("sporty-time-3").innerHTML = formatTime(response.data.product_time);
document.getElementById("sporty-time-1-sum").innerHTML = formatTime(response.data.cut_time_sum);
document.getElementById("sporty-time-2-sum").innerHTML = formatTime(response.data.press_time_sum);
document.getElementById("sporty-time-3-sum").innerHTML = formatTime(response.data.product_time_sum);
document.getElementById('sportyTime').classList.remove('loading');
isSporty = true;
ProdData.sporty.db_scrap = parseInt(response.data.db_scrap);
ProdData.sporty.percent_scrap = parseFloat(response.data.percent_scrap);
ProdData.sporty.db_revenue = Math.min(parseInt(response.data.db_revenue_bulk_r), parseInt(response.data.db_revenue_bulk_l));
ProdData.sporty.tablesize = parseFloat(response.data.tablesize);
if (MaxScrap < parseFloat(response.data.percent_scrap)) MaxScrap = parseFloat(response.data.percent_scrap);
if (isClassic && isSporty && isInjmold) summaryProduction();
calcPrice('sporty');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function injmoldProduction() {
document.getElementById('injmoldProduction').classList.add('loading');
document.getElementById('injmoldTime').classList.add('loading');
const body = 'func=injmoldProduction&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("injmold-molded").innerHTML = `${response.data.db_process_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_process_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("injmold-cleaned").innerHTML = `${response.data.db_clean_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_clean_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("injmold-revenued").innerHTML = `${response.data.db_revenue_bulk_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_revenue_bulk_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("injmold-reject").innerHTML = `${response.data.db_scrap} db (${formatDecimal(response.data.percent_scrap, 2)}%)`;
document.getElementById("injmold-granulate").innerHTML = `${response.data.db_granules_used} <span style="opacity: 0.5;">kg</span>`;
document.getElementById("injmold-energy").innerHTML = `${response.data.kwh} <span style="opacity: 0.5;">kWh</span>`;
document.getElementById('injmoldProduction').classList.remove('loading');
document.getElementById("injmold-time-1").innerHTML = formatTime(response.data.prep_time);
document.getElementById("injmold-time-2").innerHTML = formatTime(response.data.process_time);
document.getElementById("injmold-time-3").innerHTML = formatTime(response.data.clean_time);
document.getElementById("injmold-time-4").innerHTML = formatTime(response.data.product_time);
document.getElementById("injmold-time-1-sum").innerHTML = formatTime(response.data.prep_time_sum);
document.getElementById("injmold-time-2-sum").innerHTML = formatTime(response.data.process_time_sum);
document.getElementById("injmold-time-3-sum").innerHTML = formatTime(response.data.clean_time_sum);
document.getElementById("injmold-time-4-sum").innerHTML = formatTime(response.data.product_time_sum);
document.getElementById('injmoldTime').classList.remove('loading');
isInjmold = true;
ProdData.injmold.db_scrap = parseInt(response.data.db_scrap);
ProdData.injmold.percent_scrap = parseFloat(response.data.percent_scrap);
ProdData.injmold.db_revenue = Math.min(parseInt(response.data.db_revenue_bulk_r), parseInt(response.data.db_revenue_bulk_l));
ProdData.injmold.db_granules_used = parseFloat(response.data.db_granules_used);
ProdData.injmold.kwh = parseFloat(response.data.kwh);
if (MaxScrap < parseFloat(response.data.percent_scrap)) MaxScrap = parseFloat(response.data.percent_scrap);
if (isClassic && isSporty && isInjmold) summaryProduction();
calcPrice('injmold');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function summaryProduction() {
document.getElementById('total-produced').innerHTML = `${ProdData.classic.db_revenue + ProdData.sporty.db_revenue + ProdData.injmold.db_revenue} <span style="opacity: 0.5;">pár</span>`;
document.getElementById('total-reject').innerHTML = `${ProdData.classic.db_scrap + ProdData.sporty.db_scrap + ProdData.injmold.db_scrap} <span style="opacity: 0.5;">pár</span>`;
document.getElementById('avg-reject-pct').innerHTML = `${((ProdData.classic.percent_scrap + ProdData.sporty.percent_scrap + ProdData.injmold.percent_scrap) / 3).toFixed(2)} <span style="opacity: 0.5;">%</span>`;
document.getElementById('summary-view').classList.remove('loading');
calcScrapChart();
calcPrice('sum');
}
function calcScrapChart() {
MaxScrap = Math.ceil(MaxScrap);
document.getElementById('classic-bar').style.width = ((ProdData.classic.percent_scrap / MaxScrap) * 100) + '%';
document.getElementById('classic-bar').innerHTML = `${formatDecimal(ProdData.classic.percent_scrap, 2)} %`;
document.getElementById('sporty-bar').style.width = ((ProdData.sporty.percent_scrap / MaxScrap) * 100) + '%';
document.getElementById('sporty-bar').innerHTML = `${formatDecimal(ProdData.sporty.percent_scrap, 2)} %`;
document.getElementById('injmold-bar').style.width = ((ProdData.injmold.percent_scrap / MaxScrap) * 100) + '%';
document.getElementById('injmold-bar').innerHTML = `${formatDecimal(ProdData.injmold.percent_scrap, 2)} %`;
document.getElementById('scrapChart').classList.remove('loading');
}
function calcPrice(type) {
if (type == "injmold") {
document.getElementById("injmold-material-cost").innerHTML = `${(ProdData.injmold.db_granules_used * PriceList.granules_price).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 2})} <span style="opacity: 0.5;">Euro</span>`;
document.getElementById("injmold-energy-cost").innerHTML = `${(ProdData.injmold.kwh * PriceList.kwh_price).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 0})} <span style="opacity: 0.5;">Ft</span>`;
} else if (type == "sporty") {
document.getElementById("sporty-cost").innerHTML = `${(ProdData.sporty.tablesize * PriceList.plexi_price).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 2})} <span style="opacity: 0.5;">Euro</span>`;
} else if (type == "classic") {
document.getElementById("classic-cost").innerHTML = `${(ProdData.classic.tablesize * PriceList.plexi_price).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 2})} <span style="opacity: 0.5;">Euro</span>`;
} else if (type == "sum") {
document.getElementById("total-material-cost").innerHTML = `${((ProdData.injmold.db_granules_used * PriceList.granules_price) + (ProdData.sporty.tablesize * PriceList.plexi_price) + (ProdData.classic.tablesize * PriceList.plexi_price)).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 2})} <span style="opacity: 0.5; margin-right: 15px;">Euro </span>${(ProdData.injmold.kwh * PriceList.kwh_price).toLocaleString("hu-HU", { minimumFractionDigits: 0, maximumFractionDigits: 0})} <span style="opacity: 0.5;">Ft</span>`;
}
}
function classicDetails() {
document.getElementById('classicDetails').classList.add('loading');
const body = 'func=classicDetails&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("classic-cut-db").innerHTML = `${response.data.db_cut_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_cut_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-press-db").innerHTML = `${response.data.db_press_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_press_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-process-db").innerHTML = `${response.data.db_process_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_process_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById("classic-clean-db").innerHTML = `${response.data.db_clean_r} <span style="opacity: 0.5; margin-right: 15px;">jobb</span> ${response.data.db_clean_l} <span style="opacity: 0.5;">bal</span>`;
document.getElementById('classicDetails').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function boxingProduction() {
document.querySelectorAll('.boxingProduction').forEach(el => {el.classList.add('loading');});
const body = 'func=boxingProduction&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("pack-classic-qty").innerHTML = `${response.data.db_revenue_classic} <span style="opacity: 0.5;">doboz</span>`;
document.getElementById("pack-sporty-qty").innerHTML = `${response.data.db_revenue_sporty} <span style="opacity: 0.5;">doboz</span>`;
document.getElementById("pack-injmold-qty").innerHTML = `${response.data.db_revenue_injmold} <span style="opacity: 0.5;">doboz</span>`;
document.getElementById("pack-classic-time").innerHTML = formatTime(response.data.product_time_classic);
document.getElementById("pack-sporty-time").innerHTML = formatTime(response.data.product_time_sporty);
document.getElementById("pack-injmold-time").innerHTML = formatTime(response.data.product_time_injmold);
document.getElementById("pack-classic-time-sum").innerHTML = formatTime(response.data.product_time_classic_sum);
document.getElementById("pack-sporty-time-sum").innerHTML = formatTime(response.data.product_time_sporty_sum);
document.getElementById("pack-injmold-time-sum").innerHTML = formatTime(response.data.product_time_injmold_sum);
document.querySelectorAll('.boxingProduction').forEach(el => {el.classList.remove('loading');});
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function ordersStat() {
document.querySelectorAll('.ordersStat').forEach(el => {el.classList.add('loading');});
const body = 'func=ordersStat&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
Object.keys(response.data).forEach(key => { response.data[key] = response.data[key] ?? 0;});
document.getElementById("order-classic-ordered").innerHTML = `${formatDecimal(response.data.amount_classic)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-sporty-ordered").innerHTML = `${formatDecimal(response.data.amount_sporty)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-injmold-ordered").innerHTML = `${formatDecimal(response.data.amount_injmold)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-climair-ordered").innerHTML = `${formatDecimal(response.data.amount_climair)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-classic-fulfilled").innerHTML = `${formatDecimal(response.data.taken_out_classic)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-sporty-fulfilled").innerHTML = `${formatDecimal(response.data.taken_out_sporty)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-injmold-fulfilled").innerHTML = `${formatDecimal(response.data.taken_out_injmold)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-climair-fulfilled").innerHTML = `${formatDecimal(response.data.taken_out_climair)} <span style="opacity: 0.5;">pár</span>`;
document.getElementById("order-classic-fulfilled-percent").innerHTML = `${formatDecimal(((parseFloat(response.data.taken_out_classic) / parseFloat(response.data.amount_classic)) * 100), 2)} <span style="opacity: 0.5;">%</span>`;
document.getElementById("order-sporty-fulfilled-percent").innerHTML = `${formatDecimal(((parseFloat(response.data.taken_out_sporty) / parseFloat(response.data.amount_sporty)) * 100), 2)} <span style="opacity: 0.5;">%</span>`;
document.getElementById("order-injmold-fulfilled-percent").innerHTML = `${formatDecimal(((parseFloat(response.data.taken_out_injmold) / parseFloat(response.data.amount_injmold)) * 100), 2)} <span style="opacity: 0.5;">%</span>`;
document.getElementById("order-climair-fulfilled-percent").innerHTML = `${formatDecimal(((parseFloat(response.data.taken_out_climair) / parseFloat(response.data.amount_climair)) * 100), 2)} <span style="opacity: 0.5;">%</span>`;
document.querySelectorAll('.ordersStat').forEach(el => {el.classList.remove('loading');});
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function scrapTable() {
document.getElementById('scrapTable').classList.add('loading');
const body = 'func=scrapTable&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
var table = document.getElementById('selejt-table').getElementsByTagName('tbody')[0];
table.innerHTML = "";
response.data.forEach((item, i) => {
var newRow = table.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
newCell_1.innerHTML = item.date_create;
newCell_2.innerHTML = item.wh_id;
newCell_3.innerHTML = item.item_id;
newCell_4.innerHTML = item.right_db;
newCell_5.innerHTML = item.left_db;
newCell_6.innerHTML = item.reason;
});
document.getElementById('scrapTable').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function returnGoodsTable() {
document.getElementById('returnGoodsTable').classList.add('loading');
const body = 'func=returnGoodsTable&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
var table = document.getElementById('visszaru-table').getElementsByTagName('tbody')[0];
table.innerHTML = "";
response.data.forEach((item, i) => {
var newRow = table.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
var newCell_10 = newRow.insertCell(9);
var newCell_11 = newRow.insertCell(10);
var newCell_12 = newRow.insertCell(11);
var newCell_13 = newRow.insertCell(12);
newCell_1.innerHTML = item.date_create;
newCell_2.innerHTML = item.name;
newCell_3.innerHTML = item.item_id;
newCell_4.innerHTML = item.pack_id;
newCell_5.innerHTML = item.order_id;
newCell_6.innerHTML = item.return_reason;
newCell_7.innerHTML = item.is_withdraw;
newCell_8.innerHTML = item.cancellation_invoice;
newCell_9.innerHTML = item.is_scrap;
newCell_10.innerHTML = item.is_warehoused;
newCell_11.innerHTML = item.reason;
newCell_12.innerHTML = item.note;
newCell_13.innerHTML = item.is_saved;
});
document.getElementById('returnGoodsTable').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function warrantyTable() {
document.getElementById('warrantyTable').classList.add('loading');
const body = 'func=warrantyTable&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
var table = document.getElementById('garancia-table').getElementsByTagName('tbody')[0];
table.innerHTML = "";
response.data.forEach((item, i) => {
var newRow = table.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
newCell_1.innerHTML = item.date_create;
newCell_2.innerHTML = item.name;
newCell_3.innerHTML = item.mail;
newCell_4.innerHTML = item.order_id;
newCell_5.innerHTML = item.item_id;
newCell_6.innerHTML = item.right_db;
newCell_7.innerHTML = item.left_db;
newCell_8.innerHTML = item.reason;
newCell_9.innerHTML = item.note;
});
document.getElementById('warrantyTable').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
function ExportGenerator(type) {
if (type == "classic") {
document.getElementById('classicProduction').classList.add('loading');
const body = 'func=ExportGenerator&type=classic&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
const hiddenTable = document.createElement('table');
hiddenTable.id = 'classicgyartas-table';
hiddenTable.style.cssText = 'position: absolute; left: -9999px; visibility: hidden;';
document.body.appendChild(hiddenTable);
response.data.forEach((item, i) => {
var newRow = hiddenTable.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
var newCell_10 = newRow.insertCell(9);
var newCell_11 = newRow.insertCell(10);
var newCell_12 = newRow.insertCell(11);
var newCell_13 = newRow.insertCell(12);
var newCell_14 = newRow.insertCell(13);
var newCell_15 = newRow.insertCell(14);
var newCell_16 = newRow.insertCell(15);
var newCell_17 = newRow.insertCell(16);
var newCell_18 = newRow.insertCell(17);
var newCell_19 = newRow.insertCell(18);
var newCell_20 = newRow.insertCell(19);
var newCell_21 = newRow.insertCell(20);
var newCell_22 = newRow.insertCell(21);
var newCell_23 = newRow.insertCell(22);
var newCell_24 = newRow.insertCell(23);
var newCell_25 = newRow.insertCell(24);
var newCell_26 = newRow.insertCell(25);
var newCell_27 = newRow.insertCell(26);
var newCell_28 = newRow.insertCell(27);
var newCell_29 = newRow.insertCell(28);
var newCell_30 = newRow.insertCell(29);
var newCell_31 = newRow.insertCell(30);
var newCell_32 = newRow.insertCell(31);
newCell_1.innerHTML = item.item_id;
newCell_2.innerHTML = item.db_start;
newCell_3.innerHTML = item.date_start;
newCell_4.innerHTML = item.date_prep;
newCell_5.innerHTML = item.date_prepend;
newCell_6.innerHTML = item.remain_r;
newCell_7.innerHTML = item.remain_l;
newCell_8.innerHTML = item.ordered;
newCell_9.innerHTML = item.tablesize_x;
newCell_10.innerHTML = item.tablesize_y;
newCell_11.innerHTML = item.db_table;
newCell_12.innerHTML = item.date_cut;
newCell_13.innerHTML = item.date_cutend;
newCell_14.innerHTML = item.db_cut_r;
newCell_15.innerHTML = item.db_cut_l;
newCell_16.innerHTML = item.date_press;
newCell_17.innerHTML = item.date_pressend;
newCell_18.innerHTML = item.db_press_r;
newCell_19.innerHTML = item.db_press_l;
newCell_20.innerHTML = item.press_machine;
newCell_21.innerHTML = item.date_process;
newCell_22.innerHTML = item.date_processend;
newCell_23.innerHTML = item.db_process_r;
newCell_24.innerHTML = item.db_process_l;
newCell_25.innerHTML = item.process_mode;
newCell_26.innerHTML = item.date_clean;
newCell_27.innerHTML = item.date_cleanend;
newCell_28.innerHTML = item.db_clean_r;
newCell_29.innerHTML = item.db_clean_l;
newCell_30.innerHTML = item.date_warehouseend;
newCell_31.innerHTML = item.db_revenue_bulk_r;
newCell_32.innerHTML = item.db_revenue_bulk_l;
});
exportCSV('hidden', 'Classic gyártás', 'classicgyartas');
document.getElementById('classicProduction').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
} else if (type == "sporty") {
document.getElementById('sportyProduction').classList.add('loading');
const body = 'func=ExportGenerator&type=sporty&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
const hiddenTable = document.createElement('table');
hiddenTable.id = 'sportygyartas-table';
hiddenTable.style.cssText = 'position: absolute; left: -9999px; visibility: hidden;';
document.body.appendChild(hiddenTable);
response.data.forEach((item, i) => {
var newRow = hiddenTable.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
var newCell_10 = newRow.insertCell(9);
var newCell_11 = newRow.insertCell(10);
var newCell_12 = newRow.insertCell(11);
var newCell_13 = newRow.insertCell(12);
var newCell_14 = newRow.insertCell(13);
var newCell_15 = newRow.insertCell(14);
var newCell_16 = newRow.insertCell(15);
var newCell_17 = newRow.insertCell(16);
var newCell_18 = newRow.insertCell(17);
var newCell_19 = newRow.insertCell(18);
var newCell_20 = newRow.insertCell(19);
newCell_1.innerHTML = item.item_id;
newCell_2.innerHTML = item.db_start;
newCell_3.innerHTML = item.date_start;
newCell_4.innerHTML = item.remain_r;
newCell_5.innerHTML = item.remain_l;
newCell_6.innerHTML = item.ordered;
newCell_7.innerHTML = item.tablesize_x;
newCell_8.innerHTML = item.tablesize_y;
newCell_9.innerHTML = item.db_table;
newCell_10.innerHTML = item.date_cut;
newCell_11.innerHTML = item.date_cutend;
newCell_12.innerHTML = item.db_cut_r;
newCell_13.innerHTML = item.db_cut_l;
newCell_14.innerHTML = item.date_press;
newCell_15.innerHTML = item.date_pressend;
newCell_16.innerHTML = item.db_press_r;
newCell_17.innerHTML = item.db_press_l;
newCell_18.innerHTML = item.date_warehouseend;
newCell_19.innerHTML = item.db_revenue_bulk_r;
newCell_20.innerHTML = item.db_revenue_bulk_l;
});
exportCSV('hidden', 'Sporty gyártás', 'sportygyartas');
document.getElementById('sportyProduction').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
} else if (type == "injmold") {
document.getElementById('injmoldProduction').classList.add('loading');
const body = 'func=ExportGenerator&type=injmold&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
const hiddenTable = document.createElement('table');
hiddenTable.id = 'injmoldgyartas-table';
hiddenTable.style.cssText = 'position: absolute; left: -9999px; visibility: hidden;';
document.body.appendChild(hiddenTable);
response.data.forEach((item, i) => {
var newRow = hiddenTable.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
var newCell_10 = newRow.insertCell(9);
var newCell_11 = newRow.insertCell(10);
var newCell_12 = newRow.insertCell(11);
var newCell_13 = newRow.insertCell(12);
var newCell_14 = newRow.insertCell(13);
var newCell_15 = newRow.insertCell(14);
var newCell_16 = newRow.insertCell(15);
var newCell_17 = newRow.insertCell(16);
var newCell_18 = newRow.insertCell(17);
var newCell_19 = newRow.insertCell(18);
var newCell_20 = newRow.insertCell(19);
var newCell_21 = newRow.insertCell(20);
newCell_1.innerHTML = item.item_id;
newCell_2.innerHTML = item.db_start;
newCell_3.innerHTML = item.date_start;
newCell_4.innerHTML = item.date_prep;
newCell_5.innerHTML = item.date_prepend;
newCell_6.innerHTML = item.ordered;
newCell_7.innerHTML = item.db_granules;
newCell_8.innerHTML = item.date_process;
newCell_9.innerHTML = item.date_processend;
newCell_10.innerHTML = item.db_process_r;
newCell_11.innerHTML = item.db_process_l;
newCell_12.innerHTML = item.db_granules_used;
newCell_13.innerHTML = item.kwh_start;
newCell_14.innerHTML = item.kwh_stop;
newCell_15.innerHTML = item.date_clean;
newCell_16.innerHTML = item.date_cleanend;
newCell_17.innerHTML = item.db_clean_r;
newCell_18.innerHTML = item.db_clean_l;
newCell_19.innerHTML = item.date_warehouseend;
newCell_20.innerHTML = item.db_revenue_bulk_r;
newCell_21.innerHTML = item.db_revenue_bulk_l;
});
exportCSV('hidden', 'Fröccsöntött gyártás', 'injmoldgyartas');
document.getElementById('injmoldProduction').classList.remove('loading');
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
} else if (type == "boxing") {
document.querySelectorAll('.boxingProduction').forEach(el => {el.classList.add('loading');});
const body = 'func=ExportGenerator&type=boxing&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
const hiddenTable = document.createElement('table');
hiddenTable.id = 'boxing-table';
hiddenTable.style.cssText = 'position: absolute; left: -9999px; visibility: hidden;';
document.body.appendChild(hiddenTable);
response.data.forEach((item, i) => {
var newRow = hiddenTable.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
newCell_1.innerHTML = item.item_id;
newCell_2.innerHTML = item.db_start;
newCell_3.innerHTML = item.date_start;
newCell_4.innerHTML = item.date_warehouseend;
newCell_5.innerHTML = item.db_revenue;
});
exportCSV('hidden', 'Dobozolás', 'boxing');
document.querySelectorAll('.boxingProduction').forEach(el => {el.classList.remove('loading');});
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
} else if (type == "orders") {
document.querySelectorAll('.ordersStat').forEach(el => {el.classList.add('loading');});
const body = 'func=ExportGenerator&type=orders&from_date=' + from_date + '&to_date=' + to_date + '&item_id=' + encodeURIComponent(get_item_id).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
let response = JSON.parse(text);
if (response.result == "ok") {
const hiddenTable = document.createElement('table');
hiddenTable.id = 'orders-table';
hiddenTable.style.cssText = 'position: absolute; left: -9999px; visibility: hidden;';
document.body.appendChild(hiddenTable);
response.data.forEach((item, i) => {
var newRow = hiddenTable.insertRow();
var newCell_1 = newRow.insertCell(0);
var newCell_2 = newRow.insertCell(1);
var newCell_3 = newRow.insertCell(2);
var newCell_4 = newRow.insertCell(3);
var newCell_5 = newRow.insertCell(4);
var newCell_6 = newRow.insertCell(5);
var newCell_7 = newRow.insertCell(6);
var newCell_8 = newRow.insertCell(7);
var newCell_9 = newRow.insertCell(8);
var newCell_10 = newRow.insertCell(9);
var newCell_11 = newRow.insertCell(10);
var newCell_12 = newRow.insertCell(11);
var newCell_13 = newRow.insertCell(12);
var newCell_14 = newRow.insertCell(13);
var newCell_15 = newRow.insertCell(14);
var newCell_16 = newRow.insertCell(15);
newCell_1.innerHTML = item.item_id;
newCell_2.innerHTML = item.amount;
newCell_3.innerHTML = item.reason;
newCell_4.innerHTML = item.date_create;
newCell_5.innerHTML = item.taken_out;
newCell_6.innerHTML = item.order_id;
newCell_7.innerHTML = item.order_name;
newCell_8.innerHTML = item.order_mail;
newCell_9.innerHTML = item.customer_type;
newCell_10.innerHTML = item.receipt_method;
newCell_11.innerHTML = item.note;
newCell_12.innerHTML = item.primary_source;
newCell_13.innerHTML = item.amount_type;
newCell_14.innerHTML = item.primary_warehouse;
newCell_15.innerHTML = item.date_end;
newCell_16.innerHTML = item.is_deleted;
});
exportCSV('hidden', 'Rendelések', 'orders');
document.querySelectorAll('.ordersStat').forEach(el => {el.classList.remove('loading');});
} else {
GenerateAlerts("error", response.result);
}
}, function() {
GenerateAlerts("error", "Hálózati hiba!");
});
}
}
function clearSearch() {
document.getElementById('filter-item_id').value = '';
showSummaryView();
}
function exportCSV(type, name = null, tableid = null) {
if (type == "selejt") {
const table = document.getElementById('selejt-table');
const workbook = XLSX.utils.table_to_book(table, {sheet: "Selejt", raw: true});
workbook.Props = {
Author: "Szaturnusz",
Title: "Selejt jelentés",
Subject: from_date + "-tól " + to_date + "-ig",
Company: "Szatuna Kft."
};
XLSX.writeFile(workbook, 'selejt_export.xlsx');
} else if (type == "visszaru") {
const table = document.getElementById('visszaru-table');
const workbook = XLSX.utils.table_to_book(table, {sheet: "Visszárú", raw: true});
workbook.Props = {
Author: "Szaturnusz",
Title: "Visszárú jelentés",
Subject: from_date + "-tól " + to_date + "-ig",
Company: "Szatuna Kft."
};
XLSX.writeFile(workbook, 'visszaru_export.xlsx');
} else if (type == "garancia") {
const table = document.getElementById('garancia-table');
const workbook = XLSX.utils.table_to_book(table, {sheet: "Garancia", raw: true});
workbook.Props = {
Author: "Szaturnusz",
Title: "Garancia jelentés",
Subject: from_date + "-tól " + to_date + "-ig",
Company: "Szatuna Kft."
};
XLSX.writeFile(workbook, 'garancia_export.xlsx');
} else if (type == "hidden") {
const table = document.getElementById(tableid + '-table');
const workbook = XLSX.utils.table_to_book(table, {sheet: name, raw: true});
workbook.Props = {
Author: "Szaturnusz",
Title: name + " jelentés",
Subject: from_date + "-tól " + to_date + "-ig",
Company: "Szatuna Kft."
};
XLSX.writeFile(workbook, tableid + '_export.xlsx');
const tableToRemove = document.getElementById(tableid + '-table');
if (tableToRemove) {
document.body.removeChild(tableToRemove);
}
}
}
function OpenSettings() {
Loading();
openwin();
wintitle.innerHTML = "Beállítások";
winapp.innerHTML = '<div id="errorDIV"></div>';
const body = 'func=OpenSettings';
get_POST_information("monthlystat.php", body, function(text) {
Loading(false);
let response = JSON.parse(text);
if (response.result == "ok") {
winapp.innerHTML += '<p style="color: #333333; margin-bottom: 0px; margin-left: 0px; font-size: 23px; font-weight: bold;">Beállítások</p>';
winapp.innerHTML += `<p style="opacity: 0.8; margin-top: 0px;">Alapértelmezett paraméterek, statisztikai beállítások</p><br>
<button class="Feedback" id="settings-save-button" style="position: absolute; width: 70px; right: 57px; top: 80px;" onclick="SaveSettings();"><span class="button-text">Mentés</span><div class="loader"></div><div class="checkmark">✔</div><div class="crossmark">✖</div></button>
<p style="width: calc(100% - 35px); border-bottom: 1px solid #bdc3c7; margin-top: 5px;"></p>`;
winapp.innerHTML += `<div style="margin-bottom: 15px; height: 87px;">
<div style="display: inline; float: left;">
<p style="font-weight: bold;">Plexi ára: <span style="opacity: 0.5; font-size: 12px; font-weight: normal;">Euro/m<sup>2</sup></span></p>
<input value="${response.plexi_price}" defaultValue="${response.plexi_price}" onblur="if(this.value !== this.defaultValue) { SaveSettings(); this.defaultValue = this.value; }" type="number" id="plexi_price" min="0" step="0.01" pattern="[0-9]+([,.][0-9]{1,2})?" placeholder="Plexi ára..." autocomplete="off" style="width: 147px; height: 17px;">
</div><div style="display: inline; float: left; margin-left: 15px; padding-left: 15px; height: 87px; width: calc(100% - 230px); border-left: 1px solid #bdc3c7;">
<p style="text-align: justify;">Classic és Sportynál használt plexitábla darab ára</p>
</div>
</div>`;
winapp.innerHTML += `<div style="margin-bottom: 15px; height: 87px;">
<div style="display: inline; float: left;">
<p style="font-weight: bold;">Granulátum ára: <span style="opacity: 0.5; font-size: 12px; font-weight: normal;">Euro/kg</span></p>
<input value="${response.granules_price}" defaultValue="${response.granules_price}" onblur="if(this.value !== this.defaultValue) { SaveSettings(); this.defaultValue = this.value; }" type="number" id="granules_price" min="0" step="0.01" pattern="[0-9]+([,.][0-9]{1,2})?" placeholder="Granulátum ára..." autocomplete="off" style="width: 147px; height: 17px;">
</div><div style="display: inline; float: left; margin-left: 15px; padding-left: 15px; height: 87px; width: calc(100% - 230px); border-left: 1px solid #bdc3c7;">
<p style="text-align: justify;">Fröccsöntésnél használt granulátom kg ára</p>
</div>
</div>`;
winapp.innerHTML += `<div style="margin-bottom: 15px; height: 87px;">
<div style="display: inline; float: left;">
<p style="font-weight: bold;">kWh ár: <span style="opacity: 0.5; font-size: 12px; font-weight: normal;">Ft/kWh</span></p>
<input value="${response.kwh_price}" defaultValue="${response.kwh_price}" onblur="if(this.value !== this.defaultValue) { SaveSettings(); this.defaultValue = this.value; }" type="number" id="kwh_price" min="0" step="0.01" pattern="[0-9]+([,.][0-9]{1,2})?" placeholder="kWh ár..." autocomplete="off" style="width: 147px; height: 17px;">
</div><div style="display: inline; float: left; margin-left: 15px; padding-left: 15px; height: 87px; width: calc(100% - 230px); border-left: 1px solid #bdc3c7;">
<p style="text-align: justify;">Fröccsöntésnél használt kWh ára</p>
</div>
</div>`;
PriceList['plexi_price'] = parseFloat(response.plexi_price);
PriceList['granules_price'] = parseFloat(response.granules_price);
PriceList['kwh_price'] = parseFloat(response.kwh_price);
} else {
GenerateAlerts("error", response.result);
}
}, function() {
Loading(false);
GenerateAlerts("error", "Hálózati hiba!");
});
}
var isSaving = false;
function SaveSettings() {
if (isSaving) {return;}
FeedbackButtonStatus('loading', 'settings-save-button');
var plexi_price = document.getElementById("plexi_price").value;
var granules_price = document.getElementById("granules_price").value;
var kwh_price = document.getElementById("kwh_price").value;
PriceList['plexi_price'] = parseFloat(plexi_price);
PriceList['granules_price'] = parseFloat(granules_price);
PriceList['kwh_price'] = parseFloat(kwh_price);
const body = 'func=SaveSettings&plexi_price=' + encodeURIComponent(plexi_price).replace(/%20/g, '+')
+ '&granules_price=' + encodeURIComponent(granules_price).replace(/%20/g, '+')
+ '&kwh_price=' + encodeURIComponent(kwh_price).replace(/%20/g, '+');
get_POST_information("monthlystat.php", body, function(text) {
isSaving = false;
let response = JSON.parse(text);
if (response.result == "ok") {
FeedbackButtonStatus('complete', 'settings-save-button');
} else {
FeedbackButtonStatus('failed', 'settings-save-button');
GenerateAlerts("error", response.result);
}
}, function() {
isSaving = false;
FeedbackButtonStatus('failed', 'settings-save-button');
GenerateAlerts("error", "Hálózati hiba!");
});
}
loadData();
</script>
</body>
</html>