|
|
@ -27,7 +27,7 @@ $creater = $_POST['user_id']; |
|
|
|
$create_at = date("Y-m-d H:i:s"); |
|
|
|
$attatch1_src = null; |
|
|
|
$attatch2_src = null; |
|
|
|
|
|
|
|
$token = $_POST['token']; |
|
|
|
|
|
|
|
$elevators = json_decode($_POST['elevators'], true); |
|
|
|
$options = json_decode($_POST['options'], true); |
|
|
@ -132,9 +132,10 @@ if(!empty($attatch2)){ |
|
|
|
} |
|
|
|
// -----處理檔案上傳 END----- |
|
|
|
|
|
|
|
$conn->beginTransaction(); |
|
|
|
if($main){ |
|
|
|
try{ |
|
|
|
|
|
|
|
try{ |
|
|
|
$conn->beginTransaction(); |
|
|
|
if($main){ |
|
|
|
$mid = $main["id"]; |
|
|
|
$sql_str = "UPDATE pricereview_main SET price_lowest=:price_lowest, price_total=:price_total, price_rate=:price_rate, special_fee=:special_fee, predeal_date=:predeal_date, facilitok_date=:facilitok_date, penalty=:penalty, deposit_rate=:deposit_rate, keep_rate=:keep_rate, warranty_rate=:warranty_rate, memo=:memo,status=:status, attatch1=:attatch1, attatch2=:attatch2 WHERE id = :id "; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -153,24 +154,24 @@ if($main){ |
|
|
|
$stmt->bindParam(':status', $status); |
|
|
|
$stmt->bindParam(':attatch1', $attatch1_src); |
|
|
|
$stmt->bindParam(':attatch2', $attatch2_src); |
|
|
|
|
|
|
|
|
|
|
|
$stmt->execute(); |
|
|
|
|
|
|
|
|
|
|
|
//整機單價 |
|
|
|
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'A'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->execute(); |
|
|
|
$items = $stmt->fetchAll(PDO::FETCH_ASSOC); |
|
|
|
|
|
|
|
|
|
|
|
$oldElevators = array_filter($items, fn($el)=> $el['item_group'] == "A"); |
|
|
|
|
|
|
|
|
|
|
|
$oldItemsNo = (array)array_column($oldElevators, 'item_no'); |
|
|
|
$newItemsNo = (array)array_column($elevators, 'id'); |
|
|
|
$onlyInOldIds = array_values(array_diff($oldItemsNo, $newItemsNo)); // 只有舊的有,新傳入的沒有,所以刪除(delete) |
|
|
|
$onlyInNewIds = array_values(array_diff($newItemsNo, $oldItemsNo)); //只有新傳入的有,舊的沒有,所以新增(insert) |
|
|
|
$inBothIds = array_values(array_intersect($oldItemsNo, $newItemsNo)); //舊的跟新的都有,所以要更新(update) |
|
|
|
|
|
|
|
|
|
|
|
foreach($onlyInOldIds as $oldidx){ |
|
|
|
$sql_str = "DELETE FROM pricereview_item WHERE mid = :mid AND item_no = :item_no AND item_group='A'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -188,7 +189,7 @@ if($main){ |
|
|
|
$item_group = "A"; |
|
|
|
// $item_spec = $elevator['specifications'] . "-" . $elevator['person'] . "*" . $elevator['stop'] . "-" . $elevator['open_converted'] . $elevator['speed']; |
|
|
|
$item_spec = getSpec($elevator['specifications'], $elevator['person'], $elevator['stop'], $elevator['open_converted'], $elevator['speed']); |
|
|
|
|
|
|
|
|
|
|
|
$item_weight = $elevator['weight']; |
|
|
|
$item_op = $elevator['open_converted']; |
|
|
|
|
|
|
@ -227,7 +228,7 @@ if($main){ |
|
|
|
$item_price_bp = (int)$elevator['price'] * (int)$elevator['spec_num']; |
|
|
|
$item_price_ct = $elevator['spec_price']; |
|
|
|
$note = $elevator['specifications'] . ',' . $elevator['person'] . ',' . $elevator['stop'] . ',' . $elevator['speed']; |
|
|
|
|
|
|
|
|
|
|
|
$sql_str = "UPDATE pricereview_item SET price_id=:price_id, item_spec=:item_spec, item_weight=:item_weight, item_op=:item_op, item_unit_price=:item_unit_price, item_qty=:item_qty, item_price_bp=:item_price_bp, item_price_ct=:item_price_ct, note=:note WHERE item_no = :item_no AND mid = :mid AND item_group='A' "; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':item_no', $bothidx); |
|
|
@ -243,7 +244,7 @@ if($main){ |
|
|
|
$stmt->bindParam(':note', $note); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Option加價 |
|
|
|
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'B'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -256,7 +257,7 @@ if($main){ |
|
|
|
$onlyInOptionOldIds = array_values(array_diff($oldOptionsNo, $newOptioinNo)); |
|
|
|
$onlyInOptionNewIds = array_values(array_diff($newOptioinNo, $oldOptionsNo)); |
|
|
|
$inBothOptionIds = array_values(array_intersect($oldOptionsNo, $newOptioinNo)); |
|
|
|
|
|
|
|
|
|
|
|
foreach($onlyInOptionOldIds as $oldoptionidx){ |
|
|
|
$sql_str = "DELETE FROM pricereview_item WHERE mid = :mid AND item_no = :item_no AND item_group='B'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -291,10 +292,10 @@ if($main){ |
|
|
|
$stmt->bindParam(':item_price_bp', $item_price_bp); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foreach($inBothOptionIds as $bothoptionidx){ |
|
|
|
$option = array_values(array_filter($options, fn($el)=> $el['key'] == $bothoptionidx))[0]; |
|
|
|
|
|
|
|
|
|
|
|
$price_id = $option['id']; |
|
|
|
$item_no = $option['key']; |
|
|
|
$item_group = "B"; |
|
|
@ -305,7 +306,7 @@ if($main){ |
|
|
|
$item_price_bp = $option['price'] * $option['qty']; |
|
|
|
|
|
|
|
$sql_str = "UPDATE pricereview_item SET price_id = :price_id, item_spec=:item_spec, item_unit_price = :item_unit_price, item_qty = :item_qty, item_price_bp = :item_price_bp, option_relate_spec=:option_relate_spec WHERE mid = :mid AND item_no = :item_no AND item_group='B'"; |
|
|
|
|
|
|
|
|
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':price_id', $price_id); |
|
|
@ -317,7 +318,7 @@ if($main){ |
|
|
|
$stmt->bindParam(':item_price_bp', $item_price_bp); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//除外項目 |
|
|
|
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'E'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -354,7 +355,7 @@ if($main){ |
|
|
|
$item_qty = $option['num']; |
|
|
|
$item_price_bp = $option['price'] * $option['num']; |
|
|
|
$note = $option['pr_no']; |
|
|
|
|
|
|
|
|
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':item_no', $item_no); |
|
|
@ -367,10 +368,10 @@ if($main){ |
|
|
|
$stmt->bindParam(':note', $note); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foreach($inBothOtherOptionIds as $bothotheroptionidx){ |
|
|
|
$option = array_values(array_filter($otherOptions, fn($el)=> $el['id'] == $bothotheroptionidx))[0]; |
|
|
|
|
|
|
|
|
|
|
|
$item_no = $option['id']; |
|
|
|
$item_group = "E"; |
|
|
|
$item_spec = $option['name']; |
|
|
@ -381,7 +382,7 @@ if($main){ |
|
|
|
$note = $option['pr_no']; |
|
|
|
|
|
|
|
$sql_str = "UPDATE pricereview_item SET item_spec=:item_spec, item_unit_price = :item_unit_price, item_qty = :item_qty, item_price_bp = :item_price_bp, option_relate_spec=:option_relate_spec, note=:note WHERE mid = :mid AND item_no = :item_no AND item_group='E'"; |
|
|
|
|
|
|
|
|
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':item_no', $item_no); |
|
|
@ -393,7 +394,7 @@ if($main){ |
|
|
|
$stmt->bindParam(':note', $note); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//拆梯價格 |
|
|
|
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'C'"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -430,7 +431,7 @@ if($main){ |
|
|
|
$item_price_bp = (int)$option['price'] * (int)$option['qty']; |
|
|
|
$note = $option['floor']; |
|
|
|
$price_id = $option['demolish_id']; |
|
|
|
|
|
|
|
|
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':item_no', $item_no); |
|
|
@ -446,7 +447,7 @@ if($main){ |
|
|
|
} |
|
|
|
foreach($inBothDemolishOptionIds as $bothdemolishoptionidx){ |
|
|
|
$option = array_values(array_filter($demolishOptions, fn($el)=> $el['id'] == $bothdemolishoptionidx))[0]; |
|
|
|
|
|
|
|
|
|
|
|
$item_no = $option['id']; |
|
|
|
$item_group = "C"; |
|
|
|
$item_spec = $option['person']; |
|
|
@ -458,7 +459,7 @@ if($main){ |
|
|
|
$price_id = $option['demolish_id']; |
|
|
|
|
|
|
|
$sql_str = "UPDATE pricereview_item SET item_spec=:item_spec, price_id=:price_id, item_unit_price = :item_unit_price, item_qty = :item_qty, item_price_bp = :item_price_bp, option_relate_spec=:option_relate_spec, note=:note WHERE mid = :mid AND item_no = :item_no AND item_group='C'"; |
|
|
|
|
|
|
|
|
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':item_no', $item_no); |
|
|
@ -471,7 +472,7 @@ if($main){ |
|
|
|
$stmt->bindParam(':price_id', $price_id); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$sql_str = "UPDATE pricereview_pay SET pay_scale = :pay_scale, pay_amount = :pay_amount, pay_period = :pay_period WHERE mid = :mid AND pay_kind = :pay_kind"; |
|
|
|
foreach($paymentRatio as $key=>$pay){ |
|
|
|
$pay_kind = $key +1; |
|
|
@ -486,48 +487,7 @@ if($main){ |
|
|
|
$stmt->bindParam(':pay_period', $pay_period); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
if($status == 'YS'){ |
|
|
|
$sql_str = "SELECT * FROM account WHERE accountid = :accountid"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':accountid', $creater); |
|
|
|
$stmt->execute(); |
|
|
|
$account = $stmt->fetch(PDO::FETCH_ASSOC); |
|
|
|
$manager = $account['manager']; |
|
|
|
|
|
|
|
$sign1 = "$manager,,"; //區處長 |
|
|
|
$sign2 = NULL; // 業務承辦人 |
|
|
|
$sign3 = "M0060,,"; //業務部協理 |
|
|
|
|
|
|
|
//是否呈核至總經理(M0006) |
|
|
|
if($price_rate < 80 || $special_fee > 0){ |
|
|
|
$sign4 = "M0006,,"; |
|
|
|
$sign_total = 4; |
|
|
|
}else{ |
|
|
|
$sign4 = NULL; |
|
|
|
$sign_total = 3; |
|
|
|
} |
|
|
|
|
|
|
|
$sql_str = "INSERT INTO pricereview_sign (mid, sign1, sign2, sign3, sign4, sign_total) |
|
|
|
VALUES (:mid, :sign1, :sign2, :sign3, :sign4, :sign_total)"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':sign1', $sign1); |
|
|
|
$stmt->bindParam(':sign2', $sign2); |
|
|
|
$stmt->bindParam(':sign3', $sign3); |
|
|
|
$stmt->bindParam(':sign4', $sign4); |
|
|
|
$stmt->bindParam(':sign_total', $sign_total); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
$conn->commit(); |
|
|
|
echo "success"; |
|
|
|
}catch (PDOException $e) { |
|
|
|
$conn->rollback(); |
|
|
|
echo $e->getMessage(); |
|
|
|
die('Error!:' . $e->getMessage()); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
try{ |
|
|
|
}else{ |
|
|
|
$sql_str = "INSERT INTO pricereview_main (contractno, ekind, person, company, case_name, address, compete, price_lowest, price_total, price_rate, special_fee, predeal_date, facilitok_date, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, attatch1, attatch2, creater, create_at) |
|
|
|
VALUES (:contractno, :ekind, :person, :company, :case_name, :address, :compete, :price_lowest, :price_total, :price_rate, :special_fee, :predeal_date, :facilitok_date, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :attatch1, :attatch2, :creater, :create_at)"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
@ -711,67 +671,76 @@ if($main){ |
|
|
|
$stmt->bindParam(':pay_period', $pay_period); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($status == 'YS'){ |
|
|
|
$sql_str = "SELECT * FROM account WHERE accountid = :accountid"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':accountid', $creater); |
|
|
|
$stmt->execute(); |
|
|
|
$account = $stmt->fetch(PDO::FETCH_ASSOC); |
|
|
|
$manager = $account['manager']; |
|
|
|
if($manager == "M0029" && $ekind == "新梯"){ |
|
|
|
$manager = "M0137"; |
|
|
|
} |
|
|
|
$sign1 = "$manager,,"; //區處長 |
|
|
|
$sign2 =$ekind == '汰改'? "M0012,," : NULL; // 業務承辦人 |
|
|
|
$sign3 = $ekind == '汰改' ? "M0008,," : "M0060,,"; //業務部協理 |
|
|
|
|
|
|
|
//是否呈核至總經理(M0006) |
|
|
|
if($price_rate < 80 || $special_fee > 0){ |
|
|
|
$sign4 = "M0006,,"; |
|
|
|
$sign_total = 4; |
|
|
|
}else{ |
|
|
|
$sign4 = NULL; |
|
|
|
$sign_total = 3; |
|
|
|
} |
|
|
|
if($ekind == "N"){ |
|
|
|
$sign_total = $sign_total - 1; |
|
|
|
} |
|
|
|
$sql_str = "INSERT INTO pricereview_sign (mid, sign1, sign2, sign3, sign4, sign_total) |
|
|
|
VALUES (:mid, :sign1, :sign2, :sign3, :sign4, :sign_total)"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':sign1', $sign1); |
|
|
|
$stmt->bindParam(':sign2', $sign2); |
|
|
|
$stmt->bindParam(':sign3', $sign3); |
|
|
|
$stmt->bindParam(':sign4', $sign4); |
|
|
|
$stmt->bindParam(':sign_total', $sign_total); |
|
|
|
$stmt->execute(); |
|
|
|
} |
|
|
|
if($status == 'YS'){ |
|
|
|
$sql_str = "SELECT * FROM account WHERE accountid = :accountid"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':accountid', $creater); |
|
|
|
$stmt->execute(); |
|
|
|
$account = $stmt->fetch(PDO::FETCH_ASSOC); |
|
|
|
$manager = $account['manager']; |
|
|
|
if($manager == "M0029" && $ekind == "新梯"){ |
|
|
|
$manager = "M0137"; |
|
|
|
} |
|
|
|
$sign1 = "$manager,,"; //區處長 |
|
|
|
$sign2 =$ekind == '汰改'? "M0012,," : NULL; // 業務承辦人 |
|
|
|
$sign3 = $ekind == '汰改' ? "M0008,," : "M0060,,"; //業務部協理 |
|
|
|
$signArr = [ |
|
|
|
$manager, |
|
|
|
$sign2, |
|
|
|
$sign3, |
|
|
|
]; |
|
|
|
$sign_total = count(array_filter($signArr, fn($item)=> $item != NULL)); |
|
|
|
//是否呈核至總經理(M0006) |
|
|
|
if($price_rate < 80 || $special_fee > 0){ |
|
|
|
$sign4 = "M0006,,"; |
|
|
|
$sign_total += 1; |
|
|
|
}else{ |
|
|
|
$sign4 = NULL; |
|
|
|
} |
|
|
|
$sql_str = "INSERT INTO pricereview_sign (mid, sign1, sign2, sign3, sign4, sign_total) |
|
|
|
VALUES (:mid, :sign1, :sign2, :sign3, :sign4, :sign_total)"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':mid', $mid); |
|
|
|
$stmt->bindParam(':sign1', $sign1); |
|
|
|
$stmt->bindParam(':sign2', $sign2); |
|
|
|
$stmt->bindParam(':sign3', $sign3); |
|
|
|
$stmt->bindParam(':sign4', $sign4); |
|
|
|
$stmt->bindParam(':sign_total', $sign_total); |
|
|
|
$stmt->execute(); |
|
|
|
|
|
|
|
|
|
|
|
//發送通知 |
|
|
|
|
|
|
|
include_once "./postSystemNotice.php"; |
|
|
|
$kind = 1; |
|
|
|
$related_id = null; |
|
|
|
$title = "新梯價審審核通知"; |
|
|
|
$content = ""; |
|
|
|
$havaread = 1; |
|
|
|
$permission = "system"; |
|
|
|
$create_at = date("Y-m-d H:i:s"); |
|
|
|
sendSystemNotice($kind, $related_id, $title, $content, $havaread, $permission, $creater, $create_at); |
|
|
|
} |
|
|
|
echo "success"; |
|
|
|
$conn->commit(); |
|
|
|
|
|
|
|
}catch (PDOException $e) { |
|
|
|
$conn->rollback(); |
|
|
|
echo $e->getMessage(); |
|
|
|
die('Error!:' . $e->getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
//發送系統通知 |
|
|
|
include_once "./postSystemNotice.php"; |
|
|
|
$sql_str = "SELECT * FROM pricereview_main WHERE id = :id ORDER BY id DESC LIMIT 1"; |
|
|
|
$stmt = $conn->prepare($sql_str); |
|
|
|
$stmt->bindParam(':id', $mid); |
|
|
|
$stmt->execute(); |
|
|
|
$contract = $stmt->fetch(PDO::FETCH_ASSOC); |
|
|
|
$kind = 1; |
|
|
|
$related_id = $mid; |
|
|
|
$title = $ekind . "價審待簽通知(".$contract['contractno']."," .$contract['company']. ")"; |
|
|
|
$content = "待簽核"; |
|
|
|
$content = "合約號:".$contract['contractno'] . "<br>"; |
|
|
|
$content .= "客戶名稱:" . $contract['company'] . "<br>"; |
|
|
|
$content .= "案件名稱:" . $contract['case_name'] . "<br>"; |
|
|
|
$content .= "時間" . date("Y-m-d H:i:s"); |
|
|
|
// $content .= "<a href='./mkt/pricreviewCheck.php?id=".$mid.">前往查看</a>"; |
|
|
|
$havaread = null; |
|
|
|
$permissions = [$manager]; |
|
|
|
$creater = "system"; |
|
|
|
$create_at = date("Y-m-d H:i:s"); |
|
|
|
$url = "mkt/pricereviewCheck.php?id=" . $mid; |
|
|
|
sendSystemNotice($kind, $related_id, $title, $content, $havaread, $permissions, $creater, $create_at, $url); |
|
|
|
} |
|
|
|
|
|
|
|
echo "success"; |
|
|
|
$conn->commit(); |
|
|
|
} |
|
|
|
catch (PDOException $e) { |
|
|
|
$conn->rollback(); |
|
|
|
echo $e->getMessage(); |
|
|
|
die('Error!:' . $e->getMessage()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -798,4 +767,5 @@ function getSpec($spec, $person, $stop, $open, $speed){ |
|
|
|
} |
|
|
|
|
|
|
|
return $model; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|