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 AND code.field_name = 'customer_source'"; $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; } $hope_elevators = []; $total_spec = 0; $selectedOptions = []; $optionKey = 0; $otherOptions = []; $otherOptionKey = 0; $demolishOptions = []; $demolishOptionKey = 0; 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'=>'', ], ]; } }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; // 或者返回错误信息 } } ?>
有望客戶基本資料
卷號 客戶名稱 負責人 客戶來源
地址 案件名稱 統編/身份證 業主方聯係人
市話/手機 營業員 台數 預定成交日
有望客戶狀態 汰改
洽商進度

整機單價

項次 電梯 人乘 載重(KG) 停數 速度(m/min) 開門方式 規格 公司發布價(台) 數量 公司發布價(總價) 售價(台) 售價(總價)

Option加價

ID 選配規格 單價 數量 複價 備註 所屬電梯 功能
小計

除外項目

詢價單號 名稱 單價 數量 複價 所屬電梯 功能
小計

保固延長

單價 數量(月) 複價 備註 所屬電梯 功能
小計
付款辦法 款別 比例(%) 金額 票期
材料 1.訂金
2.二次款
3.貨到工地款
4.其他
安裝 5.安裝完畢款
6.驗收款
7.其他
合計
備註
牌價總額(A) 售價總額(B) 破價總額(B-A) 價率%(B/A) 總台數 服務費(介紹費)
預定成交日 預定出貨日
罰則 訂金保證金(函)% 履約保證金(函)% 保固保證金(函)%
特記事項