prepare($sql_str);
$stmt->execute();
$options = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($options as $key => $option) {
$options[$key]['isShow'] = 1;
$options[$key]['selected'] = 0;
}
$vol_no = "";
$main = false;
if(isset($_GET['vol_no'])){
$vol_no = $_GET['vol_no'];
$sql_str = "SELECT * FROM pricereview_main WHERE contractno=:contractno ORDER BY id DESC LIMIT 1";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':contractno', $vol_no);
$stmt->execute();
$main = $stmt->fetch(PDO::FETCH_ASSOC);
}
if(isset($_GET['id'])){
$id = $_GET['id'];
$sql_str = "SELECT * FROM pricereview_main WHERE id=:id ORDER BY id DESC LIMIT 1";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':id', $id);
$stmt->execute();
$main = $stmt->fetch(PDO::FETCH_ASSOC);
$vol_no = $main['contractno'];
}
if($main && $main['status'] == 'YS'){
echo "";
exit;
}
$hope_status = [
'A'=>'有望簽約(已報價)',
'B'=>'觀望考慮(等待時機報價)',
'C'=>'在途合約',
'D'=>'已簽約',
'N'=>'無望簽約',
];
//有望客戶基本資料
$sql_str = "SELECT hope_elevator_customer.*, code.content AS source_content, account.name AS salesman_name FROM hope_elevator_customer
LEFT JOIN code ON code.code_name = hope_elevator_customer.source
LEFT JOIN account ON account.accountid = hope_elevator_customer.salesman
WHERE hope_elevator_customer.vol_no = :vol_no ";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $vol_no);
$stmt->execute();
$hope_customer = $stmt->fetch(PDO::FETCH_ASSOC);
if($user_id !== $hope_customer['salesman'] && $user_id !== "M0174"){
echo "";
exit;
}
if($hope_customer['vol_no']=="" ||
$hope_customer['customer']=="" ||
$hope_customer['manager']=="" ||
$hope_customer['uscc']=="" ||
$hope_customer['source']=="" ||
$hope_customer['linkman']=="" ||
$hope_customer['lm_tel']=="" ||
$hope_customer['salesman']=="" ||
$hope_customer['num']=="" ||
$hope_customer['pre_order_date']=="" ||
$hope_customer['status']=="" ||
$hope_customer['address']=="" ||
$hope_customer['case_name']==""
){
echo "";
exit;
}
$hope_elevators = [];
$total_spec = 0;
$selectedOptions = [];
$optionKey = 0;
$otherOptions = [];
$otherOptionKey = 0;
$demolishOptions = [];
$demolishOptionKey = 0;
$form_key = null;
if($main){
$mid = $main["id"];
$sql_str = "SELECT
pricereview_item.*,
fp.price AS price,
fp.id AS facility_id,
pricereview_item.item_op AS open_converted
FROM
pricereview_item
LEFT JOIN
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY model ORDER BY create_dt DESC) as rn
FROM
facility_price
) fp
ON fp.model = pricereview_item.item_spec AND fp.rn = 1
WHERE
mid = :mid AND
item_group = 'A'
";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$elevators = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($elevators as $key=>$elevator){
$open = "";
if($elevator['item_op'] == "2U"){
$open = 4;
}elseif($elevator['item_op'] == "4PCO"){
$open = 5;
}elseif($elevator['item_op'] == "6PCO"){
$open = 7;
}elseif($elevator['item_op'] == "2S"){
$open = 8;
}elseif($elevator['item_op'] == "CO"){
$open = 9;
}
$hope_elevators[] = [
'id' => $elevator['item_no'],
'model' => $elevator['item_spec'],
'specifications' => explode(",", $elevator['note'])[0],
'person' => explode(",", $elevator['note'])[1],
'stop' => explode(",", $elevator['note'])[2],
'speed' => explode(",", $elevator['note'])[3],
'open_converted' => $elevator['item_op'],
'open' => $open,
'spec_price' => $elevator['item_price_ct'],
'price' => $elevator['price'],
'spec_num' => $elevator['item_qty'],
'facility_id' => $elevator['facility_id'],
'weight'=> $elevator['item_weight'],
];
if($elevator['item_no'] > $total_spec){
$total_spec = $elevator['item_no'];
}
}
$sql_str = "SELECT pricereview_item.price_id, pricereview_item.item_qty, pricereview_item.option_relate_spec, pricereview_item.item_no, option_price.* FROM pricereview_item
LEFT JOIN option_price ON option_price.id = pricereview_item.price_id
WHERE mid = :mid AND item_group = 'B'";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$oldOptions = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($oldOptions as $oldoption){
$selectedOptions[] = [
'id'=>$oldoption['price_id'],
'idx'=>0,
'key'=>$oldoption['item_no'],
'qty'=>$oldoption['item_qty'],
'name'=>$oldoption['group_name'],
'price'=>$oldoption['price'],
'memo'=>$oldoption['memo'],
'toElevator'=>[
[
'id'=>$oldoption['option_relate_spec'],
'model'=> array_values(array_filter($hope_elevators, fn($val)=> $val['id'] == $oldoption['option_relate_spec']))[0]['model'],
]
]
];
if($oldoption['item_no'] > $optionKey){
$optionKey = $oldoption['item_no'];
}
}
//除外項目
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group='E'";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$oldOtherOptions = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($oldOtherOptions as $oldotheroption){
$otherOptions[] = [
'id'=>$oldotheroption['item_no'],
'name'=>$oldotheroption['item_spec'],
'num'=>$oldotheroption['item_qty'],
'price'=>$oldotheroption['item_unit_price'],
'pr_no'=>$oldotheroption['note'],
'toElevator'=>[
[
'id'=>$oldotheroption['option_relate_spec'],
'model'=> array_values(array_filter($hope_elevators, fn($val)=> $val['id'] == $oldotheroption['option_relate_spec']))[0]['model'],
]
]
];
if($oldotheroption['item_no'] > $otherOptionKey){
$otherOptionKey = $oldotheroption['item_no'];
}
}
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group='C'";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$oldDemolishOptions = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($oldDemolishOptions as $olddemolishoption){
$demolishOptions[] = [
'id'=>$olddemolishoption['item_no'],
'price'=>$olddemolishoption['item_unit_price'],
'qty'=>$olddemolishoption['item_qty'],
'floor'=>$olddemolishoption['note'],
'person'=>$olddemolishoption['item_spec'],
'demolish_id'=>$olddemolishoption['price_id'],
'toElevator'=>[
[
'id'=>$olddemolishoption['option_relate_spec'],
'model'=> array_values(array_filter($hope_elevators, fn($val)=> $val['id'] == $olddemolishoption['option_relate_spec']))[0]['model'],
]
]
];
if($demolishOptionKey < $olddemolishoption['item_no']){
$demolishOptionKey = $olddemolishoption['item_no'];
}
}
$sql_str = "SELECT * FROM pricereview_pay WHERE mid = :mid ORDER BY pay_kind ASC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$pays = $stmt->fetchAll(PDO::FETCH_ASSOC);
$paymentRatio = [];
if($pays){
foreach($pays as $pay){
$paymentRatio[] = [
'scale'=>$pay['pay_scale'],
'ticket'=>$pay['pay_period'],
];
}
}else{
$paymentRatio = [
[
'scale'=>20,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
[
'scale'=>50,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
[
'scale'=>20,
'ticket'=>30,
],
[
'scale'=>10,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
];
}
//獲取form_key
$sql_str = "SELECT form_key FROM flow WHERE form_id = :form_id AND system_id = 'prm' LIMIT 1";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':form_id', $id);
$stmt->execute();
$flow = $stmt->fetch(PDO::FETCH_ASSOC);
$form_key = $flow['form_key'];
}else{
//獲取有望客戶電梯規格
$sql_str = "SELECT
hope_project_elevator_spec.specifications,
hope_project_elevator_spec.person,
hope_project_elevator_spec.stop,
hope_project_elevator_spec.speed,
hope_project_elevator_spec.open,
hope_project_elevator_spec.spec_price,
hope_project_elevator_spec.spec_num,
fp.price AS price,
fp.id AS facility_id,
CASE hope_project_elevator_spec.open
WHEN 4 THEN '2U'
WHEN 5 THEN '4PCO'
WHEN 7 THEN '6PCO'
WHEN 8 THEN '2S'
WHEN 9 THEN 'CO'
ELSE hope_project_elevator_spec.open
END AS open_converted
FROM hope_project_elevator_spec
LEFT JOIN (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY model ORDER BY create_dt DESC) as rn
FROM facility_price
) fp ON fp.model = CONCAT(hope_project_elevator_spec.specifications, '-', hope_project_elevator_spec.person, '*', hope_project_elevator_spec.stop, '-', CASE hope_project_elevator_spec.open
WHEN 4 THEN '2U'
WHEN 5 THEN '4PCO'
WHEN 7 THEN '6PCO'
WHEN 8 THEN '2S'
WHEN 9 THEN 'CO'
ELSE hope_project_elevator_spec.open
END, hope_project_elevator_spec.speed)
AND fp.rn = 1
WHERE hope_project_elevator_spec.vol_no = :vol_no
ORDER BY hope_project_elevator_spec.seq ASC;";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $vol_no);
$stmt->execute();
$hope_elevators = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($hope_elevators as $key => $elevator) {
$hope_elevators[$key]['id'] = $key+1;
$hope_elevators[$key]['weight'] = '';
$spec = $elevator['specifications'];
if($spec == 'M1' || $spec == 'M1+M4(1:1)' || $spec == 'M1+M4(2:1)'){
//稍後再處理
}else{
$hope_elevators[$key]['model'] = $elevator['specifications'] . "-" . $elevator['person'] . "*" . $elevator['stop'] . "-" . $elevator['open_converted'] . $elevator['speed'];
}
$total_spec ++;
}
$paymentRatio = [
[
'scale'=>20,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
[
'scale'=>50,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
[
'scale'=>20,
'ticket'=>30,
],
[
'scale'=>10,
'ticket'=>30,
],
[
'scale'=>0,
'ticket'=>'',
],
];
}
function convertDateTimeFormat($dateTimeStr) {
// 使用 DateTime::createFromFormat 解析给定格式的日期时间
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateTimeStr);
// 如果解析成功,则使用 DateTime::format 转换格式
if ($date) {
return $date->format('Y-m-d');
} else {
// 如果解析失败,返回原始字符串或错误信息
return $dateTimeStr; // 或者返回错误信息
}
}
?>