You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

696 lines
20 KiB

<?php
/**
* 檢查是否為非相關人員進入當前頁面
* @param string $user_id:使用者代碼(員工編號)
* @return bollean true:合法 false:非法
*/
function checkPageUserStatus($user_id)
{
$user_department_id = accountidToDepartId($user_id);
$allow_arr = [
'311', '312', '313', '314', '315',
'501', '511', '512', '513', '514',
'541', '542', '543', '544', '545',
'521', '531',
'250',
'220'
];
if (in_array($user_department_id, $allow_arr))
return true;
return false;
}
/**
* 寫入 `wipwhole_change_contractdate_details`
* - $data:
* - 'id' => 作番大日程 id
* - 'all_contractno_change' => 是否更改全部合約號
* - 'real_contract_arrival_date' => 原日期
* - 'contract_arrival_date' => 新日期
* - 'real_address' => 原工地地址
* - 'old_real_address' => 新工地地址
* - 'contractno' => 合約號
* - 'tds' => 資料時間戳記
* - 'form_key' => 本表單 form_key
* - 'user_id' => 申請者 id (員工編號)
* - 'change_status' => 寫入簽核狀態代碼
*
* @param object $link: 資料庫連線
* @param string $data: 新增資料
*/
function addWipwholeChangeContractdateDetails($link, $data)
{
$user_id = $data['user_id'];
$tds = $data['tds'];
$id = $data['id'];
$real_contract_arrival_date = $data['real_contract_arrival_date'];
$contract_arrival_date = $data['contract_arrival_date'];
$old_real_address = $data['old_real_address'];
$real_address = $data['real_address'];
$change_status = $data['change_status'];
$sql2 = "
INSERT INTO `wipwhole_change_contractdate_details` (
`creater`,
`create_at`,
`wipwholestatus_id`,
`old_change_date`,
`change_date` ,
`old_real_address`,
`real_address` ,
`change_status`
) VALUES (
'$user_id',
'$tds',
'$id',
'$real_contract_arrival_date',
'$contract_arrival_date',
'$old_real_address',
'$real_address',
'$change_status'
)
";
mysqli_query($link, $sql2);
}
function addFlow($link, $data)
{
$last_id = $data['last_id'];
$form_key = $data['form_key'];
$flow_code = $data['change_status'];
$sql2 = "
INSERT into flow (
system_id,
flow_id,
form_id,
form_key,
flow_code
) VALUES (
'wws',
'wws03',
'$last_id',
'$form_key',
'$flow_code'
)
";
mysqli_query($link, $sql2);
}
function addSubflow($link, $data)
{
$form_key = $data['form_key'];
$current_assigner = $data['current_assigner'];
$tds = $data['tds'];
$seq = $data['seq'];
$sql2 = "
INSERT INTO subflow (
form_key,
seq,
current_assigner,
create_date
) values (
'$form_key',
'$seq',
'$current_assigner',
'$tds'
)
";
mysqli_query($link, $sql2);
}
/**
* 用大日程的合約號取得大日程表單唯一值 (id)
* @param object $link:資料庫連線
* @param string $contractno:合約編號
* @return object 回傳 mysqli_fetch_all
*/
function getWipwholestatusIdByConstractNo($link, $contractno)
{
$sql = "
SELECT
id
FROM wipwholestatus
WHERE contractno = '$contractno'
";
$result = mysqli_query($link, $sql);
$data = mysqli_fetch_all($result);
mysqli_free_result($result);
return $data;
}
/**
* 取得新申請簽核的 formk_key 用於新增
* @param object $link 資料庫連線
* @return string $formk_key
*/
function getFomkeySeq($link)
{
$sql = "SELECT appwms.nextval('form_key') form_key";
$res = mysqli_query($link, $sql);
if ($row = mysqli_fetch_row($res))
return $row[0];
return null;
}
/**
* 新增通知
* @param object $link 資料庫連線
* @param array $data kind:通知類型 related_id:關聯序號 title:通知標題 content:通知內容 permission:觀看者 creater:建立者 create_at:建立時間
* @return string 簽核單 cid
*/
function addNotice($link, $data)
{
$kind = empty($data['kind']) ? "1" : $data['kind'];
$related_id = empty($data['related_id']) ? "" : $data['related_id'];
$title = empty($data['title']) ? "" : $data['title'];
$content = empty($data['content']) ? "" : $data['content'];
$permission = empty($data['permission']) ? "" : $data['permission'];
$creater = empty($data['creater']) ? "system" : $data['creater'];
$create_at = empty($data['create_at']) ? date("Y-m-d H:i:s") : $data['create_at'];
$sql = "
INSERT INTO notice (
kind,
related_id,
title,
content,
permission,
creater,
create_at
) VALUES(
'$kind',
'$related_id',
'$title',
'$content',
'$permission',
'$creater',
'$create_at'
)
";
mysqli_query($link, $sql);
}
/**
* 取得本次簽核的表單 cid 值
* @param object $link 資料庫連線
* @param string $form_key 簽核單唯一值
* @return string 簽核單 cid
*/
function getCid($link, $form_key)
{
$sql = "
SELECT form_id AS id FROM flow
WHERE form_key = '$form_key'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return $row['id'];
}
/**
* 取得此單據的大日程id值
* @param object $link 資料庫連線
* @param string $cid 簽核單 cid
* @return string 簽核單 form_key
*/
function getId($link, $cid)
{
$sql = "
SELECT wipwholestatus_id AS id
FROM wipwhole_change_contractdate_details
WHERE id = '$cid'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return $row['id'];
}
/**
* 取得本次簽核的表單form_key值
* @param object $link 資料庫連線
* @param string $form_id 簽核單 cid
* @return string 簽核單 form_key
*/
function getForm_key($link, $form_id)
{
$sql = "
SELECT
f.form_key
FROM flow AS f
LEFT JOIN subflow AS s
ON f.form_key = s.form_key
WHERE 1=1
AND f.system_id = 'wws'
AND f.flow_id = 'wws03'
AND f.form_id = '$form_id'
AND f.flow_code IN ('A','B','D','C','Z')
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return empty($row['form_key']) ? null : $row['form_key'];
}
/**
* 確認目前簽核狀態
* @param object $link 資料庫連線
* @return string 工務部主管accountid
*/
function checkNowFormStatus($link)
{
if (isset($_GET['cid']) || isset($_GET['form_key'])) {
$cid = isset($_GET['cid']) ? $_GET['cid'] : getCid($link, $_GET['form_key']);
$form_key = getForm_key($link, $cid);
$sql = "
SELECT
flow_code
FROM flow
WHERE 1=1
AND form_id = '$cid'
AND form_key = '$form_key'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return empty($row['0']) ? null : $row['0'];
}
return null;
}
/**
* 取得工務部主管編號
* @param object $link 資料庫連線
* @param string $contract_type A:新梯 B:汰改
* @return string 工務部主管accountid
*/
function getGongWuokNo($link, $contract_type)
{
if (isset($_GET['id']) || isset($_GET['form_key']))
$id = isset($_GET['id']) ? $_GET['id'] : getId($link, getCid($link, $_GET['form_key']));
$sql = "
SELECT DISTINCT
SUBSTR(address,1,2)
FROM `wipwholestatus`
WHERE id = '$id'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
// 新梯
// 宜蘭=高培軒(M0087) 北=張潘榮(M0041) 中=林瑋隆(M0113) 南=韋宗榮(M0039)改鄭存邑(M0102)
// 汰改
// 宜蘭=高培軒(M0087) 北=吳宗紘(M0040) 中=林瑋隆(M0113) 南=韋宗榮(M0039)改鄭存邑(M0102)
$arr = array(
"宜蘭" => "M0087",
"" => "M0041",
"台北" => "M0041",
"基隆" => "M0041",
"新北" => "M0041",
"新竹" => "M0041",
"桃園" => "M0041",
"苗栗" => "M0113",
"" => "M0113",
"南投" => "M0113",
"台中" => "M0113",
"彰化" => "M0113",
"雲林" => "M0113",
"" => "M0102",
"台南" => "M0102",
"嘉義" => "M0102",
"屏東" => "M0102",
"高雄" => "M0102"
);
$arr2 = array(
"宜蘭" => "M0087",
"" => "M0040",
"台北" => "M0040",
"基隆" => "M0040",
"新北" => "M0040",
"新竹" => "M0040",
"桃園" => "M0040",
"苗栗" => "M0113",
"" => "M0113",
"南投" => "M0113",
"台中" => "M0113",
"彰化" => "M0113",
"雲林" => "M0113",
"" => "M0102",
"台南" => "M0102",
"嘉義" => "M0102",
"屏東" => "M0102",
"高雄" => "M0102"
);
if ($contract_type == 'A') {
return empty($arr[$row[0]]) ? "" : $arr[$row[0]];
} else {
return empty($arr2[$row[0]]) ? "" : $arr2[$row[0]];
}
}
/**
* 取得簽核者 user_id
* @param object $link 資料庫連線
* @param string $form_key 本簽核單唯一值
* @param string $seq 簽核者順序
* @return string 簽核者accountid
*/
function getCurrentAssigner($link, $form_key, $seq)
{
$sql = "
SELECT
*
FROM subflow
WHERE form_key = '$form_key'
AND seq = '$seq'
";
$subflow_data = mysqli_query($link, $sql);
$subflow = mysqli_fetch_array($subflow_data, MYSQLI_ASSOC);
return empty($subflow['current_assigner']) ? null : $subflow['current_assigner'];
}
/**
* 取得本表單狀態代碼
* @param object $link 資料庫連線
* @param string $cid 本簽核單 id
* @return string 表單狀態代碼
*/
function getChangeStatus($link, $cid)
{
$sql = "
SELECT
change_status
FROM wipwhole_change_contractdate_details
WHERE id = '$cid'
";
$subflow_data = mysqli_query($link, $sql);
$subflow = mysqli_fetch_array($subflow_data, MYSQLI_ASSOC);
return empty($subflow['change_status']) ? null : $subflow['change_status'];
}
/**
* 取得本表單狀態名稱
* @param object $link 資料庫連線
* @param string $cid 本簽核單 id
* @return string 本單據狀態名稱
*/
function getChangeStatusName($link, $cid)
{
$dataArr = array(
'A' => '申請中',
'B' => '申請中',
'C' => '已取消',
'D' => '工務已通過',
'Z' => '已通過',
);
$sql = "
SELECT
change_status
FROM wipwhole_change_contractdate_details
WHERE id = '$cid'
";
$subflow_data = mysqli_query($link, $sql);
$subflow = mysqli_fetch_array($subflow_data, MYSQLI_ASSOC);
return empty($subflow['change_status']) ? "" : $dataArr[$subflow['change_status']];
}
function getNowFormStatus($link, $cid)
{
$sql = "
SELECT
change_status
FROM wipwhole_change_contractdate_details
WHERE id = '$cid'
";
$subflow_data = mysqli_query($link, $sql);
$subflow = mysqli_fetch_array($subflow_data, MYSQLI_ASSOC);
return empty($subflow['change_status']) ? "" : $subflow['change_status'];
}
/**
* 取得生管主管 options
* @param object $link:資料庫連線
* @return object 回傳 mysqli_query
*/
function getShengguanokOptions($link)
{
$sql = "
SELECT
accountid AS val ,
name AS label
FROM `account`
WHERE `department_id` IN ('250')
AND `role_id` IN ('1','4')
ORDER BY accountid DESC
";
return mysqli_query($link, $sql);
}
/**
* 取得工務部門所有員工 options
* @param object $link:資料庫連線
* @return object 回傳 mysqli_query
*/
function getGongwuokOptions($link)
{
$sql = "
SELECT
accountid AS val ,
name AS label
FROM `account`
WHERE `department_id` IN ('521')
AND `accountid` IN ('M0040','M0041','M0113')
UNION
SELECT
accountid AS val ,
name AS label
FROM `account`
WHERE `department_id` IN ('531')
AND `accountid` IN ('M0087')
";
return mysqli_query($link, $sql);
}
/**
* 用 user_id(員工編號) 取得部門代碼 id
* @param object $link:資料庫連線
* @param string $user_id:使用者 id (員工編號)
* @return string 回傳 $department_id:部門代碼
*/
function getDepartmentId($link, $user_id)
{
$sql = "
SELECT
department_id
FROM account
WHERE accountid = '$user_id'
";
$res = mysqli_query($link, $sql);
$row = mysqli_fetch_row($res);
mysqli_free_result($res);
return $row[0];
}
/**
* 取得生管主管 options
* @param object $link:資料庫連線
* @param string $id:作番大日程唯一值
* @return object 回傳 mysqli_query
*/
function getWipwholestatusDetail($link, $id)
{
$db_query = "
SELECT * FROM
wipwholestatus WHERE id = '$id'
";
$receivabledata = mysqli_query($link, $db_query);
return mysqli_fetch_array($receivabledata, MYSQLI_ASSOC);
}
/**
* 取得 wipwhole_change_contractdate_details 所有資料並放入陣列
* @param object $link:資料庫連線
* @param string $cid:表單唯一值
* @return object 回傳 mysqli_fetch_array
*/
function getWipwholeChangeContractdateDetails($link, $cid)
{
$db_query = "
SELECT * FROM wipwhole_change_contractdate_details
WHERE id = '$cid'
";
$receivabledata = mysqli_query($link, $db_query);
return mysqli_fetch_array($receivabledata, MYSQLI_ASSOC);
}
/**
* 取得生管主管 options
* @param object $link:資料庫連線
* @param string $user_id:使用者 id (員工編號)
* @param string $id:大日程唯一值
* @return object 回傳 mysqli_query
*/
function getDateOptions($link, $user_id, $id)
{
if (accountidToDepartId($user_id) == "250" && in_array(accountidToRoleId($user_id), ["1", "4"])) {
$sql = "
SELECT
*
FROM `wipwhole_change_contractdate_details`
WHERE 1=1
AND wipwholestatus_id = '$id'
AND change_status in ('A','C','D','Z')
";
} else if (in_array(accountidToDepartId($user_id), ['521', '531', '541', '542', '543', '544', '545'])) {
$sql = "
SELECT
*
FROM `wipwhole_change_contractdate_details`
WHERE 1=1
AND wipwholestatus_id = '$id'
";
} else {
$sql = "
SELECT
*
FROM `wipwhole_change_contractdate_details`
WHERE 1=1
AND creater = '$user_id'
AND wipwholestatus_id = '$id'
";
}
return mysqli_query($link, $sql);
}
/**
* 取得提交表單後的回傳訊息
* @param string $assign_status:簽核狀態代碼
* @return string 回傳訊息
*/
function getAssignStatusMessage($data, $checkStatus)
{
if ($_POST['assign_status'] !== 'C' && empty($_POST['real_address'])) {
if (strtotime($data['contract_arrival_date']) < strtotime($data['estimated_shipping_schedule_date'])) {
return "<p class='text-danger'>調整出貨日不可以比預計到貨日早!</p>";
}
}
if ($data['assign_status'] == 'A' || $data['assign_status'] == 'B')
if (empty($_POST['contract_arrival_date']) && empty($_POST['real_address']))
return "<p class='text-danger'>請填寫 調整出貨日 或 工地地址 !</p>";
if ($data['assign_status'] == 'C')
return "<p class='text-danger'>申請已取消</p>";
if ($data['assign_status'] == 'Z')
return "<p class='text-danger'>申請已通過</p>";
if (!$checkStatus)
return "<p class='text-danger'>請勿重複申請!</p>";
return "<p class='text-danger'>已提交申請!</p>";
}
/**
* 依照此表單狀態給予 select 選項
* @param object $link:資料庫連線檔
* @param string $user_id:使用者id (員工編號)
* @param string $nowFormStatus:此表單目前狀態代碼
* @return string 回傳select字串
*/
function getAssignStatusSelect($link, $user_id, $nowFormStatus)
{
$options_str = "<select name='assign_status' id='assign_status'>";
if (empty($nowFormStatus)) {
if (in_array(getDepartmentId($link, $user_id), ['521', '531', '541', '542', '543', '544', '545'])) {
$options_str .= "<option value='A'>提出申請</option>";
} else {
$options_str .= "<option value='B'>提出申請</option>";
}
} else {
if (in_array(checkNowFormStatus($link), ['A', 'D'])) {
if (accountidToDepartId($user_id) == "250" && in_array(accountidToRoleId($user_id), ["1", "4"]))
$options_str .= "<option value='Z'>通過</option>";
$options_str .= "<option value='C'>取消</option>";
}
if (checkNowFormStatus($link) == 'B') {
if (in_array(getDepartmentId($link, $user_id), ['521', '531', '541', '542', '543', '544', '545']))
$options_str .= "<option value='D'>通過</option>";
$options_str .= "<option value='C'>取消</option>";
}
}
$options_str .= "</select>";
return $options_str;
}
/**
* 取得此簽核單所有人簽核狀況
* @param object $link:資料庫連線檔
* @param string $form_key:此簽核單唯一值
* @return object 回傳 mysqli_query
*/
function getCurrentAssigners($link, $form_key)
{
$sql = "
SELECT
nowData.*,
nextData.next_current_assigner
FROM(
SELECT
f.flow_code,
s.seq,
(s.seq + 1) AS next_seq ,
s.current_assigner,
wccd.change_status
FROM
flow AS f
LEFT JOIN subflow AS s ON f.form_key = s.form_key
LEFT JOIN wipwhole_change_contractdate_details AS wccd ON wccd.id = f.form_id
WHERE
f.form_key = '$form_key'
AND f.system_id = 'wws'
AND f.flow_id = 'wws03'
) AS nowData
LEFT JOIN(
SELECT
s.seq,
s.current_assigner AS next_current_assigner
FROM
flow AS f
LEFT JOIN subflow AS s ON f.form_key = s.form_key
LEFT JOIN wipwhole_change_contractdate_details AS wccd ON wccd.id = f.form_id
WHERE
f.form_key = '$form_key'
AND f.system_id = 'wws'
AND f.flow_id = 'wws03'
) AS nextData
ON nowData.next_seq = nextData.seq
";
return mysqli_query($link, $sql);
}
function checkStatus($link, $cid, $user_id)
{
$sql = "
SELECT
change_status
FROM wipwhole_change_contractdate_details
WHERE creater = '$user_id'
AND wipwholestatus_id = '$cid'
AND change_status NOT IN ('C','Z')
";
$res = mysqli_query($link, $sql);
return $res->num_rows > 0 ? false : true;
}
/**
* 取台灣縣市select
* @param object $link:資料庫連線
* @return object 回傳 mysqli_fetch_all
*/
function getCity($link)
{
$sql = "
SELECT
content,
code_name
FROM code
WHERE field_name = 'taiwan_city'
";
$result = mysqli_query($link, $sql);
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
return $data;
}