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.
826 lines
34 KiB
826 lines
34 KiB
<meta charset="UTF-8">
|
|
<?php
|
|
// header("Content-Type: text/html; charset=utf-8");
|
|
// echo '你好';
|
|
// exit;
|
|
require_once("../conn.php");
|
|
// include_once("../../fun_global.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') {
|
|
|
|
$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"];
|
|
$contracttype = $_POST["contracttype"];
|
|
$elevators_nums = $_POST['nums'];
|
|
$area_no = $_POST['area_no'];
|
|
$elevators = json_decode($_POST['elevators'], JSON_UNESCAPED_UNICODE);
|
|
$elevators_detail_arr = json_decode($_POST['elevators_detail_arr'], JSON_UNESCAPED_UNICODE);
|
|
// echo "<pre>";
|
|
// print_r($elevators_detail_arr);
|
|
// 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($elevators_detail_arr['qc'])) $fail_arr[] = '請選擇QC或官檢';
|
|
if (count($fail_arr) > 0) {
|
|
header("HTTP/1.1 422 Unprocessable Entity");
|
|
echo json_encode($fail_arr, JSON_UNESCAPED_UNICODE);
|
|
exit();
|
|
}
|
|
//create facility table
|
|
$createFacilityNo = new CreateFacilityNo();
|
|
$dailyNecessities = [
|
|
'MAE100' => 'X', //小機房客梯
|
|
'MAM200' => 'W', //無機房客梯
|
|
'MAH100' => 'H', //小電梯
|
|
'MAQ100' => 'Z', //強趨梯
|
|
'MAF100' => 'F', //貨梯
|
|
'MAP100' => '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 json_encode($facilityno);
|
|
|
|
// $bonus_result = BounsCount($_POST, $conn, $facilityno);
|
|
|
|
// if (!empty($bonus_result) && $bonus_result['status'] == "2") {
|
|
// $fail_arr[] = '獎金計算錯誤,請再檢查或連繫資訊人員';
|
|
// // header("HTTP/1.1 422 Unprocessable Entity");
|
|
// echo json_encode($fail_arr, JSON_UNESCAPED_UNICODE);
|
|
// exit();
|
|
// }
|
|
|
|
T8Insert($_POST, $facilityno, $connT8);
|
|
// exit();
|
|
try {
|
|
$conn->beginTransaction();
|
|
|
|
//create account table
|
|
$accounttype = "A";
|
|
$accountid = $vat;
|
|
$pwd = "123";
|
|
$name = $customer;
|
|
$tel = $lm_tel ?? '';
|
|
$sql = "INSERT INTO account (accounttype, accountid, pwd, name, tel, address, creater, create_at)
|
|
VALUES (:accounttype, :accountid, :pwd, :name, :tel, :address , :creater, :created_at)";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->bindParam(':accounttype', $accounttype);
|
|
$stmt->bindParam(':accountid', $contractno);
|
|
$stmt->bindParam(':pwd', $pwd);
|
|
$stmt->bindParam(':name', $customer);
|
|
$stmt->bindParam(':tel', $tel);
|
|
$stmt->bindParam(':address', $address);
|
|
$stmt->bindParam(':creater', $created_by);
|
|
$stmt->bindParam(':created_at', $created_at);
|
|
$stmt->execute();
|
|
// exit();
|
|
|
|
//create table Wipwholestatus (作番大日程)
|
|
foreach ($elevators_detail_arr as $key => $value) {
|
|
$facilityno = $facilityno[$key]; // 作番
|
|
$weight = $value['item_weight']; // 載重
|
|
$person = $value['person']; // 人乘
|
|
$floor = $value['floor']; // 樓層
|
|
$open = $value['item_op']; // 開門方式
|
|
$speed = $value['speed']; //速度
|
|
$qc = $value['qc'];
|
|
$facility_kind = $value['spec']; //型號
|
|
$contract_arrival_date = $value['contract_arrival_date']; //到工地日期
|
|
$site_manager = $value['manage'];
|
|
$warehouseid = $value['warehouseid'];
|
|
$sql = "INSERT INTO Wipwholestatus
|
|
(contract_type,contractno,salesid,custom,accountid,site_manager,warehouseid,facilityno,weight,numberofpassenger,numberoffloor,opentype,speed,facility_kind,area_no,address,contract_arrival_date,real_contract_arrival_date,qc_official_type,creater,create_at,desin_spec_verify) VALUES
|
|
('A',:contractno,:salesid,:custom,:accountid,:site_manager,:warehouseid,:facilityno,:weight,:numberofpassenger,:numberoffloor,:opentype,:speed,:facility_kind,:area_no,:address,:contract_arrival_date,:real_contract_arrival_date,:qc_official_type,:creater,:create_at,1)";
|
|
// $sql = "INSERT INTO Wipwholestatus
|
|
// (contract_type,contractno,salesid,custom,accountid,facilityno,weight,numberofpassenger,numberoffloor,opentype,speed,facility_kind,address,contract_arrival_date,qc_official_type,creater,create_at) VALUES
|
|
// ('A','$contractno','$salesman','$customer','$customer','$facilityno','$weight','$person','$floor','$open','$speed','$facility_kind','$address','$contract_arrival_date','$qc','$created_by','$created_at')";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->bindParam(':contractno', $contractno);
|
|
$stmt->bindParam(':salesid', $salesman);
|
|
$stmt->bindParam(':custom', $customer);
|
|
$stmt->bindParam(':accountid', $customer);
|
|
$stmt->bindParam(':site_manager', $site_manager);
|
|
$stmt->bindParam(':warehouseid', $warehouseid);
|
|
$stmt->bindParam(':facilityno', $facilityno);
|
|
$stmt->bindParam(':weight', $weight);
|
|
$stmt->bindParam(':numberofpassenger', $person);
|
|
$stmt->bindParam(':numberoffloor', $floor);
|
|
$stmt->bindParam(':opentype', $open);
|
|
$stmt->bindParam(':speed', $speed);
|
|
$stmt->bindParam(':facility_kind', $facility_kind);
|
|
$stmt->bindParam(':area_no', $area_no);
|
|
$stmt->bindParam(':address', $address);
|
|
$stmt->bindParam(':contract_arrival_date', $contract_arrival_date);
|
|
$stmt->bindParam(':real_contract_arrival_date', $contract_arrival_date);
|
|
$stmt->bindParam(':qc_official_type', $qc);
|
|
$stmt->bindParam(':creater', $created_by);
|
|
$stmt->bindParam(':create_at', $created_at);
|
|
$stmt->execute();
|
|
$lastId = $conn->lastInsertId();
|
|
// echo "<pre>";
|
|
// print_r($lastId);
|
|
// echo "</pre>";
|
|
// exit;
|
|
if (!empty($lastId)) {
|
|
echo '123';
|
|
// 寫入待簽程狀態 A (營業)
|
|
do_wws_assign1($salesman, $lastId, 'A', $conn);
|
|
// // 寫入待簽程狀態 G (工務)
|
|
do_wws_assign1($warehouseid, $lastId, 'G', $conn);
|
|
}
|
|
|
|
|
|
// create table worksite (戰情室)
|
|
$latitude = $value['latitude'];
|
|
$longitude = $value['longitude'];
|
|
$sql = "INSERT INTO worksite
|
|
(latitude,longitude,facilitynum,facilityno,address,buildcompany,process,status,marchintotime,creater,create_at)VALUES
|
|
(:latitude,:longitude,'1',:facilityno,:address,:bulidcompany,'進行中','未工勘',:marchintotime,:creater,:create_at)";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->bindParam(':latitude', $latitude);
|
|
$stmt->bindParam(':longitude', $longitude);
|
|
$stmt->bindParam(':facilityno', $facilityno);
|
|
$stmt->bindParam(':address', $address);
|
|
$stmt->bindParam(':bulidcompany', $customer);
|
|
$stmt->bindParam(':marchintotime', $contract_arrival_date);
|
|
$stmt->bindParam(':creater', $created_by);
|
|
$stmt->bindParam(':create_at', $created_at);
|
|
$stmt->execute();
|
|
|
|
// create table schedule
|
|
// $contract_begin_date = '';
|
|
// $contract_end_date = ''; // 一年
|
|
// $comboNo = new CreateComboNo('em', $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, duedate, creater, create_at) VALUES (:contractno, :facilityno, :combono, :repairerid, :repairername, :duedate, :creater, :create_at)';
|
|
// $stmt = $conn->prepare($sql_str);
|
|
// $stmt->bindParam(':contractno', $contractno);
|
|
// $stmt->bindParam(':facilityno', $facility_no);
|
|
// $stmt->bindParam(':combono', $combo[0]);
|
|
// $stmt->bindParam(':repairerid', $repairerid);
|
|
// $stmt->bindParam(':repairername', $repairername);
|
|
// $stmt->bindParam(':duedate', $combo[1]);
|
|
// $stmt->bindParam(':creater', $creater);
|
|
// $stmt->bindParam(':create_at', $create_at);
|
|
// $result = $stmt->execute();
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
$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) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by)";
|
|
$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, $facilityno, $connT8)
|
|
{
|
|
// try {
|
|
// 引入銷售訂單 API
|
|
require_once("./T8API.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 = !empty($data['elevators_detail_arr']) ? json_decode($data['elevators_detail_arr'], true) : []; //電梯
|
|
$pay_arr = !empty($data['pay_arr']) ? json_decode($data['pay_arr'], true) : []; //電梯
|
|
|
|
$createTime = str_replace('-', '', $createAt);
|
|
$signing_date = intval(str_replace("-", '', $data['signing_date'])); //簽訂日期
|
|
// echo
|
|
// $pay_kind = [
|
|
// '1' => '簽約',
|
|
// '2' => '二次款',
|
|
// '3' => '貨抵工地',
|
|
// '4' => '材料其他',
|
|
// '5' => '試車完工', //安裝完畢
|
|
// '6' => '交車' //交車
|
|
// ];
|
|
|
|
$pay_kind = [
|
|
'1' => '簽約',
|
|
'2' => '二次款',
|
|
'3' => '貨抵工地',
|
|
'4' => '材料其他',
|
|
'5' => '試車完工', //安裝完畢
|
|
'6' => '交車' //交車
|
|
];
|
|
|
|
$sql = "SELECT * FROM comCustomer
|
|
WHERE BizPartnerId = :BizPartnerId
|
|
";
|
|
$stmt = $connT8->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,CreatorId,CreateTime,BizPartnerTypeId)
|
|
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:CreatorId,:CreateTime,'10')";
|
|
// $sql = "INSERT INTO comBusinessPartner
|
|
// (BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
|
|
// VALUES('$contractno','$partyA',1,'TW','$phone',99999999,'$vat', '$partyA','$partyAaddress','$user_id',$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', $partyA); //企業名稱
|
|
$stmt->bindParam(':ContactAddress', $partyAaddress);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
|
|
$sql = "INSERT INTO comCustomer
|
|
(OrgId,BizPartnerTypeId,ConditionId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)VALUES
|
|
('1000','10','0008','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime,'35')";
|
|
// $sql = "INSERT INTO comCustomer
|
|
// (OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)
|
|
// VALUES('1000','10','TWD','$contractno','$salesman','$user_id',1,'$partyAaddress','$createTime','35')";
|
|
$stmt = $connT8->prepare($sql);
|
|
|
|
$stmt->bindParam(':BizPartnerId', $contractno);
|
|
$stmt->bindParam(':PersonId', $salesman);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
} else {
|
|
// 若客戶資料不為空,更新該客戶資訊。
|
|
$sql = "UPDATE comCustomer SET
|
|
PersonId=:PersonId,
|
|
ConditionId='0008',
|
|
CurrId='TWD',
|
|
InvoiceAddress=:InvoiceAddress,
|
|
LastOperatorId=:LastOperatorId,
|
|
LastOperateTime=:LastOperateTime
|
|
WHERE BizPartnerId=:BizPartnerId
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':PersonId', $salesman);
|
|
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
|
|
$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,
|
|
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', $partyA);
|
|
$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', $partyA);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->execute();
|
|
}
|
|
$sql = "SELECT * FROM salSalesOrder WHERE BillNo = :BillNo";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':BillNo', $contractno);
|
|
$contractT8 = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
if (empty($contractT8)) {
|
|
|
|
foreach ($elevators as $index => $elevator) {
|
|
|
|
$count = 1;
|
|
// 產品集成維護
|
|
$facility_no = $facilityno[$index];
|
|
$MaterialName = "$partyA($facility_no)";
|
|
$contract_arrival_a = $elevator['contract_arrival_date'];
|
|
|
|
$sql = "SELECT * FROM comMaterial WHERE MaterialId = '$facility_no'";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->execute();
|
|
$MaterialisIt = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
if (empty($MaterialisIt)) {
|
|
$sql = "INSERT INTO comMaterial
|
|
(FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime,IsInUsed)
|
|
VALUES ('1000',:MaterialId,'10','A',:CreatorId,:CreateTime,1)";
|
|
$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,'A',1,'SET',:CreatorId,:CreateTime)";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':MaterialName', $MaterialName);
|
|
$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();
|
|
|
|
$sql = "INSERT INTO plsMaterialPlanData
|
|
(PlanRangeId,MaterialId,FOrgId,MaterialTypeId,CreatorId,CreateTime,DefaultDemandOrg) VALUES
|
|
(1000,:MaterialId,1000,10,:CreatorId,:CreateTime,1000)
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO comMaterialSales
|
|
(OrgId,MAterialTypeId,MaterialId,CurrId,SUnitId,SupplyOrgId,CreatorId,CreateTime,IsInUsed) VALUES
|
|
(1000,10,:MaterialId,'TWD','SET',1000,:CreatorId,:CreateTime,1)
|
|
";
|
|
$stmt = $connT8->prepare($sql);
|
|
$stmt->bindParam(':MaterialId', $facility_no);
|
|
$stmt->bindParam(':CreatorId', $user_id);
|
|
$stmt->bindParam(':CreateTime', $createTime);
|
|
$stmt->execute();
|
|
}
|
|
// 階段收款資訊
|
|
$salOrderStagePay_row = [];
|
|
$equipment_total = 0;
|
|
$install_total = 0;
|
|
$equipment_total = $pay_arr['equipment_total'];
|
|
$install_total = $pay_arr['install_total'];
|
|
$count_a = 0;
|
|
$count_month = 1;
|
|
foreach ($pay_arr['elevotor_pay_detail'] as $key => $detail) {
|
|
if ($detail['kind'] == 3) {
|
|
$PlanPayDate = $contract_arrival_a;
|
|
} else if ($detail['kind'] > 3) {
|
|
$PlanPayDate = date("Y-m-d", strtotime($contract_arrival_a . '+' . $count_month . ' month'));
|
|
$count_month++;
|
|
} else {
|
|
$PlanPayDate = $signing_date;
|
|
$count_a++;
|
|
if ($count_a == 1) {
|
|
$PlanPayDate = date("Y-m-d", strtotime($signing_date . '+' . $count_a . ' month'));
|
|
}
|
|
}
|
|
|
|
$contract_arrival_date = intval(str_replace("-", '', $PlanPayDate)); //貨到工地日
|
|
|
|
$PayStage = $pay_kind[$detail['kind']];
|
|
$PlanPercentage = intval($detail['pay_scale']) / 100;
|
|
$rows = [
|
|
"PayStage" => "$PayStage", //收款階段
|
|
"PlanPercentage" => $PlanPercentage, //計劃收款比例(%)
|
|
"PlanPayAmt" => $detail['amount'], //計劃收款金額
|
|
"PlanPayDate" => $contract_arrival_date, //計劃收款日期 1.第一筆都是簽約日
|
|
"BillNo" => "$contractno",
|
|
"RowCode" => $key + 1,
|
|
"RowNo" => $key + 1,
|
|
"UnWriteOffOAmount" => $detail['amount'] //未核銷金額
|
|
];
|
|
$salOrderStagePay_row[] = $rows;
|
|
}
|
|
|
|
// 設備
|
|
$row1 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 1,
|
|
"MaterialId" => "A40001", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => $equipment_total, //交易價格
|
|
"CU_MaterialId" => $facility_no
|
|
];
|
|
$count++;
|
|
// 安裝
|
|
$row2 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 1,
|
|
"MaterialId" => "A40008", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => $install_total, //交易價格
|
|
"CU_MaterialId" => $facility_no
|
|
];
|
|
$count++;
|
|
// 產品(作番)
|
|
$row3 = [
|
|
"TaxId" => "ST005",
|
|
"RequirementDate" => $signing_date, //出貨日期
|
|
"ConsignmentDate" => $signing_date, //發貨日期
|
|
"BillNo" => "$contractno", //合約號
|
|
"RowCode" => $count, //全部筆數排列
|
|
"ItemType" => 0,
|
|
"MaterialId" => "$facility_no", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
|
|
"SUnitId" => "SET",
|
|
"SQuantity" => 1, //交易數量
|
|
"SPrice" => 0, //交易價格
|
|
"CU_MaterialId" => $facility_no // 歸屬作番號
|
|
];
|
|
$count++;
|
|
$SubOrder_row[] = $row1;
|
|
$SubOrder_row[] = $row2;
|
|
$SubOrder_row[] = $row3;
|
|
$count++;
|
|
}
|
|
$MainSalesOrder_row = [
|
|
"BillNo" => "$contractno", //合約單號
|
|
"BillDate" => $signing_date, //簽約日期
|
|
"TypeId" => "SO", //
|
|
"FOrgId" => "1000",
|
|
"OrgId" => "1000",
|
|
"ModeId" => "M", // T汰改 M新梯
|
|
"BizPartnerId" => "$contractno", //客戶代碼
|
|
"CurrId" => "TWD",
|
|
"CurrOAmount" => 1,
|
|
"CurrLAmount" => 1,
|
|
"PersonId" => "$salesman", //業務人員
|
|
"DueToId" => "$contractno", //債務方
|
|
"TradeConditionId" => "",
|
|
"TaxId" => "ST005",
|
|
"CreditorCompId" => "1001",
|
|
"CreditorOrgId" => "1000",
|
|
"CreatorId" => "$user_id"
|
|
// "CompId" => "1001",
|
|
// "CreditorCurrOAmount" => 1,
|
|
// "CreditorCurrLAmount" => 1
|
|
];
|
|
$MainSalesOrder = [
|
|
"name" => "MainSalesOrder",
|
|
'rows' => [$MainSalesOrder_row]
|
|
];
|
|
$SubOrder = [
|
|
"name" => "SubOrder",
|
|
"rows" => $SubOrder_row
|
|
];
|
|
$salOrderStagePay = [
|
|
"name" => "salOrderStagePay",
|
|
"rows" => $salOrderStagePay_row
|
|
];
|
|
|
|
$API_body = [];
|
|
$API_body[] = $MainSalesOrder;
|
|
$API_body[] = $SubOrder;
|
|
$API_body[] = $salOrderStagePay;
|
|
echo "<pre>";
|
|
print_r(json_encode($API_body, JSON_UNESCAPED_UNICODE));
|
|
echo "</pre>";
|
|
// $api_url = "https://erp.masada.com.tw:780/twWebAPI/V1/SALSALESORDER/PostERPData";
|
|
// $api_url = "http://127.0.0.1:880/twWebAPI/V1/SALSALESORDER/PostERPData";
|
|
$api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALSALESORDER/PostERPData';
|
|
|
|
$result = T8salIncomeApply($API_body, $api_url);
|
|
echo "<pre>";
|
|
print_r($result);
|
|
echo "</pre>";
|
|
if (!empty($result) && ($result['Status'] == 'Fails' || $result['Status'] == 'Error')) {
|
|
echo $result['ErrorMsg'];
|
|
}
|
|
} else {
|
|
echo '資料已新增過,請洽資訊人員';
|
|
// exit();
|
|
}
|
|
$connT8->commit();
|
|
// } catch (PDOException $e) {
|
|
// $connT8->rollback();
|
|
// header("HTTP/1.1 500 Internal Server Error");
|
|
// die('Error!:' . $e->getMessage());
|
|
// }
|
|
}
|
|
|
|
|
|
function BounsCount($data, $conn, $facilityno)
|
|
{
|
|
try {
|
|
require_once("../../bonus/elevator_new/elevator_new_deal_bonus.php");
|
|
$dailyNecessities = [
|
|
'MAE100' => 'passenger', //小機房
|
|
'MAM200' => 'passenger', //無機房
|
|
'MAH100' => 'dumbwaiter', //小電梯
|
|
'MAQ100' => 'positive_drive', //強趨梯
|
|
'MAF100' => 'cargo', //貨梯
|
|
'MAP100' => 'flatbase', // 平台踢
|
|
];
|
|
$contractType = [
|
|
'1' => 'strategy_customer',
|
|
'2' => 'general_customer'
|
|
];
|
|
$signing_date = $data['signing_date'];
|
|
$bonus_v1_0_date = '2024-01-02';
|
|
$bonus_v2_0_date = '2024-01-03';
|
|
$contract_type = $data['contract_type'];
|
|
$total = $data['price_total'];
|
|
$type = $contractType[$contract_type]; //戰略客戶 or 一般客戶
|
|
// $elevator_knockdown_price = $data['price_total']; //受價總額
|
|
$elevators = json_decode($data['elevators_detail_arr'], true);
|
|
$contract_no = $data['contractno'];
|
|
$salesman = $data['salesman'];
|
|
$manager = $data['manager'];
|
|
$contract_kind = 1;
|
|
$create_id = $data['user_id'];
|
|
$create_at = date("Y-m-d H:i:s");
|
|
$status = 1;
|
|
|
|
|
|
|
|
|
|
|
|
$result_bonus = [];
|
|
$result_bonus_arr = [];
|
|
if ($signing_date <= $bonus_v1_0_date) {
|
|
$ver = '1.0';
|
|
foreach ($elevators as $key => $elevator) {
|
|
|
|
$elevator_knockdown_price = $elevator['elevator_price']; // 單台電梯售價
|
|
$elevator_list_price = $elevator['option_other_price'] + $elevator['option_price'] + $elevator['elevator_price']; //牌價
|
|
$result_bonus = elevator_new_deal_bonus_v1_0($ver, $type, $elevator_knockdown_price, $salesman, $manager);
|
|
$facility_no = $facilityno[$key];
|
|
$bonus_json = [
|
|
'contract_type' => $type,
|
|
'total' => $elevator_list_price,
|
|
'fee_per_st' => $elevator_knockdown_price
|
|
];
|
|
if (!empty($result_bonus)) {
|
|
if ($result_bonus['result_status'] != "error") {
|
|
foreach ($result_bonus['bonus_array'] as $i => $result) {
|
|
$bonus_type = explode('-', $result['bonus_type']);
|
|
$pay_man_type = $bonus_type[0]; //發放類別
|
|
$bonus_kind = $bonus_type[1];
|
|
$amount = $result['bonus_amount']; //獎金水庫
|
|
$bonus_receiver = $result['bonus_receiver']; //發放人員
|
|
$bonus_json['payment_schedul_due'] = $result['payment_schedul_due'];
|
|
$bonus_json['payment_schedul_regulation'] = $result['payment_schedul_regulation'];
|
|
$bonus_json['bonus_kind'] = $bonus_kind;
|
|
$a = json_encode($bonus_json, JSON_UNESCAPED_UNICODE);
|
|
$sql = "INSERT INTO bonus
|
|
(bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,status,bonus_json,create_id,create_at) VALUES
|
|
($pay_man_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$bonus_receiver',$status,'$a','$create_id','$create_at')
|
|
";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->execute();
|
|
}
|
|
$request = [
|
|
"status" => "1",
|
|
"data" => "Success"
|
|
];
|
|
return $request;
|
|
}
|
|
$request = [
|
|
"status" => "2",
|
|
"data" => "create_bonus_error"
|
|
];
|
|
return $request;
|
|
}
|
|
}
|
|
} else if ($signing_date >= $bonus_v2_0_date) {
|
|
$ver = '2.0';
|
|
foreach ($elevators as $key => $elevator) {
|
|
$option_other_price = !empty($elevator['option_other_price']) ? intval($elevator['option_other_price']) : 0;
|
|
$elevator_type = $dailyNecessities[$elevator['spec']];
|
|
$elevator_list_price = $option_other_price + $elevator['option_price'] + $elevator['elevator_price'];
|
|
$elevator_knockdown_price = $elevator['elevator_price'];
|
|
$commission_fee = $elevator['commission_fee'];
|
|
$result_bonus = elevator_new_deal_bonus_v2_0(
|
|
$ver,
|
|
$type,
|
|
$elevator_type,
|
|
$elevator_list_price,
|
|
$elevator_knockdown_price,
|
|
$salesman,
|
|
$manager
|
|
);
|
|
$facility_no = $facilityno[$key];
|
|
$bonus_json = [
|
|
'contract_type' => $type,
|
|
'total' => $elevator_list_price,
|
|
'fee_per_st' => $elevator_knockdown_price
|
|
];
|
|
if (!empty($result_bonus)) {
|
|
if ($result_bonus['result_status'] != "error") {
|
|
foreach ($result_bonus['bonus_array'] as $i => $result) {
|
|
$bonus_type = explode('-', $result['bonus_type']);
|
|
$pay_man_type = $bonus_type[0]; //發放類別
|
|
$bonus_kind = $bonus_type[1];
|
|
$amount = $result['bonus_amount']; //獎金水庫
|
|
$bonus_receiver = $result['bonus_receiver']; //發放人員
|
|
$bonus_json['payment_schedul_due'] = $result['payment_schedul_due'];
|
|
$bonus_json['payment_schedul_regulation'] = $result['payment_schedul_regulation'];
|
|
$bonus_json['bonus_kind'] = $bonus_kind;
|
|
$a = json_encode($bonus_json, JSON_UNESCAPED_UNICODE);
|
|
$sql = "INSERT INTO bonus
|
|
(bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,status,bonus_json,create_id,create_at) VALUES
|
|
($pay_man_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$bonus_receiver',$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"
|
|
];
|
|
}
|
|
}
|
|
}
|
|
return $request;
|
|
} catch (PDOException $e) {
|
|
header("HTTP/1.1 500 Internal Server Error");
|
|
die('Error!:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
function do_wws_assign1($user_id, $form_id, $flow_code, $conn)
|
|
{
|
|
$tds = date("Y-m-d H:i:s");
|
|
|
|
$sql = "select appwms.nextval('form_key') form_key";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->execute();
|
|
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
$form_key = $result['form_key'];
|
|
|
|
$sql = "INSERT INTO flow (system_id, flow_id, form_key, form_id,flow_code) VALUES ('wws', 'wws01', '$form_key', '$form_id','$flow_code');";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->execute();
|
|
|
|
$sql = "INSERT INTO subflow (form_key, seq, current_assigner, create_date) VALUES ('$form_key', '1', '$user_id', '$tds');";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->execute();
|
|
}
|
|
|