You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
12 KiB
325 lines
12 KiB
<?php
|
|
require_once("../conn.php");
|
|
include_once("./getFacilityNo.php");
|
|
include_once("./getComboNo.php");
|
|
include_once("./upload_chk.php");
|
|
ini_set('date.timezone', 'Asia/Taipei');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
|
exit();
|
|
}
|
|
//新梯簽回
|
|
if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'm') {
|
|
try {
|
|
$created_at = date('Y-m-d H:i:s');
|
|
$created_by = $_POST["user_id"];
|
|
$contractno = $_POST["contractno"];
|
|
$customer = $_POST["customer"];
|
|
$manager = $_POST["manager"];
|
|
$vat = $_POST["vat"];
|
|
$case_name = $_POST["case_name"];
|
|
$linkman = $_POST["linkman"];
|
|
$lm_tel = $_POST["lm_tel"];
|
|
$address = $_POST["address"];
|
|
$salesman = $_POST["salesman"];
|
|
$qc = $_POST["qc"];
|
|
$contracttype = $_POST["contracttype"];
|
|
$elevators_nums = $_POST['nums'];
|
|
$elevators = json_decode($_POST['elevators'], true);
|
|
$elevators_detail_arr = json_decode($_POST['elevators_detail_arr'], true);
|
|
BounsCount($_POST, $conn);
|
|
// echo '<pre>';
|
|
// print_r($elevators);
|
|
// echo '</pre>';
|
|
// exit;
|
|
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
|
|
$files_id = null;
|
|
|
|
$fail_arr = [];
|
|
if (empty($contractno)) $fail_arr[] = '合約號為必填';
|
|
if (empty($customer)) $fail_arr[] = '客戶名稱為必填';
|
|
if (empty($manager)) $fail_arr[] = '負責人為必填';
|
|
if (empty($vat)) $fail_arr[] = '統編/身分證為必填';
|
|
if (empty($case_name)) $fail_arr[] = '案名為必填';
|
|
if (empty($linkman)) $fail_arr[] = '聯絡人為必填';
|
|
if (empty($lm_tel)) $fail_arr[] = '聯絡人電話為必填';
|
|
if (empty($address)) $fail_arr[] = '地址為必填';
|
|
if (empty($salesman)) $fail_arr[] = '營業員為必填';
|
|
if (empty($qc)) $fail_arr[] = '請選擇QC或官檢';
|
|
if (count($fail_arr) > 0) {
|
|
header("HTTP/1.1 422 Unprocessable Entity");
|
|
echo json_encode($fail_arr);
|
|
exit();
|
|
}
|
|
//create facility table
|
|
$createFacilityNo = new CreateFacilityNo();
|
|
$dailyNecessities = [
|
|
'MAE100' => 'X',
|
|
'MAM200' => 'W',
|
|
'MAH100' => 'H',
|
|
'MAQ100' => 'Z',
|
|
'MAF100' => 'F',
|
|
'MAZ100' => 'B',
|
|
];
|
|
$arr = [];
|
|
// 建立作番號
|
|
foreach ($elevators_detail_arr as $elevator) {
|
|
// $spec = explode('-', $elevator['item_spec']);
|
|
$arr[] = $dailyNecessities[$elevator['spec']];
|
|
}
|
|
$facilityno = $createFacilityNo->makeMFacilityNo('M', $arr, intval($elevators_nums));
|
|
echo '<pre>';
|
|
print_r($facilityno);
|
|
echo '</pre>';
|
|
exit();
|
|
$conn->beginTransaction();
|
|
|
|
$sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC";
|
|
$stmt = $conn->prepare($sql_str);
|
|
$stmt->bindParam(":accountid", $salesman);
|
|
$stmt->execute();
|
|
$saleman = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
$salesman_name = $saleman['name'];
|
|
if (!empty($files)) {
|
|
$englisharr = range('a', 'z');
|
|
$files = $_FILES['files'];
|
|
$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 = 'm' . $datetime; // 保養=>b + 日期時間
|
|
foreach ($newfiles as $key => $file) {
|
|
$randNum = rand(1000, 9999);
|
|
$randEnglish = $englisharr[rand(0, 25)];
|
|
$file_name = 'm' . (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', $created_by);
|
|
$stmt->execute();
|
|
} else {
|
|
throw new PDOException('檔案上傳失敗:' . $msg);
|
|
}
|
|
$msg_result .= '第' . ($key + 1) . '個上傳檔案的結果:' . $msg . '<br/>';
|
|
$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_m_signed_back (contract_no, customer, manager, vat, case_name, linkman, lm_tel, address, salesman, salesman_name, files_id, created_at, created_by, qc_official_type) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by, :qc)";
|
|
$stmt = $conn->prepare($sql_str);
|
|
$stmt->bindParam(":contract_no", $contractno);
|
|
$stmt->bindParam(":customer", $customer);
|
|
$stmt->bindParam(":manager", $manager);
|
|
$stmt->bindParam(":vat", $vat);
|
|
$stmt->bindParam(":case_name", $case_name);
|
|
$stmt->bindParam(":linkman", $linkman);
|
|
$stmt->bindParam(":lm_tel", $lm_tel);
|
|
$stmt->bindParam(":address", $address);
|
|
$stmt->bindParam(":salesman", $salesman);
|
|
$stmt->bindParam(":salesman_name", $salesman_name);
|
|
$stmt->bindParam(":files_id", $files_id);
|
|
$stmt->bindParam(":created_at", $created_at);
|
|
$stmt->bindParam(":created_by", $created_by);
|
|
$stmt->bindParam(":qc", $qc);
|
|
$stmt->execute();
|
|
|
|
|
|
$result = $conn->commit();
|
|
if ($result) {
|
|
header("HTTP/1.1 201 Created");
|
|
}
|
|
} catch (PDOException $e) {
|
|
$conn->rollback();
|
|
header("HTTP/1.1 500 Internal Server Error");
|
|
die('Error!:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
function T8Insert($data)
|
|
{
|
|
require_once("../connt8.php");
|
|
|
|
$contractno = $data['contractno'];
|
|
$partyA = $data['customer'];
|
|
$phone = $data['lm_tel'];
|
|
$vat = $data['vat'];
|
|
$partyAaddress = $data['address'];
|
|
$user_id = $data['user_id'];
|
|
$salesman = $data['salesman'];
|
|
$createAt = date("Y-m-dH-i-s");
|
|
$elevators[] = $data['elevators'];
|
|
$createTime = str_replace('-', '', $createAt);
|
|
|
|
|
|
$connT8->beginTransaction();
|
|
|
|
$sql = "SELECT * FROM comCustomer WHERE BizPartnerId = :BizPartnerId";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->execute();
|
|
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
// 新增客戶 table
|
|
if (empty($result)) {
|
|
// 若 客戶資料為空,新增一筆到 comCustomer
|
|
// 新增客戶資料
|
|
$sql = "INSERT INTO comBusinessPartner
|
|
(BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,EMail,CreatorId,CreateTime,BizPartnerTypeId)
|
|
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:EMail,: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', $customer); //企業名稱
|
|
$stmt->bindParam(':ContactAddress', $partyAaddress);
|
|
$stmt->bindParam(':EMail', $email);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO comCustomer
|
|
(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)
|
|
VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime,'35')";
|
|
$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', $customer);
|
|
$stmt->bindParam(':ContactAddress', $partyAaddress);
|
|
$stmt->bindParam(':EMail', $email);
|
|
$stmt->bindParam(':LastOperatorId', $user_id);
|
|
$stmt->bindParam(':LastOperateTime', $createTime);
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->execute();
|
|
}
|
|
|
|
$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,CreateTime,CreatorId,IsInUsed)
|
|
VALUES(:ProjectId,:ProjectName,'C0',:CreateTime,:CreatorId,1)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':ProjectId', $contractno);
|
|
$stmt->bindParam(':ProjectName', $customer);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->execute();
|
|
}
|
|
}
|
|
|
|
|
|
function BounsCount($data, $conn)
|
|
{
|
|
// echo '<pre>';
|
|
// print_r($data);
|
|
// echo '</pre>';
|
|
// exit;
|
|
require_once("../../bonus/elevator_new/elevator_new_deal_bonus.php");
|
|
$signing_date = $data['signing_date'];
|
|
$bonus_v1_0_date = '2024-01-02';
|
|
$bonus_v2_0_date = '2024-01-03';
|
|
$contractType = [
|
|
'1' => 'strategy_customer',
|
|
'2' => 'general_customer'
|
|
];
|
|
$contract_type = $data['contract_type'];
|
|
|
|
$type = $contractType[$contract_type]; //戰略客戶 or 一般客戶
|
|
$elevator_knockdown_price = $data['price_total']; //受價總額
|
|
|
|
$salesman = $data['salesman'];
|
|
$manager = $data['manager'];
|
|
|
|
$result_bonus = [];
|
|
if ($signing_date <= $bonus_v1_0_date) {
|
|
$ver = '1.0';
|
|
$result_bonus = elevator_new_deal_bonus_v1_0($ver, $type, $elevator_knockdown_price, $salesman, $manager);
|
|
} else if ($signing_date >= $bonus_v2_0_date) {
|
|
$ver = '2.0';
|
|
// $result_bonus = elevator_new_deal_bonus_v2_0($ver,$contract_type,);
|
|
}
|
|
|
|
echo '<pre>';
|
|
print_r($result_bonus);
|
|
echo '</pre>';
|
|
exit();
|
|
try {
|
|
} catch (PDOException $e) {
|
|
header("HTTP/1.1 500 Internal Server Error");
|
|
die('Error!:' . $e->getMessage());
|
|
}
|
|
}
|
|
|