diff --git a/wms/contract/api/getComboNo.php b/wms/contract/api/getComboNo.php
new file mode 100644
index 00000000..c258be15
--- /dev/null
+++ b/wms/contract/api/getComboNo.php
@@ -0,0 +1,59 @@
+'BW002',
+ 'month'=>'EM002',
+ 'quarter'=>'EQ002',
+ 'half'=>'HY002',
+ 'year'=>'EY002'
+ ];
+ private $bwarr = [
+ 'week','month','week','month','week','quarter',
+ 'week','month','week','month','week','half',
+ 'week','month','week','month','week','quarter',
+ 'week','month','week','month','week','year'
+ ];
+ private $emarr = [
+ 'month','month','quarter','month','month','half',
+ 'month','month','quarter','month','month','year'
+ ];
+ private $combo;
+ private $startdate;
+ private $enddate;
+ public function __construct($combo, $startdate, $enddate){
+ $this->combo = $combo;
+ $this->startdate = $startdate;
+ $this->enddate = $enddate;
+ }
+ public function getComboNo(){
+ $comboarr = (array) $this->combo === 'bw' ? $this->bwarr : $this->emarr;
+
+ $startdate = new DateTime($this->startdate);
+ $enddate = new DateTime($this->enddate);
+
+ $interval = date_diff($startdate, $enddate);
+
+ $months = $interval->y * 12 + $interval->m;
+ $months = $this->combo === 'bw' ? $months*2 : $months;
+
+ $newarr = [];
+ $idx = 0;
+ $ori_first_month = date('m', strtotime($this->startdate));
+ $first_day = date('Y-m-d', strtotime($this->startdate. ' + 3 days'));
+ $new_first_month = date('m', strtotime($first_day));
+ if($ori_first_month != $new_first_month){
+ $first_day = date('Y-m-t', strtotime($this->startdate));
+ }
+ $scheduleDate = new DateTime($first_day);
+ for ($i = 0; $i < $months; $i++){
+ $newarr[] = [$this->comboarr[$comboarr[$idx]], $scheduleDate->format("Y-m-d")];
+ $idx ++;
+ $scheduleDate = $startdate->modify("+1 month");
+ if($idx >= count($comboarr)){
+ $idx = 0;
+ }
+ }
+ return json_encode($newarr);
+ }
+}
\ No newline at end of file
diff --git a/wms/contract/api/getContractData.php b/wms/contract/api/getContractData.php
index 38b98bcc..86d8301c 100644
--- a/wms/contract/api/getContractData.php
+++ b/wms/contract/api/getContractData.php
@@ -3,9 +3,9 @@ require_once('../conn.php');
if(isset($_GET['contractno']) && $_GET['contractno']!=''){
try{
$contractno = $_GET['contractno'];
- $sql_str = "SELECT * FROM con_maintance_examine_apply
+ $sql_str = "SELECT COUNT(con_maintance_examine_clear.apply_key) as count,con_maintance_examine_apply.*, con_maintance_examine_clear.* FROM con_maintance_examine_apply
LEFT JOIN con_maintance_examine_clear on con_maintance_examine_apply.apply_key=con_maintance_examine_clear.apply_key
- WHERE con_maintance_examine_apply.vol_no = :vol_no";
+ WHERE con_maintance_examine_apply.vol_no = :vol_no GROUP BY con_maintance_examine_apply.apply_key;";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $contractno);
$stmt->execute();
diff --git a/wms/contract/api/createFacilityNo.php b/wms/contract/api/getFacilityNo.php
similarity index 100%
rename from wms/contract/api/createFacilityNo.php
rename to wms/contract/api/getFacilityNo.php
diff --git a/wms/contract/api/postContractData.php b/wms/contract/api/postContractData.php
index a499cecd..67d08f1a 100644
--- a/wms/contract/api/postContractData.php
+++ b/wms/contract/api/postContractData.php
@@ -1,46 +1,86 @@
0) {
+ header("HTTP/1.1 422 Unprocessable Entity");
+ echo json_encode($fail_arr);
+ exit();
+ }
+
//create account table
$accounttype = "A";
$accountid = $vat;
@@ -50,6 +90,8 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$repairerid = $mworker;
$creater = $user_id;
$create_at = date('Y-m-d H:i:s');
+
+ $conn->beginTransaction();
$sql_str = "INSERT INTO account (accounttype, accountid, pwd, name, tel, address, email, repairerid, creater, create_at) VALUES (:accounttype, :accountid, :pwd, :name, :tel, :address, :email, :repairerid, :creater, :create_at)";
$stmt = $conn -> prepare($sql_str);
@@ -80,8 +122,6 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$contract_employee = $salesman;
$start_date = $contract_begin_date;
$end_date = $contract_end_date;
- $creater = $user_id;
- $create_at = date('Y-m-d H:i:s');
$sql_str = "INSERT INTO contract (contracttype, contractno, company, taxid, address, tel, promiser, contractperson, contractaddress, contracttel, contractemail, contract_employee, start_date, end_date, creater, create_at) VALUES (:contracttype, :contractno, :company, :taxid, :address, :tel, :promiser, :contractperson, :contractaddress, :contracttel, :contractemail, :contract_employee, :start_date, :end_date, :creater, :create_at)";
$stmt = $conn -> prepare($sql_str);
@@ -118,10 +158,9 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$stmt->bindParam(':accountid',$mworker);
$stmt->execute();
$worker = $stmt->fetch(PDO::FETCH_ASSOC);
-
+
+ $facilityno = $createFacilityNo->makeBFacilityNo("T", $dailyNecessities[$spec], (int)$num);
$define = "B";
- $facilityno = $createFacilityNo->makeTFacilityNo("T", $dailyNecessities[$spec], $num)[0];
- echo $facilityno;
$customerid = $vat;
$opentype = $opendoor;
$repairtype = "A";
@@ -129,41 +168,237 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$maintainance = "E";
$repairerid = $mworker;
$repairername = $worker['name'];
- $creater = $user_id;
- $create_at = date("Y-m-d H:i:s");
- $sql_str = "INSERT INTO facility (contractno, define, facilityno, latitude, longitude, customerid, weight, numberofpassenger, numberofstop, numberoffloor, opentype, speed, repairtype, maintainance, facility_kind, address, repairerid, repairername, creater, create_at, area, takecertificatedate, licensedate)
- VALUES (:contractno, :define, :facilityno, :latitude, :longitude, :customerid, :weight, :numberofpassenger, :numberofstop, :numberoffloor, :opentype, :speed, :repairtype, :maintainance, :facility_kind, :address, :repairerid, :repairername, :creater, :create_at, :area, :takecertificatedate, :licensedate)";
- $stmt = $conn -> prepare($sql_str);
- $stmt -> bindParam(':contractno' ,$contractno);
- $stmt -> bindParam(':define' ,$define);
- $stmt -> bindParam(':facilityno' ,$facilityno);
- $stmt -> bindParam(':latitude' ,$latitude);
- $stmt -> bindParam(':longitude' ,$longitude);
- $stmt -> bindParam(':customerid' ,$customerid);
- $stmt -> bindParam(':weight' ,$weight);
- $stmt -> bindParam(':numberofpassenger' ,$numberofpassenger);
- $stmt -> bindParam(':numberofstop' ,$numberofstop);
- $stmt -> bindParam(':numberoffloor' ,$numberoffloor);
- $stmt -> bindParam(':opentype' ,$opentype);
- $stmt -> bindParam(':speed' ,$speed);
- $stmt -> bindParam(':repairtype' ,$repairtype);
- $stmt -> bindParam(':maintainance' ,$maintainance);
- $stmt -> bindParam(':facility_kind' ,$facility_kind);
- $stmt -> bindParam(':address' ,$address);
- $stmt -> bindParam(':repairerid' ,$repairerid);
- $stmt -> bindParam(':repairername' ,$repairername);
- $stmt -> bindParam(':creater' ,$creater);
- $stmt -> bindParam(':create_at' ,$create_at);
- $stmt -> bindParam(':area' ,$area);
- $stmt -> bindParam(':takecertificatedate' ,$takecertificatedate);
- $stmt -> bindParam(':licensedate' ,$licensedate);
+
+ foreach($facilityno as $fno){
+
+ $sql_str = "INSERT INTO facility (contractno, define, facilityno, latitude, longitude, customerid, weight, numberofpassenger, numberofstop, numberoffloor, opentype, speed, repairtype, maintainance, facility_kind, address, repairerid, repairername, creater, create_at, area, takecertificatedate, licensedate)
+ VALUES (:contractno, :define, :facilityno, :latitude, :longitude, :customerid, :weight, :numberofpassenger, :numberofstop, :numberoffloor, :opentype, :speed, :repairtype, :maintainance, :facility_kind, :address, :repairerid, :repairername, :creater, :create_at, :area, :takecertificatedate, :licensedate)";
+ $stmt = $conn -> prepare($sql_str);
+ $stmt -> bindParam(':contractno' ,$contractno);
+ $stmt -> bindParam(':define' ,$define);
+ $stmt -> bindParam(':facilityno' ,$fno);
+ $stmt -> bindParam(':latitude' ,$latitude);
+ $stmt -> bindParam(':longitude' ,$longitude);
+ $stmt -> bindParam(':customerid' ,$customerid);
+ $stmt -> bindParam(':weight' ,$weight);
+ $stmt -> bindParam(':numberofpassenger' ,$numberofpassenger);
+ $stmt -> bindParam(':numberofstop' ,$numberofstop);
+ $stmt -> bindParam(':numberoffloor' ,$numberoffloor);
+ $stmt -> bindParam(':opentype' ,$opentype);
+ $stmt -> bindParam(':speed' ,$speed);
+ $stmt -> bindParam(':repairtype' ,$repairtype);
+ $stmt -> bindParam(':maintainance' ,$maintainance);
+ $stmt -> bindParam(':facility_kind' ,$facility_kind);
+ $stmt -> bindParam(':address' ,$address);
+ $stmt -> bindParam(':repairerid' ,$repairerid);
+ $stmt -> bindParam(':repairername' ,$repairername);
+ $stmt -> bindParam(':creater' ,$creater);
+ $stmt -> bindParam(':create_at' ,$create_at);
+ $stmt -> bindParam(':area' ,$area);
+ $stmt -> bindParam(':takecertificatedate' ,$takecertificatedate);
+ $stmt -> bindParam(':licensedate' ,$licensedateeeee);
+
+ $result = $stmt -> execute();
+ }
+
+ //create schedule table
- $result = $stmt -> execute();
+ $comboNo = new CreateComboNo($mcycle, $contract_begin_date, $contract_end_date);
+ $comboArr = json_decode($comboNo->getComboNo(), true);
+ foreach($facilityno as $no){
+ foreach($comboArr as $combo){
+ $sql_str = 'INSERT INTO schedule (contractno, facilityno, combono, repairerid, repairername, duedate, creater, create_at) VALUES (:contractno, :facilityno, :combono, :repairerid, :repairername, :duedate, :creater, :create_at)';
+ $stmt = $conn -> prepare($sql_str);
+ $stmt -> bindParam(':contractno' ,$contractno);
+ $stmt -> bindParam(':facilityno' ,$no);
+ $stmt -> bindParam(':combono' ,$combo[0]);
+ $stmt -> bindParam(':repairerid' ,$repairerid);
+ $stmt -> bindParam(':repairername' ,$repairername);
+ $stmt -> bindParam(':duedate' ,$combo[1]);
+ $stmt -> bindParam(':creater' ,$creater);
+ $stmt -> bindParam(':create_at' ,$create_at);
+ $result = $stmt -> execute();
+ }
+ }
+ // create contract_b_signed_back table
+ $contract_type = $mtype;
+ $company = $customer;
+ $customer_no = $vat;
+ $salesperson = $salesman;
+ $customer_phone = $phone;
+ $customer_email = $email;
+ $repairman = $mworker;
+ $cycle = $mcycle;
+ $contact_person = $partyA;
+ $contact_address = $partyAaddress;
+ $contact_phone = $partyAphone;
+ $contract_email = $partyAemail;
+ $elevators_number = $num;
+ $bonus = 1000;
+ $max_bonus = 2000;
+ $englisharr = range('a', 'z');
+ $file = $_FILES['files'];
+ $file_name = $file['name'];
+ $file_type = $file['type'];
+ $tmp_name = $file['tmp_name'];
+ $file_size = $file['size'];
+ $error = $file['error'];
+ $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
+ }
+ echo json_encode($newfiles);
+ $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 = 'c' . $datetime;
+ foreach( $newfiles as $key => $file ){
+ $randNum = rand(1000,9999);
+ $randEnglish = $englisharr[rand(0,25)];
+ $file_name = 'c' . (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' ,$user_id);
+ $stmt ->execute();
+ }
+ $msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '
';
+ $src_name = $path.$file['name'];
+ if( file_exists($src_name) ){
+ //副檔名
+ $extname = pathinfo($src_name, PATHINFO_EXTENSION);
+ //主檔名
+ $basename = basename($src_name, '.'.$extname);
+ }
+
+ }
+ $sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price, opendoor, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, takecertificatedate, license_date, elevators_number, spec, weight, speed, numberofpassenger, numberofstop, numberoffloor, latitude, longitude, area, address, files_id, bonus, max_bonus, created_at, created_by)
+ VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :opendoor, :customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :takecertificatedate, :license_date, :elevators_number, :spec, :weight, :speed, :numberofpassenger, :numberofstop, :numberoffloor, :latitude, :longitude, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)";
+ $stmt = $conn -> prepare($sql_str);
+ $stmt -> bindParam(":contract_no",$contractno);
+ $stmt -> bindParam(":contract_type",$contract_type);
+ $stmt -> bindParam(":company",$company);
+ $stmt -> bindParam(":customer_no",$customer_no);
+ $stmt -> bindParam(":salesperson",$salesperson);
+ $stmt -> bindParam(":contract_start_date",$contract_begin_date);
+ $stmt -> bindParam(":contract_end_date",$contract_end_date);
+ $stmt -> bindParam(":total_price",$total_price);
+ $stmt -> bindParam(":opendoor",$opendoor);
+ $stmt -> bindParam(":customer_phone",$customer_phone);
+ $stmt -> bindParam(":customer_email",$customer_email);
+ $stmt -> bindParam(":repairman",$repairman);
+ $stmt -> bindParam(":cycle",$cycle);
+ $stmt -> bindParam(":contact_person",$contact_person);
+ $stmt -> bindParam(":contact_address",$contact_address);
+ $stmt -> bindParam(":contact_phone",$contact_phone);
+ $stmt -> bindParam(":contact_email",$contact_email);
+ $stmt -> bindParam(":takecertificatedate",$takecertificatedate);
+ $stmt -> bindParam(":license_date",$license_date);
+ $stmt -> bindParam(":elevators_number",$elevators_number);
+ $stmt -> bindParam(":spec",$spec);
+ $stmt -> bindParam(":weight",$weight);
+ $stmt -> bindParam(":speed",$speed);
+ $stmt -> bindParam(":numberofpassenger",$numberofpassenger);
+ $stmt -> bindParam(":numberofstop",$numberofstop);
+ $stmt -> bindParam(":numberoffloor",$numberoffloor);
+ $stmt -> bindParam(":latitude",$latitude);
+ $stmt -> bindParam(":longitude",$longitude);
+ $stmt -> bindParam(":area",$area);
+ $stmt -> bindParam(":address",$address);
+ $stmt -> bindParam(":files_id",$files_id);
+ $stmt -> bindParam(":bonus",$bonus);
+ $stmt -> bindParam(":max_bonus",$max_bonus);
+ $stmt -> bindParam(":created_at", $created_at);
+ $stmt -> bindParam(":created_by",$user_id);
+
+ $stmt -> execute();
+
header('Content-Type: application/json');
$jsonData = json_encode($files);
+ $conn->commit();
}catch(PDOException $e){
+ $r = $conn->rollback();
+ echo $r;
die('Error!:'.$e->getMessage());
}
-}
\ No newline at end of file
+}
+
+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的結果
+ }// function end
\ No newline at end of file
diff --git a/wms/contract/contract-input.php b/wms/contract/contract-input.php
index e098a317..e41013ee 100644
--- a/wms/contract/contract-input.php
+++ b/wms/contract/contract-input.php
@@ -1,6 +1,7 @@
prepare($sql_str);
@@ -13,6 +14,9 @@ $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype',$accounttype);
$stmt->execute();
$contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+$createFacilityNo = new CreateFacilityNo();
+$facilityno = $createFacilityNo->makeTFacilityNo("T", 'X', 5);
?>
@@ -20,17 +24,16 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
+未填寫
+未填寫
+未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫
未填寫