Browse Source

Merge branch 'main' into kaiyu

gary
Ellin 1 year ago
parent
commit
59d0453b1e
  1. 13
      .env
  2. 1
      wms/cont/apply_form.php
  3. 1
      wms/cont/sign_form.php
  4. 9
      wms/cont/submit.php
  5. 15
      wms/contract/api/deleteNewContractData.php
  6. 169
      wms/contract/api/postContractData.php
  7. 136
      wms/contract/api/postNewContractData.php
  8. 132
      wms/contract/api/putContractData.php
  9. 61
      wms/contract/api/upload_chk.php
  10. 2
      wms/contract/contract-download.php
  11. 265
      wms/contract/contract-input.php
  12. 253
      wms/contract/contract-newelevator-edit.php
  13. 369
      wms/contract/contract-newelevator-input.php
  14. 119
      wms/contract/contract-newelevator-management.php
  15. 1903
      wms/contract/js/alpine.js
  16. 84
      wms/contract/styles/style.css
  17. 2
      wms/contract/styles/style.css.map
  18. 58
      wms/contract/styles/style.scss
  19. 1
      wms/excel-upload.php
  20. 4
      wms/mkt/pricereview-create.php
  21. 4
      wms/mkt/pricereview_renovate-create.php
  22. 4
      wms/wipwhole-change-contractdate-submit.php
  23. 13
      wms/wipwhole-change-planning-customer-name-function.php
  24. 239
      wms/wipwhole-change-planning-customer-name-submit.php
  25. 42
      wms/wipwhole-change-planning-customer-name.php
  26. 62
      wms/wipwhole-index-function.php
  27. 24
      wms/wipwhole-rec-invoice-edit-fileupload.php
  28. 61
      wms/wipwhole-rec-invoice-edit-submit.php
  29. 226
      wms/wipwhole-rec-invoice-edit.php
  30. 17
      wms/wipwhole-rec-invoice.php
  31. 6
      wms/wipwhole-rec-renovate-invoice.php
  32. 61
      wms/wipwhole-renovate-rec-invoice-edit-submit.php
  33. 288
      wms/wipwhole-renovate-rec-invoice-edit.php
  34. 14
      wms/wipwhole-renovate-rec-invoice.php
  35. 97
      wms/wipwholeinstall-index-function.php
  36. 2
      wms/wipwholeinstall-index-table-html.php
  37. 28
      wms/wipwholeinstall-index.php
  38. 100
      wms/wipwholeinstall-renovate-index-function.php
  39. 2
      wms/wipwholeinstall-renovate-index-table-html.php
  40. 27
      wms/wipwholeinstall-renovate-index.php

13
.env

@ -1,13 +0,0 @@
# DB_CONNECTION=mysql
# DB_HOST=db-104.coowo.com:3306
# DB_PORT=3306
# DB_DATABASE=appwms
# DB_USERNAME=masadaroot
# DB_PASSWORD=x6h5E5p#u8y
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=appwms1113
DB_USERNAME=root
DB_PASSWORD=

1
wms/cont/apply_form.php

@ -524,6 +524,7 @@ function get_sequnece_no($seq_name = '', $p_yyyymm = '')
<input type="hidden" name="form_key" value='<?php echo $form_key; ?>' />
<input type="hidden" name="token" value='<?= $_GET['token'] ?>' />
<input type="hidden" name="reg_del" id="reg_del">
<input type="hidden" name="form_src" id="form_src" value="apply_form">
<!--表單start-->
<div class=" form container-fluid pt-5">
<div class="row form_head ">

1
wms/cont/sign_form.php

@ -295,6 +295,7 @@ function get_sequnece_no($seq_name = '', $p_yyyymm = '')
<input type="hidden" name="form_key" value='<?php echo $form_key; ?>' />
<input type="hidden" name="apply_key" value='<?php echo $data['apply_key']; ?>' />
<input type="hidden" name="token" value='<?php echo $token; ?>' />
<input type="hidden" name="form_src" id="form_src">
<!--表單start-->
<div class=" form container-fluid pt-5">

9
wms/cont/submit.php

@ -6,6 +6,15 @@ require_once './model/ConMaintanceExamineClearModel.php';
//print_r($_POST);exit;
$request = $_SERVER['REQUEST_METHOD'] == "GET" ? $_GET : $_POST;
$tosign = ($request["btn_save"] == "tosign") ? 1 : 0; // 1:提交
if ($request["form_src"] == "apply_form" && $tosign && (!isset($request["register_code"]) || empty($request["register_code"][0]) || !isset($request["next_users"]) || empty($request["next_users"]))) {
echo "<script type = 'text/JavaScript'>";
echo "alert('請確認電梯資料或未選擇下位簽核者!');";
echo "history.go(-1);";
echo "</script>";
exit;
}
//更新表单ConMaintanceExamineApplyModel
$cmea = new ConMaintanceExamineApplyModel();
$apply_key=$request['apply_key'];

15
wms/contract/api/deleteNewContractData.php

@ -0,0 +1,15 @@
<?php
require_once("../conn.php");
if(isset($_GET['contractid']) && $_GET['contractid']!=""){
try{
$id = $_GET["contractid"];
$sql_str = "DELETE FROM contract_m_signed_back WHERE id = :contractid";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(":contractid", $id);
$stmt->execute();
header("HTTP/1.1 204 No Content");
}catch(PDOException $e){
die("ERROR!!!: ". $e->getMessage());
}
}

169
wms/contract/api/postContractData.php

@ -2,6 +2,7 @@
require_once("../conn.php");
include_once("./getFacilityNo.php");
include_once("./getComboNo.php");
include_once("./upload_chk.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' );
//保養簽回
if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'b') {
@ -314,173 +315,5 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['co
}
if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'm') {
try{
$created_at = date('Y-m-d H:i:s');
$created_by = $_POST["user_id"];
$contractno = $_POST["contractno"];
$customer = $_POST["customer"];
$manager = $_POST["manager"];
$vat = $_POST["vat"];
$case_name = $_POST["case_name"];
$linkman = $_POST["linkman"];
$lm_tel = $_POST["lm_tel"];
$address = $_POST["address"];
$salesman = $_POST["salesman"];
$contracttype = $_POST["contracttype"];
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$files_id = null;
$conn->beginTransaction();
$sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(":accountid",$salesman);
$stmt -> execute();
$saleman = $stmt->fetch(PDO::FETCH_ASSOC);
$salesman_name = $saleman['name'];
if(!empty($files)){
$englisharr = range('a', 'z');
$files = $_FILES['files'];
$newfiles = [];
foreach( $files as $file ){
$i = 0; //新陣列的索引編號
foreach( $file as $key => $val ){
$newfiles[$i]['name'] = $files['name'][$key];
$newfiles[$i]['type'] = $files['type'][$key];
$newfiles[$i]['tmp_name'] = $files['tmp_name'][$key];
$newfiles[$i]['error'] = $files['error'][$key];
$newfiles[$i]['size'] = $files['size'][$key];
$i++;
} //foreach 第2層 end
}
$max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型
$path = '../images/contracts/';
if (!file_exists($path)) { mkdir($path); }
$msg_result = ''; //負責接收所有檔案檢測後的回傳訊息
$datetime = (string)date('YmdHis');
$files_id = 'm' . $datetime; // 保養=>b + 日期時間
echo json_encode($newfiles);
foreach( $newfiles as $key => $file ){
$randNum = rand(1000,9999);
$randEnglish = $englisharr[rand(0,25)];
$file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name'];
$msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name );
if($msg==1){
$msg = '檔案傳送成功!';
$sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(':files_id' ,$files_id);
$stmt -> bindParam(':file_name' ,$file_name);
$stmt -> bindParam(':file_mime' ,$file['type']);
$stmt -> bindParam(':file_size' ,$file['size']);
$stmt -> bindParam(':created_at' ,$created_at);
$stmt -> bindParam(':created_by' ,$created_by);
$stmt ->execute();
}
$msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '<br/>';
$src_name = $path.$file['name'];
if( file_exists($src_name) ){
//副檔名
$extname = pathinfo($src_name, PATHINFO_EXTENSION);
//主檔名
$basename = basename($src_name, '.'.$extname);
}
}
}else{
$files = null;
}
$sql_str = "INSERT INTO contract_m_signed_back (contract_no, customer, manager, vat, case_name, linkman, lm_tel, address, salesman, salesman_name, files_id, created_at, created_by) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(":contract_no",$contractno);
$stmt -> bindParam(":customer",$customer);
$stmt -> bindParam(":manager",$manager);
$stmt -> bindParam(":vat",$vat);
$stmt -> bindParam(":case_name",$case_name);
$stmt -> bindParam(":linkman",$linkman);
$stmt -> bindParam(":lm_tel",$lm_tel);
$stmt -> bindParam(":address",$address);
$stmt -> bindParam(":salesman",$salesman);
$stmt -> bindParam(":salesman_name",$salesman_name);
$stmt -> bindParam(":files_id",$files_id);
$stmt -> bindParam(":created_at",$created_at);
$stmt -> bindParam(":created_by",$created_by);
$stmt -> execute();
$result = $conn->commit();
if($result){
header("HTTP/1.1 201 Created");
}
}catch(PDOException $e){
$conn->rollback();
echo $e->getMessage();
die('Error!:'.$e->getMessage());
}
}
function upload_chk( $file, $path, $max_size, $allow_ext, $file_name ){
$source_file_name = $file['name']; //上傳檔案的原來檔案名稱
$file_type = $file['type']; //上傳檔案的類型(副檔名)
$tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名
$file_size = $file['size']; //上傳檔案的檔案大小(容量)
$error = $file['error']; //上傳工作傳回的錯誤訊息編號
$msg = ''; //負責記錄回傳的訊息
//1.判斷錯誤編號只有為0時表示沒有錯誤發生,才表示上傳成功 =================
if( $error == 0 ){
//取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名
//pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION)
$ext = pathinfo($source_file_name, PATHINFO_EXTENSION);
$ext = strtolower($ext); //將延伸的副檔名轉小寫
//2.判斷上傳檔案的大小 ====================================
if( $file_size > $max_size ){
//當目前檔案容量超過容量限制時, 以下準備顯示的資訊
if( $max_size >= 4096*4096 ){
$max_size /= (4096*4096);
$max_size .= 'M';
}elseif( $max_size >= 4096 ){
$max_size /= 4096;
$max_size .= 'K';
}
$msg ='上傳檔案過大,請選擇容量小於 '.$max_size.' 的檔案';
//3.判斷檔案類型 ===========================================
//in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中
}elseif( !in_array( $ext, $allow_ext ) ){
$allow_str = ''; //準備將允許檔案類型的陣列內容, 組合成字串
foreach( $allow_ext as $key=>$value ){
//if的縮寫語法:條件?成立執行的工作:不成立執行的工作;
$key==0? $allow_str.= $value : $allow_str.=', '.$value;
}
$msg = '檔案類型不符合,請選擇 '.$allow_str.' 檔案';
//4.以上條件都沒問題的話, 則進行最後else中的工作===============
}else{
//搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1)
$msg = @move_uploaded_file($tmp_name, $path.$file_name);
}
}else{
//這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ======================================
switch ($error) {
case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break;
case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break;
case 3: $msg = '檔案只有部份被上傳'; break;
case 4: $msg = '沒有檔案被上傳'; break;
case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break;
case 7: $msg = '檔案寫入失敗'; break;
case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break;
}
} //if( $error == 0 ){ ..... end
return $msg; //回傳$msg的結果
}

136
wms/contract/api/postNewContractData.php

@ -0,0 +1,136 @@
<?php
require_once("../conn.php");
include_once("./getFacilityNo.php");
include_once("./getComboNo.php");
include_once("./upload_chk.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' );
if($_SERVER['REQUEST_METHOD'] != 'POST'){
exit();
}
//新梯簽回
if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'm') {
try{
$created_at = date('Y-m-d H:i:s');
$created_by = $_POST["user_id"];
$contractno = $_POST["contractno"];
$customer = $_POST["customer"];
$manager = $_POST["manager"];
$vat = $_POST["vat"];
$case_name = $_POST["case_name"];
$linkman = $_POST["linkman"];
$lm_tel = $_POST["lm_tel"];
$address = $_POST["address"];
$salesman = $_POST["salesman"];
$contracttype = $_POST["contracttype"];
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$files_id = null;
$fail_arr = [];
if(empty($contractno)) $fail_arr[] = '合約號為必填';
if(empty($customer)) $fail_arr[] = '客戶名稱為必填';
if(empty($manager)) $fail_arr[] = '負責人為必填';
if(empty($vat)) $fail_arr[] = '統編/身分證為必填';
if(empty($case_name)) $fail_arr[] = '案名為必填';
if(empty($linkman)) $fail_arr[] = '聯絡人為必填';
if(empty($lm_tel)) $fail_arr[] = '聯絡人電話為必填';
if(empty($address)) $fail_arr[] = '地址為必填';
if(empty($salesman)) $fail_arr[] = '營業員為必填';
if(count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr);
exit();
}
$conn->beginTransaction();
$sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(":accountid",$salesman);
$stmt -> execute();
$saleman = $stmt->fetch(PDO::FETCH_ASSOC);
$salesman_name = $saleman['name'];
if(!empty($files)){
$englisharr = range('a', 'z');
$files = $_FILES['files'];
$newfiles = [];
foreach( $files as $file ){
$i = 0; //新陣列的索引編號
foreach( $file as $key => $val ){
$newfiles[$i]['name'] = $files['name'][$key];
$newfiles[$i]['type'] = $files['type'][$key];
$newfiles[$i]['tmp_name'] = $files['tmp_name'][$key];
$newfiles[$i]['error'] = $files['error'][$key];
$newfiles[$i]['size'] = $files['size'][$key];
$i++;
} //foreach 第2層 end
}
$max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型
$path = '../images/contracts/';
if (!file_exists($path)) { mkdir($path); }
$msg_result = ''; //負責接收所有檔案檢測後的回傳訊息
$datetime = (string)date('YmdHis');
$files_id = 'm' . $datetime; // 保養=>b + 日期時間
foreach( $newfiles as $key => $file ){
$randNum = rand(1000,9999);
$randEnglish = $englisharr[rand(0,25)];
$file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name'];
$msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name );
if($msg==1){
$msg = '檔案傳送成功!';
$sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(':files_id' ,$files_id);
$stmt -> bindParam(':file_name' ,$file_name);
$stmt -> bindParam(':file_mime' ,$file['type']);
$stmt -> bindParam(':file_size' ,$file['size']);
$stmt -> bindParam(':created_at' ,$created_at);
$stmt -> bindParam(':created_by' ,$created_by);
$stmt ->execute();
}else{
throw new PDOException('檔案上傳失敗:' . $msg);
}
$msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '<br/>';
$src_name = $path.$file['name'];
if( file_exists($src_name) ){
//副檔名
$extname = pathinfo($src_name, PATHINFO_EXTENSION);
//主檔名
$basename = basename($src_name, '.'.$extname);
}
}
}else{
$files = null;
}
$sql_str = "INSERT INTO contract_m_signed_back (contract_no, customer, manager, vat, case_name, linkman, lm_tel, address, salesman, salesman_name, files_id, created_at, created_by) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(":contract_no",$contractno);
$stmt -> bindParam(":customer",$customer);
$stmt -> bindParam(":manager",$manager);
$stmt -> bindParam(":vat",$vat);
$stmt -> bindParam(":case_name",$case_name);
$stmt -> bindParam(":linkman",$linkman);
$stmt -> bindParam(":lm_tel",$lm_tel);
$stmt -> bindParam(":address",$address);
$stmt -> bindParam(":salesman",$salesman);
$stmt -> bindParam(":salesman_name",$salesman_name);
$stmt -> bindParam(":files_id",$files_id);
$stmt -> bindParam(":created_at",$created_at);
$stmt -> bindParam(":created_by",$created_by);
$stmt -> execute();
$result = $conn->commit();
if($result){
header("HTTP/1.1 201 Created");
}
}catch(PDOException $e){
$conn->rollback();
header("HTTP/1.1 500 Internal Server Error");
die('Error!:'.$e->getMessage());
}
}

132
wms/contract/api/putContractData.php

@ -0,0 +1,132 @@
<?php
require_once("../conn.php");
include_once("./upload_chk.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' );
// echo json_encode(explode(',', $_POST['deletefiles']));
if(isset($_POST['contractno']) && $_POST['contractno']!="" && isset($_POST["id"]) && $_POST['id']!=""){
try{
$created_at = date('Y-m-d H:i:s');
$created_by = $_POST['user_id'];
$id = $_POST["id"];
$contract_no = !empty($_POST['contractno']) ? $_POST['contractno'] : null;
$customer = !empty($_POST['customer']) ? $_POST['customer'] : null;
$manager = !empty($_POST['manager']) ? $_POST['manager'] : null;
$vat = !empty($_POST['vat']) ? $_POST['vat'] : null;
$case_name = !empty($_POST['case_name']) ? $_POST['case_name'] : null;
$linkman = !empty($_POST['linkman']) ? $_POST['linkman'] : null;
$lm_tel = !empty($_POST['lm_tel']) ? $_POST['lm_tel'] : null;
$address = !empty($_POST['address']) ? $_POST['address'] : null;
$salesman = !empty($_POST['salesman']) ? $_POST['salesman'] : null;
$deletefiles = !empty($_POST['deletefiles']) ? $_POST['deletefiles'] : null;
$files_id = !empty($_POST['files_id']) ? $_POST['files_id'] : null;
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$deletefilesArr = explode(',', $_POST['deletefiles']);
$fail_arr = [];
if(empty($contract_no)) $fail_arr[] = '合約號為必填';
if(empty($customer)) $fail_arr[] = '客戶名稱為必填';
if(empty($manager)) $fail_arr[] = '負責人為必填';
if(empty($vat)) $fail_arr[] = '統編/身分證為必填';
if(empty($case_name)) $fail_arr[] = '案名為必填';
if(empty($linkman)) $fail_arr[] = '聯絡人為必填';
if(empty($lm_tel)) $fail_arr[] = '聯絡人電話為必填';
if(empty($address)) $fail_arr[] = '地址為必填';
if(empty($salesman)) $fail_arr[] = '營業員為必填';
if(count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr);
exit();
}
$conn->beginTransaction();
$sql_str = "UPDATE contract_m_signed_back SET contract_no=:contract_no, customer=:customer, manager=:manager, vat=:vat, case_name=:case_name, linkman=:linkman, lm_tel=:lm_tel, address=:address, salesman=:salesman WHERE id = :id";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(':contract_no' ,$contract_no);
$stmt -> bindParam(':customer' ,$customer);
$stmt -> bindParam(':manager' ,$manager);
$stmt -> bindParam(':vat' ,$vat);
$stmt -> bindParam(':case_name' ,$case_name);
$stmt -> bindParam(':linkman' ,$linkman);
$stmt -> bindParam(':lm_tel' ,$lm_tel);
$stmt -> bindParam(':address' ,$address);
$stmt -> bindParam(':salesman' ,$salesman);
$stmt -> bindParam(':id' ,$id);
$stmt -> execute();
if(!empty($deletefiles)){
$sql_str = "DELETE FROM contract_back_files WHERE id IN ($deletefiles)";
$stmt = $conn -> prepare($sql_str);
$stmt -> execute();
}
if(!empty($files)){
$englisharr = range('a', 'z');
$files = $_FILES['files'];
$newfiles = [];
foreach( $files as $file ){
$i = 0; //新陣列的索引編號
foreach( $file as $key => $val ){
$newfiles[$i]['name'] = $files['name'][$key];
$newfiles[$i]['type'] = $files['type'][$key];
$newfiles[$i]['tmp_name'] = $files['tmp_name'][$key];
$newfiles[$i]['error'] = $files['error'][$key];
$newfiles[$i]['size'] = $files['size'][$key];
$i++;
} //foreach 第2層 end
}
$max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型
$path = '../images/contracts/';
if (!file_exists($path)) { mkdir($path); }
$msg_result = ''; //負責接收所有檔案檢測後的回傳訊息
$datetime = (string)date('YmdHis');
$files_id = ($files_id !== null ) ? $files_id : 'm' . $datetime; // 新梯=>m + 日期時間
foreach( $newfiles as $key => $file ){
$randNum = rand(1000,9999);
$randEnglish = $englisharr[rand(0,25)];
$file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name'];
$msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name );
if($msg==1){
$msg = '檔案傳送成功!';
$sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(':files_id' ,$files_id);
$stmt -> bindParam(':file_name' ,$file_name);
$stmt -> bindParam(':file_mime' ,$file['type']);
$stmt -> bindParam(':file_size' ,$file['size']);
$stmt -> bindParam(':created_at' ,$created_at);
$stmt -> bindParam(':created_by' ,$created_by);
$stmt ->execute();
}else{
throw new PDOException('檔案上傳失敗:' . $msg);
}
$msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '<br/>';
$src_name = $path.$file['name'];
if( file_exists($src_name) ){
//副檔名
$extname = pathinfo($src_name, PATHINFO_EXTENSION);
//主檔名
$basename = basename($src_name, '.'.$extname);
}
}
}else{
$files = null;
}
$conn->commit();
}catch(PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 Internal Server Error");
die('Error!:'.$e->getMessage());
}
}

61
wms/contract/api/upload_chk.php

@ -0,0 +1,61 @@
<?php
function upload_chk( $file, $path, $max_size, $allow_ext, $file_name ){
$source_file_name = $file['name']; //上傳檔案的原來檔案名稱
$file_type = $file['type']; //上傳檔案的類型(副檔名)
$tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名
$file_size = $file['size']; //上傳檔案的檔案大小(容量)
$error = $file['error']; //上傳工作傳回的錯誤訊息編號
$msg = ''; //負責記錄回傳的訊息
//1.判斷錯誤編號只有為0時表示沒有錯誤發生,才表示上傳成功 =================
if( $error == 0 ){
//取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名
//pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION)
$ext = pathinfo($source_file_name, PATHINFO_EXTENSION);
$ext = strtolower($ext); //將延伸的副檔名轉小寫
//2.判斷上傳檔案的大小 ====================================
if( $file_size > $max_size ){
//當目前檔案容量超過容量限制時, 以下準備顯示的資訊
if( $max_size >= 4096*4096 ){
$max_size /= (4096*4096);
$max_size .= 'M';
}elseif( $max_size >= 4096 ){
$max_size /= 4096;
$max_size .= 'K';
}
$msg ='上傳檔案過大,請選擇容量小於 '.$max_size.' 的檔案';
//3.判斷檔案類型 ===========================================
//in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中
}elseif( !in_array( $ext, $allow_ext ) ){
$allow_str = ''; //準備將允許檔案類型的陣列內容, 組合成字串
foreach( $allow_ext as $key=>$value ){
//if的縮寫語法:條件?成立執行的工作:不成立執行的工作;
$key==0? $allow_str.= $value : $allow_str.=', '.$value;
}
$msg = '檔案類型不符合,請選擇 '.$allow_str.' 檔案';
//4.以上條件都沒問題的話, 則進行最後else中的工作===============
}else{
//搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1)
$msg = @move_uploaded_file($tmp_name, $path.$file_name);
}
}else{
//這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ======================================
switch ($error) {
case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break;
case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break;
case 3: $msg = '檔案只有部份被上傳'; break;
case 4: $msg = '沒有檔案被上傳'; break;
case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break;
case 7: $msg = '檔案寫入失敗'; break;
case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break;
}
} //if( $error == 0 ){ ..... end
return $msg; //回傳$msg的結果
}

2
wms/contract/contract-download.php

@ -81,7 +81,7 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.3/purify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<main x-data="alpineData">
<main x-data="contractDownload">
<div class="sidebar">
<ul>
<button :class="isbuyShow ? 'active' : ''" @click="isbuyShow = true">電梯買賣合約書</button>

265
wms/contract/contract-input.php

@ -17,252 +17,18 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /><script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" ></script>
<div class="contract-input-component" x-data="{
init(){
$('.contract-input-component .form .dropdown').dropdown();
axios.get('./twzip.json').then(res=>{
this.cities = res.data.cities
})
},
cities:[],
data:{
contractno:'B23100060',
total_price:'', //合約總價
vat:'', //統一編號
mtype:'A', //維修型態
phone:'', //客戶電話
email:'', //Email
mworker:'', //保養員
mcycle:'', //保養頻率
salesman:'', //營業員
contract_begin_date:'', //合約開始時間
contract_end_date:'', //合約終止時間
area:'', //區域
zip:'', //郵遞區號
address:'', //地址
customer:'', //立約人
partyA:'', //業務聯繫人
partyAaddress:'', //業務聯繫人地址
partyAphone:'', //業務聯繫人電話
partyAemail:'', //業務聯繫人email
files:[], //附件檔案
num:'', //電梯數量
disabled:false, //資料庫是否有電梯數量資料
elevators:[], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期
},
customize:false,
step:1,
isLoading:false,
fail_arr:[],
nextStepFn(){
if(this.step==1){
if(this.data.contractno == '') return alert('請輸入合約號');
this.isLoading = true
this.getContractDate();
}else if(this.step == 2){
if(this.data.num <= 0) return alert('請填寫電梯數量!')
if(!this.data.disabled){
this.createElevator();
}
this.step = 3
}
},
nextStepKeyupFn(e){
if(e.keyCode !== 13) return
if(this.step==1){
if(this.data.contractno == '') return alert('請輸入合約號');
this.isLoading = true
this.getContractDate();
}else if(this.step == 2){
this.step = 3
}
},
createElevator(){
for(let i=0;i<this.data.num;i++){
this.data.elevators.push({
spec:'', //規格
weight:'', //載重
speed:'', //速度
persons:'', //人乘
stop:'', //樓停
floors:'', //樓層
latitude:'', //緯度
longitude:'', //經度
elevator_brand:'', //廠牌
opendoor:'', //開門方式
maintainance:'', //保養別
takecertificatedate:'', //竣檢日
useful_date:'', //許可證有效日期
})
}
},
getContractDate(){
axios.get('./api/getContractData.php?contracttype=b&contractno=' + this.data.contractno).then(res=>{
if(!res.data){
this.step = 2
this.isLoading = false
return
}
if(!this.customize){
console.log(res.data);
this.data.total_price = res.data.sold_price
this.data.salesman = res.data.salesman
this.data.contract_begin_date = res.data.contract_begin_date
this.data.contract_end_date = res.data.contract_end_date
this.data.address = res.data.address
this.data.customer = res.data.customer
this.data.partyA = res.data.customer
this.data.partyAaddress = res.data.address
this.data.num = res.data.num
this.data.disabled = (res.data.num > 0) ? true : false;
this.data.elevators = res.data.elevators
let cityIndex = this.data.address.indexOf('市');
console.log(cityIndex);
if(cityIndex == -1) {
cityIndex = this.data.address.indexOf('縣');
}
if (cityIndex > 1) {
// 獲取''市''前面的兩個字
let city = this.data.address.substring(cityIndex - 2, cityIndex + 1);
this.data.area = city;
} else {
this.data.area = ''
}
}
this.step = 2
this.isLoading = false
}).catch(err=>{
console.error(err)
this.isLoading = false
})
},
preStepFn(){
if(this.step==2){
if(confirm('回到上一頁會將會初始化資料,確定返回嗎?')){
this.step = 1
this.data.total_price = ''
this.data.salesman = ''
this.data.contract_begin_date = ''
this.data.contract_end_date = ''
this.data.address = ''
this.data.customer = ''
this.data.partyA = ''
this.data.partyAaddress = ''
this.step = 1
this.data.num = ''
this.data.disabled = false
this.data.elevators = []
this.data.files = []
this.data.vat = ''
this.data.mtype = ''
this.data.phone = ''
this.data.email = ''
this.data.mworker = ''
this.data.mcycle = ''
this.data.area = ''
this.data.zip = ''
this.data.partyAphone = ''
this.data.partyAemail = ''
return;
}
}else if(this.step == 3){
this.step = 2
}
},
save(){
this.isLoading = true
const form = new FormData();
form.append('contractno', this.data.contractno);
form.append('total_price', this.data.total_price);
form.append('vat', this.data.vat);
form.append('mtype', this.data.mtype);
form.append('phone', this.data.phone);
form.append('email', this.data.email);
form.append('mworker', this.data.mworker);
form.append('mcycle', this.data.mcycle);
form.append('salesman', this.data.salesman);
form.append('contract_begin_date', this.data.contract_begin_date);
form.append('contract_end_date', this.data.contract_end_date);
form.append('address', this.data.address);
form.append('area', this.data.area);
form.append('customer', this.data.customer);
form.append('partyA', this.data.partyA);
form.append('partyAaddress', this.data.partyAaddress);
form.append('partyAphone', this.data.partyAphone);
form.append('partyAemail', this.data.partyAemail);
form.append('user_id', '<?php echo $user_id; ?>');
form.append('user_name', '<?php echo $user_name; ?>');
form.append('num', this.data.num);
form.append('elevators', JSON.stringify(this.data.elevators));
form.append('contracttype', 'b');
// 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
axios.post('./api/postContractData.php', form).then(res=>{
console.log(res.status);
if(res.status === 200){
alert('儲存成功');
this.step = 1
this.data.total_price = ''
this.data.salesman = ''
this.data.contract_begin_date = ''
this.data.contract_end_date = ''
this.data.address = ''
this.data.customer = ''
this.data.partyA = ''
this.data.partyAaddress = ''
this.step = 1
this.data.num = ''
this.data.disabled = false
this.data.elevators = []
this.data.files = []
this.data.vat = ''
this.data.mtype = ''
this.data.phone = ''
this.data.email = ''
this.data.mworker = ''
this.data.mcycle = ''
this.data.area = ''
this.data.zip = ''
this.data.partyAphone = ''
this.data.partyAemail = ''
}
this.isLoading = false
}).catch(error=>{
let code = error.response.status;
if(code == 422){
this.fail_arr = error.response.data
this.errorFn();
}
this.isLoading = false
})
},
errorFn(){
let msg = ''
for(let i = 0; i < this.fail_arr.length; i++){
msg += this.fail_arr[i] + '、'
}
alert(msg)
},
uploadFiles(e){
this.data.files = e.target.files
},
}">
<div class="contract-input-component" x-data="contractInput">
<div class="form" method="post" id="form" enctype="multipart/form-data" >
<input type="hidden" name='form_name' value="main_form" />
<div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead>
<tr>
<td colspan="9">
<td colspan="8">
<h3 style='text-align:center'>合約入力(保養)</h3>
</td>
</tr>
@ -271,11 +37,11 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr>
<td style="vertical-align: middle">合約號</td>
<td>
<td colspan="5">
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" >
</td>
<td style="vertical-align: middle">
<td colspan="2" style="vertical-align: middle">
<label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label>
@ -411,14 +177,13 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<p class="alerttext" x-show="data.area==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">詳細地址</td>
<td colspan="3">
<td colspan="2">
<input type="text" x-model="data.address" />
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">附件</td>
<td >
<td colspan="2">
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<p class="alerttext" x-show="data.files==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
@ -577,8 +342,10 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</div>
</div>
<script
src="./js/jquery/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js" ></script>
<script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="semantic/dist/semantic.min.js" ></script>
<script src="./js/alpine.js"></script>
<script>
const user_id = '<?php echo $user_id; ?>'
const user_name = '<?php echo $user_name; ?>'
</script>

253
wms/contract/contract-newelevator-edit.php

@ -0,0 +1,253 @@
<?php
include("../header.php");
require_once("./conn.php");
$id = $_GET['contractid'];
$sql_str = "SELECT * FROM contract_m_signed_back WHERE id = :id ORDER BY id DESC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':id', $id);
$stmt->execute();
$contract= $stmt->fetch(PDO::FETCH_ASSOC);
$files_id = $contract['files_id'];
$sql_str = "SELECT * FROM contract_back_files WHERE files_id = :files_id ";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':files_id', $files_id);
$stmt->execute();
$files= $stmt->fetchAll(PDO::FETCH_ASSOC);
$files = json_encode($files);
$accounttype = "M";
$sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(":accounttype", $accounttype);
$stmt -> execute();
$persons = $stmt->fetchAll(PDO::FETCH_ASSOC);
$persons = array_map(function($person){
return [
'view'=>$person['accountid'] .'-'. $person['name'],
'value'=>$person['accountid'],
'name'=>$person['name']
];
}, $persons);
?>
<link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.js"></script>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.css"
/>
<div class="contract-management" x-data='{
isLoading:false,
data:{
id:<?php echo $id; ?>,
contractno:"<?php echo $contract["contract_no"]; ?>",
customer:"<?php echo $contract["customer"]; ?>",
manager:"<?php echo $contract["manager"]; ?>",
vat:"<?php echo $contract["vat"]; ?>",
case_name:"<?php echo $contract["case_name"]; ?>",
linkman:"<?php echo $contract["linkman"]; ?>",
lm_tel:"<?php echo $contract["lm_tel"]; ?>",
address:"<?php echo $contract["address"]; ?>",
salesman:"<?php echo $contract["salesman"]; ?>",
files:<?php echo $files; ?>,
newfiles:[],
deletefiles:[],
files_id: "<?php echo $contract["files_id"]; ?>",
},
fail_arr:[],
deleteFileFn(id){
if(!confirm("確定要刪除嗎?")) return
this.data.files = this.data.files.filter(file=> id != file.id)
this.data.deletefiles.push(id)
console.log(this.data.deletefiles);
},
save(){
this.isLoading = true
const form = new FormData();
form.append("id", this.data.id);
form.append("contractno", this.data.contractno);
form.append("customer", this.data.customer);
form.append("manager", this.data.manager);
form.append("vat", this.data.vat);
form.append("case_name", this.data.case_name);
form.append("linkman", this.data.linkman);
form.append("lm_tel", this.data.lm_tel);
form.append("address", this.data.address);
form.append("salesman", this.data.salesman);
form.append("deletefiles", this.data.deletefiles);
form.append("files_id", this.data.files_id);
form.append("user_id", "<?php echo $user_id; ?>");
for (var i = 0; i < this.data.newfiles.length; i++) {
form.append("files[]", this.data.newfiles[i]);
}
axios.post("./api/putContractData.php", form).then(res=>{
console.log(res.data)
if(res.status === 200){
alert("更新成功")
this.step = 1
this.data.contractno=""
this.data.customer=""
this.data.manager=""
this.data.vat=""
this.data.case_name=""
this.data.linkman=""
this.data.lm_tel=""
this.data.address=""
this.data.salesman=""
this.data.files=[]
this.customize = false
}
this.isLoading = false
}).catch(error=>{
let code = error.response.status;
if(code == 422){
this.fail_arr = error.response.data
this.errorFn()
}
if(code == 500){
alert("更新失敗!可能為以下錯誤:\n" + error.response.data)
}
this.isLoading = false
})
},
uploadFiles(e){
this.data.newfiles = e.target.files
},
errorFn(){
let msg = ""
for(let i = 0; i < this.fail_arr.length; i++){
msg += this.fail_arr[i] + "、"
}
alert(msg)
},
}'>
<div class="form" method="post" id="form" enctype="multipart/form-data" >
<input type="hidden" name='form_name' value="main_form" />
<div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'>合約管理(新梯)</h3>
</td>
</tr>
</thead>
<tbody style="font-weight: bolder;margin-bottom: 20px" >
<tr>
<td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>檢視合約</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control disabled_select" type="text" x-model="data.customer" >
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">負責人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.manager" >
<p class="alerttext" x-show="data.manager==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" >
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員</td>
<td style="vertical-align: middle">
<select class="salesman" id="salesman" x-model="data.salesman">
<option value="">選擇營業員</option>
<?php foreach($persons as $person): ?>
<option value="<?php echo $person['value']; ?>"><?php echo $person['view']; ?></option>
<?php endforeach ?>
</select>
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">聯繫人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.linkman" >
<p class="alerttext" x-show="data.linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.lm_tel" >
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">案件名稱</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.case_name" >
<p class="alerttext" x-show="data.case_name==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">地址</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.address" >
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">附件上傳</td>
<td colspan=3>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">附件</td>
<td colspan=7>
<div class="images">
<template x-for="file in data.files" :key="file.id">
<div class="image">
<a :href="'./images/contracts/' + file.file_name" data-fancybox="gallery" :data-src="'./images/contracts/' + file.file_name" data-caption="">
<img :src="'./images/contracts/' + file.file_name" />
</a>
<i class="fas fa-times" @click="deleteFileFn(file.id)"></i>
</div>
</template>
</div>
</td>
</tr>
</tbody>
</table>]
<button @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>更新</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button type="button" class="btn btn-primary btn-lg pull-right savebtn" @click="window.location.href='./contract-newelevator-management.php?<?php echo $token_link; ?>'">回列表</button>
</div>
</div>
</div>
<script src="semantic/dist/semantic.min.js" ></script>
<script>
$('#table_index').DataTable(
{
"order": [
[0, "desc"],
]
}
);
Fancybox.bind('[data-fancybox="gallery"]', {
});
</script>

369
wms/contract/contract-newelevator-input.php

@ -1,233 +1,154 @@
<?php
include("../header.php");
require_once("./conn.php");
$accounttype = "M";
$sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(":accounttype", $accounttype);
$stmt -> execute();
$persons = $stmt->fetchAll(PDO::FETCH_ASSOC);
$persons = array_map(function($person){
return [
'view'=>$person['accountid'] .'-'. $person['name'],
'value'=>$person['accountid'],
'name'=>$person['name']
];
}, $persons);
?>
<link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /><script defer src="./js/alpinejs/cdn.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="./js/axios/axios.min.js"></script>
<div class="contract-input-component" x-data="{
init(){
},
data:{
contractno:'D23080110',
customer:'',
manager:'',
vat:'',
case_name:'',
linkman:'',
lm_tel:'',
address:'',
salesman:'',
files:[],
},
step:1,
isLoading:false,
nextStepFn(){
this.isLoading = true
if(this.step == 1){
axios.get('./api/getContractData.php?contracttype=m&contractno=' + this.data.contractno).then(res=>{
if(res.data){
console.log(res.data);
this.data.customer = res.data.customer
this.data.manager = res.data.manager
this.data.vat = res.data.uscc
this.data.case_name = res.data.case_name
this.data.linkman = res.data.linkman
this.data.lm_tel = res.data.lm_tel
this.data.address = res.data.address
this.data.salesman = res.data.salesman
this.isLoading = false
this.step = 2
}
}).catch(err=>{
console.error(err)
this.isLoading = false
})
}
},
nextStepKeyupFn(){
if(e.keyCode !== 13) return
if(this.step == 1){
this.step = 2
}
},
preStepFn(){
if(this.step == 2){
this.step = 1
}
},
save(){
this.isLoading = true
const form = new FormData();
form.append('contractno', this.data.contractno);
form.append('customer', this.data.customer);
form.append('manager', this.data.manager);
form.append('vat', this.data.vat);
form.append('case_name', this.data.case_name);
form.append('linkman', this.data.linkman);
form.append('lm_tel', this.data.lm_tel);
form.append('address', this.data.address);
form.append('salesman', this.data.salesman);
form.append('contracttype', 'm');
form.append('user_id', '<?php echo $user_id; ?>');
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
axios.post('./api/postContractData.php', form).then(res=>{
console.log(res.data);
if(res.status === 201){
alert('儲存成功')
}
this.isLoading = false
}).catch(error=>{
let code = error.response.status;
if(code == 422){
this.fail_arr = error.response.data
this.errorFn();
}
this.isLoading = false
})
},
errorFn(){
let msg = ''
for(let i = 0; i < this.fail_arr.length; i++){
msg += this.fail_arr[i] + '、'
}
alert(msg)
},
uploadFiles(e){
this.data.files = e.target.files
},
}">
<div class="form" method="post" id="form" enctype="multipart/form-data" >
<input type="hidden" name='form_name' value="main_form" />
<div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead>
<tr>
<td colspan="9">
<h3 style='text-align:center'>合約入力(新梯)</h3>
</td>
</tr>
</thead>
<template x-if="step==1">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr>
<td style="vertical-align: middle">合約號</td>
<td>
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" >
</td>
<td style="vertical-align: middle">
<label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label>
</td>
</tr>
</tbody>
</template>
<template x-if="step==2">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2">
<tr>
<td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>業務確認項</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.customer" >
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">負責人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.manager" >
<p class="alerttext" x-show="data.manager==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" >
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員工號</td>
<td style="vertical-align: middle">
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.salesman" >
<p class="alerttext" x-show="data.case_name==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">聯繫人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.linkman" >
<p class="alerttext" x-show="data.linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.lm_tel" >
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">案件名稱</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.case_name" >
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">地址</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.address" >
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">附件上傳</td>
<td colspan=3>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
</tbody>
</template>
</table>
<button x-show="step==2" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>存檔</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step<=1" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading">
<template x-if="!isLoading">
<span>下一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>上一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<div class="contract-input-component" x-data="contractNewInput">
<div class="form" method="post" id="form" enctype="multipart/form-data" >
<input type="hidden" name='form_name' value="main_form" />
<div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'>合約入力(新梯)</h3>
</td>
</tr>
</thead>
<template x-if="step==1">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr>
<td style="vertical-align: middle">合約號</td>
<td colspan=5>
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" >
</td>
<td colspan="2" style="vertical-align: middle">
<label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label>
</td>
</tr>
</tbody>
</template>
<template x-if="step==2">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2">
<tr>
<td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>業務確認項</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.customer" >
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">負責人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.manager" >
<p class="alerttext" x-show="data.manager==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" >
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員</td>
<td style="vertical-align: middle">
<div class="ui form">
<select class="salesman" id="salesman" x-model="data.salesman">
<option value="">請選擇營業員</option>
<?php foreach($persons as $person): ?>
<option value="<?php echo $person['value']; ?>"><?php echo $person['view']; ?></option>
<?php endforeach ?>
</select>
</div>
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">聯繫人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.linkman" >
<p class="alerttext" x-show="data.linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.lm_tel" >
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">案件名稱</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.case_name" >
<p class="alerttext" x-show="data.case_name==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">地址</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.address" >
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">附件上傳</td>
<td colspan=3>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
</td>
</tr>
</tbody>
</template>
</table>
<button x-show="step==2" x-on:click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>存檔</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step<=1" x-on:click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading">
<template x-if="!isLoading">
<span>下一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step>1" x-on:click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>上一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
</div>
</div>
</div>
</div>
<script
src="./js/jquery/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js" ></script>
<script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="./js/alpine.js"></script>
<script>
const user_id = '<?php echo $user_id; ?>';
const user_name = '<?php echo $user_name; ?>';
</script>

119
wms/contract/contract-newelevator-management.php

@ -0,0 +1,119 @@
<?php
include("../header.php");
require_once("./conn.php");
$sql_str = "SELECT * FROM contract_m_signed_back ";
$stmt = $conn->prepare($sql_str);
$stmt->execute();
$contracts= $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js"></script>
<div class="contract-management" x-data="{
deleteFn(id){
if(confirm('確定要刪除嗎?')){
axios.get('./api/deleteNewContractData.php?contractid='+id).then(res=> {
console.log(res);
if(res.status === 204){
alert('刪除成功!')
location.reload();
}
})
}
}
}">
<div style="overflow-x:auto;margin-top:12px">
<a href="contract-newelevator-input.php?function_name=repair&<?php echo $token_link; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a>
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>合約號</th>
<th>客戶名稱</th>
<th>負責人</th>
<th>統編</th>
<th>建檔者</th>
<th>建立時間</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php foreach($contracts as $contract): ?>
<tr>
<td><?php echo $contract['id']; ?></td>
<td><?php echo $contract['contract_no'] ?></td>
<td><?php echo $contract['customer'] ?></td>
<td><?php echo $contract['manager'] ?></td>
<td><?php echo $contract['vat'] ?></td>
<td><?php echo $contract['created_by'] ?></td>
<td><?php echo $contract['created_at'] ?></td>
<td style="width:30px">
<p>
<a href="contract-newelevator-edit.php?contractid=<?php echo $contract['id']; ?>&function_name=repair&<?php echo $token_link; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-pencil"></span>
</a>
<a href="javascript:;" class="btn btn-info btn-sm" style="margin-left:10px;" @click="deleteFn(<?php echo $contract['id']; ?>)">
<span class="glyphicon glyphicon-remove"></span>
</a>
</p>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
<style>
table {
table-layout:fixed;
width: 100%;
}
td {
word-wrap:break-word;
}
img {
width:125px;
}
.width_style_1 {
width:125px;
}
table{
width:100%;
}
#table_index_filter{
float:right;
}
#table_index_paginate{
float:right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
</style>
<script src="semantic/dist/semantic.min.js" ></script>
<script>
$('#table_index').DataTable(
{
"order": [
[0, "desc"],
]
}
);
</script>

1903
wms/contract/js/alpine.js

File diff suppressed because it is too large

84
wms/contract/styles/style.css

@ -541,14 +541,14 @@ main table td, main table th {
transform: rotate(360deg);
}
}
.contract-input-component .form {
.contract-input-component .form, .contract-management .form {
margin: 0 auto;
}
.contract-input-component .form .dropdown {
.contract-input-component .form .dropdown, .contract-management .form .dropdown {
width: 100%;
margin-top: 7px;
}
.contract-input-component .form .savebtn {
.contract-input-component .form .savebtn, .contract-management .form .savebtn {
margin-right: 13px;
display: flex;
justify-content: center;
@ -557,7 +557,7 @@ main table td, main table th {
height: 45px;
font-size: 15px;
}
.contract-input-component .form table .alerttext {
.contract-input-component .form table .alerttext, .contract-management .form table .alerttext {
font-size: 13px;
color: #a00;
font-weight: 500;
@ -565,48 +565,104 @@ main table td, main table th {
font-weight: 900;
padding: 0;
}
.contract-input-component .form input[type=file] {
.contract-input-component .form input[type=file], .contract-management .form input[type=file] {
padding: 12px 20px;
margin: 8px 0;
}
.contract-input-component .error {
.contract-input-component .error, .contract-management .error {
display: flex;
flex-direction: column;
margin: 15px;
}
.contract-input-component .error .errortext {
.contract-input-component .error .errortext, .contract-management .error .errortext {
font-size: 16px;
font-weight: 500;
color: #a00;
}
.contract-input-component .input-group-btn {
.contract-input-component .input-group-btn, .contract-management .input-group-btn {
font-size: 16px;
}
@media screen and (max-width: 600px) {
.contract-input-component table {
.contract-input-component table, .contract-management table {
border: 0;
}
.contract-input-component table thead {
.contract-input-component table thead, .contract-management table thead {
display: none;
}
.contract-input-component table tr {
.contract-input-component table tr, .contract-management table tr {
margin-bottom: 10px;
display: block;
border-bottom: 2px solid #ddd;
}
.contract-input-component table td {
.contract-input-component table td, .contract-management table td {
display: block;
text-align: left;
font-size: 14px;
border-bottom: 1px dotted #ccc;
}
.contract-input-component table td:last-child {
.contract-input-component table td:last-child, .contract-management table td:last-child {
border-bottom: 0;
}
.contract-input-component table td:before {
.contract-input-component table td:before, .contract-management table td:before {
content: attr(data-label);
float: left;
text-transform: uppercase;
font-weight: bold;
}
}
.contract-input-component .images, .contract-management .images {
display: flex;
flex-wrap: wrap;
padding: 20px;
}
.contract-input-component .images > .image, .contract-management .images > .image {
position: relative;
margin: 10px;
}
.contract-input-component .images > .image:hover > i, .contract-management .images > .image:hover > i {
opacity: 1;
}
.contract-input-component .images > .image > i, .contract-management .images > .image > i {
position: absolute;
top: -12px;
right: -12px;
color: #b00;
cursor: pointer;
opacity: 0;
transition: 0.3s;
}
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap: break-word;
}
img {
width: 125px;
}
.width_style_1 {
width: 125px;
}
table {
width: 100%;
}
#table_index_filter {
float: right;
}
#table_index_paginate {
float: right;
}
label {
display: inline-flex;
margin-bottom: 0.5rem;
margin-top: 0.5rem;
}/*# sourceMappingURL=style.css.map */

2
wms/contract/styles/style.css.map

File diff suppressed because one or more lines are too long

58
wms/contract/styles/style.scss

@ -562,7 +562,7 @@ main{
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.contract-input-component{
.contract-input-component, .contract-management{
.form{
margin:0 auto;
.dropdown{
@ -640,4 +640,58 @@ main{
font-weight: bold;
}
}
}
.images{
display: flex;
flex-wrap: wrap;
padding: 20px;
>.image{
position: relative;
margin:10px;
&:hover > i{
opacity: 1;
}
>i{
position: absolute;
top: -12px;
right:-12px;
color:#b00;
cursor: pointer;
opacity: 0;
transition: .3s;
}
}
}
}
table {
table-layout:fixed;
width: 100%;
}
td {
word-wrap:break-word;
}
img {
width:125px;
}
.width_style_1 {
width:125px;
}
table{
width:100%;
}
#table_index_filter{
float:right;
}
#table_index_paginate{
float:right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}

1
wms/excel-upload.php

@ -134,6 +134,7 @@ if (move_uploaded_file($temp_file_name, $target_file)) {
//创建作番信息
switch ($facilityno) {
case (preg_match('/TX/', $facilityno) ? true : false):
case (preg_match('/JX/', $facilityno) ? true : false):
$facility_kind = "MAE100";
break;
case (preg_match('/TW/', $facilityno) ? true : false):

4
wms/mkt/pricereview-create.php

@ -1308,7 +1308,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="item_unit_price" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_unit_price"]); ?>" readonly></td>
<td><input type="text" name="item_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["item_qty"]; ?>"><input type="hidden" name="item_qty_ori" value="<?php echo $v["item_qty"]; ?>"></td>
<td><input type="text" name="item_price_bp" class="form-control dollar-right" size="12" value="<?php echo number_format($v["item_price_bp"]); ?>" readonly></td>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo $v["spec_price"]*$v["spec_num"]; ?>" required>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo number_format($v["item_price_ct"]); ?>" required>
<input type="hidden" name="item_group" value="A"><input type="hidden" name="fp_id">
<input type="hidden" name="gross_profit">
<input type="hidden" name="item_price">
@ -1514,7 +1514,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="item_unit_price" class="form-control dollar-right" size="8" value="<?php echo $v["spec_price"]; ?>" readonly></td>
<td><input type="text" name="item_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["spec_num"]; ?>"><input type="hidden" name="item_qty_ori" value="<?php echo $v["spec_num"]; ?>"></td>
<td><input type="text" name="item_price_bp" class="form-control dollar-right" size="12" value="<?php echo number_format($v["spec_price"]*$v["spec_num"]); ?>" readonly></td>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo $v["spec_price"]*$v["spec_num"]; ?>" required>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo number_format($v["spec_price"]*$v["spec_num"]); ?>" required>
<input type="hidden" name="item_group" value="A"><input type="hidden" name="fp_id">
<input type="hidden" name="gross_profit">
<input type="hidden" name="item_price">

4
wms/mkt/pricereview_renovate-create.php

@ -1405,7 +1405,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="item_unit_price" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_unit_price"]); ?>" readonly></td>
<td><input type="text" name="item_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["item_qty"]; ?>"><input type="hidden" name="item_qty_ori" value="<?php echo $v["item_qty"]; ?>"></td>
<td><input type="text" name="item_price_bp" class="form-control dollar-right" size="12" value="<?php echo number_format($v["item_price_bp"]); ?>" readonly></td>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo $v["spec_price"]*$v["spec_num"]; ?>" required>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo number_format($v["item_price_ct"]); ?>" required>
<input type="hidden" name="item_group" value="A"><input type="hidden" name="fp_id">
<input type="hidden" name="item_price"><input type="hidden" name="gross_profit">
<input type="hidden" name="item_weight">
@ -1619,7 +1619,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="item_unit_price" class="form-control dollar-right" size="8" value="<?php echo $v["spec_price"]; ?>" readonly></td>
<td><input type="text" name="item_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["spec_num"]; ?>"><input type="hidden" name="item_qty_ori" value="<?php echo $v["spec_num"]; ?>"></td>
<td><input type="text" name="item_price_bp" class="form-control dollar-right" size="12" value="<?php echo number_format($v["spec_price"]*$v["spec_num"]); ?>" readonly></td>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo $v["spec_price"]*$v["spec_num"]; ?>" required>
<td nowrap><input type="text" name="item_price_ct" class="form-control dollar-right" size="12" value="<?php echo number_format($v["spec_price"]*$v["spec_num"]); ?>" required>
<input type="hidden" name="item_group" value="A"><input type="hidden" name="fp_id">
<input type="hidden" name="item_price"><input type="hidden" name="gross_profit">
<input type="hidden" name="item_weight">

4
wms/wipwhole-change-contractdate-submit.php

@ -54,6 +54,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 批次申請
if (($_POST['assign_status'] == 'A' || $_POST['assign_status'] == 'B') && !empty($all_contractno_change)) {
$wipwholestatus_id_arr = getWipwholestatusIdByConstractNo($link, $contractno);
$assign_status = $_POST['assign_status'];
foreach ($wipwholestatus_id_arr as $wipwholestatus_id) {
$data_arr = array(
'id' => $wipwholestatus_id[0],
@ -65,7 +66,8 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
'contractno' => $contractno,
'tds' => $tds,
'form_key' => getFomkeySeq($link),
'user_id' => $user_id
'user_id' => $user_id,
'change_status' => $assign_status
);
// 寫入表單主檔
addWipwholeChangeContractdateDetails($link, $data_arr);

13
wms/wipwhole-change-planning-customer-name-function.php

@ -33,6 +33,8 @@ function isLeader($link, $user_id)
return true;
if (getDepartmentId($link, $user_id) == '315' && getRoleId($link, $user_id) == '1')
return true;
if (getDepartmentId($link, $user_id) == '220' && getRoleId($link, $user_id) == '1')
return true;
return false;
}
@ -426,10 +428,8 @@ function getChangeStatus($link, $cid)
function getChangeStatusName($link, $cid)
{
$dataArr = array(
'A' => '申請中',
'B' => '申請中',
'C' => '已取消',
'D' => '工務已通過',
'Z' => '已通過',
);
$sql = "
@ -628,19 +628,14 @@ function getAssignStatusSelect($link, $user_id, $nowFormStatus)
$options_str = "<select name='assign_status' id='assign_status'>";
if (empty($nowFormStatus)) {
if (isLeader($link, $user_id)) {
$options_str .= "<option value='A'>提出申請</option>";
$options_str .= "<option value='Z'>提出申請</option>";
} else {
$options_str .= "<option value='B'>提出申請</option>";
}
}
if (in_array(checkNowFormStatus($link), ['A', 'D'])) {
if ($user_id == 'M0060')
$options_str .= "<option value='Z'>通過</option>";
$options_str .= "<option value='C'>取消</option>";
}
if (checkNowFormStatus($link) == 'B') {
if (isLeader($link, $user_id))
$options_str .= "<option value='D'>通過</option>";
$options_str .= "<option value='Z'>通過</option>";
$options_str .= "<option value='C'>取消</option>";
}
$options_str .= "</select>";

239
wms/wipwhole-change-planning-customer-name-submit.php

@ -13,7 +13,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$tds = date("Y-m-d H:i:s");
// 單次申請
if (($_POST['assign_status'] == 'A' || $_POST['assign_status'] == 'B') && empty($all_contractno_change)) {
if (($_POST['assign_status'] == 'B') && empty($all_contractno_change)) {
$data_arr = array(
'id' => $id,
'all_contractno_change' => $all_contractno_change,
@ -40,7 +40,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
// 批次申請
if (($_POST['assign_status'] == 'A' || $_POST['assign_status'] == 'B') && !empty($all_contractno_change)) {
if (($_POST['assign_status'] == 'B') && !empty($all_contractno_change)) {
$wipwholestatus_id_arr = getWipwholestatusIdByConstractNo($link, $contractno);
$customer_planning_verify_file = fileIUpload("customer_planning_verify_file");
@ -74,71 +74,45 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
}
// 單次申請 營業
if ($_POST['assign_status'] == 'D') {
$tds = date("Y-m-d H:i:s");
$next_users = $_POST['next_users'];
$seq = $_POST['seq'];
$sql = "
UPDATE wipwhole_change_planning_customer_details
SET change_status = 'D'
WHERE id = '$cid'
";
mysqli_query($link, $sql);
$sql = "
UPDATE flow
SET flow_code = 'D'
WHERE form_key = '$form_key'
";
mysqli_query($link, $sql);
$sql = "
INSERT into subflow (
form_key,
seq,
current_assigner,
create_date
) VALUES (
'$form_key',
'2',
'$next_users',
'$tds'
)
";
mysqli_query($link, $sql);
}
// // 單次申請 營業
// if ($_POST['assign_status'] == 'B') {
// $tds = date("Y-m-d H:i:s");
// $next_users = $_POST['next_users'];
// $seq = $_POST['seq'];
// $sql = "
// UPDATE wipwhole_change_planning_customer_details
// SET change_status = 'D'
// WHERE id = '$cid'
// ";
// mysqli_query($link, $sql);
// $sql = "
// UPDATE flow
// SET flow_code = 'D'
// WHERE form_key = '$form_key'
// ";
// mysqli_query($link, $sql);
// $sql = "
// INSERT into subflow (
// form_key,
// seq,
// current_assigner,
// create_date
// ) VALUES (
// '$form_key',
// '2',
// '$next_users',
// '$tds'
// )
// ";
// mysqli_query($link, $sql);
// }
// 取消
if ($_POST['assign_status'] == 'C') {
$tds = date("Y-m-d H:i:s");
$next_users = "00000";
if ($user_id == 'M0060') {
if (getChangeStatus($link, $cid) == 'D' || getChangeStatus($link, $cid) == 'A') {
$seq = $_POST['seq'];
}
$sql = "
INSERT into subflow (
form_key,
seq,
current_assigner,
create_date
) VALUES (
'$form_key',
'$seq',
'$next_users',
'$tds'
)
";
mysqli_query($link, $sql);
} else if (isLeader($link, $user_id)) {
if (getChangeStatus($link, $cid) == 'D') {
$sql = "
UPDATE subflow
SET current_assigner = '$next_users',
create_date = '$tds'
WHERE form_key = '$form_key'
AND seq = '$seq'
";
mysqli_query($link, $sql);
} else if (getChangeStatus($link, $cid) == 'A') {
if (isLeader($link, $user_id)) {
if (getChangeStatus($link, $cid) == 'B') {
$seq = $_POST['seq'];
$sql = "
UPDATE subflow
@ -192,89 +166,66 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 通過
if ($_POST['assign_status'] == 'Z') {
if ($user_id == 'M0060') {
$tds = date("Y-m-d H:i:s");
$next_users = $_POST['next_users'];
$seq = $_POST['seq'] + 1;
$sql = "
UPDATE wipwhole_change_planning_customer_details
SET change_status = 'Z'
WHERE id = '$cid'
";
mysqli_query($link, $sql);
$sql = "
UPDATE flow
SET flow_code = 'Z'
WHERE form_key = '$form_key'
";
mysqli_query($link, $sql);
$sql = "
INSERT into subflow (
form_key,
seq,
current_assigner,
create_date
) VALUES (
'$form_key',
'$seq',
'$next_users',
'$tds'
)
";
mysqli_query($link, $sql);
// // 發送系統通知
// $contractno = $_POST['contractno'];
// $facilityno = $_POST['facilityno'];
// $real_contract_arrival_date = $_POST['real_contract_arrival_date'];
// $salesid = $_POST['salesid'];
// $gongWuokid = $_POST['gongWuokid'];
// $old_real_address = $_POST['old_real_address'];
// $real_address = $_POST['real_address'];
// $content = "合約號 : $contractno
// 作番號 : $facilityno
// 出貨日期微調: " . substr($real_contract_arrival_date, 0, 10) . " => " . substr($contract_arrival_date_tmp, 0, 10) . "
// 工地地址微調: " . $old_real_address . " => " . $real_address_tmp;
// // 大日程出貨日調整 通知營業人員
// $noticeData = array(
// 'related_id' => $cid,
// 'title' => '作番大日程(新梯)出貨日調整通知 > ' . $facilityno,
// 'content' => $content,
// 'permission' => $salesid,
// );
// addNotice($link, $noticeData);
// // 大日程出貨日調整 通知工務人員
// $noticeData = array(
// 'related_id' => $cid,
// 'title' => '作番大日程(新梯)出貨日調整通知 > ' . $facilityno,
// 'content' => $content,
// 'permission' => $gongWuokid,
// );
// addNotice($link, $noticeData);
// $shengguano_arr = getShengguanokOptions($link);
// foreach ($shengguano_arr as $row) :
// $contractno = $_POST['contractno'];
// $facilityno = $_POST['facilityno'];
// $real_contract_arrival_date = $_POST['real_contract_arrival_date'];
// $gongWuokid = $_POST['gongWuokid'];
// $old_real_address = $_POST['old_real_address'];
// $real_address = $_POST['real_address'];
// $content = "合約號 : $contractno
// 作番號 : $facilityno
// 出貨日期微調: " . substr($real_contract_arrival_date, 0, 10) . " => " . substr($contract_arrival_date_tmp, 0, 10) . "
// 工地地址微調: " . $old_real_address . " => " . $real_address_tmp;
$tds = date("Y-m-d H:i:s");
$next_users = $_POST['next_users'];
$seq = $_POST['seq'] + 1;
$customer_planning_verify_file = fileIUpload("customer_planning_verify_file");
$all_contractno_change = empty($_POST['all_contractno_change']) ? null : $_POST['all_contractno_change'];
$custom_name = $_POST['custom_name'];
$contractno = $_POST['contractno'];
// // 大日程出貨日調整 通知營業人員
// $noticeData = array(
// 'related_id' => $cid,
// 'title' => '作番大日程(新梯)出貨日調整通知 > ' . $facilityno,
// 'content' => $content,
// 'permission' => $row['val'],
// );
// addNotice($link, $noticeData);
// endforeach;
if (isLeader($link, $user_id)){
$data_arr = array(
'id' => $id,
'all_contractno_change' => $all_contractno_change,
'custom_name' => $custom_name,
'contractno' => $contractno,
'tds' => $tds,
'form_key' => getFomkeySeq($link),
'user_id' => $user_id,
'customer_planning_verify_file' => $customer_planning_verify_file,
'change_status' => $_POST['assign_status']
);
addWipwholeChangeContractdateDetails($link, $data_arr);
// 取得寫入後表單seq
$data_arr['last_id'] = $link->insert_id;
// 寫入待簽
addFlow($link, $data_arr);
$data_arr['seq'] = '0';
$data_arr['current_assigner'] = $user_id;
addSubflow($link, $data_arr);
$data_arr['seq'] = '1';
$data_arr['current_assigner'] = $next_users;
addSubflow($link, $data_arr);
}
$form_key = getFomkeySeq($link);
$sql = "
UPDATE wipwhole_change_planning_customer_details
SET change_status = 'Z'
WHERE id = '$cid'
";
mysqli_query($link, $sql);
$sql = "
UPDATE flow
SET flow_code = 'Z'
WHERE form_key = '$form_key'
";
mysqli_query($link, $sql);
$sql = "
INSERT into subflow (
form_key,
seq,
current_assigner,
create_date
) VALUES (
'$form_key',
'$seq',
'$next_users',
'$tds'
)
";
mysqli_query($link, $sql);
}
}

42
wms/wipwhole-change-planning-customer-name.php

@ -269,7 +269,7 @@ if (!empty(checkNowFormStatus($link)))
<?php echo $row["address"]; ?>
</td>
<th>填寫客戶姓名</th>
<td >
<td>
<?php
if (empty(checkNowFormStatus($link))) {
echo "<input type='text' name='custom_name' />";
@ -281,8 +281,8 @@ if (!empty(checkNowFormStatus($link)))
</td>
<th>上傳計劃圖</th>
<td colspan="3">
<input type='file' name='customer_planning_verify_file' id='customer_planning_verify_file' style='width:190px;'/>
<?php
<input type='file' name='customer_planning_verify_file' id='customer_planning_verify_file' style='width:190px;' />
<?php
echo !empty($row2['customer_planning_verify_file']) ? "<a id='customer_planning_verify_file_a' style='color:#00F;' href='" . $row2['customer_planning_verify_file'] . "' target='_blank'>下載附件</a>" : "";
?>
</td>
@ -326,7 +326,11 @@ if (!empty(checkNowFormStatus($link)))
if (empty(checkNowFormStatus($link))) {
if (isLeader($link, $user_id)) {
echoMaxSelect($max_options);
echo "
<select name='next_users' id='next_users'>
<option value='00000'>00000</option>
</select>
";
} else if (in_array(getDepartmentId($link, $user_id), [
'311', '312', '313', '314', '315',
'501', '511', '512', '513', '514',
@ -340,16 +344,8 @@ if (!empty(checkNowFormStatus($link)))
endforeach;
echo "</select>";
}
} else if (checkNowFormStatus($link) == 'A' || checkNowFormStatus($link) == 'D') {
echo "
<select name='next_users' id='next_users'>
<option value='00000'>00000</option>
</select>
";
} else if (checkNowFormStatus($link) == 'B') {
if (isLeader($link, $user_id)) {
echoMaxSelect($max_options);
} else {
echo "
<select name='next_users' id='next_users'>
<option value='00000'>00000</option>
@ -365,34 +361,14 @@ if (!empty(checkNowFormStatus($link)))
if (empty(checkNowFormStatus($link))) {
echo "<input type='hidden' name='seq' value = '0' />";
echo "<button class='btn btn-primary'>提交</button>";
} else if (checkNowFormStatus($link) == 'A') {
if ($user_id == 'M0060') {
echo "<input type='hidden' name='seq' value = '2' />";
} else if (isLeader($link, $user_id)) {
echo "<input type='hidden' name='seq' value = '1' />";
} else {
echo "<input type='hidden' name='seq' value = '0' />";
}
echo "<button class='btn btn-primary'>提交</button>";
} else if (checkNowFormStatus($link) == 'B') {
if (isLeader($link, $user_id)) {
echo "<input type='hidden' name='seq' value = '1' />";
} else if ($user_id == 'M0060') {
echo "<input type='hidden' name='seq' value = '2' />";
} else {
echo "<input type='hidden' name='seq' value = '0' />";
}
echo "<button class='btn btn-primary'>提交</button>";
} else if (checkNowFormStatus($link) == 'D') {
if (isLeader($link, $user_id)) {
echo "<input type='hidden' name='seq' value = '1' />";
} else if ($user_id == 'M0060') {
echo "<input type='hidden' name='seq' value = '2' />";
} else {
echo "<input type='hidden' name='seq' value = '0' />";
}
echo "<button class='btn btn-primary'>提交</button>";
}
}
?>
</td>
</tr>

62
wms/wipwhole-index-function.php

@ -831,18 +831,68 @@ function getWarehouseStatus($link, $user_department_id, $role_id, $status)
}
// 取得營業或契約的欄位權限
function getMarketingStatus($link, $user_department_id, $role_id)
function getMarketingStatus($link, $user_department_id, $role_id, $status)
{
if ($user_department_id == 220)
return "";
if ($user_department_id == 311 || $user_department_id == 312 || $user_department_id == 313 || $user_department_id == 314 || $user_department_id == 315)
return checkNowFormYDStatus($link) == 'A' ? "" : "disabled";
if ($user_department_id == 501 || $user_department_id == 511 || $user_department_id == 512 || $user_department_id == 513 || $user_department_id == 514)
return checkNowFormYDStatus($link) == 'A' ? "" : "disabled";
if ($user_department_id == 311 || $user_department_id == 312 || $user_department_id == 313 || $user_department_id == 314 || $user_department_id == 315) {
if ($status == 1) {
return checkNowFormStatus($link) == 'A' ? "" : "disabled";
} else {
return "";
}
}
if ($user_department_id == 501 || $user_department_id == 511 || $user_department_id == 512 || $user_department_id == 513 || $user_department_id == 514) {
if ($status == 1) {
return checkNowFormStatus($link) == 'A' ? "" : "disabled";
} else {
return "";
}
}
return "disabled";
}
// 確認目前狀態
function checkNowFormStatus($link)
{
if (isset($_GET['id']) || isset($_GET['form_key'])) {
$id = isset($_GET['id']) ? $_GET['id'] : getId($link, $_GET['form_key']);
$form_key = getForm_key($link, $id);
}
$sql = "
SELECT
flow_code
FROM flow
WHERE form_id = '$id'
AND form_key = '$form_key'
AND system_id = 'wws'
AND flow_id = 'wws01'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return $row['0'];
}
// 取得本次簽核的表單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.form_id = '$form_id'
AND f.flow_code IN ('A','B','C','D','E')
AND f.system_id = 'wws'
AND f.flow_id = 'wws01'
";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
return $row['form_key'];
}
// 取得設計的欄位權限
function getDesinStatus($link, $user_department_id, $role_id)
{

24
wms/wipwhole-rec-invoice-edit-fileupload.php

@ -21,6 +21,27 @@ function fileIUpload($post_name)
}
}
function fileIUploads($post_name)
{
$file_arr = [];
if (isset($_FILES[$post_name])) {
foreach ($_FILES[$post_name]['tmp_name'] as $key => $tmp_name) {
$file_name = $_FILES[$post_name]['name'][$key];
$temp_file_name = $_FILES[$post_name]['tmp_name'][$key];
$target_dir = empty($file_name) ? "" : "public-wipwhole/";
$datetime = date("YmdHis");
$sales_spec_verify_file = strtolower($target_dir . basename($datetime . $file_name));
if (file_exists($sales_spec_verify_file))
unlink($sales_spec_verify_file);
move_uploaded_file($temp_file_name, $sales_spec_verify_file);
if (!empty($file_name)) {
array_push($file_arr, strtolower($target_dir . basename($datetime . $file_name)));
}
}
}
return json_encode($file_arr, JSON_UNESCAPED_UNICODE);
}
// 營業
$sales_spec_verify_file = fileIUpload("sales_spec_verify_file");
$customer_planning_verify_file = fileIUpload("customer_planning_verify_file");
@ -39,5 +60,8 @@ $desin_leader_verify_file = fileIUpload("desin_leader_verify_file");
$building_heigh_verify_file = fileIUpload("building_heigh_verify_file");
$site_survey_contact_verify_file = fileIUpload("site_survey_contact_verify_file");
$plan_diagram_file = fileIUpload("plan_diagram_file");
$completion_acceptance_file = fileIUpload("completion_acceptance_file");
// 生管
$shengguanok_status_file = fileIUpload("shengguanok_status_file");
// 工務助理
$outsourcer_contract_file = fileIUploads("outsourcer_contract_file");

61
wms/wipwhole-rec-invoice-edit-submit.php

@ -154,6 +154,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$delivery_date_owner = $_POST['delivery_date_owner'] ?: $row['delivery_date_owner'];
// 工務助理
$outsourcer_type = $_POST['outsourcer_type'];
$install_outsourcer = $_POST['install_outsourcer'];
$install_outsourcer_owner = $_POST['install_outsourcer_owner'];
$install_outsourcer_date = $_POST['install_outsourcer_date'];
@ -509,32 +510,42 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
// 工務助理
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188'])) {
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188','M0117'])) {
$updatesql .= "
install_outsourcer = '$install_outsourcer',
install_outsourcer_owner = '$install_outsourcer_owner',
install_outsourcer_date = '$install_outsourcer_date',
install_outsourcer_date_owner = '$install_outsourcer_date_owner',
estimate_install_start_date = '$estimate_install_start_date',
estimate_install_start_date_owner = '$estimate_install_start_date_owner',
estimate_install_end_date = '$estimate_install_end_date',
estimate_install_end_date_owner = '$estimate_install_end_date_owner',
tryrun_outsourcer = '$tryrun_outsourcer',
tryrun_outsourcer_owner = '$tryrun_outsourcer_owner',
tryrun_outsourcer_date = '$tryrun_outsourcer_date',
tryrun_outsourcer_date_owner = '$tryrun_outsourcer_date_owner',
estimate_tryrun_start_date = '$estimate_tryrun_start_date',
estimate_tryrun_start_date_owner = '$estimate_tryrun_start_date_owner',
estimate_tryrun_end_date = '$estimate_tryrun_end_date',
estimate_tryrun_end_date_owner = '$estimate_tryrun_end_date_owner',
warehouse_assistant_remark = '$warehouse_assistant_remark',
";
outsourcer_type = '$outsourcer_type',
install_outsourcer = '$install_outsourcer',
install_outsourcer_owner = '$install_outsourcer_owner',
install_outsourcer_date = '$install_outsourcer_date',
install_outsourcer_date_owner = '$install_outsourcer_date_owner',
estimate_install_start_date = '$estimate_install_start_date',
estimate_install_start_date_owner = '$estimate_install_start_date_owner',
estimate_install_end_date = '$estimate_install_end_date',
estimate_install_end_date_owner = '$estimate_install_end_date_owner',
tryrun_outsourcer = '$tryrun_outsourcer',
tryrun_outsourcer_owner = '$tryrun_outsourcer_owner',
tryrun_outsourcer_date = '$tryrun_outsourcer_date',
tryrun_outsourcer_date_owner = '$tryrun_outsourcer_date_owner',
estimate_tryrun_start_date = '$estimate_tryrun_start_date',
estimate_tryrun_start_date_owner = '$estimate_tryrun_start_date_owner',
estimate_tryrun_end_date = '$estimate_tryrun_end_date',
estimate_tryrun_end_date_owner = '$estimate_tryrun_end_date_owner',
warehouse_assistant_remark = '$warehouse_assistant_remark',
";
if (!empty($plan_diagram_file)) {
$updatesql .= "plan_diagram_file = '$plan_diagram_file', ";
$updatesql .= "
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了安裝圖附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了安裝圖附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
}
if (!empty($completion_acceptance_file)) {
$updatesql .= "completion_acceptance_file = '$completion_acceptance_file', ";
$updatesql .= "
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了完工驗收單附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
}
if (!empty($outsourcer_contract_file)) {
echo $updatesql .= "outsourcer_contract_file = '$outsourcer_contract_file', ";
}
}
@ -823,6 +834,8 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach ($_POST as $k => $v)
$$k = htmlspecialchars(stripslashes(trim($v)));
$change_all_contractno = $_POST['change_all_contractno'];
$contractno = $_POST['contractno2'];
$install_start_date = $_POST['install_start_date'];
$install_start_date_owner = $_POST['install_start_date_owner'];
$install_end_date = $_POST['install_end_date'];
@ -843,8 +856,12 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
tryrun_start_date_owner = '$tryrun_start_date_owner',
tryrun_end_date = '$tryrun_end_date',
tryrun_end_date_owner = '$tryrun_end_date_owner'
WHERE id = '$id'
";
if (empty($change_all_contractno)) {
$updatesql .= "WHERE id = '$id' ";
} else {
$updatesql .= "WHERE contractno = '$contractno' ";
}
// echo $updatesql;
// exit;
mysqli_query($link, $updatesql);

226
wms/wipwhole-rec-invoice-edit.php

@ -40,7 +40,8 @@ $role_id = getRoleId($link, $user_id);
$information = getInformationStatus($link, $user_department_id, $role_id);
$yewu = getYewuStatus($link, $user_department_id, $role_id);
$warehouse = getWarehouseStatus($link, $user_department_id, $role_id, 1);
$marketing = getMarketingStatus($link, $user_department_id, $role_id);
$marketing = getMarketingStatus($link, $user_department_id, $role_id, 1);
$marketing2 = getMarketingStatus($link, $user_department_id, $role_id, 2);
$desin = getDesinStatus($link, $user_department_id, $role_id);
$desin_leader = getDesinLeaderStatus($link, $user_department_id, $role_id);
$shengguan = getShengguanStatus($link, $user_department_id, $role_id, 1);
@ -52,7 +53,7 @@ $pinzheng = getPinzhengStatus($link, $user_department_id, $role_id);
$tab = getTabNo($user_department_id);
// 工務助理
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188'])) {
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188', 'M0117'])) {
$warehouse2 = "";
$tab = 5;
}
@ -102,7 +103,7 @@ include "wipwhole-rec-invoice-edit-submit.php";
<tr>
<td style="vertical-align: middle">合約號</td>
<td>
<input class="form-control " type="text" name="contractno" value="<?= $row["contractno"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control " type="text" id="contractno" name="contractno" value="<?= $row["contractno"]; ?>" <?php echo $update_delete_status; ?>>
<?php
if (in_array($user_department_id, [311, 312, 313, 314, 315, 501, 511, 512, 513, 514, 220, 911, 50, 320, 250])) {
$sql = "
@ -485,9 +486,9 @@ include "wipwhole-rec-invoice-edit-submit.php";
<td style="vertical-align: middle">移交日</td>
<td style="vertical-align: middle">
<div class="input-group">
<input class="form-control disabled_select" type="date" id="delivery_date" name="delivery_date" value="<?= $row['delivery_date']; ?>" <?= $marketing; ?>>
<input class="form-control disabled_select" type="date" id="delivery_date" name="delivery_date" value="<?= $row['delivery_date']; ?>" <?= $marketing2; ?>>
<span class="input-group-btn">
<button class="btn btn-default" type='button' onclick='$("#delivery_date").val("");' <?= $marketing; ?>>清除</button>
<button class="btn btn-default" type='button' onclick='$("#delivery_date").val("");' <?= $marketing2; ?>>清除</button>
</span>
</div>
</td>
@ -507,10 +508,10 @@ include "wipwhole-rec-invoice-edit-submit.php";
if (checkNowFormYDStatus($link) == 'A' && ($user_department_id == 220 || $user_department_id == 311 || $user_department_id == 312 || $user_department_id == 313 || $user_department_id == 314 || $user_department_id == 315)) {
?>
<button onclick="doMarketingAssign()" type="button" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;">提交至設計部門</button>
<button onclick="savedata()" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;">存檔</button>
<?php
}
?>
<button onclick="savedata()" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;" <?= $marketing2; ?>>存檔</button>
</td>
</tr>
</tbody>
@ -953,8 +954,11 @@ include "wipwhole-rec-invoice-edit-submit.php";
<tr>
<td colspan="4">
<?php
if (saveInstallData($user_department_id, $role_id))
if (saveInstallData($user_department_id, $role_id)) {
echo "<button onclick='saveInstallData()' type='button' class='btn btn-primary btn-lg pull-right' style='margin-left:3px;'>存檔</button>";
echo "<label class='pull-right' for='change_all_contractno_tmp'> 變更此合約全部日期</label>";
echo "<input class='pull-right' type='checkbox' id='change_all_contractno_tmp' value='1' />";
}
?>
</td>
</tr>
@ -1248,6 +1252,17 @@ include "wipwhole-rec-invoice-edit-submit.php";
<div id="tabs-5">
<table class="table table-bordered" style="width:100%">
<tbody style="font-weight: bolder;margin-bottom: 20px">
<tr>
<td style="vertical-align: middle">QC及官檢類型</td>
<td>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'Q' ? "checked" : ""; ?> />
<label for='outsourcer_type_I'>只需QC</label>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'O' ? "checked" : ""; ?> />
<label for='outsourcer_type_T'>只需官檢</label>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'QO' ? "checked" : ""; ?> />
<label for='outsourcer_type_IT'>QC+官檢</label>
</td>
</tr>
<tr>
<td style="vertical-align: middle">內部QC日</td>
<td style="vertical-align: middle">
@ -1334,29 +1349,49 @@ include "wipwhole-rec-invoice-edit-submit.php";
(工務助理項目)
</td>
</tr>
<!-- <tr>
<tr>
<td style="vertical-align: middle">發包類型</td>
<td>
<input type='radio' name='outsourcer_type' id='outsourcer_type_I' value='I' />
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_I' value='I' <?php echo $row['outsourcer_type'] == 'I' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_I'>安裝</label>
<input type='radio' name='outsourcer_type' id='outsourcer_type_T' value='T' />
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_T' value='T' <?php echo $row['outsourcer_type'] == 'T' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_T'>試車</label>
<input type='radio' name='outsourcer_type' id='outsourcer_type_IT' value='IT' />
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_IT' value='IT' <?php echo $row['outsourcer_type'] == 'IT' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_IT'>安裝+試車</label>
<?php
if (getSaveEstimateInstallData($user_department_id, $role_id)) {
?>
<button type='button' class='btn btn-default' onclick='setOutSourcerDate();'>帶入日期</button>
<button type='button' class='btn btn-default' onclick='resetAllOutSourcerDate();'>清除日期</button>
<button type='button' class='btn btn-default disabled_select' onclick='setOutSourcerDate();' <?php echo $warehouse2; ?>>帶入日期</button>
<button type='button' class='btn btn-default disabled_select' onclick='resetAllOutSourcerDate();' <?php echo $warehouse2; ?>>清除日期</button>
<?php
}
?>
</td>
</tr> -->
</tr>
<tr>
<td style="vertical-align: middle;">合約上傳</td>
<td id="ocfi_td" style="vertical-align: middle;">
<button type="button" onclick="addOutsourcerContractFileItem()" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;">+</button>
<input style="width:70%;display:inline;" type="file" id="outsourcer_contract_file_0" name="outsourcer_contract_file[]" multiple>
<button type="button" class="btn btn-danger" id="outsourcer_contract_file_del_0" onclick="delOutsourcerContractFileItem(0)">x</button>
<?php
if (!empty($row['outsourcer_contract_file'])) {
$outsourcer_contract_file_tmp = json_decode($row['outsourcer_contract_file']);
foreach ($outsourcer_contract_file_tmp as $val) {
echo "<br/><a style='color:#00F;' target='_blank' href='" . $val . "'>" . str_replace("public-wipwhole/", "", $val) . "</a>";
}
echo "</br>";
}
?>
</td>
</tr>
<tr>
<td style="vertical-align: middle">安裝發包廠商</td>
<td>
<input name="install_outsourcer disabled_select" id="install_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['install_outsourcer']; ?>" <?= $warehouse2; ?> />
<input name="install_outsourcer" id="install_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['install_outsourcer']; ?>" <?= $warehouse2; ?> />
</td>
<td style="vertical-align: middle;">確認人</td>
<td>
@ -1423,7 +1458,7 @@ include "wipwhole-rec-invoice-edit-submit.php";
<tr>
<td style="vertical-align: middle">試車發包廠商</td>
<td>
<input name="tryrun_outsourcer disabled_select" id="tryrun_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['tryrun_outsourcer']; ?>" <?= $warehouse2; ?> />
<input name="tryrun_outsourcer" id="tryrun_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['tryrun_outsourcer']; ?>" <?= $warehouse2; ?> />
</td>
<td style="vertical-align: middle;">確認人</td>
<td>
@ -1502,6 +1537,15 @@ include "wipwhole-rec-invoice-edit-submit.php";
?>
</td>
</tr>
<tr>
<td style="vertical-align: middle;">完工驗收單附件</td>
<td colspan="5" style="vertical-align: middle;">
<input style="width:70%;display:inline;" type="file" name="completion_acceptance_file" <?= $warehouse2; ?>>
<?php
echo !empty($row['completion_acceptance_file']) ? "<a id='plan_diagram_file_a' style='color:#00F;' href='" . $row['completion_acceptance_file'] . "' target='_blank'>下載附件</a>" : "";
?>
</td>
</tr>
<tr>
<td colspan="4">
<?php
@ -1546,6 +1590,8 @@ include "wipwhole-rec-invoice-edit-submit.php";
</form>
<form method="post" id="update_install_date_form" enctype="multipart/form-data">
<input type="hidden" id="change_all_contractno" name='change_all_contractno' value="0" />
<input type="hidden" id="contractno2" name='contractno2' value="<?php echo $row['contractno']; ?>" />
<input type="hidden" id="install_start_date" name='install_start_date' value="<?php echo $row['install_start_date']; ?>" />
<input type="hidden" id="install_start_date_owner" name='install_start_date_owner' value="<?php echo $row['install_start_date_owner']; ?>" />
<input type="hidden" id="install_end_date" name='install_end_date' value="<?php echo $row['install_end_date']; ?>" />
@ -1897,15 +1943,33 @@ include "wipwhole-rec-invoice-edit-submit.php";
function saveInstallData() {
if (confirm('確定要更改實際安裝日程嗎?') == true) {
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
if ($("#change_all_contractno_tmp").prop('checked')) {
if ($("#contractno").val() == '' || $("#contractno").val() == null) {
alert("合約號空白");
} else {
$("#change_all_contractno").val($("#change_all_contractno_tmp").prop('checked'));
$("#contractno2").val($("#contractno").val());
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
}
} else {
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
}
}
}
@ -1913,7 +1977,6 @@ include "wipwhole-rec-invoice-edit-submit.php";
// 發包類型
let outsourcer_type = $("input[name^='outsourcer_type']:checked").val();
// 預計出貨日(到工地)
let real_contract_arrival_date = $("#real_contract_arrival_date").val();
// 樓停
@ -1921,38 +1984,73 @@ include "wipwhole-rec-invoice-edit-submit.php";
// 目前操作者
let user_id = '<?php echo $user_id; ?>';
if (outsourcer_type === 'I') {
resetTOutSourcerDate();
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
}
if (outsourcer_type === 'T') {
resetIOutSourcerDate();
$("#estimate_tryrun_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
}
if (outsourcer_type === 'IT') {
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
$("#estimate_tryrun_start_date").val(dateAddDays($("#estimate_install_end_date").val(), 1));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
if (getSetOutSourcerDateStatus() == '1') {
if (outsourcer_type === 'I') {
resetTOutSourcerDate();
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
}
if (outsourcer_type === 'T') {
resetIOutSourcerDate();
$("#estimate_tryrun_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
}
if (outsourcer_type === 'IT') {
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
$("#estimate_tryrun_start_date").val(dateAddDays($("#estimate_install_end_date").val(), 1));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
}
} else {
const errrMessage = {
'2': '請選擇發包種類',
'3': '樓停未填寫',
'4': '預計交期(到工地)未填寫'
}
if ((errrMessage[getSetOutSourcerDateStatus()] !== 'undefined')) {
alert(errrMessage[getSetOutSourcerDateStatus()]);
} else {
alert("不明錯誤");
}
}
}
function getSetOutSourcerDateStatus() {
let outsourcer_type = $("input[name^='outsourcer_type']:checked").val();
let real_contract_arrival_date = $("#real_contract_arrival_date").val();
let numberofstop = $("#numberofstop").val();
let user_id = '<?php echo $user_id; ?>';
if (typeof outsourcer_type == 'undefined')
return 2;
if (typeof numberofstop == 'undefined')
return 3;
if (numberofstop == 0 || numberofstop == '' || numberofstop == '0')
return 3;
if (typeof real_contract_arrival_date == 'undefined')
return 4;
if (real_contract_arrival_date == 0 || real_contract_arrival_date == '' || real_contract_arrival_date == '0')
return 4;
return 1;
}
function resetIOutSourcerDate() {
@ -1996,4 +2094,18 @@ include "wipwhole-rec-invoice-edit-submit.php";
return resultDateString;
}
var ocfi_id = 0;
function addOutsourcerContractFileItem() {
ocfi_id++;
let html = "<input style='width:70%;display:inline;' type='file' id='outsourcer_contract_file_" + ocfi_id + "' name='outsourcer_contract_file[]' multiple>";
html += "<button type='button' class='btn btn-danger' id='outsourcer_contract_file_del_" + ocfi_id + "' onclick='delOutsourcerContractFileItem(" + ocfi_id + ")'>x</button>";
$("#ocfi_td").append(html);
}
function delOutsourcerContractFileItem(id) {
$("#outsourcer_contract_file_del_" + id).remove();
$("#outsourcer_contract_file_" + id).remove();
}
</script>

17
wms/wipwhole-rec-invoice.php

@ -427,6 +427,9 @@ if ($department_id == "321" || $department_id == "220") {
// 已備齊檢查人
$shengguanok_status_owner = postCheck('shengguanok_status_owner');
// QC與官檢種類
$qc_official_type = postCheck('qc_official_type');
// 建立人
$creater = postCheck('creater');
// 建立時間
@ -520,6 +523,7 @@ if ($department_id == "321" || $department_id == "220") {
shengguanok_status_file,
shengguanok_status_at,
shengguanok_status_owner,
qc_official_type,
creater,
create_at
) VALUES (
@ -542,7 +546,7 @@ if ($department_id == "321" || $department_id == "220") {
'$facility_kind',
'$address',
'$contract_arrival_date',
'$real_contract_arrival_date',
'$contract_arrival_date',
'$sales_spec_verify',
'$sales_spec_verify_file',
'$sales_spec_verify_at',
@ -607,6 +611,7 @@ if ($department_id == "321" || $department_id == "220") {
'$shengguanok_status_file',
'$shengguanok_status_at',
'$shengguanok_status_owner',
'$qc_official_type',
'$creater',
'$create_at'
)
@ -772,9 +777,17 @@ if ($department_id == "321" || $department_id == "220") {
<td>
<input class="form-control " type="date" id="contract_arrival_date" name="contract_arrival_date" value="<?php echo $contract_arrival_date; ?>">
</td>
<td style="vertical-align: middle">預計交期<br />(到工地)</td>
<!-- <td style="vertical-align: middle">預計交期<br />(到工地)</td>
<td>
<input class="form-control " type="date" include_once="real_contract_arrival_date" name="real_contract_arrival_date" value="<?php echo $real_contract_arrival_date; ?>">
</td> -->
<td>
<input type="radio" name="qc_official_type" id='qc_official_type_QO' value='QO' checked/>
<label for="qc_official_type_QO">QC + 官檢</label>
<input type="radio" name="qc_official_type" id='qc_official_type_Q' value='Q' />
<label for="qc_official_type_Q">只需QC</label>
<input type="radio" name="qc_official_type" id='qc_official_type_O' value='O' ?>
<label for="qc_official_type_O">只需官檢</label>
</td>
</tr>
<tr>

6
wms/wipwhole-rec-renovate-invoice.php

@ -540,7 +540,7 @@ if ($department_id == "321" || $department_id == "220") {
'$facility_kind',
'$address',
'$contract_arrival_date',
'$real_contract_arrival_date',
'$contract_arrival_date',
'$sales_spec_verify',
'$sales_spec_verify_file',
'$sales_spec_verify_at',
@ -771,10 +771,10 @@ if ($department_id == "321" || $department_id == "220") {
<td>
<input class="form-control " type="datetime-local" name="contract_arrival_date" value="<?php echo $contract_arrival_date; ?>">
</td>
<td style="vertical-align: middle">預計交期<br />(到工地)</td>
<!-- <td style="vertical-align: middle">預計交期<br />(到工地)</td>
<td>
<input class="form-control " type="datetime-local" name="real_contract_arrival_date" value="<?php echo $real_contract_arrival_date; ?>">
</td>
</td> -->
</tr>
<tr>
<td style="vertical-align: middle">工地負責人</td>

61
wms/wipwhole-renovate-rec-invoice-edit-submit.php

@ -94,6 +94,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$old_site_survey_contact_verify = $_POST['old_site_survey_contact_verify'];
// 工務助理
$outsourcer_type = $_POST['outsourcer_type'];
$install_outsourcer = $_POST['install_outsourcer'];
$install_outsourcer_owner = $_POST['install_outsourcer_owner'];
$install_outsourcer_date = $_POST['install_outsourcer_date'];
@ -489,31 +490,41 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
// 工務助理
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188'])) {
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188', 'M0117'])) {
$updatesql .= "
install_outsourcer = '$install_outsourcer',
install_outsourcer_owner = '$install_outsourcer_owner',
install_outsourcer_date = '$install_outsourcer_date',
install_outsourcer_date_owner = '$install_outsourcer_date_owner',
estimate_install_start_date = '$estimate_install_start_date',
estimate_install_start_date_owner = '$estimate_install_start_date_owner',
estimate_install_end_date = '$estimate_install_end_date',
estimate_install_end_date_owner = '$estimate_install_end_date_owner',
tryrun_outsourcer = '$tryrun_outsourcer',
tryrun_outsourcer_owner = '$tryrun_outsourcer_owner',
tryrun_outsourcer_date = '$tryrun_outsourcer_date',
tryrun_outsourcer_date_owner = '$tryrun_outsourcer_date_owner',
estimate_tryrun_start_date = '$estimate_tryrun_start_date',
estimate_tryrun_start_date_owner = '$estimate_tryrun_start_date_owner',
estimate_tryrun_end_date = '$estimate_tryrun_end_date',
estimate_tryrun_end_date_owner = '$estimate_tryrun_end_date_owner',
warehouse_assistant_remark = '$warehouse_assistant_remark',
";
outsourcer_type = '$outsourcer_type',
install_outsourcer = '$install_outsourcer',
install_outsourcer_owner = '$install_outsourcer_owner',
install_outsourcer_date = '$install_outsourcer_date',
install_outsourcer_date_owner = '$install_outsourcer_date_owner',
estimate_install_start_date = '$estimate_install_start_date',
estimate_install_start_date_owner = '$estimate_install_start_date_owner',
estimate_install_end_date = '$estimate_install_end_date',
estimate_install_end_date_owner = '$estimate_install_end_date_owner',
tryrun_outsourcer = '$tryrun_outsourcer',
tryrun_outsourcer_owner = '$tryrun_outsourcer_owner',
tryrun_outsourcer_date = '$tryrun_outsourcer_date',
tryrun_outsourcer_date_owner = '$tryrun_outsourcer_date_owner',
estimate_tryrun_start_date = '$estimate_tryrun_start_date',
estimate_tryrun_start_date_owner = '$estimate_tryrun_start_date_owner',
estimate_tryrun_end_date = '$estimate_tryrun_end_date',
estimate_tryrun_end_date_owner = '$estimate_tryrun_end_date_owner',
warehouse_assistant_remark = '$warehouse_assistant_remark',
";
if (!empty($plan_diagram_file)) {
$updatesql .= "plan_diagram_file = '$plan_diagram_file', ";
$updatesql .= "
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了安裝圖附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了安裝圖附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
}
if (!empty($completion_acceptance_file)) {
$updatesql .= "completion_acceptance_file = '$completion_acceptance_file', ";
$updatesql .= "
all_remark = CONCAT('" . $user_id . accountidToName($user_id) . "_" . $datetime . "<br/>上傳了完工驗收單附件<br/><br/>',IF(all_remark IS NULL,'',all_remark)),
";
}
if (!empty($outsourcer_contract_file)) {
$updatesql .= "outsourcer_contract_file = '$outsourcer_contract_file', ";
}
}
@ -797,6 +808,8 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach ($_POST as $k => $v)
$$k = htmlspecialchars(stripslashes(trim($v)));
$change_all_contractno = $_POST['change_all_contractno'];
$contractno = $_POST['contractno2'];
$install_start_date = $_POST['install_start_date'];
$install_start_date_owner = $_POST['install_start_date_owner'];
$install_end_date = $_POST['install_end_date'];
@ -817,8 +830,12 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
tryrun_start_date_owner = '$tryrun_start_date_owner',
tryrun_end_date = '$tryrun_end_date',
tryrun_end_date_owner = '$tryrun_end_date_owner'
WHERE id = '$id'
";
if (empty($change_all_contractno)) {
$updatesql .= "WHERE id = '$id' ";
} else {
$updatesql .= "WHERE contractno = '$contractno' ";
}
// echo $updatesql;
// exit;
mysqli_query($link, $updatesql);

288
wms/wipwhole-renovate-rec-invoice-edit.php

@ -50,7 +50,7 @@ $pinzheng = getPinzhengStatus($link, $user_department_id, $role_id);
$tab = getTabNo($user_department_id);
// 工務助理
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188'])) {
if (in_array($user_id, ['M0164', 'M0165', 'M0127', 'M0193', 'M0170', 'M0188', 'M0117'])) {
$warehouse2 = "";
$tab = 5;
}
@ -99,7 +99,7 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<tr>
<td style="vertical-align: middle">合約號</td>
<td>
<input class="form-control " type="text" name="contractno" value="<?= $row["contractno"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" id="contractno" name="contractno" value="<?= $row["contractno"]; ?>" <?php echo $update_delete_status; ?>>
<?php
if (in_array($user_department_id, [311, 312, 313, 314, 315, 501, 511, 512, 513, 514, 220, 911, 50, 320, 250])) {
$sql = "
@ -120,11 +120,11 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
</td>
<td style="vertical-align: middle">作番號</td>
<td>
<input class="form-control " type="text" name="facilityno" value="<?= $row["facilityno"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="facilityno" value="<?= $row["facilityno"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">汰改種類</td>
<td style="vertical-align: middle">
<select class="form-control" multiple="multiple" id="renovate_type" name="renovate_type[]" <?php echo $update_delete_status; ?>>
<select class="form-control disabled_select" multiple="multiple" id="renovate_type" name="renovate_type[]" <?php echo $update_delete_status; ?>>
<option value="M1">M1</option>
<option value="M2">M2</option>
<option value="M3">M3</option>
@ -134,21 +134,21 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
</td>
<td style="vertical-align: middle">合約交期<br />(到工地)</td>
<td style="vertical-align: middle">
<input class="form-control" type="date" name="contract_arrival_date" value="<?= $row['contract_arrival_date']; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="date" name="contract_arrival_date" value="<?= $row['contract_arrival_date']; ?>" <?php echo $update_delete_status; ?>>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control " type="text" name="custom" value="<?= $row["custom"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="custom" value="<?= $row["custom"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">號機</td>
<td>
<input class="form-control " type="text" name="facility_temp_no" value="<?= $row["facility_temp_no"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="facility_temp_no" value="<?= $row["facility_temp_no"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">工地負責人</td>
<td>
<input class="form-control " type="text" name="site_manager" value="<?= $row["site_manager"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="site_manager" value="<?= $row["site_manager"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">預計交期(到工地)
<br />
@ -158,21 +158,21 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
?>
</td>
<td style="vertical-align: middle">
<input class="form-control " type="date" value="<?= $row['real_contract_arrival_date']; ?>" disabled>
<input class="form-control disabled_select" type="date" value="<?= $row['real_contract_arrival_date']; ?>" disabled>
</td>
</tr>
<tr>
<td style="vertical-align: middle">經度</td>
<td style="vertical-align: middle">
<input class="form-control " type="text" name="longitude" value="<?= $row["longitude"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="longitude" value="<?= $row["longitude"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">緯度</td>
<td>
<input class="form-control " type="text" name="latitude" value="<?= $row["latitude"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="latitude" value="<?= $row["latitude"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">地址</td>
<td>
<input class="form-control " type="text" name="address" value="<?= $row["address"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="address" value="<?= $row["address"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">工地地址<br />
<?php
@ -187,29 +187,29 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<tr>
<td style="vertical-align: middle">載重</td>
<td style="vertical-align: middle">
<input class="form-control " type="number" name="weight" min="0" value="<?= $row["weight"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="number" name="weight" min="0" value="<?= $row["weight"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">人乘</td>
<td style="vertical-align: middle">
<input class="form-control " type="number" name="numberofpassenger" min="0" value="<?= $row["numberofpassenger"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="number" name="numberofpassenger" min="0" value="<?= $row["numberofpassenger"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">樓停</td>
<td>
<input class="form-control " type="number" name="numberofstop" min="0" value="<?= $row["numberofstop"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="number" id="numberofstop" name="numberofstop" min="0" value="<?= $row["numberofstop"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">樓層</td>
<td>
<input class="form-control " type="number" name="numberoffloor" min="0" value="<?= $row["numberoffloor"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="number" name="numberoffloor" min="0" value="<?= $row["numberoffloor"]; ?>" <?php echo $update_delete_status; ?>>
</td>
</tr>
<tr>
<td style="vertical-align: middle">機型</td>
<td>
<input class="form-control " type="text" name="facility_kind" value="<?= $row["facility_kind"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="text" name="facility_kind" value="<?= $row["facility_kind"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">開門方式</td>
<td style="vertical-align: middle">
<select class="form-control" name="opentype" <?php echo $update_delete_status; ?>>
<select class="form-control disabled_select" name="opentype" <?php echo $update_delete_status; ?>>
<option value=""></option>
<?php
foreach ($opendoor_options as $opendoor_option) :
@ -224,7 +224,7 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
</td>
<td style="vertical-align: middle">速度</td>
<td style="vertical-align: middle">
<input class="form-control " type="number" name="speed" min="0" value="<?= $row["speed"]; ?>" <?php echo $update_delete_status; ?>>
<input class="form-control disabled_select" type="number" name="speed" min="0" value="<?= $row["speed"]; ?>" <?php echo $update_delete_status; ?>>
</td>
<td style="vertical-align: middle">簽核狀況</td>
<td style="vertical-align: middle">
@ -550,8 +550,11 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<tr>
<td colspan="4">
<?php
if (getSaveInstallDataButtonStatus($user_department_id, $role_id))
if (getSaveInstallDataButtonStatus($user_department_id, $role_id)) {
echo "<button onclick='saveInstallData()' type='button' class='btn btn-primary btn-lg pull-right' style='margin-left:3px;'>存檔</button>";
echo "<label class='pull-right' for='change_all_contractno_tmp'> 變更此合約全部日期</label>";
echo "<input class='pull-right' type='checkbox' id='change_all_contractno_tmp' value='1' />";
}
?>
</td>
</tr>
@ -689,9 +692,9 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<td style="vertical-align: middle">移交日</td>
<td style="vertical-align: middle">
<div class="input-group">
<input class="form-control" type="date" id="delivery_date" name="delivery_date" value="<?= $row['delivery_date']; ?>" <?= $marketing; ?>>
<input class="form-control" type="date" id="delivery_date" name="delivery_date" value="<?= $row['delivery_date']; ?>" <?= $marketing2; ?>>
<span class="input-group-btn">
<button class="btn btn-default" type='button' onclick='$("#delivery_date").val("");' <?= $marketing; ?>>清除</button>
<button class="btn btn-default" type='button' onclick='$("#delivery_date").val("");' <?= $marketing2; ?>>清除</button>
</span>
</div>
</td>
@ -1146,8 +1149,7 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<?php
} else {
// 生管 小雯 預計到貨日(到觀音廠日)權限
if ($user_id == 'M0168')
{
if ($user_id == 'M0168') {
?>
<button onclick="savedata()" type="button" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;">存檔</button>
<?php
@ -1244,6 +1246,17 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<div id="tabs-5">
<table class="table table-bordered" style="width:100%">
<tbody style="font-weight: bolder;margin-bottom: 20px">
<tr>
<td style="vertical-align: middle">QC及官檢類型</td>
<td>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'Q' ? "checked" : ""; ?> />
<label for='outsourcer_type_I'>只需QC</label>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'O' ? "checked" : ""; ?> />
<label for='outsourcer_type_T'>只需官檢</label>
<input type='radio' disabled <?php echo $row['qc_official_type'] == 'QO' ? "checked" : ""; ?> />
<label for='outsourcer_type_IT'>QC+官檢</label>
</td>
</tr>
<tr>
<td style="vertical-align: middle">內部QC日</td>
<td style="vertical-align: middle">
@ -1332,10 +1345,49 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
(工務助理項目)
</td>
</tr>
<tr>
<td style="vertical-align: middle">發包類型</td>
<td>
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_I' value='I' <?php echo $row['outsourcer_type'] == 'I' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_I'>安裝</label>
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_T' value='T' <?php echo $row['outsourcer_type'] == 'T' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_T'>試車</label>
<input type='radio' class="disabled_select" name='outsourcer_type' id='outsourcer_type_IT' value='IT' <?php echo $row['outsourcer_type'] == 'IT' ? 'checked' : '';
echo $warehouse2; ?> />
<label for='outsourcer_type_IT'>安裝+試車</label>
<?php
if (getSaveEstimateInstallData($user_department_id, $role_id)) {
?>
<button type='button' class='btn btn-default disabled_select' onclick='setOutSourcerDate();' <?php echo $warehouse2; ?>>帶入日期</button>
<button type='button' class='btn btn-default disabled_select' onclick='resetAllOutSourcerDate();' <?php echo $warehouse2; ?>>清除日期</button>
<?php
}
?>
</td>
</tr>
<tr>
<td style="vertical-align: middle;">合約上傳</td>
<td id="ocfi_td" style="vertical-align: middle;">
<button type="button" onclick="addOutsourcerContractFileItem()" class="btn btn-primary btn-lg pull-right" style="margin-left:3px;">+</button>
<input style="width:70%;display:inline;" type="file" id="outsourcer_contract_file_0" name="outsourcer_contract_file[]" multiple>
<button type="button" class="btn btn-danger" id="outsourcer_contract_file_del_0" onclick="delOutsourcerContractFileItem(0)">x</button>
<?php
if (!empty($row['outsourcer_contract_file'])) {
$outsourcer_contract_file_tmp = json_decode($row['outsourcer_contract_file']);
foreach ($outsourcer_contract_file_tmp as $val) {
echo "<br/><a style='color:#00F;' target='_blank' href='" . $val . "'>" . str_replace("public-wipwhole/", "", $val) . "</a>";
}
echo "</br>";
}
?>
</td>
</tr>
<tr>
<td style="vertical-align: middle">安裝發包廠商</td>
<td>
<input name="install_outsourcer disabled_select" id="install_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['install_outsourcer']; ?>" <?= $warehouse2; ?> />
<input name="install_outsourcer" id="install_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['install_outsourcer']; ?>" <?= $warehouse2; ?> />
</td>
<td style="vertical-align: middle;">確認人</td>
<td>
@ -1402,7 +1454,7 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
<tr>
<td style="vertical-align: middle">試車發包廠商</td>
<td>
<input name="tryrun_outsourcer disabled_select" id="tryrun_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['tryrun_outsourcer']; ?>" <?= $warehouse2; ?> />
<input name="tryrun_outsourcer" id="tryrun_outsourcer" class="form-control disabled_select" type="text" value="<?php echo $row['tryrun_outsourcer']; ?>" <?= $warehouse2; ?> />
</td>
<td style="vertical-align: middle;">確認人</td>
<td>
@ -1481,6 +1533,15 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
?>
</td>
</tr>
<tr>
<td style="vertical-align: middle;">完工驗收單附件</td>
<td colspan="5" style="vertical-align: middle;">
<input style="width:70%;display:inline;" type="file" name="completion_acceptance_file" <?= $warehouse2; ?>>
<?php
echo !empty($row['completion_acceptance_file']) ? "<a id='plan_diagram_file_a' style='color:#00F;' href='" . $row['completion_acceptance_file'] . "' target='_blank'>下載附件</a>" : "";
?>
</td>
</tr>
<tr>
<td colspan="4">
<?php
@ -1525,6 +1586,8 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
</form>
<form method="post" id="update_install_date_form" enctype="multipart/form-data">
<input type="hidden" id="change_all_contractno" name='change_all_contractno' value="0" />
<input type="hidden" id="contractno2" name='contractno2' value="<?php echo $row['contractno']; ?>" />
<input type="hidden" id="install_start_date" name='install_start_date' value="<?php echo $row['install_start_date']; ?>" />
<input type="hidden" id="install_start_date_owner" name='install_start_date_owner' value="<?php echo $row['install_start_date_owner']; ?>" />
<input type="hidden" id="install_end_date" name='install_end_date' value="<?php echo $row['install_end_date']; ?>" />
@ -1906,15 +1969,170 @@ include "wipwhole-renovate-rec-invoice-edit-submit.php";
function saveInstallData() {
if (confirm('確定要更改實際安裝日程嗎?') == true) {
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
if ($("#change_all_contractno_tmp").prop('checked')) {
if ($("#contractno").val() == '' || $("#contractno").val() == null) {
alert("合約號空白");
} else {
$("#change_all_contractno").val($("#change_all_contractno_tmp").prop('checked'));
$("#contractno2").val($("#contractno").val());
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
}
} else {
$("#install_start_date").val($("#install_start_date_tmp").val());
$("#install_start_date_owner").val($("#install_start_date_owner_tmp").val());
$("#install_end_date").val($("#install_end_date_tmp").val());
$("#install_end_date_owner").val($("#install_end_date_owner_tmp").val());
$("#tryrun_start_date").val($("#tryrun_start_date_tmp").val());
$("#tryrun_start_date_owner").val($("#tryrun_start_date_owner_tmp").val());
$("#tryrun_end_date").val($("#tryrun_end_date_tmp").val());
$("#tryrun_end_date_owner").val($("#tryrun_end_date_owner_tmp").val());
$('#update_install_date_form').submit();
}
}
}
function setOutSourcerDate() {
// 發包類型
let outsourcer_type = $("input[name^='outsourcer_type']:checked").val();
// 預計出貨日(到工地)
let real_contract_arrival_date = $("#real_contract_arrival_date").val();
// 樓停
let numberofstop = $("#numberofstop").val();
// 目前操作者
let user_id = '<?php echo $user_id; ?>';
if (getSetOutSourcerDateStatus() == '1') {
if (outsourcer_type === 'I') {
resetTOutSourcerDate();
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
}
if (outsourcer_type === 'T') {
resetIOutSourcerDate();
$("#estimate_tryrun_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
}
if (outsourcer_type === 'IT') {
$("#estimate_install_start_date").val(dateAddDays(real_contract_arrival_date, 5));
$("#estimate_install_start_date_owner").val(user_id);
$("#estimate_install_end_date").val(
dateAddDays($("#estimate_install_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_install_end_date_owner").val(user_id);
$("#estimate_tryrun_start_date").val(dateAddDays($("#estimate_install_end_date").val(), 1));
$("#estimate_tryrun_start_date_owner").val(user_id);
$("#estimate_tryrun_end_date").val(
dateAddDays($("#estimate_tryrun_start_date").val(), specificationDayFormula(numberofstop))
);
$("#estimate_tryrun_end_date_owner").val(user_id);
}
} else {
const errrMessage = {
'2': '請選擇發包種類',
'3': '樓停未填寫',
'4': '預計交期(到工地)未填寫'
}
if ((errrMessage[getSetOutSourcerDateStatus()] !== 'undefined')) {
alert(errrMessage[getSetOutSourcerDateStatus()]);
} else {
alert("不明錯誤");
}
}
}
function getSetOutSourcerDateStatus() {
let outsourcer_type = $("input[name^='outsourcer_type']:checked").val();
let real_contract_arrival_date = $("#real_contract_arrival_date").val();
let numberofstop = $("#numberofstop").val();
let user_id = '<?php echo $user_id; ?>';
if (typeof outsourcer_type == 'undefined')
return 2;
if (typeof numberofstop == 'undefined')
return 3;
if (numberofstop == 0 || numberofstop == '' || numberofstop == '0')
return 3;
if (typeof real_contract_arrival_date == 'undefined')
return 4;
if (real_contract_arrival_date == 0 || real_contract_arrival_date == '' || real_contract_arrival_date == '0')
return 4;
return 1;
}
function resetIOutSourcerDate() {
$("#estimate_install_start_date").val("");
$("#estimate_install_end_date").val("");
}
function resetTOutSourcerDate() {
$("#estimate_tryrun_start_date").val("");
$("#estimate_tryrun_end_date").val("");
}
function resetAllOutSourcerDate() {
resetIOutSourcerDate();
resetTOutSourcerDate();
}
function specificationDayFormula(numberofstop) {
if (numberofstop > 0 && numberofstop <= 7)
return 7;
if (numberofstop > 7 && numberofstop < 14)
return numberofstop;
if (numberofstop >= 14)
return 14;
return 0
}
function dateAddDays(dateString, daysToAdd = 0) {
daysToAdd = Number(daysToAdd);
// 將日期字串轉換為日期物件
var initialDate = new Date(dateString);
// 增加指定天數
initialDate.setDate(initialDate.getDate() + daysToAdd);
// 將結果轉換為所需的日期格式(例如:yyyy-mm-dd)
var year = initialDate.getFullYear();
var month = String(initialDate.getMonth() + 1).padStart(2, "0"); // 月份從0開始,需要加1
var day = String(initialDate.getDate()).padStart(2, "0");
var resultDateString = year + "-" + month + "-" + day;
return resultDateString;
}
var ocfi_id = 0;
function addOutsourcerContractFileItem() {
ocfi_id++;
let html = "<input style='width:70%;display:inline;' type='file' id='outsourcer_contract_file_" + ocfi_id + "' name='outsourcer_contract_file[]' multiple>";
html += "<button type='button' class='btn btn-danger' id='outsourcer_contract_file_del_" + ocfi_id + "' onclick='delOutsourcerContractFileItem(" + ocfi_id + ")'>x</button>";
$("#ocfi_td").append(html);
}
function delOutsourcerContractFileItem(id) {
$("#outsourcer_contract_file_del_" + id).remove();
$("#outsourcer_contract_file_" + id).remove();
}
</script>

14
wms/wipwhole-renovate-rec-invoice.php

@ -433,6 +433,9 @@ if ($department_id == "321" || $department_id == "220") {
// 已備齊檢查人
$shengguanok_status_owner = postCheck('shengguanok_status_owner');
// QC與官檢種類
$qc_official_type = postCheck('qc_official_type');
// 建立人
$creater = postCheck('creater');
// 建立時間
@ -526,6 +529,7 @@ if ($department_id == "321" || $department_id == "220") {
shengguanok_status_file,
shengguanok_status_at,
shengguanok_status_owner,
qc_official_type,
creater,
create_at
) VALUES (
@ -614,6 +618,7 @@ if ($department_id == "321" || $department_id == "220") {
'$shengguanok_status_file',
'$shengguanok_status_at',
'$shengguanok_status_owner',
'$qc_official_type',
'$creater',
'$create_at'
)
@ -850,7 +855,14 @@ if ($department_id == "321" || $department_id == "220") {
?>
</select>
</td>
<td></td>
<td>
<input type="radio" name="qc_official_type" id='qc_official_type_QO' value='QO' checked/>
<label for="qc_official_type_QO">QC + 官檢</label>
<input type="radio" name="qc_official_type" id='qc_official_type_Q' value='Q' />
<label for="qc_official_type_Q">只需QC</label>
<input type="radio" name="qc_official_type" id='qc_official_type_O' value='O' ?>
<label for="qc_official_type_O">只需官檢</label>
</td>
<td></td>
</tr>
</thead>

97
wms/wipwholeinstall-index-function.php

@ -1051,3 +1051,100 @@ function getShengguanokOptions($link)
";
return mysqli_query($link, $sql);
}
function warningMessage($data)
{
$waringMessageArr = array(
'1' => '',
'2' => '沒有預計出貨日(到工地)',
'3' => '有實際完工工日,實際開工日未填寫',
'4' => '有實際完工工日,未填寫QC日',
'5' => '有實際完工工日,移交日未填寫',
'6' => '官檢日未填寫',
'7' => '官檢日不在移交日的60天內',
'8' => '移交日不是實際完工日+14天',
);
if (getWarningMessageStatus($data) !== 1)
return $waringMessageArr[getWarningMessageStatus($data)];
return "";
}
function getWarningMessageStatus($data)
{
$real_contract_arrival_date = $data['real_contract_arrival_date'];
$install_start_date = $data['install_start_date'];
$install_end_date = $data['install_end_date'];
$tryrun_start_date = $data['tryrun_start_date'];
$tryrun_end_date = $data['tryrun_end_date'];
$tryrun_end_date_owner = $data['tryrun_end_date_owner'];
$estimate_install_start_date = $data['estimate_install_start_date'];
$estimate_install_end_date = $data['estimate_install_end_date'];
$estimate_tryrun_start_date = $data['estimate_tryrun_start_date'];
$estimate_tryrun_end_date = $data['estimate_tryrun_end_date'];
$official_check_date = $data['official_check_date'];
$delivery_date = $data['delivery_date'];
$qc_date = $data['qc_date'];
$end_qc_date = $data['end_qc_date'];
// 有任何開工/完工日期,卻沒有預計出貨日(到工地)
if (empty($real_contract_arrival_date)) {
$tmp_arr = [
'install_start_date',
'install_end_date',
'tryrun_start_date',
'tryrun_end_date',
'tryrun_end_date_owner',
'estimate_install_start_date',
'estimate_install_end_date',
'estimate_tryrun_start_date',
'estimate_tryrun_end_date'
];
foreach ($tmp_arr as $row) {
if (!empty($data[$row])) {
return "2";
}
}
}
// 有實際完工日,要有實際開工日
if (!empty($install_end_date)) {
if (empty($install_start_date))
return "3";
}
if (!empty($tryrun_end_date)) {
if (empty($tryrun_start_date))
return "3";
}
// 有實際完工工日,要有QC日
if (!empty($install_end_date) || !empty($tryrun_end_date)) {
if (empty($qc_date) && empty($end_qc_date))
return "4";
}
// 有實際完工工日,移交日未填寫
if (!empty($install_end_date) || !empty($tryrun_end_date)) {
if (empty($delivery_date)) {
return "5";
}
}
// 有移交日,官檢日未填寫
if (!empty($delivery_date)) {
if (empty($official_check_date))
return "6";
}
// 有移交日,官檢日若不是移交日+60日
// if (!empty($delivery_date) && !empty($official_check_date)) {
// $date = floor((strtotime($official_check_date) - strtotime($delivery_date)) / 86400);
// if ($date <= 0 || $date > 60)
// return "7";
// }
// 有實際完工工日,移交日若不是實際完工日+14天
// if (!empty($install_end_date) || !empty($tryrun_end_date)) {
// $date = floor((strtotime($install_end_date) - strtotime($delivery_date)) / 86400);
// if ($date <= 0 || $date > 14)
// return "5";
// }
return "1";
}

2
wms/wipwholeinstall-index-table-html.php

@ -5,6 +5,7 @@
<th style="vertical-align: middle;text-align:center;width:150px;">客戶姓名</th>
<th style="vertical-align: middle;text-align:center;width:250px;">合約地址</th>
<th style="vertical-align: middle;text-align:center;width:250px;">地工地址</th>
<th style="vertical-align: middle;text-align:center;width:140px;">警示</th>
<th style="vertical-align: middle;text-align:center;width:140px;">預計出貨日</th>
<th style="vertical-align: middle;text-align:center;width:140px;">發包廠商(工勘)</th>
<th style="vertical-align: middle;text-align:center;width:140px;">發包日期(工勘)</th>
@ -54,6 +55,7 @@
<td><?php echo $data['custom']; ?></td>
<td><?php echo $data['address']; ?></td>
<td><?php echo $data['real_address']; ?></td>
<td style="text-align:left;"><span class="text-danger"><?php echo warningMessage($data); ?></span></td>
<td><?php echo substr($data['real_contract_arrival_date'], 0, 10); ?></td>
<?php
// foreach ($site_survey_status as $key => $val) {

28
wms/wipwholeinstall-index.php

@ -1,5 +1,5 @@
<?php
ini_set('display_errors', 'on');
// ini_set('display_errors', 'on');
/**
* 權限規則:
* 1.工務:宜蘭=高培軒(M0087) 北=張潘榮(M0041) 中=林瑋隆(M0113) 南=鄭存邑(M0102)
@ -43,11 +43,27 @@ $site_survey_contact_verify = !isset($_REQUEST['site_survey_contact_verify']) ?
$real_arrival_date_start = empty($_REQUEST['real_arrival_date_start']) ? null : $_REQUEST['real_arrival_date_start'];
$real_arrival_date_end = empty($_REQUEST['real_arrival_date_end']) ? null : $_REQUEST['real_arrival_date_end'];
$area_no = !isset($_REQUEST['area_no']) ? '' : $_REQUEST['area_no'];
$erro_mesage_search = !isset($_REQUEST['erro_mesage_search']) ? 'A' : $_REQUEST['erro_mesage_search'];
// 取得資料 sql
$sql = getDataSql($department_id, $role_id, $user_id);
$data = mysqli_query($link, $sql);
$Tdata = [];
$Fdata = [];
foreach($data as $row){
if(!empty(warningMessage($row))){
array_push($Tdata,$row);
}else{
array_push($Fdata,$row);
}
}
if($erro_mesage_search == 'T')
$data = $Tdata;
if($erro_mesage_search == 'F')
$data = $Fdata;
?>
<div style="overflow-x:auto;">
@ -150,6 +166,12 @@ $data = mysqli_query($link, $sql);
</select>
</td>
<td colspan="5" style='text-align:left'>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search' value='A' <?php echo $erro_mesage_search == 'A' ? "checked" : ""; ?> />
<label for="erro_mesage_search">全部</label>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search_true' value='T' <?php echo $erro_mesage_search == 'T' ? "checked" : ""; ?> />
<label for="erro_mesage_search_true">已出現警示</label>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search_false' value='F' <?php echo $erro_mesage_search == 'F' ? "checked" : ""; ?> />
<label for="erro_mesage_search_false">未出現警示</label>
<button type="submit" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm">查詢</button>
<button type="button" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm" onclick='day_before_input()'><?php echo $numberOfDaysToAdd; ?>天內資料</button>
<button type="button" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm" onclick='day_before_all_input()'><?php echo $numberOfDaysToAdd; ?>天內資料(含今天以前)</button>
@ -208,6 +230,7 @@ mysqli_close($link);
formData.append("real_arrival_date_start", "<?php echo empty($_POST['real_arrival_date_start']) ? null : $_POST['real_arrival_date_start']; ?>");
formData.append("real_arrival_date_end", "<?php echo empty($_POST['real_arrival_date_end']) ? null : $_POST['real_arrival_date_end']; ?>");
formData.append("area_no", "<?php echo empty($_POST['area_no']) ? null : $_POST['area_no']; ?>");
formData.append("erro_mesage_search", "<?php echo empty($_POST['erro_mesage_search']) ? null : $_POST['erro_mesage_search']; ?>");
function generateButton() {
var xhr = new XMLHttpRequest();
@ -307,6 +330,7 @@ mysqli_close($link);
var real_arrival_date_start = $("#real_arrival_date_start").val();
var real_arrival_date_end = $("#real_arrival_date_end").val();
var area_no = $("#area_no").val();
var erro_mesage_search = $('input[name=erro_mesage_search]:checked').val();
var showNum = <?php echo empty($_GET['showNum']) ? '10' : $_GET['showNum']; ?>;
var nowPage = <?php echo empty($_GET['nowPage']) ? '1' : $_GET['nowPage']; ?>;
@ -356,6 +380,6 @@ mysqli_close($link);
"&orderColumn=" + orderColumn + "&orderDirection=" + orderDirection +
"&contractno=" + contractno + "&facilityno=" + facilityno + "&custom=" + custom +
"&site_survey_contact_verify=" + site_survey_contact_verify + "&real_arrival_date_start=" + real_arrival_date_start +
"&real_arrival_date_end=" + real_arrival_date_end + "&area_no=" + area_no;
"&real_arrival_date_end=" + real_arrival_date_end + "&area_no=" + area_no + "&erro_mesage_search=" + erro_mesage_search;
}
</script>

100
wms/wipwholeinstall-renovate-index-function.php

@ -230,7 +230,7 @@ function getDataSql($department_id, $role_id, $user_id)
AND status = '1'
AND contract_type = '$contract_type'
" . getWipwholeSearchSql() . "
AND SUBSTR(address,1,2) in ('台南','臺南','嘉義','屏東','高雄')
AND SUBSTR(address,1,2) in ('宜蘭','花蓮','台東','臺東')
ORDER BY real_contract_arrival_date DESC
";
return $sql;
@ -1072,3 +1072,101 @@ function getShengguanokOptions($link)
";
return mysqli_query($link, $sql);
}
function warningMessage($data)
{
$waringMessageArr = array(
'1' => '',
'2' => '沒有預計出貨日(到工地)',
'3' => '有實際完工工日,實際開工日未填寫',
'4' => '有實際完工工日,未填寫QC日',
'5' => '有實際完工工日,移交日未填寫',
'6' => '官檢日未填寫',
'7' => '官檢日不在移交日的60天內',
'8' => '移交日不是實際完工日+14天',
);
if (getWarningMessageStatus($data) !== 1)
return $waringMessageArr[getWarningMessageStatus($data)];
return "";
}
function getWarningMessageStatus($data)
{
$real_contract_arrival_date = $data['real_contract_arrival_date'];
$install_start_date = $data['install_start_date'];
$install_end_date = $data['install_end_date'];
$tryrun_start_date = $data['tryrun_start_date'];
$tryrun_end_date = $data['tryrun_end_date'];
$tryrun_end_date_owner = $data['tryrun_end_date_owner'];
$estimate_install_start_date = $data['estimate_install_start_date'];
$estimate_install_end_date = $data['estimate_install_end_date'];
$estimate_tryrun_start_date = $data['estimate_tryrun_start_date'];
$estimate_tryrun_end_date = $data['estimate_tryrun_end_date'];
$official_check_date = $data['official_check_date'];
$delivery_date = $data['delivery_date'];
$qc_date = $data['qc_date'];
$end_qc_date = $data['end_qc_date'];
// 有任何開工/完工日期,卻沒有預計出貨日(到工地)
if (empty($real_contract_arrival_date)) {
$tmp_arr = [
'install_start_date',
'install_end_date',
'tryrun_start_date',
'tryrun_end_date',
'tryrun_end_date_owner',
'estimate_install_start_date',
'estimate_install_end_date',
'estimate_tryrun_start_date',
'estimate_tryrun_end_date'
];
foreach ($tmp_arr as $row) {
if (!empty($data[$row])) {
return "2";
}
}
}
// 有實際完工日,要有實際開工日
if (!empty($install_end_date)) {
if (empty($install_start_date))
return "3";
}
if (!empty($tryrun_end_date)) {
if (empty($tryrun_start_date))
return "3";
}
// 有實際完工工日,要有QC日
if (!empty($install_end_date) || !empty($tryrun_end_date)) {
if (empty($qc_date) && empty($end_qc_date))
return "4";
}
// 有實際完工工日,移交日未填寫
if (!empty($install_end_date) || !empty($tryrun_end_date)) {
if (empty($delivery_date)) {
return "5";
}
}
// 有移交日,官檢日未填寫
if (!empty($delivery_date)) {
if (empty($official_check_date))
return "6";
}
// 有移交日,官檢日若不是移交日+60日
// if (!empty($delivery_date) && !empty($official_check_date)) {
// $date = floor((strtotime($official_check_date) - strtotime($delivery_date)) / 86400);
// if ($date <= 0 || $date > 60)
// return "7";
// }
// 有實際完工工日,移交日若不是實際完工日+14天
// if (!empty($install_end_date) || !empty($tryrun_end_date)) {
// $date = floor((strtotime($install_end_date) - strtotime($delivery_date)) / 86400);
// if ($date <= 0 || $date > 14)
// return "5";
// }
return "1";
}

2
wms/wipwholeinstall-renovate-index-table-html.php

@ -6,6 +6,7 @@
<th style="vertical-align: middle;text-align:center;width:150px;">客戶姓名</th>
<th style="vertical-align: middle;text-align:center;width:250px;">合約地址</th>
<th style="vertical-align: middle;text-align:center;width:250px;">地工地址</th>
<th style="vertical-align: middle;text-align:center;width:250px;">警示</th>
<th style="vertical-align: middle;text-align:center;width:140px;">預計出貨日</th>
<th style="vertical-align: middle;text-align:center;width:140px;">發包廠商(工勘)</th>
<th style="vertical-align: middle;text-align:center;width:140px;">發包日期(工勘)</th>
@ -37,6 +38,7 @@
<td><?php echo $data['custom']; ?></td>
<td><?php echo $data['address']; ?></td>
<td><?php echo $data['real_address']; ?></td>
<td style="text-align:left;"><span class="text-danger"><?php echo warningMessage($data); ?></span></td>
<td><?php echo substr($data['real_contract_arrival_date'], 0, 10); ?></td>
<?php
// foreach ($site_survey_status as $key => $val) {

27
wms/wipwholeinstall-renovate-index.php

@ -43,11 +43,27 @@ $site_survey_contact_verify = !isset($_REQUEST['site_survey_contact_verify']) ?
$real_arrival_date_start = empty($_REQUEST['real_arrival_date_start']) ? null : $_REQUEST['real_arrival_date_start'];
$real_arrival_date_end = empty($_REQUEST['real_arrival_date_end']) ? null : $_REQUEST['real_arrival_date_end'];
$area_no = !isset($_REQUEST['area_no']) ? '' : $_REQUEST['area_no'];
$erro_mesage_search = !isset($_REQUEST['erro_mesage_search']) ? 'A' : $_REQUEST['erro_mesage_search'];
// 取得資料 sql
$sql = getDataSql($department_id, $role_id, $user_id);
$data = mysqli_query($link, $sql);
$Tdata = [];
$Fdata = [];
foreach ($data as $row) {
if (!empty(warningMessage($row))) {
array_push($Tdata, $row);
} else {
array_push($Fdata, $row);
}
}
if ($erro_mesage_search == 'T')
$data = $Tdata;
if ($erro_mesage_search == 'F')
$data = $Fdata;
?>
<div style="overflow-x:auto;">
@ -150,6 +166,12 @@ $data = mysqli_query($link, $sql);
</select>
</td>
<td colspan="5" style='text-align:left'>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search' value='A' <?php echo $erro_mesage_search == 'A' ? "checked" : ""; ?> />
<label for="erro_mesage_search">全部</label>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search_true' value='T' <?php echo $erro_mesage_search == 'T' ? "checked" : ""; ?> />
<label for="erro_mesage_search_true">已出現警示</label>
<input type="radio" name="erro_mesage_search" id='erro_mesage_search_false' value='F' <?php echo $erro_mesage_search == 'F' ? "checked" : ""; ?> />
<label for="erro_mesage_search_false">未出現警示</label>
<button type="submit" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm">查詢</button>
<button type="button" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm" onclick='day_before_input()'><?php echo $numberOfDaysToAdd; ?>天內資料</button>
<button type="button" style='text-align:center; margin:0 auto' class="btn btn-primary btn-sm" onclick='day_before_all_input()'><?php echo $numberOfDaysToAdd; ?>天內資料(含今天以前)</button>
@ -207,7 +229,7 @@ mysqli_close($link);
formData.append("real_arrival_date_start", "<?php echo empty($_POST['real_arrival_date_start']) ? null : $_POST['real_arrival_date_start']; ?>");
formData.append("real_arrival_date_end", "<?php echo empty($_POST['real_arrival_date_end']) ? null : $_POST['real_arrival_date_end']; ?>");
formData.append("area_no", "<?php echo empty($_POST['area_no']) ? null : $_POST['area_no']; ?>");
formData.append("erro_mesage_search", "<?php echo empty($_POST['erro_mesage_search']) ? null : $_POST['erro_mesage_search']; ?>");
function generateButton() {
var xhr = new XMLHttpRequest();
@ -302,6 +324,7 @@ mysqli_close($link);
var real_arrival_date_start = $("#real_arrival_date_start").val();
var real_arrival_date_end = $("#real_arrival_date_end").val();
var area_no = $("#area_no").val();
var erro_mesage_search = $('input[name=erro_mesage_search]:checked').val();
var showNum = <?php echo empty($_GET['showNum']) ? '10' : $_GET['showNum']; ?>;
var nowPage = <?php echo empty($_GET['nowPage']) ? '1' : $_GET['nowPage']; ?>;
@ -354,6 +377,6 @@ mysqli_close($link);
"&orderColumn=" + orderColumn + "&orderDirection=" + orderDirection +
"&contractno=" + contractno + "&facilityno=" + facilityno + "&custom=" + custom +
"&site_survey_contact_verify=" + site_survey_contact_verify + "&real_arrival_date_start=" + real_arrival_date_start +
"&real_arrival_date_end=" + real_arrival_date_end + "&area_no=" + area_no;
"&real_arrival_date_end=" + real_arrival_date_end + "&area_no=" + area_no + "&erro_mesage_search=" + erro_mesage_search;
}
</script>
Loading…
Cancel
Save