"; // print_r($elevators_detail_arr); // echo ""; // 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 "
";
      // print_r($lastId);
      // echo "
"; // 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 . '
'; $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 "
";
    print_r(json_encode($API_body, JSON_UNESCAPED_UNICODE));
    echo "
"; // $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 "
";
    print_r($result);
    echo "
"; 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(); }