prepare($sql); $stmt->execute(); $accountData = $stmt->fetch(PDO::FETCH_ASSOC); $depId = $accountData['department_id']; // validate //create facility table $createFacilityNo = new CreateFacilityNo(); $dailyNecessities = [ 'MAE100' => 'X', 'MAM200' => 'W', 'MAH100' => 'H', 'MAQ100' => 'Z', 'MAF100' => 'F', 'MAZ100' => 'B', ]; $maintain_times = [ '1' => 'em', //月保 '2' => 'bw' // 雙周保 ]; $facility_arr = []; foreach ($elevators as $elevator) { $facility_arr[] = $dailyNecessities[$elevator['spec']]; } // echo json_encode($facility_arr); // 電梯做番號 $facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num); // exit(); // if ($user_id == 'M0225') { // echo '
';
        //     print_r($facilityno);
        //     echo '
'; // exit(); // } $fail_arr = []; // if ($contractno === '') return $fail_arr[] = '合約號為必填'; if ($total_price == '') $fail_arr[] = '合約總價為必填'; if ($salesman == '') $fail_arr[] = '營業員為必填'; if ($contract_begin_date == '') $fail_arr[] = '合約開始時間為必填'; if ($contract_end_date == '') $fail_arr[] = '合約結束時間為必填'; if ($address == '') $fail_arr[] = '地址為必填'; if ($area == '') $fail_arr[] = '區域為必填'; if ($customer == '') $fail_arr[] = '客戶為必填'; if ($num == '') $fail_arr[] = '電梯數量為必填'; if ($payType == '') $fail_arr[] = '分期方式為必填'; if ($contract_type == '') $fail_arr[] = '合約類別為必填'; if ($maintance_manager == '') $fail_arr[] = '保養經理為必填'; //------------------- // if ($partyA == '') $fail_arr[] = '業務聯繫人為必填'; // if ($partyAaddress == '') $fail_arr[] = '業務聯繫人地址為必填'; // if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填'; // if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填'; // if ($vat == '') $fail_arr[] = '統一編號為必填'; // if ($mtype == '') $fail_arr[] = '維修型態為必填'; // if ($phone == '') $fail_arr[] = '客戶電話為必填'; // if ($email == '') $fail_arr[] = 'Email為必填'; // if ($mworker == '') $fail_arr[] = '保養員為必填'; // if ($mcycle == '') $fail_arr[] = '保養頻率為必填'; if (count($fail_arr) > 0) { header("HTTP/1.1 422 Unprocessable Entity"); echo json_encode($fail_arr, JSON_UNESCAPED_UNICODE); exit(); } exit(); T8insert($_POST, $facilityno, $depId, $connT8); exit(); /// 獎金計算 $aaa = bonusCreate($_POST, $facilityno, $conn); if (!empty($aaa) && $aaa['status'] == 2) { header("HTTP/1.1 422 Unprocessable Entity"); echo $aaa['data']; exit(); } // exit(); //create account table $accounttype = "A"; $accountid = $vat; $pwd = "123"; $name = $partyA; $tel = $phone ?? ''; $repairerid = $mworker; $creater = $user_id; $create_at = date('Y-m-d H:i:s'); // exit(); $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); $stmt->bindParam(':accounttype', $accounttype); $stmt->bindParam(':accountid', $accountid); $stmt->bindParam(':pwd', $pwd); $stmt->bindParam(':name', $name); $stmt->bindParam(':tel', $tel); $stmt->bindParam(':address', $address); $stmt->bindParam(':email', $email); $stmt->bindParam(':repairerid', $repairerid); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $stmt->execute(); //create contract table $contracttype = $mtype; $company = $partyA; $taxid = $vat; $tel = $phone; $promiser = $partyA; $contractperson = $partyA; $contractaddress = $address; $contracttel = $phone; $contractemail = $email; $contract_employee = $salesman; $start_date = $contract_begin_date; $end_date = $contract_end_date; $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); $stmt->bindParam(':contracttype', $contracttype); $stmt->bindParam(':contractno', $contractno); $stmt->bindParam(':company', $company); $stmt->bindParam(':taxid', $taxid); $stmt->bindParam(':address', $address); $stmt->bindParam(':tel', $tel); $stmt->bindParam(':promiser', $promiser); $stmt->bindParam(':contractperson', $contractperson); $stmt->bindParam(':contractaddress', $contractaddress); $stmt->bindParam(':contracttel', $contracttel); $stmt->bindParam(':contractemail', $contractemail); $stmt->bindParam(':contract_employee', $contract_employee); $stmt->bindParam(':start_date', $start_date); $stmt->bindParam(':end_date', $end_date); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $stmt->execute(); //create facility table // $createFacilityNo = new CreateFacilityNo(); // $dailyNecessities = [ // 'MAE100' => 'X', // 'MAM200' => 'W', // 'MAH100' => 'H', // 'MAQ100' => 'Z', // 'MAF100' => 'F', // 'MAZ100' => 'B', // ]; // $maintain_times = [ // '1' => 'em', //月保 // '2' => 'bw' // 雙周保 // ]; // $facility_arr = []; // foreach ($elevators as $elevator) { // $facility_arr[] = $dailyNecessities[$elevator['spec']]; // } // echo json_encode($facility_arr); // // 電梯做番號 // $facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num); // // if ($user_id == 'M0225') { // // echo '
';
        // //     print_r($facilityno);
        // //     echo '
'; // // exit(); // // } // echo json_encode($facilityno); // echo '-------'; $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid AND accounttype IN ('B','E','M','W')"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':accountid', $mworker); $stmt->execute(); $worker = $stmt->fetch(PDO::FETCH_ASSOC); $customerid = $vat; $repairtype = $mtype; $repairerid = $mworker; $define = "B"; $repairername = !empty($worker) ? $worker['name'] : ''; foreach ($elevators as $idx => $elevator) { // 民國年轉換西元年 $ROCuseful_date = $elevator['useful_date']; $click = explode("-", $ROCuseful_date); $click[0] = intval($click[0]) + 1911; $ADuseful_date = implode("-", $click); $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[$idx]); $stmt->bindParam(':latitude', $elevator['latitude']); $stmt->bindParam(':longitude', $elevator['longitude']); $stmt->bindParam(':customerid', $customerid); $stmt->bindParam(':weight', $elevator['weight']); $stmt->bindParam(':numberofpassenger', $elevator['persons']); $stmt->bindParam(':numberofstop', $elevator['stop']); $stmt->bindParam(':numberoffloor', $elevator['floors']); $stmt->bindParam(':opentype', $elevator['opendoor']); $stmt->bindParam(':speed', $elevator['speed']); $stmt->bindParam(':repairtype', $repairtype); $stmt->bindParam(':maintainance', $elevator['maintainance']); $stmt->bindParam(':facility_kind', $elevator['spec']); $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', $elevator['takecertificatedate']); $stmt->bindParam(':licensedate', $ADuseful_date); $result = $stmt->execute(); } $sql = "SELECT * FROM account WHERE accountid = '$user_id' "; $stmt = $conn->prepare($sql); $stmt->execute(); $user_detail = $stmt->fetch(PDO::FETCH_ASSOC); //create schedule table // $comboNo = new CreateComboNo($mcycle, $contract_begin_date, $contract_end_date); // $comboArr = json_decode($comboNo->getComboNo(), true); foreach ($facilityno as $key => $no) { $comboNo = new CreateComboNo($maintain_times[$elevator['maintain_times']], $contract_begin_date, $contract_end_date); $comboArr = json_decode($comboNo->getComboNo(), true); foreach ($comboArr as $combo) { $sql_str = 'INSERT INTO schedule (contractno, facilityno, combono, repairerid, repairername,customer_login_name, duedate, creater, create_at) VALUES (:contractno, :facilityno, :combono, :repairerid, :repairername, :customer_login_name,: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(':customer_login_name', $customer); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $create_at); $result = $stmt->execute(); } // $regular_contract_manger_id = $elevators[$idx]['regular_contract_manger_id']; // $sql = "SELECT * FROM account WHERE accountid = '' "; $sql = "SELECT * FROM account WHERE accountid = '$maintance_manager' "; $stmt = $conn->prepare($sql); $stmt->execute(); $maintance_manager_detail = $stmt->fetch(PDO::FETCH_ASSOC); // 寄郵件給 輸入合約助理,請他安排保養計畫 // 北北基 : M0090 // 保養組長 桃竹 : M0223 // 中部 : M0161 // 南部 : M0077 // 保養組長之後調整 $mail_title = "保養計畫 : 合約號:" . $contractno . "作番號:" . $no . "-請安排此作番的保養人員"; $mail_content = "保養計畫 : 合約號:" . $contractno . "作番號:" . $no . "-請安排此作番的保養人員 點我"; // exit(); $mail->sendx( $mail_title, $mail_content, [ // [$user_id, $user_detail['email']], // [$maintance_manager, $maintance_manager_detail['email']], // ['M0012', 'Yingying@masada.com.tw'] // [$regular_contract_manger_id, $regular_contract_manger_mail['mail']], ['M0225', 'lkmd555@masada.com.tw'] // ['M0012', 'Yingying@masada.com.tw'] ], "永佳捷科技" ); // echo 'send'; // } } // 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; if (!empty($files)) { $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 } $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 = 'b' . $datetime; // 保養=>b + 日期時間 foreach ($newfiles as $key => $file) { $randNum = rand(1000, 9999); $randEnglish = $englisharr[rand(0, 25)]; $file_name = 'b' . (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); } } } else { $files = null; } $sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price,payType, customer_phone, customer_email, repairman, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by,signing_date) VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :payType ,:customer_phone, :customer_email, :repairman, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by,:signing_date)"; $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(":customer_phone", $customer_phone); $stmt->bindParam(":customer_email", $customer_email); $stmt->bindParam(":repairman", $repairman); // $stmt->bindParam(":cycle", $cycle); // 保養頻率在做番上,這邊不 insert。 $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(":elevators_number", $elevators_number); $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->bindParam(':payType', $payType); $stmt->bindParam(':signing_date', $signing_date); $stmt->execute(); // T8insert($_POST, $facilityno); $conn->commit(); header('Content-Type: application/json'); $jsonData = json_encode($files); // Cmail->sendx; } catch (PDOException $e) { $conn->rollback(); http_response_code(404); echo $e->getMessage(); die('Error!:' . $e->getMessage()); } }; function T8insert($data, $facilityno, $depId, $connT8) { // require_once("../conn.php"); // 引入 T8 API 連線 require_once("./T8api.php"); $contractno = !empty($data['contractno']) ? $data['contractno'] : null; // 合約號 $address = !empty($data['address']) ? $data['address'] : null; // 客戶地址 $customer = !empty($data['customer']) ? $data['customer'] : null; //企業名稱 $phone = !empty($data['phone']) ? $data['phone'] : null; //客戶電話 $vat = !empty($data['vat']) ? $data['vat'] : null; //統編 $salesman = !empty($data['salesman']) ? $data['salesman'] : null; // 銷售人員 $partyA = !empty($data['customer']) ? $data['customer'] : null; //客戶名稱 / 業務聯絡人 $contract_begin_date = !empty($data['contract_begin_date']) ? $data['contract_begin_date'] : null; $contract_end_date = !empty($data['contract_end_date']) ? $data['contract_end_date'] : null; $elevators = !empty($data['elevators']) ? json_decode($data['elevators'], true) : []; //電梯 $payType = !empty($data['payType']) ? $data['payType'] : null; $user_id = !empty($_POST['user_id']) ? $_POST['user_id'] : null; $invoice = !empty($_POST['invoice']) ? $_POST['invoice'] : ''; $invoice_address = !empty($_POST['invoice_address']) ? $_POST['invoice_address'] : ''; $total_price = !empty($_POST['total_price']) ? intval($_POST['total_price']) : 0; // $email = !empty($data['email']) ? $data['email'] : null; // $partyAaddress = !empty($data['partyAaddress']) ? $data['partyAaddress'] : null; // 業務聯絡人地址 // $num = !empty($data['num']) ? $data['num'] : null; // 電梯數量 // $area = !empty($data['area']) ? $data['area'] : null; //縣市 Ex. A->台北 , B-> ..。 // $connT8->beginTransaction(); $sql = "SELECT * FROM comCustomer WHERE BizPartnerId = :BizPartnerId"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':BizPartnerId', $contractno); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); $date = date('Y-m-dH-s-i'); $date_1 = date('Y-m-d'); $createTime = str_replace("-", '', $date); $insertTime = str_replace('-', '', $date_1); $beginDate = str_replace("-", '', $contract_begin_date); $endDate = str_replace("-", '', $contract_end_date); if ($contractno == '') { echo 'Error'; exit; } if (empty($result)) { // 若 客戶資料為空,新增一筆到 comCustomer // 新增客戶資料 $sql = "INSERT INTO comBusinessPartner (BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId) VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:CreatorId,:CreateTime,'10')"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':BizPartnerId', $contractno); $stmt->bindParam(':BizPartnerName', $partyA); $stmt->bindParam(':WorkTelNo', $phone); $stmt->bindParam(':TaxNo', $vat); $stmt->bindParam(':EnterpriseName', $invoice); //企業名稱 //發票抬頭 $stmt->bindParam(':ContactAddress', $invoice_address); $stmt->bindParam(':CreatorId', $user_id); $stmt->bindParam(':CreateTime', $createTime); $stmt->execute(); $sql = "INSERT INTO comCustomer (OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime) VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':BizPartnerId', $contractno); $stmt->bindParam(':PersonId', $salesman); $stmt->bindParam(':CreatorId', $user_id); $stmt->bindParam(':InvoiceAddress', $address); $stmt->bindParam(':CreateTime', $createTime); $stmt->execute(); } else { // // 若客戶資料不為空,更新該客戶資訊。 $sql = "UPDATE comCustomer SET PersonId=:PersonId, InvoiceAddress=:InvoiceAddress, LastOperatorId=:LastOperatorId, LastOperateTime=:LastOperateTime WHERE BizPartnerId=:BizPartnerId "; $stmt = $connT8->prepare($sql); $stmt->bindParam(':PersonId', $salesman); $stmt->bindParam(':InvoiceAddress', $address); $stmt->bindParam(':LastOperatorId', $user_id); $stmt->bindParam(':LastOperateTime', $createTime); $stmt->bindParam(':BizPartnerId', $contractno); $stmt->execute(); $sql = "UPDATE comBusinessPartner SET BizPartnerName=:BizPartnerName, WorkTelNo=:WorkTelNo, TaxNo=:TaxNo, EnterpriseName=:EnterpriseName, ContactAddress=:ContactAddress, -- EMail=:EMail, LastOperatorId=:LastOperatorId, LastOperateTime=:LastOperateTime WHERE BizPartnerId = :BizPartnerId "; $stmt = $connT8->prepare($sql); $stmt->bindParam(':BizPartnerName', $partyA); $stmt->bindParam(':WorkTelNo', $phone); $stmt->bindParam(':TaxNo', $vat); $stmt->bindParam(':EnterpriseName', $invoice); $stmt->bindParam(':ContactAddress', $invoice_address); // $stmt->bindParam(':EMail', $email); $stmt->bindParam(':LastOperatorId', $user_id); $stmt->bindParam(':LastOperateTime', $createTime); $stmt->bindParam(':BizPartnerId', $contractno); $stmt->execute(); } // echo '
';
    // print_r($elevators['maintainance']);
    // echo '
'; foreach ($elevators as $index => $elevator) { $maintainance_type = $elevator['maintainance']; if ($maintainance_type == 'A') { $type = 'C3'; } else if ($maintainance_type == 'B') { $type = 'C4'; } else if ($maintainance_type == 'C') { $type = 'C5'; } } $sql = "SELECT * FROM comProject WHERE ProjectId = :ProjectId"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':ProjectId', $contractno); $stmt->execute(); $resultProject = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($resultProject)) { //新增於 comProject。合約 table $sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,ValidityFromDate,ValidityToDate,CreateTime,CreatorId,IsInUsed) VALUES(:ProjectId,:ProjectName,:TypeId,:ValidityFromDate,:ValidityToDate,:CreateTime,:CreatorId,1)"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':ProjectId', $contractno); $stmt->bindParam(':ProjectName', $customer); $stmt->bindParam(':TypeId', $type); $stmt->bindParam(':ValidityFromDate', $beginDate); $stmt->bindParam(':ValidityToDate', $endDate); $stmt->bindParam(':CreateTime', $createTime); $stmt->bindParam(':CreatorId', $user_id); $stmt->execute(); } $row = 0; // // 新增電梯數 foreach ($elevators as $index => $elevator) { $facility_no = $facilityno[$index]; $sql = "INSERT INTO comMaterial (FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime) VALUES ('1000',:MaterialId,'10','E',:CreatorId,:CreateTime)"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':MaterialId', $facility_no); $stmt->bindParam(':CreatorId', $user_id); $stmt->bindParam(':CreateTime', $createTime); $stmt->execute(); $sql = "INSERT INTO comMaterialGroup (MaterialTypeId,MaterialId,MaterialName,MaterialCategoryId,IsInUsed,UnitId,CreatorId,CreateTime) VALUES ('10',:MaterialId,:MaterialName,'E',1,'SET',:CreatorId,:CreateTime)"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':MaterialId', $facility_no); $stmt->bindParam(':MaterialName', $customer); $stmt->bindParam(':CreatorId', $user_id); $stmt->bindParam(':CreateTime', $createTime); $stmt->execute(); $sql = "INSERT INTO comMaterialPurchases (Orgid,MaterialTypeId,MaterialId,CurrId,SUnitId,TaxId,CreatorId,CreateTime) VALUES ('1000','10',:MaterialId,'TWD','SET','ST005',:CreatorId,:CreateTime)"; $stmt = $connT8->prepare($sql); $stmt->bindParam(':MaterialId', $facility_no); $stmt->bindParam(':CreatorId', $user_id); $stmt->bindParam(':CreateTime', $createTime); $stmt->execute(); // 分期代碼計算 $IncomeId = [ 'A40006' => 12, //年繳 'A40007' => 3, //季繳 'A40003' => 1, //月繳 'A40004' => 2, //雙月繳 'A40005' => 6 //半年繳 ]; // 幾年 // $SQuantityYear = $elevator['maintain_months'] / 12; // 單台電梯契約報價 $price_of_month = intval($elevator['sold_price']); print_r($price_of_month); exit; //分幾期 () => 總共保養月 / 分期月 $SQuantitya = $elevator['maintain_months'] / $IncomeId[$payType]; $SQuantity = $IncomeId[$payType]; $date_1 = getNext25thDate($contract_begin_date); // 依每台電梯去加入各個的付款項 for ($i = 1; $i <= $SQuantitya; $i++) { $row++; // 計算分期款的收款月份 $paymonth = $i * $IncomeId[$payType]; $countDay = date('Y-m-d', strtotime("$date_1 + $paymonth months")); $payDay = str_replace('-', '', $countDay); $rows_data = [ "BillNo" => "$contractno", "IncomeId" => "$payType", "TaxId" => "ST005", "RowCode" => $row, "RowNo" => $row, "ItemType" => 1, "SPrice" => $price_of_month, "SQuantity" => $SQuantity, "ProjectId" => "$contractno", "FromBillNo" => "$contractno", "CU_MaterialId" => "$facility_no", "CU_EstPayDate" => intval($payDay) ]; $salIncomeApplyDetail_rows[] = $rows_data; } } $count_rows_data = COUNT($salIncomeApplyDetail_rows); $T8total = $price_of_month * $count_rows_data; // echo "
";
    // print_r($salIncomeApplyDetail_rows);
    // echo "
"; if ($T8total != $total_price) { $difference = $T8total - $total_price; $salIncomeApplyDetail_rows[$count_rows_data - 1]['SPrice'] = $salIncomeApplyDetail_rows[$count_rows_data - 1]['SPrice'] - $difference; } // $connT8->commit(); // $insertime = settype($insertTime, 'integer'); $salIncomeApplyMaster_rows = [ "BillNo" => "$contractno", "BillDate" => intval($insertTime), "OrgId" => "1000", "FOrgId" => "1000", "TypeId" => "RAS", "BpOrgId" => "1000", "BizPartnerId" => "$contractno", "CurrId" => "TWD", "CurrOAmount" => 1, "CurrLAmount" => 1, "PersonId" => "$salesman", "DtOrgId" => "1000", "DueToId" => "$contractno", "TaxId" => "ST005", "CompId" => "1001", "CreatorId" => "$user_id", "CreateTime" => intval($insertTime), "DeptId" => "$depId", "IsPriceWithTax" => 1, "CU_ContractStart" => intval($beginDate), "CU_ContractEnd" => intval($endDate) ]; $salIncomeApplyMaster = [ 'name' => "salIncomeApplyMaster", 'rows' => [$salIncomeApplyMaster_rows] ]; $salIncomeApplyDetail = [ 'name' => "salIncomeApplyDetail", 'rows' => $salIncomeApplyDetail_rows ]; $API_body[] = $salIncomeApplyMaster; $API_body[] = $salIncomeApplyDetail; // 呼叫 API echo '
';
    print_r(json_encode($API_body));
    echo '
'; // exit(); // $api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALINCOMEAPPLY/PostERPData'; //正式區 $api_url = "http://60.244.87.101:880/twWebAPI/V1/SALINCOMEAPPLY/PostERPData"; //測試區 $result = T8salIncomeApply($API_body, $api_url); // echo '
';
    // print_r($result);
    // echo '
'; // exit(); if ($result['Status'] == 'Error' || $result['Status'] == 'Fails') { http_response_code(404); die('Error!:' . $result['ErrorMsg']); } } function bonusCreate($data, $facilityno, $conn) { try { require_once("../../bonus/maintance/maintaenance_contract_bonus.php"); // require_once("../../bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1_1.php"); $elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : []; $contract_begin_date = !empty($data['contract_begin_date']) ? $data['contract_begin_date'] : ''; $salesman = !empty($data['salesman']) ? $data['salesman'] : ''; $payType = !empty($data['payType']) ? $data['payType'] : ''; $contract_type = $data['contract_type']; //合約類別 $status = 1; $bonus_json = []; $create_id = $data['user_id']; $create_at = date('Y-m-d H:i:s'); $contract_no = !empty($data['contractno']) ? $data['contractno'] : ''; $contract_kind = 3; $payment = [ 'A40006' => 'annually', //年繳 'A40007' => 'quarterly', //季繳 'A40004' => 'bimonthly', // 雙月繳 'A40005' => 'semiannually', // 半年繳 'A40003' => 'monthly' //月繳 ]; $fail_arr = []; $payDay = getNext25thDate($contract_begin_date); foreach ($elevators as $key => $elevator) { $facility_no = $facilityno[$key]; $ver = $elevator['bonus_verson']; //獎金版本 $payment_period = $payment[$payType]; //付款方式 $elevator_list_price = !empty(($elevator['stand_price'])) ? intval($elevator['stand_price']) : ''; //牌價 $fee_per_st = !empty($elevator['sold_price']) ? intval(round($elevator['sold_price'] / 1.05, 2)) : ''; //作翻契約金額 (不含稅) $commission_fee = !empty($elevator['service_expense']) ? $elevator['service_expense'] : ''; //服務費(月/台) $receivable_date_due = $payDay; //第一筆保養款項收回日 $sales_id = $salesman; //營業人員 $discount = $elevator['discount'] / 100; $region_director_id = $elevator['manager']; $regular_contract_manger_id = !empty($elevator['regular_contract_manger_id']) ? $elevator['regular_contract_manger_id'] : ''; $maintain_months = intval($elevator['maintain_months']); $years = $maintain_months / 12; // echo $years; if ($maintain_months == '') $fail_arr[] = "保養月費為必填"; if ($fee_per_st == '') $fail_arr[] = "契約金額為必填"; if ($elevator_list_price == '') $fail_arr[] = "牌價為必填"; if ($region_director_id == '') $fail_arr[] = '區處長為必填'; if ($sales_id == '') $fail_arr[] = "契約人為必填"; if (COUNT($fail_arr) > 0) { return $fail_arr; break; } $renew_priceissue_bonus = []; // $years = ($maintain_months % 12) == 0 ? $maintain_months / 12 : ''; ///////////////////////////////// // 如果保養合約 大於一年 2.0版本 // if (!empty($maintain_months)) { // if ($ver == '2.1') { // if ($maintain_months > 12 && $contract_type == 'new') { // // 第一年為 "新簽約" // $results = maintenance_contract_bonus_v2_1( // $ver, // $contract_type, // $payment_period, // $elevator_list_price, // $fee_per_st, // $commission_fee, // $receivable_date_due, // $sales_id, // $region_director_id, // $regular_contract_manger_id // ); // for ($i = 1; $i <= $years - 1; $i++) { // $contract_type = 'renew_priceissue'; // $receivable_date_due_renew = date("Y-m-d", strtotime("$receivable_date_due + $i year")); // // 第二年以上改 "續約" // $renew_priceissue_bonus[] = maintenance_contract_bonus_v2_1( // $ver, // $contract_type, // $payment_period, // $elevator_list_price, // $fee_per_st, // $commission_fee, // $receivable_date_due_renew, // $sales_id, // $region_director_id, // $regular_contract_manger_id // ); // } // } else if ($maintain_months > 12 && $contract_type == 'renew_priceissue') { // // 超過一年的 "續約" // for ($i = 0; $i < $years; $i++) { // $contract_type = 'renew_priceissue'; // $renew_priceissue_bonus[] = maintenance_contract_bonus_v2_1( // $ver, // $contract_type, // $payment_period, // $elevator_list_price, // $fee_per_st, // $commission_fee, // $receivable_date_due, // $sales_id, // $region_director_id, // $regular_contract_manger_id // ); // } // } else if ($maintain_months >= 60 && $contract_type = 'longcontract_m1_free_charge') { // // 五年以上長約 // $results = maintenance_longterm_contract_m1_free_charge_bonus_v2_1( // $ver, // $contract_type, // $payment_period, // $maintain_months, // $elevator_list_price, // $fee_per_st, // $commission_fee, // $receivable_date_due, // $sales_id, // $region_director_id, // $regular_contract_manger_id // ); // } else { // $results = maintenance_contract_bonus_v2_1( // $ver, // $contract_type, // $payment_period, // $elevator_list_price, // $fee_per_st, // $commission_fee, // $receivable_date_due, // $sales_id, // $region_director_id, // $regular_contract_manger_id // ); // } // } else if ($ver == '2.0') { $contract_years = $years > 2 ? 'above_two' : 'one'; // echo $contract_years; $discount = round($elevator['discount'] / 100, 1); $results = maintenance_contract_bonus_v2_0( $ver, $contract_type, $contract_years, $discount, // 折扣率 $fee_per_st, //售價 $receivable_date_due, // 第一筆金額繳款時間 $sales_id, $region_director_id, $regular_contract_manger_id ); } // } ///////////////////////////////// // echo "
";
            // print_r($results);
            // echo "
"; ///////////////////////////////// $bonus_json = [ 'contract_type' => $contract_type, 'total' => $elevator_list_price, 'fee_per_st' => $fee_per_st, 'commission_fee' => $commission_fee, 'paykind' => $payment_period, 'receivable_date_due' => $receivable_date_due, 'discount' => $discount ]; if (!empty($results)) { if ($results['result_status'] != 'error') { foreach ($results['bonus_array'] as $i => $result) { $bonus_type = $result['bonus_type']; $pay_day = $result['pay_day_due']; $amount = $result['bonus_amount']; $receiver = $result['bonus_receiver']; $a = json_encode($bonus_json); $sql = "INSERT INTO bonus (bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,pay_day_due,status,bonus_json,create_id,create_at) VALUES ($bonus_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$receiver','$pay_day',$status,'$a','$create_id','$create_at')"; $stmt = $conn->prepare($sql); $stmt->execute(); } } if (!empty($renew_priceissue_bonus)) { // echo '1'; foreach ($renew_priceissue_bonus as $renew_priceissue_bonus) { foreach ($renew_priceissue_bonus['bonus_array'] as $i => $result) { $bonus_type = $result['bonus_type']; $pay_day = $result['pay_day_due']; $amount = $result['bonus_amount']; $receiver = $result['bonus_receiver']; $a = json_encode($bonus_json); $sql = "INSERT INTO bonus (bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,pay_day_due,status,bonus_json,create_id,create_at) VALUES ($bonus_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$receiver','$pay_day',$status,'$a','$create_id','$create_at')"; $stmt = $conn->prepare($sql); $stmt->execute(); } } } $request = [ "status" => "1", "data" => "Success" ]; } else { $request = [ "status" => "2", "data" => "create_bonus_error" ]; } // exit(); } return $request; // exit(); } catch (PDOException $e) { http_response_code(404); echo $e->getMessage(); die('Error!:' . $e->getMessage()); } } // 計算保養開始日期的當月25號 function getNext25thDate($dateString) { // 將傳入的日期字串轉換成 Unix 時間戳記 $timestamp = strtotime($dateString); // 取得該日期的日期 $day = date('d', $timestamp); // 如果日期大於 25,則回傳下個月的 25 號日期 if ($day > 25) { // 增加一個月 $timestamp = strtotime('+1 month', $timestamp); } // 設定日期為 25 號 $targetDate = date('Y-m-25', $timestamp); return $targetDate; }