Browse Source

Merge branch 'main' into gary

gary
IA2301\IA_2301 1 year ago
parent
commit
83bf8c5bd3
  1. 1
      .gitignore
  2. 21
      wms/T8_Authorization_from_bpm.php
  3. BIN
      wms/account-receivable-contract.xlsx
  4. 516
      wms/account-receivable-maintainance-index.php
  5. 199
      wms/account-receivable-new-index.php
  6. 2
      wms/account-receivable.txt
  7. 95
      wms/bonus/api/postStatus.php
  8. 146
      wms/bonus/bonus_person.php
  9. 20
      wms/bonus/elevator_new/elevator_new_deal_bonus.php
  10. 35
      wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0.php
  11. 38
      wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0.php
  12. 103
      wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php
  13. 99
      wms/bonus/maintainance_bonus.php
  14. 0
      wms/bonus/maintainance_bonus_detail.php
  15. 400
      wms/bonus/new_bonus.php
  16. 77
      wms/bonus/other/maintenance_contract_bonus_v2_1.php
  17. 8
      wms/bonus/other/maintenance_contract_bonus_v2_1_examination.php
  18. 81
      wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1.php
  19. 311
      wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1_1.php
  20. 166
      wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1_examination.php
  21. 44
      wms/cont/api/getElevatorPrice.php
  22. 0
      wms/cont/api/postElevatorPricereview.php
  23. 333
      wms/cont/css/pricereview.css
  24. 1
      wms/cont/css/pricereview.css.map
  25. 352
      wms/cont/css/pricereview.scss
  26. 5
      wms/cont/js/alpinejs/cdn.min.js
  27. 338
      wms/cont/js/pricereviewAlpine.js
  28. 4
      wms/cont/pricereviewCheck.php
  29. 485
      wms/cont/pricereviewCreate.php
  30. 179
      wms/cont/window-modal/modalElevaotr.php
  31. 33
      wms/cont/window-modal/otherOptionModal.php
  32. 36
      wms/cont/window-modal/otherToElevatorModal.php
  33. 11
      wms/contract/api/T8api.php
  34. 144
      wms/contract/api/getContractData.php
  35. 31
      wms/contract/api/getFacilityNo.php
  36. 62
      wms/contract/api/getT8NewContractData.php
  37. 215
      wms/contract/api/postContractData.php
  38. 39
      wms/contract/api/postContractNewApplyData.php
  39. 58
      wms/contract/api/postFlow.php
  40. 629
      wms/contract/api/postNewContractData.php
  41. 115
      wms/contract/api/test copy.json
  42. 207
      wms/contract/api/test.json
  43. 290
      wms/contract/api/testT8API.php
  44. 6
      wms/contract/conn.php
  45. 62
      wms/contract/contract-input.php
  46. 69
      wms/contract/contract-new-apply.php
  47. 16
      wms/contract/contract-newelevator-input.php
  48. 68
      wms/contract/js/alpine.js
  49. 2
      wms/crm/crmm02-index.php
  50. 8
      wms/crm/crmm03-edit.php
  51. 2
      wms/crm/crmm06_submit.php
  52. 1
      wms/crm/model/HopeElevatorCustomerModel.php
  53. 7
      wms/fun_global.php
  54. 3
      wms/login.php
  55. 5
      wms/mkt/api/postNewElevatorPricereview.php
  56. 10
      wms/mkt/api/postPricereviewSign.php
  57. 25
      wms/mkt/assets/js/pricereviewAlpine.js
  58. 9
      wms/mkt/pricereview-index.php
  59. 8
      wms/mkt/pricereviewCreate.php
  60. 4
      wms/mkt/window-modal/demolishToElevatorModal.php
  61. 5
      wms/mkt/window-modal/elevatorModal.php
  62. 4
      wms/mkt/window-modal/maintainToElevatorModal.php
  63. 6
      wms/mkt/window-modal/optionToElevatorModal.php
  64. 4
      wms/mkt/window-modal/otherToElevatorModal.php

1
.gitignore

@ -29,3 +29,4 @@ wms/gary2.php
wms/chinese.php
phpinfo.php
wms/account_receivable_sql_file.sql
wms/account_receivable_maintainance_sql.sql

21
wms/T8_Authorization_from_bpm.php

@ -1,12 +1,10 @@
<?php
// $user_id = "M0000";
// $user_password = "M012290493119";
function get_Auth($user_id = "M0000", $user_password = "M012290493119")
// echo $validation = get_Auth($user_id, $user_password);
// function get_Auth($user_id = "M0000", $user_password = "M012290493119")
function get_Auth($user_id = "ADMIN", $user_password = "chi")
// function get_Auth($user_id = "ADMIN", $user_password = "chi")
function get_Auth($user_id = "M0000", $user_password = "M012290493119")
{
$currentTime = time();
$twoMinutesLater = $currentTime - (2 * 60);
@ -15,13 +13,13 @@ function get_Auth($user_id = "ADMIN", $user_password = "chi")
$now = gmdate("YmdHis", strtotime("-2 minutes"));
$data = "$user_id." . $now;
// $sign = hash_hmac('SHA256', $data, 'A21181F1EE4966D3', false);
$sign = hash_hmac('SHA256', $data, 'A733DAD19527399E', false);
$sign = hash_hmac('SHA256', $data, '91EB2CB12C3F8211', false);
// echo $sign;
// $apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth';
// $apiurl = 'http://60.244.87.101:880//twWebAPI/GetAuth'; -----
$apiurl = 'http://101.132.66.206:880/twWebAPI/GetAuth';
$apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth';
// $apiurl = 'http://60.244.87.101:880//twWebAPI/GetAuth';
// $apiurl = 'http://101.132.66.206:880/twWebAPI/GetAuth';
// $apiurl = 'http://10.10.145.2:880//twWebAPI/GetAuth';
// $apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth';
@ -31,7 +29,7 @@ function get_Auth($user_id = "ADMIN", $user_password = "chi")
"Pwd: $user_password",
"TimestampUTC: $now",
"Sign: $sign",
"GroupId:ceshi"
"GroupId:MASADA"
];
$ch = curl_init();
@ -54,4 +52,5 @@ function get_Auth($user_id = "ADMIN", $user_password = "chi")
curl_close($ch);
}
// $data = [];
get_Auth();
// get_Auth();
// exit();

BIN
wms/account-receivable-contract.xlsx

Binary file not shown.

516
wms/account-receivable-maintainance-index.php

@ -0,0 +1,516 @@
<?php
include "header.php";
include "css/view/wipwhole-index.php";
// 設置一個空陣列來放資料
$data = array();
$start_date = empty($_POST['date_start']) ? null : $_POST['date_start'];
$end_date = empty($_POST['date_end']) ? null : $_POST['date_end'];
$start_SignDate = empty($_POST['date_Signstart']) ? null : $_POST['date_Signstart'];
$end_SignDate = empty($_POST['date_Signend']) ? null : $_POST['date_Signend'];
$sql = "
SELECT
siam.PersonId,
cp.PersonName,
cd.DeptId,
cd.DeptName,
cd.LeaderId,
lcp.PersonName AS LeaderName,
siam.BizPartnerId,
cbp.BizPartnerName,
siamd.RowCode,
siam.BillNo,
siamd.ProjectId,
siamd.CU_EstPayDate,
siamd.UnTransCheckBLAmtWTax ,
siamd.HadTransCheckBLAmtWTax,
siamd.OAmountWithTax,
siamd.CU_MaterialId,
acb_tmp.BillNo2 AS checkBillNo,
acb_tmp.RowCode2,
acb_tmp.checkOAmount,
asim.BillNo AS BillNo3,
asim.InvoiceName,
asim.OAmountWithTax AS InvoiceOAmount,
asi.InvoiceNo,
asi.InvoiceTime
FROM salIncomeApplyMaster AS siam -- 收入申請單
LEFT JOIN salIncomeApplyDetail AS siamd -- 收入申請單明細
ON siam.BillNo = siamd.BillNo
LEFT JOIN comGroupPerson AS cp -- 員工主檔
ON siam.PersonId = cp.PersonId
LEFT JOIN comDepartment AS cd -- 部門主檔
ON siam.DeptId = cd.DeptId
LEFT JOIN comGroupPerson AS lcp
ON lcp.PersonId= cd.LeaderId
LEFT JOIN (
SELECT
acbd.FromRowCode,
acb.FromBillNo,
acbd.BillNo AS BillNo2,
acbd.RowCode AS RowCode2,
acbd.LAmountWithTax AS checkOAmount
FROM arCheckBill AS acb -- 應收確認單
LEFT JOIN arCheckBillDetail AS acbd -- 應收確認單明細
ON acb.BillNo = acbd.BillNo
WHERE 1 = 1
AND acb.TypeId = 'RVS') AS acb_tmp
ON siamd.RowCode = acb_tmp.FromRowCode
AND siamd.BillNo = acb_tmp.FromBillNo
LEFT JOIN arSellInvoiceMaterial AS asim -- 買賣發票明細
ON asim.FromBillNo = acb_tmp.BillNo2
AND asim.RowCode = acb_tmp.RowCode2
LEFT JOIN arSellInvoice AS asi
ON asim.BillNo = asi.BillNo
LEFT JOIN comBusinessPartner AS cbp
ON siam.BizPartnerId = cbp.BizPartnerId
WHERE 1 = 1
";
//核銷單 SQL
$sql_writeOff = "SELECT
wod.FromBillNo AS checkBillNo,
arCheckBill.LAmountWithTax,
SUM(wod.CurrWriteOffLAmount) AS TotalWriteOffAmount
FROM arWriteOffBillDetail AS wod
LEFT JOIN arCheckBill
ON arCheckBill.BillNo = wod.FromBillNo
LEFT JOIN comDepartment AS cd
ON cd.DeptId = arCheckBill.DeptId
WHERE arCheckBill.TypeId = 'RVS'";
$follower = find_follow($user_id);
if ((in_array($user_id, array('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) {
} else {
$sql .= " AND (siam.PersonId = '$user_id'";
$sql_writeOff .= " AND (arCheckBill.PersonId = '$user_id'";
if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower);
$column_str .= "')";
$sql .= " OR siam.PersonId IN $column_str OR cd.LeaderId = '$user_id')";
$sql_writeOff .= " OR arCheckBill.PersonId IN $column_str OR cd.LeaderId = '$user_id')";
} else {
$sql .= " OR cd.LeaderId = '$user_id')";
$sql_writeOff .= " OR cd.LeaderId = '$user_id')";
};
}
if (!is_null($start_date)) {
$start_date = (int)date('Ymd', strtotime($start_date));
$sql .= " AND siam.CU_ContractStart >= $start_date ";
}
if (!is_null($end_date)) {
$end_date = (int)date('Ymd', strtotime($end_date));
$sql .= " AND siam.CU_ContractStart <= $end_date ";
}
if (!is_null($start_SignDate)) {
$start_SignDate = (int)date('Ymd', strtotime($start_SignDate));
$sql .= " AND siam.BillDate >= $start_SignDate ";
}
if (!is_null($end_SignDate)) {
$end_SignDate = (int)date('Ymd', strtotime($end_SignDate));
$sql .= " AND siam.BillDate <= $end_SignDate ";
}
$sql .= "
ORDER BY
siam.PersonId ASC,
siam.BillNo ASC,
siamd.RowCode ASC";
$sql_writeOff.=" GROUP BY
wod.FromBillNo
,arCheckBill.LAmountWithTax";
$writeoff = array();
$query_T8 = $conn->query($sql);
$rows = $query_T8->fetchAll(PDO::FETCH_ASSOC);
$query_writeoff = $conn->query($sql_writeOff);
foreach($query_writeoff->fetchAll(PDO::FETCH_ASSOC) as $row){
$writeoff[$row['checkBillNo']]= ($row['TotalWriteOffAmount']==$row['LAmountWithTax'])?'V':'X';
}
$today = strtotime(date('Ymt'));
$table = "";
for ($i = 0; $i < count($rows); $i++) {
$row = $rows[$i];
$tmpname = $row['ProjectId'] . $row['RowCode'];
$data[$tmpname] = $row;
$data[$tmpname]['CU_EstPayDate'] = date('Y-m-d', strtotime($row['CU_EstPayDate']));
$receivable_date = $data[$tmpname]['CU_EstPayDate'];
$data[$tmpname]['havetopay'] = strtotime($row['CU_EstPayDate']) > $today ? '--' : 'V';
$datahavetopay = strtotime($row['CU_EstPayDate']) > $today ? 0 : 1;
$data[$tmpname]['collecttime'] = collect_month(strtotime($row['CU_EstPayDate']));
$data[$tmpname]['invoicedate'] = is_null($row['InvoiceTime']) ? null : date('Y-m-d', strtotime($row['InvoiceTime']));
$invoicedate = $data[$tmpname]['invoicedate'];
$data[$tmpname]['invoice'] = is_null($data[$tmpname]['invoicedate']) ? 0 : 1;
if(!is_null($data[$tmpname]['checkBillNo']) && isset($writeoff[$data[$tmpname]['checkBillNo']])){
$data[$tmpname]['WriteOff'] = $writeoff[$data[$tmpname]['checkBillNo']];
}else{
$data[$tmpname]['WriteOff'] = '--';
}
$contract_no = $row['ProjectId'];
$facility_no = $row['CU_MaterialId'];
$RowCode = $row['RowCode'];
$BillNo = $row['BillNo'];
$data[$tmpname]['receivable_date'] = date('Y-m-d', strtotime($row['CU_EstPayDate']));
$budget = $row['OAmountWithTax'];
$invoiceNo = $row['InvoiceNo'];
$tableinvoice_state = is_null($invoiceNo) ? 0 : 1;
$data[$tmpname]['invoice_budget'] = is_null($row['InvoiceOAmount']) ? 0 : $row['InvoiceOAmount'];
$invoice_budget = $data[$tmpname]['invoice_budget'];
$table_writeoff = ($data[$tmpname]['WriteOff'] =='V') ? 1 : 0;
$table1 = "INSERT INTO account_receivable_maintainance(
`contract_no`,
`facility_no`,
`RowCode`,
`BillNo`,
`receivable_date`,
`budget`,
`receivable`,
`invoice_state`,
`invoice_budget`,
`received`
";
$table2 = ") VALUES(
'$contract_no',
'$facility_no',
'$RowCode',
'$BillNo',
'$receivable_date',
$budget,
$datahavetopay,
$tableinvoice_state,
$invoice_budget,
$table_writeoff
";
$table1 .= is_null($invoicedate) ? "" : ",`invoice_date`";
$table2 .= is_null($invoicedate) ? "" : ",'$invoicedate'";
$table1 .= is_null($invoiceNo) ? "" : ",`invoice_no`";
$table2 .= is_null($invoiceNo) ? "" : ",'$invoiceNo'";
$table .= $table1 . $table2 . "); \n";
}
// $file_path = 'account_receivable_maintainance_sql.sql';
// if (file_put_contents($file_path, $table) !== false) {
// echo "SQL文件已成功生成:{$file_path}";
// } else {
// echo "生成SQL文件时出现错误。";
// }
// foreach ($data as $key => $row) {
// echo $key . "<br>";
// print_r($row);
// echo "<br>------------<br>";
// }
// exit();
?>
<style>
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap: break-word;
}
img {
width: 125px;
}
.width_style_1 {
width: 125px;
}
table {
width: 100%;
}
#table_index_filter {
float: right;
}
#table_index_paginate {
float: right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.hiddenTable {
display: none;
}
.hidden {
display: none;
}
</style>
<!-- <div style="width: 98%;margin: 1%;">
<div class="btn-group btn-group-md " style="padding:10 px; width: 100%;">
<button type="button" style="width: 12%;" onclick="downloadData()" class="btn btn-success">下載 <span class="glyphicon glyphicon-download-alt"></span></button>
</div>
</div> -->
<div class="container">
<div class="text-center" style="margin-bottom: 20px;">
<h3><strong>應收帳款(保養)</strong></h3>
</div>
<hr>
<form class="form-horizontal" id='myForm' method='post' action='account-receivable-maintainance-index.php?<?= $token_link ?>'>
<table class="table table-striped table-bordered" style='width:98%;text-align:center;margin:0 auto'>
<tbody>
<tr>
<th class="text-center" style="vertical-align: middle;">簽約日期</th>
<td colspan="2">
<input type="date" class='form-control' id='date_Signstart' name='date_Signstart' style='width:40%;display:inline;'>
<input type="date" class='form-control' id='date_Signend' name='date_Signend' style='width:40%;display:inline;'>
</td>
<td rowspan="2">
<button type="submit" class="btn btn-primary btn-md">搜尋</button>
</td>
</tr>
<tr>
<th class="text-center" style="vertical-align: middle;">合約日期</th>
<td colspan="2">
<input type="date" class='form-control' id='date_start' name='date_start' style='width:40%;display:inline;'>
<input type="date" class='form-control' id='date_end' name='date_end' style='width:40%;display:inline;'>
<!-- <button type="submit" class="btn btn-primary btn-sm">搜尋</button> -->
</td>
</tr>
<tr>
<th class="text-center" style="vertical-align: middle;">催收次數</th>
<td colspan="3">
<input type="number" class='form-control' id='search_collectstart' name='search_collectstart' style='width:30%;display:inline;' onblur="searchFront('collectstart')">
≤ 催收次數 ≤
<input type="number" class='form-control' id='search_collectend' name='search_collectend' style='width:30%;display:inline;' onblur="searchFront('collectend')">
</td>
</tr>
<tr>
<th class="text-center" style="vertical-align: middle;">款別金額</th>
<td colspan="3">
<input type="text" class='form-control' id='search_CBudgetstart' name='collect_budget_start' style='width:30%;display:inline;' onblur="searchFront('CBudgetstart')">
≤ 款別金額 ≤
<input type="text" class='form-control' id='search_CBudgetend' name='collect_budget_end' style='width:30%;display:inline;' onblur="searchFront('CBudgetend')">
</td>
</tr>
</tbody>
</table>
</form>
<hr>
<div class="form-group">
<div class="col-md-4">
<label for="search_contract">查詢合約號</label>
<input type="text" id="search_contract" name="search_contract" class="form-control" placeholder="請輸入合約號" onblur="searchFront('contract')">
</div>
<div class="col-md-4">
<label for="search_dept">查詢部門</label>
<input type="text" id="search_dept" name="search_dept" class="form-control" placeholder="請輸入部門" onblur="searchFront('dept')">
</div>
<!-- <div class="col-md-4">
<label for="search_manager">查詢主管</label>
<input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" onblur="searchFront('manager')">
</div> -->
</div>
<div class="form-group">
<div class="col-md-4">
<label for="search_personId">查詢契約員</label>
<input type="text" id="search_personId" name="search_personId" class="form-control" placeholder="請輸入契約員工號/姓名" onblur="searchFront('personId')">
</div>
<div class="col-md-4">
<label for="search_customerid">查詢客戶名稱</label>
<input type="text" id="search_customerid" name="search_customerid" class="form-control" placeholder="請輸入客戶名稱" onblur="searchFront('customerid')">
</div>
<div class="col-md-4">
<label for="search_facility">查詢作番號</label>
<input type="text" id="search_facility" name="search_facility" class="form-control" placeholder="請輸入作番號" onblur="searchFront('facility')">
</div>
</div>
</div>
<?php
include "./footer.php";
?>
<div style="width: 20%;float:right;margin-right:5%; ">
<label>查詢條件</label>
<input type="text" id="search" name="search" class="form-control" placeholder="請輸入合約號/作番號/客戶名稱" oninput="searchData()">
</div>
<div style="width: 98%; margin:1%;" style="overflow-x:auto;">
<table class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th style='text-align:center;vertical-align: middle;width:100px'>合約號</th>
<th style='text-align:center;vertical-align: middle;'>序號</th>
<th style='text-align:center;vertical-align: middle;width:100px'>作番號</th>
<th style='text-align:center;vertical-align: middle;width:110px'>部門</th>
<!-- <th style='text-align:center;vertical-align: middle;'>主管</th> -->
<th style='text-align:center;vertical-align: middle;'>契約員</th>
<th style='text-align:center;vertical-align: middle;width:120px'>客戶名稱</th>
<th style='text-align:center;vertical-align: middle;'>應收日期</th>
<th style='text-align:center;vertical-align: middle;'>是否應收</th>
<th style='text-align:center;vertical-align: middle;'>款別金額</th>
<th style='text-align:center;vertical-align: middle;'>是否收齊</th>
<th style='text-align:center;vertical-align: middle;'>催收次數</th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $key => $row) { ?>
<tr class="data-row" style="display: '';" id="<?= $key; ?>">
<td class="contract"><?= $row['ProjectId']; ?></td>
<td><?= $row['RowCode']; ?></td>
<td class="facility"><?= $row['CU_MaterialId']; ?></td>
<td class="dept"><?= $row['DeptId'] . "<br>" . $row['DeptName']; ?></td>
<!-- <td class="manager"><?= $row['LeaderId'] . "<br>" . $row['LeaderName']; ?></td> -->
<td class="personId"><?= $row['PersonId'] . "<br>" . $row['PersonName']; ?></td>
<td class="customerid"><?= $row['BizPartnerId'] . "<br>" . $row['BizPartnerName']; ?></td>
<td><?= $row['CU_EstPayDate']; ?></td>
<td><?= $row['havetopay']; ?></td>
<td class="CBudget"><?= number_format(round($row['OAmountWithTax'])); ?></td>
<td><?= $row['WriteOff']; ?></td>
<td class="collect"><?= (($row['havetopay'] == "V") && ($row['WriteOff'] !== 'V'))? $row['collecttime']:0; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<script>
function searchData() {
var searchTerm = document.getElementById('search').value.toLowerCase();
var rows = document.getElementsByClassName('data-row');
for (var i = 0; i < rows.length; i++) {
var rowText = rows[i].textContent.toLowerCase();
// var rowText = rows[i].id.toLowerCase();
if (rowText.includes(searchTerm)) {
console.log(rowText);
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
}
}
// function downloadData() {
// var xhr = new XMLHttpRequest();
// var url = window.location.origin + "/wms/account-receivable-renovate-excel.php?type=all&<?= $token_link ?>";
// xhr.open('POST', url, true);
// xhr.setRequestHeader('Content-Type', 'application/json');
// xhr.onreadystatechange = function() {
// if (xhr.readyState === 4 && xhr.status === 200) {
// var file_path = xhr.responseText;
// var link = document.createElement('a');
// var name = "汰改應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
// link.setAttribute('href', window.location.origin + "/wms/account-receivable-renovate.xlsx");
// link.setAttribute('download', name);
// link.style.display = 'none';
// document.body.appendChild(link);
// link.click();
// document.body.removeChild(link);
// }
// }
// xhr.send(JSON.stringify({
// Bill:
// }));
// }
function searchFront(area) {
var term = 'search_' + area;
if (area == 'collectstart') {
var searchTerm = parseInt(document.getElementById(term).value);
var searchArea = document.getElementsByClassName('collect');
var rows = document.getElementsByClassName('data-row');
var criterion = parseInt(document.getElementById('search_collectend').value);
for (var i = 0; i < rows.length; i++) {
var rowText = parseInt(searchArea[i].textContent);
if (rowText >= searchTerm) {
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
if (criterion !== '' && rowText > criterion) {
rows[i].style.display = 'none';
}
}
} else if (area == 'collectend') {
var searchTerm = parseInt(document.getElementById(term).value);
var searchArea = document.getElementsByClassName('collect');
var rows = document.getElementsByClassName('data-row');
var criterion = parseInt(document.getElementById('search_collectstart').value);
for (var i = 0; i < rows.length; i++) {
var rowText = parseInt(searchArea[i].textContent);
if (rowText <= searchTerm) {
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
if (criterion !== '' && rowText < criterion) {
rows[i].style.display = 'none';
}
}
} else if (area == 'CBudgetstart') {
var searchTerm = parseInt(document.getElementById(term).value);
var searchArea = document.getElementsByClassName('CBudget');
var rows = document.getElementsByClassName('data-row');
var criterion = parseInt(document.getElementById('search_CBudgetend').value);
for (var i = 0; i < rows.length; i++) {
var rowText = parseInt(searchArea[i].textContent.replace(/,/g, ''));
if (isNaN(searchTerm) || searchTerm == 0) {
rows[i].style.display = '';
} else if (rowText >= searchTerm) {
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
if (criterion !== '' && rowText > criterion) {
rows[i].style.display = 'none';
}
}
} else if (area == 'CBudgetend') {
var searchTerm = parseInt(document.getElementById(term).value);
var searchArea = document.getElementsByClassName('CBudget');
var rows = document.getElementsByClassName('data-row');
var criterion = parseInt(document.getElementById('search_CBudgetstart').value);
for (var i = 0; i < rows.length; i++) {
var rowText = parseInt(searchArea[i].textContent.replace(/,/g, ''));
if (isNaN(searchTerm) || searchTerm == 0) {
rows[i].style.display = '';
} else if (rowText <= searchTerm) {
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
if (!isNaN(criterion) && rowText < criterion) {
rows[i].style.display = 'none';
}
}
} else {
var searchTerm = document.getElementById(term).value.toLowerCase();
var searchArea = document.getElementsByClassName(area);
var rows = document.getElementsByClassName('data-row');
for (var i = 0; i < rows.length; i++) {
var rowText = searchArea[i].textContent.toLowerCase();
if (rowText.includes(searchTerm)) {
rows[i].style.display = '';
} else {
rows[i].style.display = 'none';
}
}
}
}
function check(searchname) {
console.log(searchname);
}
</script>

199
wms/account-receivable-new-index.php

@ -519,7 +519,7 @@ foreach ($PayStage_array as $key => &$value) {
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
break;
case (stristr($payvalue['PayStage'], '試車')):
case (stristr($payvalue['PayStage'], '試車') || $payvalue['PayStage'] == '安裝試車'):
$payvalue['stage'] = '試車款';
if ($wip_array[$payvalue['facilityno']]['tryrun_end_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['tryrun_end_date'])) {
$estimate_time = strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']);
@ -528,6 +528,15 @@ foreach ($PayStage_array as $key => &$value) {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '合格') || stristr($payvalue['PayStage'], '驗收') || stristr($payvalue['PayStage'], '驗收')):
$payvalue['stage'] = '官檢驗收款';
if ($wip_array[$payvalue['facilityno']]['official_check_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['official_check_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['official_check_date'])) {
$estimate_time = strtotime($wip_array[$payvalue['facilityno']]['official_check_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '安裝') || stristr($payvalue['PayStage'], '貨抵工地且完工')):
$payvalue['stage'] = '安裝款';
if ($wip_array[$payvalue['facilityno']]['install_end_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['install_end_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['install_end_date'])) {
@ -547,15 +556,7 @@ foreach ($PayStage_array as $key => &$value) {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '合格') || stristr($payvalue['PayStage'], '驗收') || stristr($payvalue['PayStage'], '驗收')):
$payvalue['stage'] = '官檢驗收款';
if ($wip_array[$payvalue['facilityno']]['official_check_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['official_check_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['official_check_date'])) {
$estimate_time = strtotime($wip_array[$payvalue['facilityno']]['official_check_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '交車') || stristr($payvalue['PayStage'], '移交') || stristr($payvalue['PayStage'], '完工') || stristr($payvalue['PayStage'], '許可') || stristr($payvalue['PayStage'], '核可')):
$payvalue['stage'] = '交車款';
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
@ -618,7 +619,7 @@ CheckAll.FromSalSalesOrder AS BillNo
SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo
FROM arCheckBillDetail AS CheckDetail )
AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo
WHERE Main.InvoiceState!=2 AND LEN(CheckAll.FromSalSalesOrder)>0";
WHERE Main.InvoiceState!=2 AND LEN(CheckAll.FromSalSalesOrder)>0 AND Main.InvoiceDate > 20240229";
$query_invoice = $conn->query($sql_invoice);
//發票資訊回填到arrayData
@ -629,64 +630,119 @@ foreach ($query_invoice as $invoice) {
}
//未在T8的收款資料
$sql_wms = "SELECT * FROM account_received WHERE type='M' AND BillNo IN $str_numbers";
$query_wms = mysqli_query($link, $sql_wms);
foreach ($query_wms as $wms) {
if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['invoice_budget'])) {
$arrayData[$wms['BillNo']]['invoice_budget'] += $wms['invoice_budget'];
}
if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['received_budget'])) {
$arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget'];
}
}
// $sql_wms = "SELECT * FROM account_received WHERE type='M' AND BillNo IN $str_numbers";
// $query_wms = mysqli_query($link, $sql_wms);
// foreach ($query_wms as $wms) {
// if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['invoice_budget'])) {
// $arrayData[$wms['BillNo']]['invoice_budget'] += $wms['invoice_budget'];
// }
// if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['received_budget'])) {
// $arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget'];
// }
// }
// 核銷資訊
$sql_received = "SELECT
CheckDetail.OrderBillNo,
arWriteOffBillDetail.FromBillNo AS CheckBillNo,
arWriteOffBillDetail.FromRowCode AS CheckRowCode,
arWriteOffBillDetail.CurrStandOffOAmount,
CheckDetail.TypeId
FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBillDetail.BillNo,
arCheckBillDetail.RowCode,
arCheckBillDetail.FromSalSalesOrder AS OrderBillNo,
salSalesOrder.TypeId,
salSalesOrder.ModeId
FROM arCheckBillDetail
LEFT JOIN salSalesOrder
ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder )
AS CheckDetail
ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode
WHERE CheckDetail.ModeId = 'M'";
// $sql_received = "SELECT
// CheckDetail.OrderBillNo,
// arWriteOffBillDetail.FromBillNo AS CheckBillNo,
// arWriteOffBillDetail.FromRowCode AS CheckRowCode,
// arWriteOffBillDetail.CurrStandOffOAmount,
// CheckDetail.TypeId
// FROM arWriteOffBillDetail
// LEFT JOIN
// (SELECT
// arCheckBillDetail.BillNo,
// arCheckBillDetail.RowCode,
// arCheckBillDetail.FromSalSalesOrder AS OrderBillNo,
// salSalesOrder.TypeId,
// salSalesOrder.ModeId
// FROM arCheckBillDetail
// LEFT JOIN salSalesOrder
// ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder )
// AS CheckDetail
// ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode
// WHERE CheckDetail.ModeId = 'M'";
$sql_received = "
SELECT Detail.OrderBillNo,
Detail.CurrWriteOffLAmount,
Main.BillDate
FROM arWriteOffBillDetail AS Detail
LEFT JOIN arWriteOffBill AS Main
ON Detail.BillNo=Main.BillNo
WHERE Main.BillDate >20240229 AND LEN(Detail.OrderBillNo)>0";
$query_received = $conn->query($sql_received);
// 核銷資訊回填到arrayData
foreach ($query_received as $received) {
if(is_iterable($query_received)){
foreach ($query_received as $received) {
if (isset($arrayData[$received['OrderBillNo']])) {
$arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount'];
$arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrWriteOffLAmount'];
}
}
}
// 取WMS期初資料並依作番款別填入 $wms_initial
$wms_initial = array();
$sql_initial = "SELECT * FROM account_receivable";
$initail_data = mysqli_query($link, $sql_initial);
foreach ($initail_data as $initial) {
if ($initial['invoice_budget'] > 0) {
if (isset($wms_initial[$initial['facility_no']][$initial['stage']]['invoice_budget'])) {
$wms_initial[$initial['facility_no']][$initial['stage']]['invoice_budget'] += $initial['invoice_budget'];
} else {
$wms_initial[$initial['facility_no']][$initial['stage']]['invoice_budget'] = $initial['invoice_budget'];
}
}
if ($initial['received_budget'] > 0) {
if (isset($wms_initial[$initial['facility_no']][$initial['stage']]['received_budget'])) {
$wms_initial[$initial['facility_no']][$initial['stage']]['received_budget'] += $initial['received_budget'];
} else {
$wms_initial[$initial['facility_no']][$initial['stage']]['received_budget'] = $initial['received_budget'];
}
}
}
// 將發票與核銷資訊 分別計算作番收款階段金額 與 催收次數
$today = strtotime(date('Y-m-t'));
foreach ($final_paystage as $key => &$value) {
$tmpinvoice = $arrayData[$key]['invoice_budget'];
$tmpreceived = $arrayData[$key]['received_budget'];
for ($sequenceNumber = 1; $sequenceNumber <= count($value); $sequenceNumber++) {
if (isset($value[$sequenceNumber]['PlanPayDate'])) {
$collect_month = collect_month(strtotime($value[$sequenceNumber]['PlanPayDate']));
if ($today > strtotime($value[$sequenceNumber]['PlanPayDate'])) {
$value[$sequenceNumber]['hadtopay'] = 'V';
} else {
$value[$sequenceNumber]['hadtopay'] = '--';
if (isset($value[$sequenceNumber]['stage'])) {
switch ($value[$sequenceNumber]['stage']) {
case '訂金':
$istage = 100;
break;
case '二次款':
$istage = 200;
break;
case '貨抵工地款':
$istage = 300;
break;
case '安裝款':
$istage = 400;
break;
case '試車款':
$istage = 500;
break;
case '官檢驗收款':
$istage = 600;
break;
case '交車款':
$istage = 700;
break;
case '尾款':
$istage = 800;
break;
}
} else {
$collect_month = 0;
$value[$sequenceNumber]['hadtopay'] = '--';
$istage = 0;
}
if (isset($wms_initial[$value[$sequenceNumber]['facilityno']][$istage]['invoice_budget'])) {
$value[$sequenceNumber]['invoice_budget'] = $wms_initial[$value[$sequenceNumber]['facilityno']][$istage]['invoice_budget'];
} else {
if ($tmpinvoice > $value[$sequenceNumber]['PlanPayAmt']) {
$value[$sequenceNumber]['invoice_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpinvoice = $tmpinvoice - $value[$sequenceNumber]['invoice_budget'];
@ -696,6 +752,11 @@ foreach ($final_paystage as $key => &$value) {
} else {
$value[$sequenceNumber]['invoice_budget'] = 0;
}
}
if (isset($wms_initial[$value[$sequenceNumber]['facilityno']][$istage]['received_budget'])) {
$value[$sequenceNumber]['received_budget'] = $wms_initial[$value[$sequenceNumber]['facilityno']][$istage]['received_budget'];
} else {
if ($tmpreceived > $value[$sequenceNumber]['PlanPayAmt']) {
$value[$sequenceNumber]['received_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpreceived -= $value[$sequenceNumber]['received_budget'];
@ -705,6 +766,22 @@ foreach ($final_paystage as $key => &$value) {
} else {
$value[$sequenceNumber]['received_budget'] = 0;
}
}
if (isset($value[$sequenceNumber]['PlanPayDate'])) {
$collect_month = collect_month(strtotime($value[$sequenceNumber]['PlanPayDate']));
if ($today > strtotime($value[$sequenceNumber]['PlanPayDate'])) {
$value[$sequenceNumber]['hadtopay'] = 'V';
} else {
$value[$sequenceNumber]['hadtopay'] = '--';
}
} else {
$collect_month = 0;
$value[$sequenceNumber]['hadtopay'] = '--';
}
if ($collect_month > 0 && $value[$sequenceNumber]['PlanPayAmt'] > $value[$sequenceNumber]['received_budget']) {
$value[$sequenceNumber]['collect_month'] = $collect_month;
} else {
@ -714,7 +791,6 @@ foreach ($final_paystage as $key => &$value) {
}
//合約資料填回arrayData
foreach ($final_paystage as $key => $value) {
for ($sequence = 1; $sequence <= count($value); $sequence++) {
@ -724,13 +800,16 @@ foreach ($final_paystage as $key => $value) {
if ($arvalue['PayStage'] == $value[$sequence]['PayStage']) {
if (isset($arvalue['receivable_budget']) && isset($arvalue['received_budget']) && isset($arvalue['invoice_budget'])) {
$arvalue['received_budget'] += $value[$sequence]['received_budget'];
$arrayData[$key]['received_budget'] += $value[$sequence]['received_budget'];
$arvalue['invoice_budget'] += $value[$sequence]['invoice_budget'];
$arrayData[$key]['invoice_budget'] += $value[$sequence]['invoice_budget'];
if ($value[$sequence]['hadtopay'] == 'V') {
$arvalue['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
$arrayData[$key]['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
} else {
$arvalue['receivable_budget'] = 0;
}
// else {
// $arvalue['receivable_budget'] = 0;
// }
if ($arvalue['collect_month'] < $value[$sequence]['collect_month']) {
$arvalue['collect_month'] = $value[$sequence]['collect_month'];
}
@ -746,7 +825,9 @@ foreach ($final_paystage as $key => $value) {
$arvalue['receivable_budget'] = 0;
}
$arvalue['received_budget'] = $value[$sequence]['received_budget'];
$arrayData[$key]['received_budget'] += $value[$sequence]['received_budget'];
$arvalue['invoice_budget'] = $value[$sequence]['invoice_budget'];
$arrayData[$key]['invoice_budget'] += $value[$sequence]['invoice_budget'];
$arvalue['collect_month'] = $value[$sequence]['collect_month'];
$sum_receivable_budget += $value[$sequence]['PlanPayAmt'];
$sum_received_budget += $value[$sequence]['received_budget'];
@ -779,6 +860,7 @@ $excel_contract_boga_array = array();
$excel_contract_noboga_array = array();
$excel_facility_array = array();
foreach ($arrayData as $key => &$value) {
$excel_contract_array[$key] = array_fill(0, 76, '');
@ -799,7 +881,7 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_array[$key][14] = (isset($value['receivable_budget']) && !is_null($value['receivable_budget'])) ? $value['receivable_budget'] : 0;
$excel_contract_array[$key][15] = (isset($value['invoice_budget']) && !is_null($value['invoice_budget'])) ? number_format(round($value['invoice_budget'])) : '0';
$excel_contract_array[$key][16] = (isset($value['received_budget']) && !is_null($value['received_budget'])) ? $value['received_budget'] : 0;
$value['collect_budget'] = ($excel_contract_array[$key][14] - $excel_contract_array[$key][16]) > 0 ? $excel_contract_array[$key][14] - $excel_contract_array[$key][16] : 0;
$value['collect_budget'] = (($excel_contract_array[$key][14] - $excel_contract_array[$key][16]) > 0) ? $excel_contract_array[$key][14] - $excel_contract_array[$key][16] : 0;
$excel_contract_array[$key][17] = number_format(round($excel_contract_array[$key][14] - $excel_contract_array[$key][16]));
$excel_contract_array[$key][18] = (isset($value['collect_month']) && !is_null($value['collect_month'])) ? number_format(round($value['collect_month'])) : '0';
$excel_contract_array[$key][19] = (isset($value['facility_num']) && !is_null($value['facility_num'])) ? number_format(round($value['facility_num'])) : '0';
@ -807,7 +889,7 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_array[$key][14] = number_format(round($excel_contract_array[$key][14]));
$excel_contract_array[$key][16] = number_format(round($excel_contract_array[$key][16]));
if (isset($value['PayStage']) && is_iterable($value['PayStage'])) {
if ($excel_contract_array[$key][17] > 1) {
if ($excel_contract_array[$key][18] !== '0') {
$excel_contract_all_array[$key] = array_fill(0, 24, 0);
$excel_contract_all_array[$key][0] = $excel_contract_array[$key][0];
$excel_contract_all_array[$key][1] = $excel_contract_array[$key][3];
@ -817,7 +899,6 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_all_array[$key][5] = $excel_contract_array[$key][20];
$excel_contract_all_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_all_array[$key][7] = $excel_contract_array[$key][18];
}
$isBoga = 0;
if (stristr($value['PayStage'][1]['PayStage'], '寶佳')) {
$isBoga = 1;
@ -841,6 +922,8 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_noboga_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_noboga_array[$key][7] = $excel_contract_array[$key][18];
}
}
foreach ($value['PayStage'] as $paykey => $payvalue) {
switch ($payvalue['stage']) {
case "訂金":
@ -1040,7 +1123,7 @@ $total_data = json_encode($excel_contract_all_array);
$boga_data = json_encode($excel_contract_boga_array);
$noboga_data = json_encode($excel_contract_noboga_array);
$table = "";
$testtotal =0;
$testtotal = 0;
// foreach ($arrayData as $key => $value) {
// if (isset($value['facility']) && is_iterable($value['facility'])) {
// foreach ($value['facility'] as $fkey => $fvalue) {

2
wms/account-receivable.txt

File diff suppressed because one or more lines are too long

95
wms/bonus/api/postStatus.php

@ -2,6 +2,7 @@
require_once("../../contract/conn.php");
if (!empty($_POST['id']) && !empty($_POST['postType']) && $_POST['postType'] == 'a') {
if ($_POST['contract_type'] == 'maintainance') {
try {
$id = empty($_POST['id']) ? '' : $_POST['id'];
$user_id = empty($_POST['user_id']) ? '' : $_POST['user_id'];
@ -19,6 +20,19 @@ if (!empty($_POST['id']) && !empty($_POST['postType']) && $_POST['postType'] ==
echo $e->getMessage();
die('Error!:' . $e->getMessage());
}
} else if ($_POST['contract_type'] == 'new') {
try {
$id = empty($_POST['id']) ? '' : $_POST['id'];
$user_id = empty($_POST['user_id']) ? '' : $_POST['user_id'];
$amount = empty($_POST['amount']) ? '' : $_POST['amount'];
header("HTTP/1.1 200 success!");
echo 'Success';
} catch (PDOException $e) {
echo $e->getMessage();
die('Error!:' . $e->getMessage());
}
}
}
// 獎金確認發放,並更新獎金 OR 實際發放時間
if (!empty($_POST['postType']) && $_POST['postType'] == 'b') {
@ -109,3 +123,84 @@ if (!empty($_POST['postType']) && $_POST['postType'] == 'd') {
}
// echo 'ddddd';
}
// 查看T8 是否收款
if (!empty($_POST['postType']) && $_POST['postType'] == 'e') {
$sql = "SELECT contract_no FROM bonus WHERE contract_type = 3 AND T8api_status = 1 ";
$stmt = $conn->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// echo "<pre>";
// print_r($results);
// echo "</pre>";
foreach ($results as $result) {
$contract_no = $result['contract_no'];
$a = isPay($contract_no, $connT8);
if ($a == '1') {
try {
$sql = "UPDATE bonus SET T8api_status = 2 WHERE contract_no = :contract_no";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":contract_no", $contract_no);
$stmt->execute();
header("HTTP/1.1 200 success!");
echo 'Success';
} catch (PDOException $e) {
echo $e->getMessage();
die('Error!:' . $e->getMessage());
}
}
}
}
function isPay($contract_no, $connT8)
{
// echo $contract_no;
$sql = "SELECT
a.BillNo,
b.OTaxAmt as amount,
a.CU_EstPayDate as createDate,
b.PersonId as personId,
c.BillNo as CBno,
c.CU_MaterialId as facility
FROM salIncomeApplyDetail as a
LEFT JOIN salIncomeApplyMaster as b ON a.BillNo = b.BillNo
LEFT JOIN (
SELECT aMaster.BillNo,aMaster.BizPartnerId,aDetail.CU_MaterialId FROM arCheckBill as aMaster
LEFT JOIN arCheckBillDetail as aDetail ON aMaster.BizPartnerId = aDetail.FromBillNo
WHERE aMaster.BizPartnerId = '$contract_no' AND aMaster.TypeId = 'RVS'
) AS c ON a.BillNo = c.BizPartnerId
WHERE a.BillNo = '$contract_no'
AND a.RowNo = '1'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
// $data['amount'] = intval($data['amount']);
if (!empty($data['CBno']) && $data['CBno'] != '') {
$checkBillNo = $data['CBno'];
$sql = "SELECT
c.BillDate AS CheckBillDate
FROM arWriteOffBill AS a
LEFT JOIN arWriteOffBillRec AS b ON a.BillNo=b.BillNo
LEFT JOIN
(SELECT temp1.*,arWriteOffBillDetail.* FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBill.BillNo AS checkBillNo, arCheckBill.BillDate,arCheckBillInvInfo.InvoiceNo
FROM arCheckBill
LEFT JOIN arCheckBillInvInfo
ON arCheckBill.InvoiceBillNo=arCheckBillInvInfo.InvoiceBillNo) AS temp1
ON temp1.checkBillNo = arWriteOffBillDetail.FromBillNo) AS c
ON a.BillNo=c.BillNo
WHERE c.checkBillNo = '$checkBillNo'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
return '1';
} else {
return '2';
}
}

146
wms/bonus/bonus_person.php

@ -0,0 +1,146 @@
<?php
include_once("../header.php");
// require_once('./connT8.php');
require("../contract/conn.php");
$now = date("Y-m-d");
$oneMonthAgo = date("Y-m-d", strtotime("$now +1 months"));
$oneMonthAgo1 = date("m", strtotime($oneMonthAgo));
$clause = "";
if ($_GET['check'] == 'maintainance') {
if (!empty($_GET)) {
$month = $_GET['months_select'];
$years = $_GET['years']; // 當前年份
$days_in_month = cal_days_in_month(CAL_GREGORIAN, $month, $years);
$select_date = date("$years-$month-01");
$select_date1 = date("$years-$month-$days_in_month");
echo $select_date1;
$clause .= "AND pay_day_due >='$select_date' AND pay_day_due <= '$select_date1' ";
} else {
$clause .= "AND pay_day_due >= '$now' AND pay_day_due <= '$oneMonthAgo' ";
}
// $clause .= "AND pay_day_due >= '$now' AND pay_day_due <= '$oneMonthAgo' ";
$sql = "SELECT a.receiver,a.amount,b.name FROM bonus AS a
LEFT JOIN account AS b ON a.receiver = b.accountid
WHERE 1=1 AND contract_type = 3 $clause ORDER BY a.receiver ASC";
$stmt = $conn->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$person_arr = [];
$bonus_arr = [];
$count = 0;
$a = 0;
$j = 0;
}
for ($i = 0; $i < COUNT($results); $i++) {
$a++;
if ($i + 1 < COUNT($results)) {
if ($results[$i]['receiver'] != $results[$i + 1]['receiver']) {
$amount = 0;
if ($i != $j) {
for ($j; $j <= $i; $j++) {
$amount += $results[$j]['amount'];
}
$person_arr['person_id'] = $results[$i]['receiver'];
$person_arr['person'] = $results[$i]['name'];
$person_arr['bonus'] = $amount;
array_push($bonus_arr, $person_arr);
} else {
$amount += $results[$j]['amount'];
$person_arr['person_id'] = $results[$i]['receiver'];
$person_arr['person'] = $results[$i]['name'];
$person_arr['bonus'] = $amount;
array_push($bonus_arr, $person_arr);
}
$j = $i + 1;
}
} else {
$amount = 0;
for ($j; $j <= $i; $j++) {
$amount += $results[$j]['amount'];
}
$amount += $results[$i]['amount'];
$person_arr['person_id'] = $results[$i]['receiver'];
$person_arr['bonus'] = $amount;
$person_arr['person'] = $results[$i]['name'];
array_push($bonus_arr, $person_arr);
}
}
?>
<div style="overflow-x:auto;margin-top:12px">
<!-- <a href="contract-newelevator-input.php?function_name=repair&<?php echo $token_link; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a> -->
<table class='table query-table table-striped table-bordered display compact' style='width:98%;text-align:center;margin:0 auto'>
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'><?= !empty($years) ? $years : date('Y') ?><?= !empty($month) ? $month : $oneMonthAgo1 ?>月份、個人獎金計算</h3>
</td>
</tr>
</thead>
</table>
<form method='get' action=''>
<table class='table table-striped table-bordered' style='width:70%;text-align:center;margin:0 auto'>
<tbody>
<tr>
<th style="text-align:center;vertical-align:middle;">年份</th>
<td>
<select name="years" id="">
<?php for ($i = 2020; $i <= 2030; $i++) { ?>
<option value="<?= $i ?>" <?php echo isset($_GET["years"]) && $_GET["years"] == $i ? 'selected' : ''; ?>>
<?= $i ?>
</option> <?php } ?>
</select>
</td>
<th style="text-align:center;vertical-align:middle;">月份</th>
<td>
<select name="months_select" id="">
<?php for ($i = 1; $i <= 12; $i++) { ?>
<option value="<?= $i ?>" <?php echo isset($_GET["months_select"]) && $_GET["months_select"] == $i ? 'selected' : ''; ?>>
<?= $i ?>
</option> <?php } ?>
</select>
</td>
<!-- <td><input type="text" class="form-control" name="months_select" value="<?php if (isset($_GET["facilityno"])) echo $_GET["facilityno"]; ?>"></td> -->
<!--<th>保養員姓名</th> -->
<td style="text-align:center;vertical-align:middle;width:80px"><button type="submit" style='text-align:center; margin:0 auto' class="btn btn-info btn-sm">查詢</button></td>
</tr>
</tbody>
</table>
<input type="hidden" name="function_name" value="schedule_index">
<input type="hidden" name="token" value="<?php echo $token; ?>">
</form>
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<!-- <th>項次</th> -->
<th>工號</th>
<th>姓名</th>
<th>總獎金水庫(實發總價)</th>
</tr>
</thead>
<tbody>
<?php
if (!empty($bonus_arr)) {
foreach ($bonus_arr as $key => $bonus) {
?>
<tr>
<!-- <td><?php echo $key ?></td> -->
<td><?php echo $bonus['person_id'] ?></td>
<td><?php echo $bonus['person'] ?></td>
<td><?php echo $bonus['bonus'] ?></td>
</tr>
<?php }
} ?>
</tbody>
</table>
</div>

20
wms/bonus/elevator_new/elevator_new_deal_bonus.php

@ -59,7 +59,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_type" => "1-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
@ -68,7 +68,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
"bonus_type" => "1-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
@ -77,7 +77,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_type" => "1-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
@ -86,7 +86,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_type" => "2-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
@ -95,7 +95,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_type" => "2-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
@ -150,7 +150,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_type" => "1-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
@ -159,7 +159,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
"bonus_type" => "1-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
@ -168,7 +168,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_type" => "1-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
@ -177,7 +177,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
#區域經理獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_type" => "2-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
@ -186,7 +186,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_type" => "2-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%

35
wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0.php

@ -32,12 +32,13 @@ result_array[
function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_price, $sales_id, $region_manger_id){
function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_price, $elevator_pay_kind, $sales_id, $region_manger_id)
{
$bonus_array = [];
if ($ver == "1.0"){
if ($ver == "1.0") {
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type){
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.007;
@ -54,7 +55,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
};
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
@ -63,7 +64,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
@ -72,7 +73,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
@ -81,7 +82,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
#區域經理獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
@ -90,7 +91,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
@ -99,12 +100,12 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"success", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}else{
array_push($bonus_array,[
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱
"bonus_receiver" => "error", #發放人員
"bonus_amount" => 0, #金額
@ -113,13 +114,11 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_knockdown_
]);
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"error", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "error", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
};
return $result_array;
};
?>

38
wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0.php

@ -10,7 +10,7 @@
區域經理員工號($region_manger_id)
【2.函數中的變數說明】
銷售點數($discount):作番賣價($elevator_knockdown_price) 除以 作番表價($elevator_list_price)
// 銷售點數($discount):作番賣價($elevator_knockdown_price) 除以 作番表價($elevator_list_price)
營業員獎金($sales_bonus)
區域經理提成獎金($region_manager_bonus)
獎金預計發放階段($payment_schedule_due):deposit(訂金)、shipping(出貨款)、deliveried(貨到工地款)、acceptance(驗收款)
@ -35,13 +35,15 @@ result_array[
function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $elevator_list_price, $elevator_knockdown_price, $sales_id, $region_manger_id){
function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $elevator_list_price, $elevator_knockdown_price, $sales_id, $region_manger_id)
{
$bonus_array = [];
if ($ver == "2.0"){
if ($ver == "2.0") {
$elevator_knockdown_price = round($elevator_knockdown_price / 1.05); //不含稅
$discount = round($elevator_knockdown_price / $elevator_list_price, 3); #銷售點數,取到小數點第三位。
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type){
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.007;
@ -93,7 +95,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
};
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
@ -102,7 +104,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
@ -111,7 +113,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
@ -120,7 +122,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
@ -129,7 +131,7 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
@ -138,12 +140,12 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"success", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}else{
array_push($bonus_array,[
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱
"bonus_receiver" => "error", #發放人員
"bonus_amount" => 0, #金額
@ -152,13 +154,11 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
]);
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"error", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "error", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
};
return $result_array;
};
?>

103
wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php

@ -41,55 +41,55 @@ require_once("elevator_new_deal_bonus_v2_0.php");
#獎金測試
$examination_array = [
#錯誤版本
["1.0","strategy_customer","passenger",1000000,1000000,"M0001", "M0003"],
["1.0", "strategy_customer", "passenger", 1000000, 1000000, "M0001", "M0003"],
#戰略客戶(strategy_customer)
["2.0","strategy_customer","passenger",1000000,1000000,"M0001", "M0003"], #戰略客戶、客梯、銷售點數100%
["2.0","strategy_customer","passenger",1000000,900000,"M0001", "M0003"], #戰略客戶、客梯、銷售點數90%
["2.0","strategy_customer","passenger",1000000,750000,"M0001", "M0003"], #戰略客戶、客梯、銷售點數75%
["2.0","strategy_customer","passenger",1000000,600000,"M0001", "M0003"], #戰略客戶、客梯、銷售點數60%
["2.0","strategy_customer","cargo",1000000,1000000,"M0001", "M0003"], #戰略客戶、貨梯、銷售點數100%
["2.0","strategy_customer","cargo",1000000,900000,"M0001", "M0003"], #戰略客戶、貨梯、銷售點數90%
["2.0","strategy_customer","cargo",1000000,750000,"M0001", "M0003"], #戰略客戶、貨梯、銷售點數75%
["2.0","strategy_customer","cargo",1000000,600000,"M0001", "M0003"], #戰略客戶、貨梯、銷售點數60%
["2.0","strategy_customer","dumbwaiter",1000000,1000000,"M0001", "M0003"], #戰略客戶、小電梯、銷售點數100%
["2.0","strategy_customer","dumbwaiter",1000000,900000,"M0001", "M0003"], #戰略客戶、小電梯、銷售點數90%
["2.0","strategy_customer","dumbwaiter",1000000,720000,"M0001", "M0003"], #戰略客戶、小電梯、銷售點數75%
["2.0","strategy_customer","dumbwaiter",1000000,600000,"M0001", "M0003"], #戰略客戶、小電梯、銷售點數60%
["2.0","strategy_customer","flatbase",1000000,1000000,"M0001", "M0003"], #戰略客戶、平台梯、銷售點數100%
["2.0","strategy_customer","flatbase",1000000,900000,"M0001", "M0003"], #戰略客戶、平台梯、銷售點數90%
["2.0","strategy_customer","flatbase",1000000,720000,"M0001", "M0003"], #戰略客戶、平台梯、銷售點數75%
["2.0","strategy_customer","flatbase",1000000,600000,"M0001", "M0003"], #戰略客戶、平台梯、銷售點數60%
["2.0","strategy_customer","positive_drive",1000000,1000000,"M0001", "M0003"], #戰略客戶、強驅、銷售點數100%
["2.0","strategy_customer","positive_drive",1000000,900000,"M0001", "M0003"], #戰略客戶、強驅、銷售點數90%
["2.0","strategy_customer","positive_drive",1000000,720000,"M0001", "M0003"], #戰略客戶、強驅、銷售點數75%
["2.0","strategy_customer","positive_drive",1000000,600000,"M0001", "M0003"], #戰略客戶、強驅、銷售點數60%
["2.0", "strategy_customer", "passenger", 1000000, 1000000, "M0001", "M0003"], #戰略客戶、客梯、銷售點數100%
["2.0", "strategy_customer", "passenger", 1000000, 900000, "M0001", "M0003"], #戰略客戶、客梯、銷售點數90%
["2.0", "strategy_customer", "passenger", 1000000, 750000, "M0001", "M0003"], #戰略客戶、客梯、銷售點數75%
["2.0", "strategy_customer", "passenger", 1000000, 600000, "M0001", "M0003"], #戰略客戶、客梯、銷售點數60%
["2.0", "strategy_customer", "cargo", 1000000, 1000000, "M0001", "M0003"], #戰略客戶、貨梯、銷售點數100%
["2.0", "strategy_customer", "cargo", 1000000, 900000, "M0001", "M0003"], #戰略客戶、貨梯、銷售點數90%
["2.0", "strategy_customer", "cargo", 1000000, 750000, "M0001", "M0003"], #戰略客戶、貨梯、銷售點數75%
["2.0", "strategy_customer", "cargo", 1000000, 600000, "M0001", "M0003"], #戰略客戶、貨梯、銷售點數60%
["2.0", "strategy_customer", "dumbwaiter", 1000000, 1000000, "M0001", "M0003"], #戰略客戶、小電梯、銷售點數100%
["2.0", "strategy_customer", "dumbwaiter", 1000000, 900000, "M0001", "M0003"], #戰略客戶、小電梯、銷售點數90%
["2.0", "strategy_customer", "dumbwaiter", 1000000, 720000, "M0001", "M0003"], #戰略客戶、小電梯、銷售點數75%
["2.0", "strategy_customer", "dumbwaiter", 1000000, 600000, "M0001", "M0003"], #戰略客戶、小電梯、銷售點數60%
["2.0", "strategy_customer", "flatbase", 1000000, 1000000, "M0001", "M0003"], #戰略客戶、平台梯、銷售點數100%
["2.0", "strategy_customer", "flatbase", 1000000, 900000, "M0001", "M0003"], #戰略客戶、平台梯、銷售點數90%
["2.0", "strategy_customer", "flatbase", 1000000, 720000, "M0001", "M0003"], #戰略客戶、平台梯、銷售點數75%
["2.0", "strategy_customer", "flatbase", 1000000, 600000, "M0001", "M0003"], #戰略客戶、平台梯、銷售點數60%
["2.0", "strategy_customer", "positive_drive", 1000000, 1000000, "M0001", "M0003"], #戰略客戶、強驅、銷售點數100%
["2.0", "strategy_customer", "positive_drive", 1000000, 900000, "M0001", "M0003"], #戰略客戶、強驅、銷售點數90%
["2.0", "strategy_customer", "positive_drive", 1000000, 720000, "M0001", "M0003"], #戰略客戶、強驅、銷售點數75%
["2.0", "strategy_customer", "positive_drive", 1000000, 600000, "M0001", "M0003"], #戰略客戶、強驅、銷售點數60%
#一般客戶(general_customer)
["2.0","general_customer","passenger",1000000,1000000,"M0001", "M0003"], #一般客戶、客梯、銷售點數100%
["2.0","general_customer","passenger",1000000,900000,"M0001", "M0003"], #一般客戶、客梯、銷售點數90%
["2.0","general_customer","passenger",1000000,750000,"M0001", "M0003"], #一般客戶、客梯、銷售點數75%
["2.0","general_customer","passenger",1000000,600000,"M0001", "M0003"], #一般客戶、客梯、銷售點數60%
["2.0","general_customer","cargo",1000000,1000000,"M0001", "M0003"], #一般客戶、貨梯、銷售點數100%
["2.0","general_customer","cargo",1000000,900000,"M0001", "M0003"], #一般客戶、貨梯、銷售點數90%
["2.0","general_customer","cargo",1000000,750000,"M0001", "M0003"], #一般客戶、貨梯、銷售點數75%
["2.0","general_customer","cargo",1000000,600000,"M0001", "M0003"], #一般客戶、貨梯、銷售點數60%
["2.0","general_customer","dumbwaiter",1000000,1000000,"M0001", "M0003"], #一般客戶、小電梯、銷售點數100%
["2.0","general_customer","dumbwaiter",1000000,900000,"M0001", "M0003"], #一般客戶、小電梯、銷售點數90%
["2.0","general_customer","dumbwaiter",1000000,720000,"M0001", "M0003"], #一般客戶、小電梯、銷售點數75%
["2.0","general_customer","dumbwaiter",1000000,600000,"M0001", "M0003"], #一般客戶、小電梯、銷售點數60%
["2.0","general_customer","flatbase",1000000,1000000,"M0001", "M0003"], #一般客戶、平台梯、銷售點數100%
["2.0","general_customer","flatbase",1000000,900000,"M0001", "M0003"], #一般客戶、平台梯、銷售點數90%
["2.0","general_customer","flatbase",1000000,720000,"M0001", "M0003"], #一般客戶、平台梯、銷售點數75%
["2.0","general_customer","flatbase",1000000,600000,"M0001", "M0003"], #一般客戶、平台梯、銷售點數60%
["2.0","general_customer","positive_drive",1000000,1000000,"M0001", "M0003"], #一般客戶、強驅、銷售點數100%
["2.0","general_customer","positive_drive",1000000,900000,"M0001", "M0003"], #一般客戶、強驅、銷售點數90%
["2.0","general_customer","positive_drive",1000000,720000,"M0001", "M0003"], #一般客戶、強驅、銷售點數75%
["2.0","general_customer","positive_drive",1000000,600000,"M0001", "M0003"] #一般客戶、強驅、銷售點數60%
["2.0", "general_customer", "passenger", 1000000, 1000000, "M0001", "M0003"], #一般客戶、客梯、銷售點數100%
["2.0", "general_customer", "passenger", 1000000, 900000, "M0001", "M0003"], #一般客戶、客梯、銷售點數90%
["2.0", "general_customer", "passenger", 1000000, 750000, "M0001", "M0003"], #一般客戶、客梯、銷售點數75%
["2.0", "general_customer", "passenger", 1000000, 600000, "M0001", "M0003"], #一般客戶、客梯、銷售點數60%
["2.0", "general_customer", "cargo", 1000000, 1000000, "M0001", "M0003"], #一般客戶、貨梯、銷售點數100%
["2.0", "general_customer", "cargo", 1000000, 900000, "M0001", "M0003"], #一般客戶、貨梯、銷售點數90%
["2.0", "general_customer", "cargo", 1000000, 750000, "M0001", "M0003"], #一般客戶、貨梯、銷售點數75%
["2.0", "general_customer", "cargo", 1000000, 600000, "M0001", "M0003"], #一般客戶、貨梯、銷售點數60%
["2.0", "general_customer", "dumbwaiter", 1000000, 1000000, "M0001", "M0003"], #一般客戶、小電梯、銷售點數100%
["2.0", "general_customer", "dumbwaiter", 1000000, 900000, "M0001", "M0003"], #一般客戶、小電梯、銷售點數90%
["2.0", "general_customer", "dumbwaiter", 1000000, 720000, "M0001", "M0003"], #一般客戶、小電梯、銷售點數75%
["2.0", "general_customer", "dumbwaiter", 1000000, 600000, "M0001", "M0003"], #一般客戶、小電梯、銷售點數60%
["2.0", "general_customer", "flatbase", 1000000, 1000000, "M0001", "M0003"], #一般客戶、平台梯、銷售點數100%
["2.0", "general_customer", "flatbase", 1000000, 900000, "M0001", "M0003"], #一般客戶、平台梯、銷售點數90%
["2.0", "general_customer", "flatbase", 1000000, 720000, "M0001", "M0003"], #一般客戶、平台梯、銷售點數75%
["2.0", "general_customer", "flatbase", 1000000, 600000, "M0001", "M0003"], #一般客戶、平台梯、銷售點數60%
["2.0", "general_customer", "positive_drive", 1000000, 1000000, "M0001", "M0003"], #一般客戶、強驅、銷售點數100%
["2.0", "general_customer", "positive_drive", 1000000, 900000, "M0001", "M0003"], #一般客戶、強驅、銷售點數90%
["2.0", "general_customer", "positive_drive", 1000000, 720000, "M0001", "M0003"], #一般客戶、強驅、銷售點數75%
["2.0", "general_customer", "positive_drive", 1000000, 600000, "M0001", "M0003"] #一般客戶、強驅、銷售點數60%
];
for($i = 0; $i<count($examination_array); $i++){
for ($i = 0; $i < count($examination_array); $i++) {
$result = elevator_new_deal_bonus_v2_0(
$examination_array[$i][0],
$examination_array[$i][1],
@ -99,18 +99,27 @@ for($i = 0; $i<count($examination_array); $i++){
$examination_array[$i][5],
$examination_array[$i][6]
);
$customer = [
'strategy_customer' => '戰略客戶',
'general_customer' => '一般客戶'
];
//作番機種($elevator_type):客梯(passenger)、貨梯(cargo)、小電梯(dumbwaiter)、平台梯(flatbase)、強驅(positive_drive)
$elevator = [
"passenger" => "客梯",
"cargo" => "貨梯",
"dumbwaiter" => "小電梯",
"flatbase" => "平台踢",
"positive_drive" => "強驅"
];
echo "獎金版本:" . $result["ver"] . "<br>";
echo "計算結果:" . $result["result_status"] . "<br>";
echo "參數說明: " . $customer[$examination_array[$i][1]] . " 、 " . $elevator[$examination_array[$i][2]] . "、 作番表價:" . $examination_array[$i][3] . " 、 作番賣價: " . $examination_array[$i][4] . "、 營業員員工號:" . $examination_array[$i][5] . " 、 區域經理員工號:" . $examination_array[$i][6] . "<br>";
echo "輸入參數:" . $examination_array[$i][1] . " " . $examination_array[$i][2] . " " . $examination_array[$i][3] . " " . $examination_array[$i][4] . " "
. $examination_array[$i][5] . " " . $examination_array[$i][6] . "<br>";
for($j = 0; $j<count($result["bonus_array"]); $j++){
for ($j = 0; $j < count($result["bonus_array"]); $j++) {
echo "輸出結果:" . $result["bonus_array"][$j]["bonus_type"] . " " . $result["bonus_array"][$j]["bonus_receiver"] . " "
. $result["bonus_array"][$j]["bonus_amount"] . " " . $result["bonus_array"][$j]["payment_schedul_due"] . " "
. $result["bonus_array"][$j]["payment_schedul_regulation"] . "<br>";
};
echo "-------------------------" . "<br>";
};
?>

99
wms/bonus/bonus.php → wms/bonus/maintainance_bonus.php

@ -32,15 +32,18 @@ if (!empty($_GET['check'])) {
if ($_GET['check'] == 4) {
$oneMonthAgo = date("Y-m-d", strtotime("$now +1 months"));
// $clause .= "AND pay_day_due >= '$now' AND pay_day_due <= '$oneMonthAgo' AND status IN (1,2,5)";
$clause .= "AND status IN (1,2,5)";
$clause .= "AND a.status IN (1,2,5)";
} else if ($_GET['check'] == 2) {
$clause .= "AND status = 1";
$clause .= "AND a.status = 1";
} else if ($_GET['check'] == 3) {
$clause .= "AND status IN (2,5)";
$clause .= "AND a.status IN (2,5)";
}
}
$sql = "SELECT * FROM bonus WHERE 1=1 $clause";
$sql = "SELECT a.*,b.customer FROM bonus AS a
LEFT JOIN con_maintance_examine_apply AS b ON a.contract_no = b.vol_no
WHERE 1=1 $clause AND a.contract_type = 3";
$stmt = $conn->prepare($sql);
$stmt->execute();
$datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
@ -49,7 +52,6 @@ $datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
$now = new DateTime();
$oneMonthAgo = $now->modify('+1 month');
$id = [];
foreach ($datas as $data) {
$id[] = $data['id'];
@ -58,58 +60,6 @@ $id_str = implode(',', $id);
// 查看 T8 是否有收款明細
// require("./api/get.php");
function isPay($contract_no, $connT8)
{
// echo $contract_no;
$sql = "SELECT
a.BillNo,
b.OTaxAmt as amount,
a.CU_EstPayDate as createDate,
b.PersonId as personId,
c.BillNo as CBno,
c.CU_MaterialId as facility
FROM salIncomeApplyDetail as a
LEFT JOIN salIncomeApplyMaster as b ON a.BillNo = b.BillNo
LEFT JOIN (
SELECT aMaster.BillNo,aMaster.BizPartnerId,aDetail.CU_MaterialId FROM arCheckBill as aMaster
LEFT JOIN arCheckBillDetail as aDetail ON aMaster.BizPartnerId = aDetail.FromBillNo
WHERE aMaster.BizPartnerId = '$contract_no' AND aMaster.TypeId = 'RVS'
) AS c ON a.BillNo = c.BizPartnerId
WHERE a.BillNo = '$contract_no'
AND a.RowNo = '1'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
// $data['amount'] = intval($data['amount']);
if (!empty($data['CBno']) && $data['CBno'] != '') {
$checkBillNo = $data['CBno'];
$sql = "SELECT
c.BillDate AS CheckBillDate
FROM arWriteOffBill AS a
LEFT JOIN arWriteOffBillRec AS b ON a.BillNo=b.BillNo
LEFT JOIN
(SELECT temp1.*,arWriteOffBillDetail.* FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBill.BillNo AS checkBillNo, arCheckBill.BillDate,arCheckBillInvInfo.InvoiceNo
FROM arCheckBill
LEFT JOIN arCheckBillInvInfo
ON arCheckBill.InvoiceBillNo=arCheckBillInvInfo.InvoiceBillNo) AS temp1
ON temp1.checkBillNo = arWriteOffBillDetail.FromBillNo) AS c
ON a.BillNo=c.BillNo
WHERE c.checkBillNo = '$checkBillNo'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
return '1';
} else {
return '2';
}
}
?>
<link rel="stylesheet" href="../contract-repair/styles/style.css">
<link rel="stylesheet" href="../contract-repair/semantic/dist/semantic.min.css">
@ -122,6 +72,16 @@ function isPay($contract_no, $connT8)
<div class="bonus_index" x-data="bonusIndexTest">
<div class="form" method="post" id="form" enctype="multipart/form-data">
<div style="overflow-x:auto;margin-top:12px">
<table class='table query-table table-striped table-bordered display compact' style='width:98%;text-align:center;margin:0 auto'>
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'>(契約)獎金計算</h3>
</td>
</tr>
</thead>
</table>
<!-- <a href="bonus_index1.php?function_name=bonus&token=<?php echo $token; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a> -->
@ -130,17 +90,19 @@ function isPay($contract_no, $connT8)
<a href="/wms/bonus/bonus.php?check=2&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 2) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 未發獎金</a>
<a href="/wms/bonus/bonus.php?check=3&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 3) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 已發獎金</a>
<a href="/wms/bonus/bonus.php?check=4&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 4) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 人事發放作業</a>
<a href="/wms/bonus/bonus_person.php?check=maintainance&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 5) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 獎金總計(人)</a>
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<button class="btn btn-primary float-end" style="float: right;" onclick="isPay()">查看是否收款</button>
<?php if (!empty($_GET['check']) && $_GET['check'] == '4') { ?>
<button class="btn btn-primary float-end" style="float: right;" onclick="All('<?= $id_str ?>')">鎖定並發放</button>
<?php } ?>
<thead>
<tr>
<th>項次</th>
<th>合約類別</th>
<th>合約號</th>
<th>合約名稱</th>
<th>作番號</th>
<th>獎金類別</th>
<th>獎金版本</th>
@ -178,8 +140,8 @@ function isPay($contract_no, $connT8)
?>
<tr>
<td><?= $data['id'] ?></td>
<td><?= $contract_type[$data['contract_type']] ?></td>
<td><?= $data['contract_no'] ?></td>
<td><?= $data['customer'] ?></td>
<td><?= $data['facility_no'] ?></td>
<td><?= $bonus_type[$data['bonus_type']] ?></td>
<td><?= $data['bonus_verson'] ?></td>
@ -323,13 +285,14 @@ function isPay($contract_no, $connT8)
const datas = <?php echo json_encode($datas); ?>;
function issue(id, user_id, pay_day, amount) {
// console.log(id);
// consolelog(id);
const form = new FormData();
form.append('id', id)
form.append('user_id', user_id);
form.append('pay_day', pay_day)
form.append('amount', amount);
form.append('postType', 'a');
form.append('contract_type', 'maintainance');
axios.post('./api/postStatus.php', form).then((res) => {
if (res.data == 'Success') {
alert('更新成功');
@ -357,6 +320,22 @@ function isPay($contract_no, $connT8)
});
}
}
function isPay() {
const form = new FormData();
form.append('user_id', '<?= $user_id ?>');
form.append('postType', 'e');
// if (confirm('是否發放全部獎金')) {
axios.post('./api/postStatus.php', form).then((res) => {
if (res.status == 200) {
alert('更新成功');
// location.reload();
}
}).catch((err) => {
});
// }
}
// $(function() {
// $("button[name=issuePay]").click(function() {
// console.log(123);

0
wms/bonus/bonus_detail.php → wms/bonus/maintainance_bonus_detail.php

400
wms/bonus/new_bonus.php

@ -0,0 +1,400 @@
<?php
include_once("../header.php");
// require_once('./connT8.php');
require("../contract/conn.php");
$now = date("Y-m-d");
$contract_type = [
'1' => '新梯',
'2' => '汰改',
'3' => '保養'
];
$bonus_type = [
'1' => '契約人獎金',
'2' => '區經理獎金',
'3' => '專任契約經理獎金'
];
$bonus_status = [
'1' => '未確認',
'2' => '應發已確認',
'3' => '應發未確認',
'4' => '暫不發放',
'5' => '人事審核確認'
];
$clause = '';
if ($user_id != 'M0225') {
$clause .= "AND receiver == '$user_id'";
}
if (!empty($_GET['check'])) {
// 人事發放作業,應為一個月內
if ($_GET['check'] == 4) {
$oneMonthAgo = date("Y-m-d", strtotime("$now +1 months"));
// $clause .= "AND pay_day_due >= '$now' AND pay_day_due <= '$oneMonthAgo' AND status IN (1,2,5)";
$clause .= "AND a.status IN (1,2,5)";
} else if ($_GET['check'] == 2) {
$clause .= "AND a.status = 1";
} else if ($_GET['check'] == 3) {
$clause .= "AND a.status IN (2,5)";
}
}
$sql = "SELECT a.*,b.customer FROM bonus AS a
LEFT JOIN con_maintance_examine_apply AS b ON a.contract_no = b.vol_no
WHERE 1=1 $clause AND a.contract_type = 1 ORDER BY a.id DESC";
$stmt = $conn->prepare($sql);
$stmt->execute();
$datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
$now = new DateTime();
$oneMonthAgo = $now->modify('+1 month');
$id = [];
foreach ($datas as $data) {
$id[] = $data['id'];
}
$id_str = implode(',', $id);
// 查看 T8 是否有收款明細
// require("./api/get.php");
function isPay($contract_no, $connT8)
{
// echo $contract_no;
$sql = "SELECT
a.BillNo,
b.OTaxAmt as amount,
a.CU_EstPayDate as createDate,
b.PersonId as personId,
c.BillNo as CBno,
c.CU_MaterialId as facility
FROM salIncomeApplyDetail as a
LEFT JOIN salIncomeApplyMaster as b ON a.BillNo = b.BillNo
LEFT JOIN (
SELECT aMaster.BillNo,aMaster.BizPartnerId,aDetail.CU_MaterialId FROM arCheckBill as aMaster
LEFT JOIN arCheckBillDetail as aDetail ON aMaster.BizPartnerId = aDetail.FromBillNo
WHERE aMaster.BizPartnerId = '$contract_no' AND aMaster.TypeId = 'RVS'
) AS c ON a.BillNo = c.BizPartnerId
WHERE a.BillNo = '$contract_no'
AND a.RowNo = '1'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_ASSOC);
// $data['amount'] = intval($data['amount']);
if (!empty($data['CBno']) && $data['CBno'] != '') {
$checkBillNo = $data['CBno'];
$sql = "SELECT
c.BillDate AS CheckBillDate
FROM arWriteOffBill AS a
LEFT JOIN arWriteOffBillRec AS b ON a.BillNo=b.BillNo
LEFT JOIN
(SELECT temp1.*,arWriteOffBillDetail.* FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBill.BillNo AS checkBillNo, arCheckBill.BillDate,arCheckBillInvInfo.InvoiceNo
FROM arCheckBill
LEFT JOIN arCheckBillInvInfo
ON arCheckBill.InvoiceBillNo=arCheckBillInvInfo.InvoiceBillNo) AS temp1
ON temp1.checkBillNo = arWriteOffBillDetail.FromBillNo) AS c
ON a.BillNo=c.BillNo
WHERE c.checkBillNo = '$checkBillNo'
";
$stmt = $connT8->prepare($sql);
$stmt->execute();
return '1';
} else {
return '2';
}
}
?>
<link rel="stylesheet" href="../contract-repair/styles/style.css">
<link rel="stylesheet" href="../contract-repair/semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="../contract-repair/js/alpinejs/cdn.min.js"></script>
<script src="../contract-repair/js/alpine.js"></script>
<script src="../contract-repair/js/axios/axios.min.js"></script>
<!-- <script src="../contract-repair/js/jquery/jquery-3.1.1.min.js"></script> -->
<script src="../contract-repair/semantic/dist/semantic.min.js"></script>
<div class="bonus_index" x-data="bonusIndexTest">
<div class="form" method="post" id="form" enctype="multipart/form-data">
<div style="overflow-x:auto;margin-top:12px">
<table class='table query-table table-striped table-bordered display compact' style='width:98%;text-align:center;margin:0 auto'>
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'>(契約)獎金計算</h3>
</td>
</tr>
</thead>
</table>
<!-- <a href="bonus_index1.php?function_name=bonus&token=<?php echo $token; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a> -->
<a href="/wms/bonus/new_bonus.php?function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (!isset($_GET['check'])) ? "btn btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 所有獎金</a>
<!-- <a href="/wms/bonus/bonus.php?check=1&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 1) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 應發獎金</a> -->
<a href="/wms/bonus/new_bonus.php?check=2&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 2) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 未發獎金</a>
<a href="/wms/bonus/new_bonus.php?check=3&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 3) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 已發獎金</a>
<a href="/wms/bonus/new_bonus.php?check=4&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 4) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 人事發放作業</a>
<a href="/wms/bonus/bonus_person.php?check=new&function_name=bonus&token=<?php echo $token; ?>" class=" btn <?php echo (isset($_GET['check']) && $_GET['check'] == 5) ? "btn-primary" : "btn-secondary"; ?> btn-sm categoryBtn"> 獎金總計(人)</a>
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<?php if (!empty($_GET['check']) && $_GET['check'] == '4') { ?>
<button class="btn btn-primary float-end" style="float: right;" onclick="All('<?= $id_str ?>')">鎖定並發放</button>
<?php } ?>
<thead>
<tr>
<th>項次</th>
<th>合約號</th>
<th>合約名稱</th>
<th>作番號</th>
<th>獎金類別</th>
<th>獎金版本</th>
<th>作番金額(月)</th>
<th>牌價</th>
<th>服務費</th>
<th>應發人員</th>
<th>應發獎金水庫</th>
<th>實發金額</th>
<th>狀態</th>
<?php
if (!empty($_GET['check']) && $_GET['check'] == '4') {
?>
<th>實際發放時間</th>
<th>發放 / 詳情</th>
<?php } else { ?>
<!-- <th>詳情</th> -->
<?php
} ?>
</tr>
</thead>
<tbody>
<?php if (!empty($datas)) {
foreach ($datas as $key => $data) :
$bonus_json = json_decode($data['bonus_json']);
$bonus_kind = !empty($bonus_json->bonus_kind) ? $bonus_json->bonus_kind : '';
$contract_no = $data['contract_no'];
$json = json_decode($data['bonus_json']);
$total = empty($json->total) ? 0 : $json->total;
$fee_per_st = empty($json->fee_per_st) ? 0 : $json->fee_per_st;
$commission_fee = empty($json->commission_fee) ? 0 : $json->commission_fee;
// $isPay = isPay($data['contract_no'], $connT8);
?>
<tr>
<td><?= $data['id'] ?></td>
<td><?= $data['contract_no'] ?></td>
<td><?= $data['customer'] ?></td>
<td><?= $data['facility_no'] ?></td>
<td><?php echo $bonus_type[$data['bonus_type']] . '-' . $bonus_kind ?></td>
<td><?= $data['bonus_verson'] ?></td>
<td><?= $fee_per_st ?></td>
<td><?= $total ?></td>
<td><?= $commission_fee ?></td>
<td><?= $data['receiver'] ?></td>
<td><?= $data['amount'] ?></td>
<td><?= $data['bonus_actual'] ?></td>
<td>
<?= $bonus_status[$data['status']] ?>
<!-- <span><?= ($isPay == 1) ? '已收款' : '未收款' ?></span> -->
</td>
<?php if (!empty($_GET['check']) && $_GET['check'] == '4') {
if ($data['status'] == '3' || $data['status'] == '1') { ?>
<td> -- </td>
<td>
<?php
// if ($isPay == 1) {
?>
<button onclick="issue(<?= $data['id'] ?>,'<?= $user_id ?>','<?= $data['pay_day_due'] ?>','<?= $data['amount'] ?>')" type="button" class="btn applybtn" name='issuePay'>發放獎金</button>
<?php
// } else if ($payday < $oneMonthAgo) {
?>
<a href="bonus_detail.php?id=<?= $data['id'] ?>&token=<?php echo $token; ?>" class="applybtncheck">查看詳情</a>
<?php
// }
?>
</td>
<!-- <td><input type="date" value="<?= $data['pay_day'] ?>"></td> -->
<?php } else { ?>
<td><?= $data['pay_day'] ?></td>
<td><a href="bonus_check.php?id=<?= $data['id'] ?>&token=<?php echo $token; ?>" class="applybtncheck">查看詳情</a></td>
<?php }
} else { ?>
<!-- <td><a href="bonus_check.php?id=<?= $data['id'] ?>&token=<?php echo $token; ?>" class="applybtncheck">查看詳情</a></td> -->
<?php } ?>
</tr>
<?php
endforeach;
} ?>
</tbody>
</table>
</div>
</div>
<!-- </div> -->
<style>
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap: break-word;
}
.width_st yle_1 {
width: 125px;
}
table {
width: 100%;
}
#table_index_filter {
float: right;
}
#table_index_paginate {
table-layout: fixed;
width: 100%;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
.applybtn {
color: #fff;
background-color: #1484c4;
/* display: block; */
border-radius: 5px;
/* padding: 5px 2px; */
font-size: 13px;
line-height: 1;
display: grid;
place-items: center;
/* 水平和垂直居中 */
/* height: 2%vh; */
/* 100%视窗高度,可根据需要调整 */
}
.applybtncheck {
color: #fff;
background-color: #eea236;
/* display: block; */
border-radius: 4px;
padding: 4px 2px;
font-size: 13px;
line-height: 1;
display: grid;
place-items: center;
/* 水平和垂直居中 */
height: 2%vh;
/* 100%视窗高度,可根据需要调整 */
}
.applybtncheck:hover {
background-color: #f0ad4e;
color: #fff;
}
.applybtn:hover {
background-color: #1494f9;
color: #fff;
}
</style>
<script>
const datas = <?php echo json_encode($datas); ?>;
function issue(id, user_id, pay_day, amount) {
// console.log(id);
const form = new FormData();
form.append('id', id)
form.append('user_id', user_id);
form.append('pay_day', pay_day)
form.append('amount', amount);
form.append('postType', 'a');
form.append('contract_type', 'new');
axios.post('./api/postStatus.php', form).then((res) => {
if (res.data == 'Success') {
alert('更新成功');
location.reload();
}
}).catch((err) => {
})
}
function All(data) {
let arr = data.split(",");
const form = new FormData();
form.append('id', arr);
form.append('user_id', '<?= $user_id ?>')
form.append('postType', 'd');
if (confirm('是否發放全部獎金')) {
axios.post('./api/postStatus.php', form).then((res) => {
if (res.status == 200) {
alert('更新成功');
location.reload();
}
}).catch((err) => {
});
}
}
// $(function() {
// $("button[name=issuePay]").click(function() {
// console.log(123);
// })
// })
// function init() {
// this.isPay();
// }
// const bonusIndex = () => {
// return {
// async isPay() {
// // console.log(123)
// for (let i = 0; i < datas.length; i++) {
// await axios.get('./api/get.php?contract_no=' + datas[i].contract_no).then(res => {
// let isPay = res.data;
// // this.data.isPay.push(isPay); // 更新 x-data 中的数据
// this.isPays.push(isPay);
// }).catch(err => {
// })
// }
// console.log(this.isPays);
// }
// }
// }
</script>

77
wms/bonus/other/maintenance_contract_bonus_v2_1.php

@ -43,9 +43,12 @@ result_array[
function 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 = '')
{
// $fee_per_st = round($fee_per_st);
$bonus_array = [];
if ($ver == "2.1") {
$discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2);
// $discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2);
$discount = ($fee_per_st - $commission_fee) / $elevator_list_price;
#契約總類($contract_type):新簽約(new)、免保轉有費(free_to_charge)、續簽約(原價或僅契約金額異動)(renew_priceissue)
switch ($contract_type) {
case "new":
@ -54,49 +57,49 @@ function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period,
switch ($discount) {
case ($discount >= 0.8):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.6;
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.6;
break;
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7;
case ($fee_per_st >= 3000 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st) * 0.7;
break;
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.8;
$sales_bonus = ($fee_per_st) * 0.8;
break;
case ($fee_per_st >= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.9;
$sales_bonus = ($fee_per_st) * 0.9;
break;
};
break;
case ($discount >= 0.6 and $discount < 0.8):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.48;
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.48;
break;
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.56;
case ($fee_per_st >= 3000 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st) * 0.56;
break;
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.64;
$sales_bonus = ($fee_per_st) * 0.64;
break;
case ($fee_per_st >= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.72;
$sales_bonus = ($fee_per_st) * 0.72;
break;
};
break;
case ($discount < 0.6):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.42;
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.42;
break;
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.49;
case ($fee_per_st >= 3000 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st) * 0.49;
break;
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.56;
$sales_bonus = ($fee_per_st) * 0.56;
break;
case ($fee_per_st >= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.63;
$sales_bonus = ($fee_per_st) * 0.63;
break;
};
break;
@ -110,17 +113,17 @@ function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period,
case "free_to_charge":
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3;
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.3;
break;
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35;
case ($fee_per_st >= 3000 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st) * 0.35;
break;
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4;
$sales_bonus = ($fee_per_st) * 0.4;
break;
case ($fee_per_st >= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.45;
$sales_bonus = ($fee_per_st) * 0.45;
break;
};
#地區處長獎金($region_director_bonus)
@ -131,17 +134,17 @@ function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period,
case "renew_priceissue":
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.25;
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.25;
break;
case ($fee_per_st >= 3001 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3;
case ($fee_per_st >= 3000 and $fee_per_st <= 3499):
$sales_bonus = ($fee_per_st) * 0.3;
break;
case ($fee_per_st >= 3500 and $fee_per_st <= 3999):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35;
$sales_bonus = ($fee_per_st) * 0.35;
break;
case ($fee_per_st >= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4;
$sales_bonus = ($fee_per_st) * 0.4;
break;
};
#地區處長獎金($region_director_bonus)
@ -226,7 +229,10 @@ function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period,
#2月1次
case "bimonthly":
$payment_ratio_due_array = array(0.166, 0.166, 0.166, 0.166, 0.166, 0.166);
$payment_ratio_due_array = array();
for ($i = 0; $i < 6; $i++) {
array_push($payment_ratio_due_array, 1 / 6);
}
$payday_due_array = array(1, 3, 5, 7, 9, 11);
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
@ -246,7 +252,12 @@ function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period,
#月付
case "monthly":
$payment_ratio_due_array = array(0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083, 0.083);
$payment_ratio_due_array = array();
// $payment_ratio_due_array = array();
for ($i = 0; $i < 12; $i++) {
array_push($payment_ratio_due_array, 1 / 12);
}
$payday_due_array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {

8
wms/bonus/other/maintenance_contract_bonus_v2_1_examination.php

@ -270,9 +270,9 @@ $examination_array = [
// echo '10、專任契約經理員工號($regular_contract_manger_id)</br>';
for ($i = 0; $i < count($examination_array); $i++) {
$fee_per_st = $examination_array[$i][3];
$commission_fee = $examination_array[$i][5];
$elevator_list_price = $examination_array[$i][4];
$fee_per_st = $examination_array[$i][4]; //作番金額
$commission_fee = $examination_array[$i][5]; // 服務費
$elevator_list_price = $examination_array[$i][3]; // 牌價
$discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2);
// echo "$fee_per_st - $commission_fee / $elevator_list_price ";
@ -314,7 +314,7 @@ for ($i = 0; $i < count($examination_array); $i++) {
];
echo "獎金版本:" . $result["ver"] . "<br>";
echo "計算結果:" . $result["result_status"] . "<br>";
echo "傳入參數說明:" . $contract_type[$examination_array[$i][1]] . "、" . $pay_kind[$examination_array[$i][2]] . "、牌價" . $examination_array[$i][3] . "元、簽約價" . $examination_array[$i][4] . "元、服務費600元(折扣率" . $discount . ")、契約人員 : " . $examination_array[$i][7] . "、區經理 : " . $examination_array[$i][8] . " 、契約經理 : " . $examination_array[$i][9] . "<br>";
echo "傳入參數說明:" . $contract_type[$examination_array[$i][1]] . "、" . $pay_kind[$examination_array[$i][2]] . "、牌價" . $examination_array[$i][3] . "元、簽約價" . $examination_array[$i][4] . "元、服務費" . $commission_fee . "元(折扣率" . $discount . ")、契約人員 : " . $examination_array[$i][7] . "、區經理 : " . $examination_array[$i][8] . " 、契約經理 : " . $examination_array[$i][9] . "<br>";
echo "輸入參數:" . $examination_array[$i][1] . " " . $examination_array[$i][2] . " " . $examination_array[$i][3] . " " . $examination_array[$i][4] . " "
. $examination_array[$i][5] . " " . $examination_array[$i][6] . " " . $examination_array[$i][7] . " " . $examination_array[$i][8] . " "
. $examination_array[$i][9] . "<br>";

81
wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1.php

@ -41,12 +41,13 @@ result_array[
function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id){
function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id)
{
$bonus_array = [];
if ($ver == "2.1"){
if ($ver == "2.1") {
$discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2);
#契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge)
switch ($contract_type){
switch ($contract_type) {
case "longcontract_m1_free_charge":
#契約員獎金($sales_bonus)
#合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59)
@ -54,57 +55,57 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract
case ($discount >= 0.8):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.6;
$sales_bonus = ($fee_per_st) * 0.6;
break;
case ($fee_per_st > 300 and $fee_per_st <= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7;
$sales_bonus = ($fee_per_st) * 0.7;
break;
case ($fee_per_st > 4000 and $fee_per_st <= 5000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.8;
$sales_bonus = ($fee_per_st) * 0.8;
break;
case ($fee_per_st > 5000 and $fee_per_st <= 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.9;
$sales_bonus = ($fee_per_st) * 0.9;
break;
case ($fee_per_st > 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 1.0;
$sales_bonus = ($fee_per_st) * 1.0;
break;
};
break;
case ($discount >= 0.6 and $discount < 0.8):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.42;
$sales_bonus = ($fee_per_st) * 0.42;
break;
case ($fee_per_st > 300 and $fee_per_st <= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.49;
$sales_bonus = ($fee_per_st) * 0.49;
break;
case ($fee_per_st > 4000 and $fee_per_st <= 5000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.56;
$sales_bonus = ($fee_per_st) * 0.56;
break;
case ($fee_per_st > 5000 and $fee_per_st <= 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.63;
$sales_bonus = ($fee_per_st) * 0.63;
break;
case ($fee_per_st > 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.7;
$sales_bonus = ($fee_per_st) * 0.7;
break;
};
break;
case ($discount < 0.6):
switch ($fee_per_st) {
case ($fee_per_st <= 3000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.3;
$sales_bonus = ($fee_per_st) * 0.3;
break;
case ($fee_per_st > 300 and $fee_per_st <= 4000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.35;
$sales_bonus = ($fee_per_st) * 0.35;
break;
case ($fee_per_st > 4000 and $fee_per_st <= 5000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.4;
$sales_bonus = ($fee_per_st) * 0.4;
break;
case ($fee_per_st > 5000 and $fee_per_st <= 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.45;
$sales_bonus = ($fee_per_st) * 0.45;
break;
case ($fee_per_st > 6000):
$sales_bonus = ($fee_per_st - $commission_fee) * 0.5;
$sales_bonus = ($fee_per_st) * 0.5;
break;
};
break;
@ -118,50 +119,50 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract
};
#地區處長獎金、專任契約經理、契約員獎金
switch ($payment_period_amount){
switch ($payment_period_amount) {
#簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金
#總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期,
case $payment_period_amount >= 60:
#地區處長獎金
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "地區處長獎金", #獎金名稱
"bonus_receiver" => $region_director_id, #發放人員
"bonus_amount" => round($region_director_bonus), #金額
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間
"bonus_regulation" => "訂金收回後次月發放" #發放規定
]);
#專任契約經理獎金
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "專任契約經理獎金", #獎金名稱
"bonus_receiver" => $regular_contract_manger_id, #發放人員
"bonus_amount" => round($regular_contract_manger_bonus), #金額
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +1 months")), #預計發放時間
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間
"bonus_regulation" => "訂金收回後次月發放" #發放規定
]);
#產生契約員每個月的獎金應發比例
$payment_ratio_due_array = array();
for ($i = 0; $i < $payment_period_amount; $i++) {
array_push($payment_ratio_due_array, 1/$payment_period_amount);
array_push($payment_ratio_due_array, 1 / $payment_period_amount);
}
$payday_due_array = array();
for ($i = 0; $i < $payment_period_amount; $i++) {
array_push($payday_due_array, $i+1 );
array_push($payday_due_array, $i + 1);
}
for($i = 0; $i < count($payment_ratio_due_array); $i++) {
if($i < count($payment_ratio_due_array) - 1){
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
}else{
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array,[
array_push($bonus_array, [
"bonus_type" => "契約員獎金", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d",strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定
]);
}
@ -169,13 +170,12 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract
}
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"success", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}else{
array_push($bonus_array,[
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱
"bonus_receiver" => "error", #發放人員
"bonus_amount" => 0, #金額
@ -183,14 +183,11 @@ function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract
"bonus_regulation" => "error" #發放規定
]);
$result_array = [
"ver"=>$ver, #獎金版本
"result_status"=>"error", #計算結果
"bonus_array"=>$bonus_array #獎金水庫
"ver" => $ver, #獎金版本
"result_status" => "error", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}
return $result_array;
};
?>

311
wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1_1.php

@ -0,0 +1,311 @@
<?php
/* 函數用法與參數
【1.輸入參數:】
獎金版本($ver):2.1
契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge)
作番契約金額($fee_per_st):3000元/月以下、3001-3499元/月、3500-3999元/月、4000元/月以上
牌價($elevator_list_price):該電梯的合約發佈(標準)價+Option價格+與其他電梯共同分擔的費用貨價格
該作番所佔的服務費金額($commission_fee)
合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) ; 契約折扣率=(簽約價格-服務費)/牌價
總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期,
付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually)
第一筆保養款項應收回日($receivable_date_due, array)
契約員員工號($sales_id)
地區處長員工號($region_director_id)
專任契約經理員工號($regular_contract_manger_id)
【2.函數中的變數說明】
契約員獎金($sales_bonus)
地區處長獎金($region_director_bonus)
專任契約經理獎金($regular_contract_manger_bonus)
獎金預計發放比例($payment_ratio_due_array)
當次應發獎金($current_bonus)
獎金預計發放日($payday_due_array)
獎金預計發放規定($payday_due_regulation):合約簽回及保養款項收回的次月一次性發
計算結果($result_status):success, error
獎金水庫(bonus_array)[
bonus_type:獎金名稱,
bonus_receiver:發放人員,
bonus_amount:金額,
pay_day_due:預計發放時間
bonus_regulation, 發放規定
]
【3.輸出數據】
result_array[
"ver"=>$ver, #獎金版本
"result_status"=>"success", #計算結果
"$bonus_array"=>$bonus_array #所有獎金水庫
];
*/
function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id = '')
{
$bonus_array = [];
if ($ver == "2.1") {
$discount = ($fee_per_st - $commission_fee) / $elevator_list_price;
#契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge)
switch ($contract_type) {
case "longcontract_m1_free_charge":
#契約員獎金($sales_bonus)
#合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59)
switch ($discount) {
case ($discount >= 0.8):
switch ($fee_per_st) {
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.6;
break;
case ($fee_per_st >= 3000 and $fee_per_st < 4000):
$sales_bonus = ($fee_per_st) * 0.7;
break;
case ($fee_per_st >= 4000 and $fee_per_st < 5000):
$sales_bonus = ($fee_per_st) * 0.8;
break;
case ($fee_per_st >= 5000 and $fee_per_st < 6000):
$sales_bonus = ($fee_per_st) * 0.9;
break;
case ($fee_per_st >= 6000):
$sales_bonus = ($fee_per_st) * 1.0;
break;
};
break;
case ($discount >= 0.6 and $discount < 0.8):
switch ($fee_per_st) {
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.42;
break;
case ($fee_per_st >= 3000 and $fee_per_st <= 4000):
$sales_bonus = ($fee_per_st) * 0.49;
break;
case ($fee_per_st >= 4000 and $fee_per_st < 5000):
$sales_bonus = ($fee_per_st) * 0.56;
break;
case ($fee_per_st >= 5000 and $fee_per_st < 6000):
$sales_bonus = ($fee_per_st) * 0.63;
break;
case ($fee_per_st >= 6000):
$sales_bonus = ($fee_per_st) * 0.7;
break;
};
break;
case ($discount < 0.6):
switch ($fee_per_st) {
case ($fee_per_st < 3000):
$sales_bonus = ($fee_per_st) * 0.3;
break;
case ($fee_per_st >= 3000 and $fee_per_st < 4000):
$sales_bonus = ($fee_per_st) * 0.35;
break;
case ($fee_per_st >= 4000 and $fee_per_st < 5000):
$sales_bonus = ($fee_per_st) * 0.4;
break;
case ($fee_per_st >= 5000 and $fee_per_st < 6000):
$sales_bonus = ($fee_per_st) * 0.45;
break;
case ($fee_per_st >= 6000):
$sales_bonus = ($fee_per_st) * 0.5;
break;
};
break;
};
#地區處長獎金($region_director_bonus)
$region_director_bonus = 170;
#專任契約經理獎金($regular_contract_manger_bonus)
$regular_contract_manger_bonus = 300;
break;
};
#付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually)
array_push($bonus_array, [
"bonus_type" => "2", #獎金名稱
"bonus_receiver" => $region_director_id, #發放人員
"bonus_amount" => round($region_director_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間
"bonus_regulation" => "訂金收回後次月發放" #發放規定
]);
#專任契約經理獎金
if ($regular_contract_manger_id != '') {
array_push($bonus_array, [
"bonus_type" => "3", #獎金名稱
"bonus_receiver" => $regular_contract_manger_id, #發放人員
"bonus_amount" => round($regular_contract_manger_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間
"bonus_regulation" => "訂金收回後次月發放" #發放規定
]);
}
#地區處長獎金、專任契約經理、契約員獎金
switch ($payment_period) {
#簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金
#總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期,
#年繳
case 'annually':
$payment_ratio_due_array = array();
$a = $payment_period_amount / 12;
for ($i = 0; $i < $a; $i++) {
array_push($payment_ratio_due_array, 1 / $a);
}
$payday_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payday_due_array, $i + 1);
}
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array, [
"bonus_type" => "1", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] year")), #預計發放時間
"bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定
]);
}
break;
#半年繳
case 'semiannually':
$payment_ratio_due_array = array();
$a = $payment_period_amount / 6;
for ($i = 0; $i < $a; $i++) {
array_push($payment_ratio_due_array, 1 / $a);
}
$payday_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payday_due_array, ($i + 1) * 6);
}
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array, [
"bonus_type" => "1", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定
]);
}
break;
#季繳
case 'quarterly':
$a = $payment_period_amount / 3;
$payment_ratio_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payment_ratio_due_array, 1 / $a);
}
$payday_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payday_due_array, ($i + 1) * 4);
}
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array, [
"bonus_type" => "1", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定
]);
}
break;
#雙月繳
case 'bimonthly':
$a = $payment_period_amount / 2;
$payment_ratio_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payment_ratio_due_array, 1 / $a);
}
$payday_due_array = array();
for ($i = 0; $i < $a; $i++) {
array_push($payday_due_array, ($i + 1) * 2);
}
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array, [
"bonus_type" => "1", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定
]);
}
break;
break;
#月繳
case 'monthly':
#產生契約員每個月的獎金應發比例
$payment_ratio_due_array = array();
for ($i = 0; $i < $payment_period_amount; $i++) {
array_push($payment_ratio_due_array, 1 / $payment_period_amount);
}
$payday_due_array = array();
for ($i = 0; $i < $payment_period_amount; $i++) {
array_push($payday_due_array, $i + 1);
}
for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
if ($i < count($payment_ratio_due_array) - 1) {
$current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
} else {
$current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
};
array_push($bonus_array, [
"bonus_type" => "1", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($current_bonus), #金額
"pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間
"bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定
]);
}
break;
}
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱
"bonus_receiver" => "error", #發放人員
"bonus_amount" => 0, #金額
"pay_day_due" => "9999-1-1", #預計發放時間
"bonus_regulation" => "error" #發放規定
]);
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "error", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}
return $result_array;
};

166
wms/bonus/other/maintenance_longterm_contract_m1_free_charge_bonus_v2_1_examination.php

@ -40,62 +40,150 @@ result_array[
*/
require_once("maintenance_longterm_contract_m1_free_charge_bonus_v2_1.php");
#$ver, $contract_type, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id
require_once("maintenance_longterm_contract_m1_free_charge_bonus_v2_1_1.php");
#獎金測試
$examination_array = [
#錯誤版本
["1.0","longcontract_m1_free_charge",60,0.8,4000,333, "2014-07-01", "M0001", "M0002", "M0003"],
// ["1.0", 'annually', "longcontract_m1_free_charge", 60, 0.8, 4000, 333, "2014-07-01", "M0001", "M0002", "M0003"],
#60期
["2.1","longcontract_m1_free_charge",60,3000,3000,600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費600元(折扣率0.8)
["2.1","longcontract_m1_free_charge",60,3000,4000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費1600元(折扣率0.8)
["2.1","longcontract_m1_free_charge",60,3000,5000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費2600元(折扣率0.8)
["2.1","longcontract_m1_free_charge",60,3000,6000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費3600元(折扣率0.8)
["2.1","longcontract_m1_free_charge",60,3000,7000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費4600元(折扣率0.8)
["2.1","longcontract_m1_free_charge",60,3000,3000,600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1200元(折扣率0.6)
["2.1","longcontract_m1_free_charge",60,3000,4000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2200元(折扣率0.6)
["2.1","longcontract_m1_free_charge",60,3000,5000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3200元(折扣率0.6)
["2.1","longcontract_m1_free_charge",60,3000,6000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4200元(折扣率0.6)
["2.1","longcontract_m1_free_charge",60,3000,7000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費5200元(折扣率0.6)
["2.1","longcontract_m1_free_charge",60,3000,3000,600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1230元(折扣率0.59)
["2.1","longcontract_m1_free_charge",60,3000,4000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2230元(折扣率0.59)
["2.1","longcontract_m1_free_charge",60,3000,5000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3230元(折扣率0.59)
["2.1","longcontract_m1_free_charge",60,3000,6000,1600,"2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4230元(折扣率0.59)
["2.1","longcontract_m1_free_charge",60,3000,7000,1600,"2014-07-01", "M0001", "M0002", "M0003"] #牌價3000、簽約價7000元、服務費5230元(折扣率0.59)
//付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually)
["2.1", "longcontract_m1_free_charge", 'annually', 60, 3000, 2999, 600, "2014-07-01", "M0001", "M0002"], #牌價3000、簽約價3000元、服務費600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'annually', 60, 3000, 3000, 600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'semiannually', 60, 3000, 4000, 1600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費1600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'quarterly', 60, 3000, 5000, 2600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費2600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'bimonthly', 60, 3000, 6000, 3600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費3600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'monthly', 60, 3000, 7000, 4600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費4600元(折扣率0.8)
["2.1", "longcontract_m1_free_charge", 'annually', 60, 3000, 2999, 1200, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1200元(折扣率0.6)
["2.1", "longcontract_m1_free_charge", 'semiannually', 60, 3000, 4000, 2200, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2200元(折扣率0.6)
["2.1", "longcontract_m1_free_charge", 'quarterly', 60, 3000, 5000, 3200, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3200元(折扣率0.6)
["2.1", "longcontract_m1_free_charge", 'bimonthly', 60, 3000, 6000, 4200, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4200元(折扣率0.6)
["2.1", "longcontract_m1_free_charge", 'monthly', 60, 3000, 7000, 5200, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費5200元(折扣率0.6)
["2.1", "longcontract_m1_free_charge", 'annually', 60, 3000, 2999, 1230, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1230元(折扣率0.59)
["2.1", "longcontract_m1_free_charge", 'annually', 60, 3000, 3000, 1230, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1230元(折扣率0.59)
["2.1", "longcontract_m1_free_charge", 'semiannually', 60, 3000, 4000, 2230, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2230元(折扣率0.59)
["2.1", "longcontract_m1_free_charge", 'quarterly', 60, 3000, 5000, 3230, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3230元(折扣率0.59)
["2.1", "longcontract_m1_free_charge", 'bimonthly', 60, 3000, 6000, 4230, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4230元(折扣率0.59)
["2.1", "longcontract_m1_free_charge", 'monthly', 60, 3000, 7000, 5230, "2014-07-01", "M0001", "M0002", "M0003"] #牌價3000、簽約價7000元、服務費5230元(折扣率0.59)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 3000, 600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費600元(折扣率0.8)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 4000, 1600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費1600元(折扣率0.8)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 5000, 2600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費2600元(折扣率0.8)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 6000, 3600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費3600元(折扣率0.8)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 7000, 4600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費4600元(折扣率0.8)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 3000, 600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1200元(折扣率0.6)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 4000, 1600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2200元(折扣率0.6)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 5000, 2600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3200元(折扣率0.6)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 6000, 3600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4200元(折扣率0.6)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 7000, 4600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價7000元、服務費5200元(折扣率0.6)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 3000, 600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價3000元、服務費1230元(折扣率0.59)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 4000, 1600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價4000元、服務費2230元(折扣率0.59)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 5000, 2600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價5000元、服務費3230元(折扣率0.59)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 6000, 3600, "2014-07-01", "M0001", "M0002", "M0003"], #牌價3000、簽約價6000元、服務費4230元(折扣率0.59)
// ["2.1", "longcontract_m1_free_charge", '', 60, 3000, 7000, 4600, "2014-07-01", "M0001", "M0002", "M0003"] #牌價3000、簽約價7000元、服務費5230元(折扣率0.59)
];
for($i = 0; $i<count($examination_array); $i++){
for ($i = 0; $i < count($examination_array); $i++) {
$ver = $examination_array[$i][0];
$contract_type = $examination_array[$i][1];
$payment_period = $examination_array[$i][2];
$payment_period_amount = $examination_array[$i][3];
$elevator_list_price = $examination_array[$i][4];
$fee_per_st = $examination_array[$i][5];
$commission_fee = $examination_array[$i][6];
$receivable_date_due = $examination_array[$i][7];
$sales_id = $examination_array[$i][8];
$region_director_id = $examination_array[$i][9];
$regular_contract_manger_id = empty($examination_array[$i][10]) ? '' : $examination_array[$i][10];
$a = $payment_period_amount / 12;
$sales_bonus = ($fee_per_st) * 0.6;
$bonus_array = [];
// $payment_ratio_due_array = array();
// for ($i = 0; $i < $a; $i++) {
// array_push($payment_ratio_due_array, 1 / $a);
// }
// $payday_due_array = array();
// for ($i = 0; $i < $a; $i++) {
// array_push($payday_due_array, $i + 1);
// }
// for ($i = 0; $i < count($payment_ratio_due_array); $i++) {
// if ($i < count($payment_ratio_due_array) - 1) {
// $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額
// } else {
// $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額
// };
// array_push($bonus_array, [
// "bonus_type" => "契約員獎金", #獎金名稱
// "bonus_receiver" => $sales_id, #發放人員
// "bonus_amount" => round($current_bonus), #金額
// "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] year")), #預計發放時間
// "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定
// ]);
// }
// echo '<pre>';
// print_r($bonus_array);
// echo '</pre>';
// exit();
$result = maintenance_longterm_contract_m1_free_charge_bonus_v2_1(
$examination_array[$i][0],
$examination_array[$i][1],
$examination_array[$i][2],
$examination_array[$i][3],
$examination_array[$i][4],
$examination_array[$i][5],
$examination_array[$i][6],
$examination_array[$i][7],
$examination_array[$i][8],
$examination_array[$i][9]
$ver,
$contract_type,
$payment_period,
$payment_period_amount,
$elevator_list_price,
$fee_per_st,
$commission_fee,
$receivable_date_due,
$sales_id,
$region_director_id,
$regular_contract_manger_id
);
$discount = (($fee_per_st - $commission_fee) / $elevator_list_price);
#新簽約、月繳、牌價3000、簽約價3000元、服務費600元(折扣率0.8)
$contract_type = [
'new' => '新簽約',
'free_to_charge' => '免保轉有費',
'renew_priceissue' => '續簽約(原價或僅契約金額異動)',
'longcontract_m1_free_charge' => '五年長約'
];
// 付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually)
$pay_kind = [
'monthly' => '月繳',
'bimonthly' => '雙月繳',
'quarterly' => '季繳',
'semiannually' => '半年繳',
'annually' => '年繳'
];
//
$bonus_type = [
'1' => '契約員獎金',
'2' => '區經理獎金',
'3' => '契約經理獎金'
];
echo "獎金版本:" . $result["ver"] . "<br>";
echo "計算結果:" . $result["result_status"] . "<br>";
echo "輸入參數:" . $examination_array[$i][1] . " " . $examination_array[$i][2] . " " . $examination_array[$i][3] . " " . $examination_array[$i][4] . " "
. $examination_array[$i][5] . " " . $examination_array[$i][6] . " " . $examination_array[$i][7]. " " . $examination_array[$i][8] . " "
echo "傳入參數說明:" . $contract_type[$examination_array[$i][1]] . "、" . $pay_kind[$payment_period] . "、牌價" . $elevator_list_price . "元、簽約價" . $fee_per_st . "元、服務費" . $commission_fee . "元(折扣率" . $discount . ")、契約人員 : " . $sales_id .
"、區經理 : " . $region_director_id . " 、契約經理 : " . $regular_contract_manger_id . "<br>";
echo "輸入參數:" . $examination_array[$i][1] . " " . $examination_array[$i][2] . " " . $examination_array[$i][4] . " "
. $examination_array[$i][5] . " " . $examination_array[$i][6] . " " . $examination_array[$i][7] . " " . $examination_array[$i][8] . " "
. $examination_array[$i][9] . "<br>";
for($j = 0; $j<count($result["bonus_array"]); $j++){
$n = 0;
for ($j = 0; $j < count($result["bonus_array"]); $j++) {
if ($result["bonus_array"][$j]["bonus_receiver"] == "M0001") {
$n++;
echo '[' . $n . ']';
}
echo "輸出結果:" . $result["bonus_array"][$j]["bonus_type"] . " " . $result["bonus_array"][$j]["bonus_receiver"] . " "
. $result["bonus_array"][$j]["bonus_amount"] . " " . $result["bonus_array"][$j]["pay_day_due"] . " "
. $result["bonus_array"][$j]["bonus_regulation"] . "<br>";
};
echo "-------------------------" . "<br>";
};
?>

44
wms/cont/api/getElevatorPrice.php

@ -0,0 +1,44 @@
<?php
require_once "../../mkt/conn.php";
$spec = $_GET['spec'];
$person = $_GET['person'];
$stop = $_GET['stop'];
$weight = $_GET['weight'];
$speed = $_GET['speed'];
$m1 = $_GET['m1'];
$method = $_GET['method'];
$cycle = $_GET['cycle'];
if($spec == "MAE100"){
$elevator_type = "A";
}elseif($spec == "MAF100"){
$elevator_type = "B";
}elseif($spec == "MAM200"){
$elevator_type = "D";
}elseif($spec == "MAH100"){
$elevator_type = "E";
}
$sql_str = "SELECT * FROM maintain_standard_option WHERE elevator_type=:elevator_type AND min_speed = :min_speed AND min_persons <= :person AND max_persons >= :person AND is_m1_bundle=:m1 ORDER bY id DESC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':elevator_type', $elevator_type);
$stmt->bindParam(':min_speed', $speed);
$stmt->bindParam(':person', $person);
$stmt->bindParam(':m1', $m1);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if(!$result){
echo 0;
exit;
}
$differ = $stop > $result['max_floors'] ? $result['max_floors'] - $result['min_floors'] : ($stop - $result['min_floors']);
$price = $result['base_price'] + $differ * $result['floors_price'] +$result['m1_bundle_fee'];
if($cycle == 2){
$price += $price * $result['maintenance_fee_coefficient'];
}
if($method == "A"){
$price += $result['all_inclusive_fee'];
}
echo $price;

0
wms/cont/api/postElevatorPricereview.php

333
wms/cont/css/pricereview.css

@ -0,0 +1,333 @@
@charset "UTF-8";
#pricereviewCreate input[type=text], #pricereviewCreate input[type=number], #pricereviewCreate select {
margin: 1px;
}
#pricereviewCreate textarea {
resize: vertical;
}
#pricereviewCreate select {
-webkit-appearance: none; /* 針對 Chrome, Safari, Opera */
-moz-appearance: none; /* 針對 Firefox */
appearance: none; /* 標準語法 */
}
#pricereviewCreate > .modal {
padding: 20px;
}
#pricereviewCreate > .modal table, #pricereviewCreate > .modal th, #pricereviewCreate > .modal td {
border: 1px #ccc solid;
}
#pricereviewCreate > .modal table > thead tr th {
color: #A52A2A;
}
#pricereviewCreate > .modal table > tbody .selected {
background-color: #E7FEFB;
}
#pricereviewCreate .container table, #pricereviewCreate .container th, #pricereviewCreate .container td {
border: 1px #ccc solid;
padding: 9px;
}
#pricereviewCreate .container table.noborder, #pricereviewCreate .container table .noborder th, #pricereviewCreate .container table .noborder td, #pricereviewCreate .container th.noborder, #pricereviewCreate .container th .noborder th, #pricereviewCreate .container th .noborder td, #pricereviewCreate .container td.noborder, #pricereviewCreate .container td .noborder th, #pricereviewCreate .container td .noborder td {
border: none;
}
#pricereviewCreate .container table thead th {
background-color: #6D9EEB;
}
#pricereviewCreate .container table tbody td input {
font-size: 14px;
}
#pricereviewCreate .container table tbody th {
background-color: #CCE4F8;
font-size: 14px;
padding: 15px 2px;
min-width: 100px;
text-align: center;
}
#pricereviewCreate .container table input {
font-size: 13px;
}
#pricereviewCreate .container .pricreviewmain {
background-color: #F2F2F2;
padding: 20px;
border-radius: 6px;
margin: 30px 0;
}
#pricereviewCreate .container .pricreviewmain button {
color: #fff;
width: 55px;
height: 30px;
padding: 0;
margin-left: 6px;
margin-bottom: 2px;
font-size: 13px;
}
#pricereviewCreate .container .pricreviewmain button.addbtn {
background-color: #337AB7;
width: 30px;
}
#pricereviewCreate .container .pricreviewmain button.deleteBtn {
background-color: #D9534F;
color: #fff;
font-size: 12px;
width: 30px;
}
#pricereviewCreate .container .pricreviewmain button.selectElevator {
background-color: #D9534F;
color: #fff;
}
#pricereviewCreate .container .pricreviewmain > .divitem {
border: 1px #ccc solid;
padding: 10px;
border-radius: 4px;
}
#pricereviewCreate .container .pricreviewmain > .divitem .title {
display: flex;
align-items: center;
border-bottom: 1px #ccc solid;
padding: 10px 0;
margin-bottom: 10px;
}
#pricereviewCreate .container .pricreviewmain > .divitem .title h6 {
font-weight: 600;
}
#pricereviewCreate .container .pricreviewmain > .divitem table, #pricereviewCreate .container .pricreviewmain > .divitem th, #pricereviewCreate .container .pricreviewmain > .divitem td {
font-size: 14px;
background-color: transparent;
}
#pricereviewCreate .container .pricreviewmain > .divitem table input, #pricereviewCreate .container .pricreviewmain > .divitem table select, #pricereviewCreate .container .pricreviewmain > .divitem th input, #pricereviewCreate .container .pricreviewmain > .divitem th select, #pricereviewCreate .container .pricreviewmain > .divitem td input, #pricereviewCreate .container .pricreviewmain > .divitem td select {
font-size: 13px;
padding: 0 13px;
}
#pricereviewCreate .container .pricreviewmain > .divitem table textarea, #pricereviewCreate .container .pricreviewmain > .divitem th textarea, #pricereviewCreate .container .pricreviewmain > .divitem td textarea {
font-size: 13px;
}
#pricereviewCreate .container .pricreviewmain > .divitem table input[type=number]::-webkit-outer-spin-button,
#pricereviewCreate .container .pricreviewmain > .divitem table input[type=number]::-webkit-inner-spin-button, #pricereviewCreate .container .pricreviewmain > .divitem th input[type=number]::-webkit-outer-spin-button,
#pricereviewCreate .container .pricreviewmain > .divitem th input[type=number]::-webkit-inner-spin-button, #pricereviewCreate .container .pricreviewmain > .divitem td input[type=number]::-webkit-outer-spin-button,
#pricereviewCreate .container .pricreviewmain > .divitem td input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
#pricereviewCreate .container .pricreviewmain > .divitem table tr:hover .deleteBtn, #pricereviewCreate .container .pricreviewmain > .divitem table tr:hover .copyBtn {
opacity: 1;
}
#pricereviewCreate .container .pricreviewmain > .divitem table .copyBtn {
height: 30px;
}
#pricereviewCreate .container .pricreviewmain > .divitem table .saletd {
position: relative;
}
#pricereviewCreate .container .pricreviewmain > .divitem table .saletd > .deleteBtn {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 2px;
opacity: 0;
transition: 0.3s;
}
#pricereviewCreate .container .pricreviewmain > .divitem table .saletd > .copyBtn {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 38px;
opacity: 0;
transition: 0.3s;
width: 30px;
height: 30px;
}
#pricereviewCreate .container .pricreviewmain > .divitem table textarea {
height: auto;
min-height: 50px;
}
#pricereviewCreate .container .pricreviewmain > .filediv {
display: flex;
flex-direction: column;
margin-top: 20px;
}
#pricereviewCreate .container .pricreviewmain > .filediv label {
display: flex;
align-items: center;
margin: 10px 0;
}
#pricereviewCreate .container .pricreviewmain > .filediv label p {
width: 100px;
font-size: 15px;
font-weight: 600;
}
#pricereviewCreate .container .pricreviewmain > .filediv label input[type=file] {
width: 400px;
}
#pricereviewCreate .container .pricreviewmain > .filediv label a, #pricereviewCreate .container .pricreviewmain > .filediv label button {
width: 100px;
height: 35px;
margin: 0;
margin-right: 15px;
margin-top: 20px;
}
#pricereviewCreate .dark {
background-color: rgb(225, 225, 225) !important;
font-weight: 600;
}
.container-fluid, .container {
max-width: 1400px !important;
width: 100%;
}
.container-fluid h4, .container h4 {
font-weight: 600;
}
.container-fluid .btn-secondary, .container .btn-secondary {
background-color: #6C757D;
}
[x-cloak][data-type=window-modal],
[x-cloak][data-type=errortext] {
display: none !important;
}
.errortext {
font-size: 12px !important;
color: red !important;
font-weight: 600 !important;
}
.window-modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9;
padding: 20px;
}
@keyframes fade-in {
0% {
transform: translate(-50%, -60%);
opacity: 0;
}
100% {
transform: translate(-50%, -55%);
opacity: 1;
}
}
.window-modal table, .window-modal th, .window-modal td {
border: 1px #ccc solid;
}
.window-modal table > thead tr th {
color: #A52A2A;
}
.window-modal table > tbody .selected {
background-color: #E7FEFB;
}
.window-modal#optionModal .window-modal-content {
max-height: 80vh;
}
.window-modal#optionModal .window-modal-content .window-modal-body {
height: 400px;
overflow-y: scroll;
}
.window-modal#toElevatorModal .window-modal-content {
min-height: 270px;
height: auto;
}
.window-modal#toElevatorModal .window-modal-content .window-modal-body {
height: auto;
}
.window-modal .window-modal-content {
z-index: 9;
background-color: #fff;
border-radius: 10px;
position: absolute;
width: 90%;
padding: 30px;
top: 50%;
left: 50%;
transform: translate(-50%, -55%);
box-shadow: 0 5px 5px #222;
animation: fade-in 0.2s linear;
}
.window-modal .window-modal-content.modal-xl {
max-width: 1200px;
}
.window-modal .window-modal-content.modal-lg {
max-width: 800px;
}
.window-modal .window-modal-content.modal-m {
max-width: 450px;
}
.window-modal .window-modal-content .window-modal-header {
display: flex;
flex-direction: column;
}
.window-modal .window-modal-content .window-modal-header button.btn-close {
position: absolute;
top: 10px;
right: 10px;
background-color: transparent;
border: none;
outline: none;
border-radius: 50%;
}
.window-modal .window-modal-content .window-modal-header > div > input {
width: 250px;
}
.window-modal .window-modal-content input[type=number]::-webkit-outer-spin-button,
.window-modal .window-modal-content input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.window-modal .window-back {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: transparent;
}
#pricereviewCheck > .container {
background-color: #F2F2F2;
border-radius: 15px;
padding: 20px;
}
#pricereviewCheck > .container .historytable {
max-height: 0;
overflow: hidden;
}
#pricereviewCheck > .container textarea {
resize: vertical;
}
#pricereviewCheck > .container table, #pricereviewCheck > .container th, #pricereviewCheck > .container td {
border: 1px #ccc solid;
}
#pricereviewCheck > .container table.noborder {
border: none !important;
}
#pricereviewCheck > .container table.noborder th, #pricereviewCheck > .container table.noborder td {
border: none !important;
}
#pricereviewCheck > .container .customerinfo-table input {
background-color: #EEE5E5;
}
#pricereviewCheck > .container .mi-table th {
font-weight: 600;
}
#pricereviewCheck > .container .mi-table input[type=text] {
background-color: #EEEEEE;
cursor: not-allowed;
padding: 6px 12px;
font-size: 14px;
}
#pricereviewCheck > .container .mi-table .mi-info {
font-size: 14px;
}
#pricereviewCheck > .container .mi-table .mi-info span {
font-size: 15px;
font-weight: 600;
}
#pricereviewCheck > .container .mi-table .mi-info .line {
width: 100%;
height: 0.5px;
margin: 30px 0;
background-color: #ccc;
}/*# sourceMappingURL=pricereview.css.map */

1
wms/cont/css/pricereview.css.map

@ -0,0 +1 @@
{"version":3,"sources":["pricereview.css","pricereview.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACEZ;EACI,WAAA;ADAR;ACEI;EACI,gBAAA;ADAR;ACEI;EACI,wBAAA,EAAA,6BAAA;EACA,qBAAA,EAAA,eAAA;EACA,gBAAA,EAAA,SAAA;ADAR;ACEI;EACI,aAAA;ADAR;ACCQ;EACI,sBAAA;ADCZ;ACCQ;EACI,cAAA;ADCZ;ACCQ;EACI,yBAAA;ADCZ;ACKQ;EACI,sBAAA;EACA,YAAA;ADHZ;ACIY;EACI,YAAA;ADFhB;ACOY;EACI,yBAAA;ADLhB;ACQgB;EACI,eAAA;ADNpB;ACQgB;EACI,yBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;ADNpB;ACSY;EACI,eAAA;ADPhB;ACUQ;EACI,yBAAA;EACA,aAAA;EACA,kBAAA;EACA,cAAA;ADRZ;ACSY;EACI,WAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;ADPhB;ACQgB;EACI,yBAAA;EACA,WAAA;ADNpB;ACQgB;EACI,yBAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;ADNpB;ACQgB;EACI,yBAAA;EACA,WAAA;ADNpB;ACUY;EACI,sBAAA;EACA,aAAA;EACA,kBAAA;ADRhB;ACSgB;EACI,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,eAAA;EACA,mBAAA;ADPpB;ACQoB;EACI,gBAAA;ADNxB;ACUgB;EACI,eAAA;EACA,6BAAA;ADRpB;ACSoB;EACI,eAAA;EACA,eAAA;ADPxB;ACSoB;EACI,eAAA;ADPxB;ACSoB;;;;EAEA,wBAAA;EACA,SAAA;ADLpB;ACSoB;EACI,UAAA;ADPxB;ACSoB;EACI,YAAA;ADPxB;ACSoB;EACI,kBAAA;ADPxB;ACQwB;EACI,kBAAA;EACA,QAAA;EACA,2BAAA;EACA,UAAA;EACA,UAAA;EACA,gBAAA;ADN5B;ACQwB;EACI,kBAAA;EACA,QAAA;EACA,2BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;ADN5B;ACSoB;EACI,YAAA;EACA,gBAAA;ADPxB;ACWY;EACI,aAAA;EACA,sBAAA;EACA,gBAAA;ADThB;ACUgB;EACI,aAAA;EACA,mBAAA;EACA,cAAA;ADRpB;ACSoB;EACI,YAAA;EACA,eAAA;EACA,gBAAA;ADPxB;ACSoB;EACI,YAAA;ADPxB;ACSoB;EACI,YAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;EACA,gBAAA;ADPxB;ACaI;EACI,+CAAA;EACA,gBAAA;ADXR;;ACeA;EACI,4BAAA;EACA,WAAA;ADZJ;ACaI;EACI,gBAAA;ADXR;ACaI;EACI,yBAAA;ADXR;;ACcA;;EAGI,wBAAA;ADZJ;;ACcA;EACI,0BAAA;EACA,qBAAA;EACA,2BAAA;ADXJ;;ACaA;EACI,eAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,aAAA;EACA,oCAAA;EACA,UAAA;EACA,aAAA;ADVJ;ACYI;EACI;IACI,gCAAA;IACA,UAAA;EDVV;ECYM;IACI,gCAAA;IACA,UAAA;EDVV;AACF;ACYI;EACI,sBAAA;ADVR;ACYI;EACI,cAAA;ADVR;ACYI;EACI,yBAAA;ADVR;ACYI;EACI,gBAAA;ADVR;ACWQ;EACI,aAAA;EACA,kBAAA;ADTZ;ACYI;EACI,iBAAA;EACA,YAAA;ADVR;ACWQ;EACI,YAAA;ADTZ;ACYI;EACI,UAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,UAAA;EACA,aAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,0BAAA;EACA,8BAAA;ADVR;ACWQ;EACI,iBAAA;ADTZ;ACWQ;EACI,gBAAA;ADTZ;ACWQ;EACI,gBAAA;ADTZ;ACWQ;EACI,aAAA;EACA,sBAAA;ADTZ;ACUY;EACI,kBAAA;EACA,SAAA;EACA,WAAA;EACA,6BAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;ADRhB;ACUY;EACI,YAAA;ADRhB;ACWQ;;EAEI,wBAAA;EACA,SAAA;ADTZ;ACYI;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,6BAAA;ADVR;;ACeI;EACI,yBAAA;EACA,mBAAA;EACA,aAAA;ADZR;ACaQ;EACI,aAAA;EACA,gBAAA;ADXZ;ACaQ;EACI,gBAAA;ADXZ;ACaQ;EACI,sBAAA;ADXZ;ACaQ;EACI,uBAAA;ADXZ;ACYY;EACI,uBAAA;ADVhB;ACcY;EACI,yBAAA;ADZhB;ACgBY;EACI,gBAAA;ADdhB;ACgBY;EACI,yBAAA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;ADdhB;ACgBY;EACI,eAAA;ADdhB;ACegB;EACI,eAAA;EACA,gBAAA;ADbpB;ACegB;EACI,WAAA;EACA,aAAA;EACA,cAAA;EACA,sBAAA;ADbpB","file":"pricereview.css"}

352
wms/cont/css/pricereview.scss

@ -0,0 +1,352 @@
#pricereviewCreate{
input[type='text'], input[type='number'], select{
margin: 1px;
}
textarea{
resize: vertical;
}
select{
-webkit-appearance: none; /* 針對 Chrome, Safari, Opera */
-moz-appearance: none; /* 針對 Firefox */
appearance: none; /* 標準語法 */
}
>.modal{
padding: 20px;
table, th, td{
border:1px #ccc solid;
}
table > thead tr th{
color:#A52A2A;
}
table > tbody .selected{
background-color: #E7FEFB;
}
table > tbody .selected td{
}
}
.container{
table, th, td{
border:1px #ccc solid;
padding: 9px;
&.noborder, .noborder th, .noborder td{
border:none;
}
}
table{
thead th{
background-color: #6D9EEB;
}
tbody {
td input{
font-size: 14px;
}
th{
background-color: #CCE4F8;
font-size: 14px;
padding: 15px 2px;
min-width: 100px;
text-align: center;
}
}
input{
font-size: 13px;
}
}
.pricreviewmain{
background-color: #F2F2F2;
padding: 20px;
border-radius: 6px ;
margin:30px 0;
button{
color:#fff;
width: 55px;
height: 30px;
padding: 0;
margin-left: 6px;
margin-bottom: 2px;
font-size: 13px;
&.addbtn{
background-color: #337AB7;
width: 30px;
}
&.deleteBtn{
background-color: #D9534F;
color:#fff;
font-size: 12px;
width: 30px;
}
&.selectElevator{
background-color: #D9534F;
color:#fff;
}
}
>.divitem{
border:1px #ccc solid;
padding: 10px;
border-radius: 4px ;
.title{
display: flex;
align-items: center;
border-bottom: 1px #ccc solid;
padding: 10px 0;
margin-bottom: 10px;
h6{
font-weight: 600;
}
}
table, th, td{
font-size: 14px;
background-color: transparent;
input, select{
font-size: 13px;
padding: 0 13px;
}
textarea{
font-size: 13px;
}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
table {
tr:hover .deleteBtn ,tr:hover .copyBtn{
opacity: 1;
}
.copyBtn{
height: 30px;
}
.saletd{
position: relative;
>.deleteBtn{
position: absolute;
top: 50%;
transform: translateY(-50%);
right:2px;
opacity: 0;
transition: .3s;
}
>.copyBtn{
position: absolute;
top: 50%;
transform: translateY(-50%);
right:38px;
opacity: 0;
transition: .3s;
width: 30px;
height: 30px;
}
}
textarea{
height: auto;
min-height: 50px;
}
}
}
>.filediv{
display: flex;
flex-direction: column;
margin-top: 20px;
label{
display: flex;
align-items: center;
margin:10px 0;
p{
width:100px;
font-size: 15px;
font-weight: 600;
}
input[type="file"]{
width:400px
}
a, button{
width:100px;
height: 35px;
margin:0;
margin-right: 15px;
margin-top: 20px;
}
}
}
}
}
.dark{
background-color: rgba(225,225,225,1) !important;
font-weight: 600;
}
}
.container-fluid, .container{
max-width:1400px !important;
width: 100%;
h4{
font-weight: 600;
}
.btn-secondary{
background-color: #6C757D;
}
}
[x-cloak][data-type="window-modal"],
[x-cloak][data-type="errortext"]
{
display: none !important;
}
.errortext{
font-size:12px !important;
color:red !important;
font-weight:600 !important;
}
.window-modal{
position: fixed;
top: 0;
left:0;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9;
padding: 20px;
// display: none;
@keyframes fade-in {
0%{
transform: translate(-50%, -60%);
opacity: 0;
}
100%{
transform: translate(-50%, -55%);
opacity: 1;
}
}
table, th, td{
border:1px #ccc solid;
}
table > thead tr th{
color:#A52A2A;
}
table > tbody .selected{
background-color: #E7FEFB;
}
&#optionModal .window-modal-content{
max-height: 80vh;
.window-modal-body{
height: 400px;
overflow-y: scroll;
}
}
&#toElevatorModal .window-modal-content{
min-height: 270px;
height: auto;
.window-modal-body{
height: auto;
}
}
.window-modal-content{
z-index: 9;
background-color: #fff;
border-radius: 10px;
position: absolute;
width:90%;
padding: 30px;
top: 50%;
left:50%;
transform: translate(-50%, -55%);
box-shadow: 0 5px 5px #222;
animation: fade-in .2s linear;
&.modal-xl{
max-width:1200px;
}
&.modal-lg{
max-width:800px;
}
&.modal-m{
max-width:450px;
}
.window-modal-header{
display: flex;
flex-direction: column;
button.btn-close{
position: absolute;
top: 10px;
right:10px;
background-color: transparent;
border:none;
outline: none;
border-radius: 50%;
}
>div > input{
width: 250px;
}
}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
.window-back{
position: absolute;
top: 0;
left:0;
width: 100%;
height: 100%;
background-color: transparent;
}
}
#pricereviewCheck{
>.container{
background-color: #F2F2F2;
border-radius: 15px;
padding: 20px;
.historytable{
max-height: 0;
overflow: hidden;
}
textarea{
resize: vertical;
}
table, th, td{
border:1px #ccc solid;
}
table.noborder{
border:none !important;
th ,td{
border:none !important;
}
}
.customerinfo-table{
input{
background-color: #EEE5E5;
}
}
.mi-table{
th{
font-weight: 600;
}
input[type=text]{
background-color: #EEEEEE;
cursor: not-allowed;
padding: 6px 12px;
font-size: 14px;
}
.mi-info{
font-size: 14px;
span{
font-size: 15px;
font-weight: 600;
}
.line{
width: 100%;
height: .5px;
margin:30px 0;
background-color: #ccc;
}
}
}
}
}

5
wms/cont/js/alpinejs/cdn.min.js

File diff suppressed because one or more lines are too long

338
wms/cont/js/pricereviewAlpine.js

@ -0,0 +1,338 @@
const pricereviewCreate = ()=>{
return {
init(){
console.log(123);
},
modalShow:{
elevator: false,
other:false,
otherToElevator:false,
},
vol_no: vol_no,
apply_key: apply_key,
customer:customer,
manager:manager,
salesman:salesman,
salesman_name:salesman_name,
pre_order_date:pre_order_date,
address:address,
progress_status:progress_status,
total_spec:0,
elevators:[],
case_name:'', //案件名稱
contract_status:'', // 契約性質
pay_method:'', // 付款方式
startDate:'', //合約開始日期
endDate:'', // 合約結束日期
modalElevatorInfo:{
spec:'',
person:'',
weight:'',
stop:'',
speed:'',
permitNumber:'', //許可證號碼
brand:'', //品牌
m1:'N', //贈送M1
months:'', // 保養月數
cycle:'', // 保養週期
method:'', //保養方式
checkYear:'', //竣工檢查年度
lastDate:'', // 上次年檢日期
yearCheckFee:'', //年檢費用
price:'', //公司發布價(月)
qty:1, //電梯數量
sale_price:'', //契約報價
},
otherOptions: [],
modalOtherOptionInfo:{
pr_no:"",
name:"",
price: 0,
num:"",
},
otherOptionKey:0,
currentOtherOptionKey:'',
toElevators:[],
toElevatorNo:'',
serviceFee:0,
remark:'',
penalty:'',
deposit_rate:'',
keep_rate:'',
warranty_rate:'',
openCreateElevatorModal(){
this.modalShow.elevator = true;
body.style.overflow = 'hidden';
},
hideCreateElevatorModal(){
this.modalShow.elevator = false;
body.style.overflow = 'auto';
this.modalElevatorInfo = {
spec:'',
person:'',
weight:'',
stop:'',
speed:'',
permitNumber:'', //許可證號碼
brand:'', //品牌
m1:'N', //贈送M1
months:'', // 保養月數
cycle:'', // 保養週期
method:'', //保養方式
checkYear:'', //竣工檢查年度
lastDate:'', // 上次年檢日期
yearCheckFee:'', //年檢費用
price:'', //公司發布價(月)
qty:1, //電梯數量
sale_price:'', //契約報價
};
},
createElevatorFn(){
// if(this.modalElevatorInfo.spec == '') return alert("請選擇電梯規格");
// if(this.modalElevatorInfo.person == '') return alert("請選擇人乘");
// if(this.modalElevatorInfo.weight == '') return alert("請輸入載重");
// if(this.modalElevatorInfo.stop == '') return alert("請輸入停數");
// if(this.modalElevatorInfo.speed == '') return alert("請選擇速度");
// if(this.modalElevatorInfo.brand == '') return alert("請選擇品牌");
// if(this.modalElevatorInfo.months == '') return alert("請輸入保養月數");
// if(this.modalElevatorInfo.method == '') return alert("請選擇保養方式");
// if(this.modalElevatorInfo.cycle == '') return alert("請選擇保養週期");
// if(this.modalElevatorInfo.checkYear == '') return alert("請輸入竣工檢查年度");
// if(this.modalElevatorInfo.price == '') return alert("請選擇正確規格");
// if(this.modalElevatorInfo.sale_price == '') return alert("請輸入契約報價");
this.total_spec ++;
this.elevators.push({
id: this.total_spec,
spec: this.modalElevatorInfo.spec,
person: this.modalElevatorInfo.person,
weight: this.modalElevatorInfo.weight,
stop: this.modalElevatorInfo.stop,
speed: this.modalElevatorInfo.speed,
permitNumber: this.modalElevatorInfo.permitNumber,
brand: this.modalElevatorInfo.brand,
m1: this.modalElevatorInfo.m1,
months:this.modalElevatorInfo.months, // 保養月數
cycle: this.modalElevatorInfo.cycle,
method:this.modalElevatorInfo.method, // 保養方法
checkYear: this.modalElevatorInfo.checkYear,
lastDate: this.modalElevatorInfo.lastDate,
yearCheckFee: this.modalElevatorInfo.yearCheckFee,
price: this.modalElevatorInfo.price,
qty: this.modalElevatorInfo.qty,
sale_price: this.modalElevatorInfo.sale_price
})
this.hideCreateElevatorModal();
},
copyElevator(idx){
const spec = this.elevators[idx].spec;
const person = this.elevators[idx].person;
const stop = this.elevators[idx].stop;
const weight = this.elevators[idx].weight
const speed = this.elevators[idx].speed;
const brand = this.elevators[idx].brand;
const m1 = this.elevators[idx].m1;
const months = this.elevators[idx].months;
const method = this.elevators[idx].method;
const cycle = this.elevators[idx].cycle;
const checkYear = this.elevators[idx].checkYear;
const lastDate = this.elevators[idx].lastDate;
const yearCheckFee = this.elevators[idx].yearCheckFee;
const price = this.elevators[idx].price;
const qty = this.elevators[idx].qty;
const sale_price = this.elevators[idx].sale_price;
this.total_spec ++;
this.elevators.push({
id: this.total_spec,
spec: spec,
person: person,
stop: stop,
weight:weight,
speed: speed,
permitNumber: '',
brand: brand,
m1: m1,
months: months,
method: method,
cycle: cycle,
checkYear: checkYear,
lastDate: lastDate,
yearCheckFee: yearCheckFee,
price: price,
qty: qty,
sale_price: sale_price
})
},
removeElevator(id){
if(!confirm('確定刪除該電梯?')) return;
this.elevators = this.elevators.filter(elevator=> elevator.id != id)
},
openCreateOtherOptionFn(){
this.modalShow.other = true
body.style.overflow = 'hidden'
},
createOtherOptionFn(){
this.otherOptionKey ++;
this.otherOptions.push({
id: this.otherOptionKey,
pr_no: this.modalOtherOptionInfo.pr_no,
name: this.modalOtherOptionInfo.name,
price: this.modalOtherOptionInfo.price,
num: this.modalOtherOptionInfo.num,
toElevator:[],
})
this.modalOtherOptionInfo = {
pr_no: '',
name: '',
price: 0,
num: '',
}
this.hideCreateOtherOptionModal();
},
hideCreateOtherOptionModal(){
this.modalShow.other = false
// this.$refs.createOtherOptionModal.style.display = 'none';
body.style.overflow = 'auto'
},
addOtherOptionToElevator(id){
this.currentOtherOptionKey = id;
this.toElevators = [];
this.toElevatorNo = "";
const matchElevators = this.otherOptions.filter(option=> option.id == id)[0].toElevator.map(elevator=> elevator.id)
this.toElevatorNo = matchElevators[0]
console.log(this.elevators);
this.elevators.forEach(elevator=>{
if(elevator.price > 0){
let model = ''
model = elevator.spec
this.toElevators.push({
id: elevator.id,
model: model,
checked: matchElevators.includes(elevator.id) ? 1: 0,
})
}
})
this.modalShow.otherToElevator = true
body.style.overflow = 'hidden'
},
hideToOtherOptionElevatorModal(){
this.modalShow.otherToElevator = false
body.style.overflow = 'auto'
},
copyOtherOption(id){
this.otherOptionKey++;
const copyOption = this.otherOptions.filter(option=> option.id === id)[0]
console.log(copyOption);
this.otherOptions.push({
id: this.otherOptionKey,
name: copyOption.name,
price: copyOption.price,
num: copyOption.num,
toElevator: [],
pr_no: copyOption.pr_no
})
console.log(this.otherOptions);
},
chkOtherOptionToElevators(){
const checkedOptions = [];
const matchElevators = this.elevators.filter(elevator=> elevator.id == this.toElevatorNo)[0]
console.log(matchElevators);
checkedOptions.push({
id: this.toElevatorNo,
model: matchElevators['spec'],
})
this.otherOptions.forEach(option=>{
if(option.id == this.currentOtherOptionKey){
option.toElevator = [];
option.toElevator.push(...checkedOptions)
}
})
console.log(this.otherOptions);
this.currentOtherOptionKey = ''
this.hideToOtherOptionElevatorModal();
},
removeOtherOption(id){
this.otherOptions = this.otherOptions.filter(option=> option.id != id)
},
get totalPrice(){
let total_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.price*el.months), 0);
let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0);
return total_price + total_other_price;
},
get totalSalePrice(){
let total_sale_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.sale_price*el.months), 0);
return total_sale_price + Number(this.serviceFee);
},
get totalElevatorsNum(){
let total_num = this.elevators.reduce((accumulator, el) => accumulator + Number(el.qty), 0);
return total_num;
},
get totalOtherOptionsNum(){
let total_other_num = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.num), 0);
return total_other_num;
},
get totalOtherOptionsPrice(){
let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0);
return total_other_price;
},
async getModalElevatorPrice(){
const spec = this.modalElevatorInfo.spec
const person = this.modalElevatorInfo.person
const stop = this.modalElevatorInfo.stop
const weight = this.modalElevatorInfo.weight
const speed = this.modalElevatorInfo.speed
const m1 = this.modalElevatorInfo.m1
const method = this.modalElevatorInfo.method
const cycle = this.modalElevatorInfo.cycle
try{
const res = await axios.get('./api/getElevatorPrice.php', {params: {spec: spec, person:person, weight: weight, stop: stop, speed: speed, m1: m1, method: method, cycle:cycle}})
this.modalElevatorInfo.price = res.data;
console.log(res.data);
}catch (error) {
console.error("Error message:", error);
}
},
save(){
const form = new FormData();
form.append('vol_no', this.vol_no);
form.append('apply_key', this.apply_key);
form.append('customer', this.customer);
form.append('address', this.address);
form.append('case_name', this.case_name);
form.append('brand', this.brand);
form.append('num', this.totalElevatorsNum);
form.append('salesman', this.salesman);
form.append('contract_begin_date', this.startDate);
form.append('contract_end_date', this.endDate);
form.append('contract_kind', this.contract_status);
form.append('progress_status', this.progress_status);
form.append('serviceFee', this.serviceFee);
form.append('penalty', this.penalty);
form.append('deposit_rate', this.deposit_rate);
form.append('keep_rate', this.keep_rate);
form.append('warranty_rate', this.warranty_rate);
form.append('remark', this.remark);
form.append('creater', this.user_id);
form.append('pay_method', this.pay_method);
form.append('status', 'Y1');
form.append('elevators', JSON.stringify(this.elevators));
form.append('otherOptions', JSON.stringify(this.otherOptions));
axios.post('./api/postElevatorPricereview.php', form).then(res=>{
console.log(res.data);
if(res.data == 'success'){
alert("保存成功!");
window.location.reload();
}
})
},
submit(){
},
}
}

4
wms/cont/pricereviewCheck.php

@ -0,0 +1,4 @@
<?php
include_once "../header.php";
require_once('../mkt/conn.php');

485
wms/cont/pricereviewCreate.php

@ -0,0 +1,485 @@
<?php
include_once "../header.php";
require_once "../mkt/conn.php";
if(!(isset($_GET['vol_no']) && $_GET['vol_no'] != "")){
echo "<script>alert('非法訪問!');window.history.go(-1);</script>";
}
$vol_no = $_GET['vol_no'];
$sql_str = "SELECT * FROM hope_contract_customer WHERE vol_no = :vol_no";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $vol_no);
$stmt->execute();
$hope_customer = $stmt->fetch(PDO::FETCH_ASSOC);
$apply_key = getApplyKey(date('ym'), 'cmea_apply_key');
echo $apply_key;
function getApplyKey($p_yyyymm, $seq_name){
if (empty($p_yyyymm) || empty($seq_name)) return null;
global $conn;
$sql_str = "SELECT yyyymm, prefix FROM sequence WHERE seq_name = :seq_name";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':seq_name', $seq_name);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$yyyymm = $result['yyyymm'];
$prefix = $result['prefix'];
if ($p_yyyymm != $yyyymm) {
$sql_str = "UPDATE sequence SET yyyymm = :p_yyyymm, current_val = '10000' WHERE seq_name = :seq_name";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':p_yyyymm', $p_yyyymm);
$stmt->bindParam(':seq_name', $seq_name);
$stmt->execute();
}
$sql_str = "SELECT CONCAT(:prefix, :p_yyyymm, SUBSTRING(appwms.nextval(:seq_name), 2)) AS seq_no";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':prefix', $prefix);
$stmt->bindParam(':p_yyyymm', $p_yyyymm);
$stmt->bindParam(':seq_name', $seq_name);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$seq_no = $result['seq_no'];
return $seq_no;
}
?>
<link rel="stylesheet" href="./css/pricereview.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.5.0/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/pricereviewAlpine.js"></script>
<div id="pricereviewCreate" x-data=pricereviewCreate()>
<?php
include_once "./window-modal/modalElevaotr.php";
include_once "./window-modal/otherOptionModal.php";
include_once "./window-modal/otherToElevatorModal.php";
?>
<div class="container">
<table class="table" border="1">
<thead >
<tr class="" >
<th scope="col" class="text-center " colspan="8">有望客戶(契約)基本資料</th>
</tr>
</thead>
<tbody>
<tr>
<th>價審單號</th>
<td><input class="form-control" type="text" disabled x-model="apply_key" /></td>
<th>卷號</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['vol_no']; ?>" /></td>
<th>現場名稱</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['customer']; ?>" /></td>
<th>現場地址</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['address']; ?>" /></td>
</tr>
<tr>
<th>電梯品牌</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['brand']; ?>" /></td>
<th>電梯數量</th>
<td><input class="form-control" type="number" disabled value="<?php echo $hope_customer['num']; ?>" /></td>
<th>營業員</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['salesman_name']; ?>" /></td>
<th>當前契約期限結束</th>
<td><input class="form-control" type="date" disabled value="" /></td>
</tr>
</tbody>
</table>
<table class="table" border="1">
<thead >
<tr class="" >
<th scope="col" class="text-center " colspan="10">價格審查(契約)基本資料</th>
</tr>
</thead>
<tbody>
<tr>
<th>契約性質</th>
<td>
<select class="form-control" x-model="contract_status">
<option value="">請選擇</option>
<option value="1">新簽約</option>
<option value="2">免保轉有費</option>
<option value="3">續約</option>
</select>
</td>
<th>付款方式</th>
<td>
<select class="form-control" x-model="pay_method" >
<option value="">請選擇</option>
<option value="A40003">月繳</option>
<option value="A40004">雙月繳</option>
<option value="A40007">季繳</option>
<option value="A40005">半年繳</option>
<option value="A40006">年繳</option>
</select>
</td>
<th>案件名稱</th>
<td><input class="form-control" type="text" x-model="case_name" /></td>
<th>合約開始日期</th>
<td><input type="date" class="form-control" x-model="startDate" /></td>
<th>合約結束日期</th>
<td><input type="date" class="form-control" x-model="endDate" /></td>
</tr>
</tbody>
</table>
<table class="table" border="1">
<thead >
<tr class="" >
<th scope="col" class="text-center " colspan="8">洽商進度</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan=8>
<textarea class="form-control" name="progress" id="progress" cols="20" rows="5" disabled ><?php echo nl2br($hope_customer['progress_status']); ?></textarea>
</td>
</tr>
</tbody>
</table>
<table class="table" border="1">
<thead >
<tr class="" >
<th scope="col" class="text-center " colspan="8">電梯詳細資料</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan=8>
<textarea class="form-control" name="progress" id="progress" cols="20" rows="6" disabled>注意事項:
1.速度單位是 米/分.
2.標準價格未帶出,請聯係業務部建立該規格報價.
3.無機房速度20~60米 以60米為標準.
</textarea>
</td>
</tr>
</tbody>
</table>
<div class="pricreviewmain container">
<div class="divitem">
<div class="title">
<h4>整機單價</h4>
<button class="addbtn btn" x-ref="addElevatorBtn" @click="openCreateElevatorModal()" >+</button>
</div>
<table class="table" border=1>
<template x-for="(elevator, idx) in elevators" :key="elevator.id">
<tbody>
<tr class="dark" >
<th colspan=1>項次</th>
<th colspan=7 style="text-align: left; padding-left: 15px;" x-text="elevator.id"></th>
<th colspan="2" >
<button class="copyBtn btn btn-secondary" @click="copyElevator(idx)">複製</button>
<button class="btn btn-danger" @click="removeElevator(elevator.id)">刪除</button>
</th>
</tr>
<tr>
<th >電梯</th>
<td>
<select class="form-control" x-model="elevator.spec">
<option value="">請選擇</option>
<option value="MAE100">MAE100有機房</option>
<option value="MAM200">MAM200無機房</option>
<option value="MAH100">MAH100小電梯</option>
<option value="MAF100">MAF100貨梯(有機房)</option>
<option value="MAQ100">MAQ100強趨梯</option>
<option value="MAP100">MAP100平台梯</option>
</select>
</td>
<th>載重(KG)</th>
<td>
<input type="number" class="form-control" x-model="elevator.weight" />
</td>
<th>停數</th>
<td>
<input type="number" class="form-control" x-model="elevator.stop" />
</td>
<th>速度(m/min)</th>
<td>
<select name="" id="" class="form-control" style="width:93px" x-model="elevator.speed" @change="getElevatorPrice()" >
<option value="">請選擇</option>
<option value="9">9</option>
<option value="24">24</option>
<option value="30">30</option>
<option value="45">45</option>
<option value="60">60</option>
<option value="90">90</option>
<option value="105">105</option>
<option value="120">120</option>
<option value="150">150</option>
</select>
</td>
<th>人乘</th>
<td>
<select class="form-control" x-model="elevator.person">
<option value="">請選擇</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="15">15</option>
<option value="17">17</option>
<option value="20">20</option>
<option value="24">24</option>
</select>
</td>
</tr>
<tr>
<th>電梯許可證號碼</th>
<td colspan=3>
<input type="text" class="form-control" x-model="elevator.permitNumber" />
</td>
<th>品牌</th>
<td>
<select class="form-control" x-model="elevator.brand">
<option value="">請選擇</option>
<option value='永大'>永大</option>
<option value='三菱'>三菱</option>
<option value='崇友'>崇友</option>
<option value='Otis'>Otis</option>
<option value='櫻花'>櫻花</option>
<option value='立路'>立路</option>
<option value='富士達'>富士達</option>
<option value='富士'>富士</option>
<option value='測試品牌'>測試品牌</option>
<option value='sanyo'>sanyo</option>
<option value='測試品牌2'>測試品牌2</option>
<option value='測試品牌4'>測試品牌4</option>
<option value='中升'>中升</option>
<option value='長合'>長合</option>
<option value='宏偉電機工業股份有限公司'>宏偉電機工業股份有限公司</option>
<option value='保速達'>保速達</option>
<option value='東棋'>東棋</option>
<option value='安達'>安達</option>
<option value='百朝'>百朝</option>
<option value='太友'>太友</option>
<option value='永佳捷'>永佳捷</option>
<option value='永勝'>永勝</option>
<option value='其他'>其他</option>
</select>
</td>
<th>竣工檢查年度(民國)</th>
<td>
<input type="number" class="form-control" x-model="elevator.checkYear" />
</td>
<th>上次年檢日期</th>
<td>
<input type="date" class="form-control" x-model="elevator.lastDate" />
</td>
</tr>
<tr>
<th>年檢費用(元)</th>
<td>
<input type="number" class="form-control" x-model="elevator.yearCheckFee" />
</td>
<th>電梯數量</th>
<td>
<input type="number" class="form-control" x-model="elevator.qty" disabled />
</td>
<th>保養週期</th>
<td>
<select name="" id="" class="form-control" x-model="elevator.cycle">
<option value="">請選擇</option>
<option value="1">月保</option>
<option value="2">月保兩次</option>
<option value="3">雙月保</option>
<option value="4">季保</option>
</select>
</td>
<th>保養方式</th>
<td>
<select class="form-control" x-model="elevator.method">
<option value="">請選擇</option>
<option value="A">全包</option>
<option value="B">半包</option>
<option value="C">清包</option>
</select>
</td>
<th>贈送M1</th>
<td>
<select class="form-control" x-model="elevator.m1">
<option value="N"></option>
<option value="Y"></option>
</select>
</td>
</tr>
<tr>
<th>公司發布價(月)</th>
<td>
<input type="text" class="form-control" disabled x-model="elevator.price.toLocaleString()" />
</td>
<th>保養月數</th>
<td>
<input type="number" class="form-control" x-model="elevator.months" />
</td>
<th>公司發布價(總價)</th>
<td>
<input type="text" class="form-control" disabled x-model="(elevator.price * elevator.months).toLocaleString()" />
</td>
<th>契約報價(月)</th>
<td>
<input type="number" class="form-control" x-model="elevator.sale_price" />
</td>
<th>契約報價(總價)</th>
<td>
<input type="text" class="form-control" disabled x-model="(elevator.sale_price * elevator.months).toLocaleString()" />
</td>
</tr>
</tbody>
</template>
</table>
</div>
<div class="divitem">
<div class="title">
<h4>除外項目</h4>
<button class="addbtn btn" @click="openCreateOtherOptionFn()" >+</button>
</div>
<table class="table" border=1>
<thead x-show="otherOptions.length > 0">
<tr>
<td>詢價單號</td>
<td>名稱</td>
<td>單價</td>
<td>數量</td>
<td>複價</td>
<td style="width:160px">所屬電梯</td>
<td style="width:220px">功能</td>
</tr>
</thead>
<tbody>
<template x-for="option in otherOptions">
<tr>
<td><input type="text" class="form-control" x-model="option.pr_no"></td>
<td>
<input type="text" class="form-control" x-model="option.name">
<span x-show="option.name==''" class="errortext" x-cloak data-type="errortext">請輸入除外項目名稱</span>
</td>
<td><input type="text" class="form-control" x-model="option.price"></td>
<td>
<input type="number" class="form-control" x-model="option.num">
<span x-show="!option.num || option.num <= 0 || !Number.isInteger(Number(option.num))" class="errortext" x-cloak data-type="errortext">請輸入正整數</span>
</td>
<td><input type="text" class="form-control" x-model="(option.price * option.num).toLocaleString()" disabled></td>
<td>
<template x-for="el in option.toElevator">
<p x-html="'<b>' + el.id + '</b>、' + el.model"></p>
</template>
<span x-show="option.toElevator.length <=0" class="errortext" x-cloak data-type="errortext">尚未選擇電梯</span>
</td>
<td>
<div class="d-flex">
<button class="copyBtn btn btn-secondary" @click="copyOtherOption(option.id)">複製</button>
<button class="selectElevator btn btn-danger" @click="addOtherOptionToElevator(option.id)">電梯</button>
<button class="deleteBtn btn btn-danger" @click="removeOtherOption(option.id)">X</button>
</div>
</td>
</tr>
</template>
<tr x-show="otherOptions.length > 0">
<td colspan=3>小計</td>
<td colspan=1 ><input type="number" class="form-control" disabled :value="totalOtherOptionsNum.toLocaleString()" ></td>
<td colspan=1 ><input type="text" class="form-control" disabled :value="totalOtherOptionsPrice.toLocaleString()" ></td>
<td colspan=3 ></td>
</tr>
</tbody>
</table>
</div>
<div class="divitem" style="margin-top:20px">
<table style="width:800px" class="table noborder" >
<tbody>
<tr>
<th>標準價總額(A)</th>
<th>報價總額(B)</th>
<th>破價總額(B-A)</th>
<th>價率%(B/A)</th>
<th>總台數</th>
<th>服務費(介紹費)</th>
</tr>
<tr>
<td><input type="text" class="form-control" x-model="totalPrice.toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="totalSalePrice.toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="(totalSalePrice - totalPrice).toLocaleString()" disabled style="width:180px" /></td>
<td>
<input type="text" class="form-control" x-show="totalPrice!=0" x-model="Math.round(totalSalePrice / totalPrice * 100* 10) /10 + '%'" disabled />
<input type="text" class="form-control" x-show="totalPrice==0" value="0" disabled />
</td>
<td><input type="text" class="form-control" x-model="totalElevatorsNum" disabled /></td>
<td><input type="text" class="form-control" x-model="serviceFee" style="width:150px" /></td>
</tr>
<tr>
<th>罰則</th>
<th>訂金保證金(函)%</th>
<th>履約保證金(函)%</th>
<th>保固保證金(函)%</th>
<th></th>
<th></th>
</tr>
<tr>
<td><input type="text" class="form-control" x-model="penalty" /></td>
<td><input type="text" class="form-control" x-model="deposit_rate" /></td>
<td><input type="text" class="form-control" x-model="keep_rate" /></td>
<td><input type="text" class="form-control" x-model="warranty_rate" /></td>
<td></td>
<td></td>
</tr>
<tr>
<th colspan="6">特記事項</th>
</tr>
<tr>
<td colspan="6">
<textarea class="form-control" id="" cols="30" rows="5" x-model="remark"></textarea>
</td>
</tr>
</tbody>
</table>
</div>
<div class="filediv">
<label style="font-size:13px">▪️ 營業權限85%以上;85-80%呈至區處長審核;80%以下呈至總經理審核。</label>
<label for="">
<p style="width:120px">報價單</p>
<input type="file" class="form-control" multiple draggable="true" @change="uploadFiles($event, 1)" />
</label>
<label for="">
<p style="width:120px">合約用印申請表</p>
<input type="file" class="form-control" multiple draggable="true" @change="uploadFiles($event, 2)" />
</label>
<label for="">
<?php if(!empty($main) && $main['attatch1'] != null): ?>
<a class="btn btn-primary" href="<?php echo $main['attatch1']; ?>" download="<?php echo $main['contractno']; ?>報價單">下載報價單</a>
<?php endif; ?>
<?php if(!empty($main) && $main['attatch2'] != null): ?>
<a class="btn btn-primary" href="<?php echo $main['attatch2']; ?>" download="<?php echo $main['contractno']; ?>附表一">下載附表一</a>
<?php endif; ?>
<button class="btn btn-primary" @click="save()">保存</button>
<button class="btn btn-primary" @click="submit()">送審</button>
</label>
</div>
</div>
</div>
</div>
<script>
const body = document.querySelector('body');
const vol_no = '<?php echo $hope_customer['vol_no']; ?>';
const apply_key = '<?php echo $apply_key; ?>';
const customer = '<?php echo $hope_customer['customer']; ?>';
const manager = '<?php echo $hope_customer['manager']; ?>';
const salesman = '<?php echo $hope_customer['salesman'] ?>';
const salesman_name = '<?php echo $hope_customer['salesman_name'] ?>';
const pre_order_date = '<?php echo $hope_customer['pre_order_date']; ?>';
const address = '<?php echo $hope_customer['address']; ?>';
const brand = '<?php echo $hope_customer['brand']; ?>';
const progress_status = '<?php echo $hope_customer['progress_status']; ?>';
const user_id = '<?php echo $user_id ?>';
const user_name = '<?php echo $user_name ?>';
</script>

179
wms/cont/window-modal/modalElevaotr.php

@ -0,0 +1,179 @@
<div class="window-modal" x-cloak data-type="window-modal" x-show="modalShow.elevator" x-ref="createElevatorModal" id="createElevatorModal">
<div class="window-modal-content modal-xl">
<div class="window-modal-header">
<h4>新增電梯規格</h4>
<button class="btn btn-close" @click="hideCreateElevatorModal()">X</button>
</div>
<div class="window-modal-body">
<div>
<table class="table">
<tr class="table-active">
<th>電梯</th>
<th>人乘</th>
<th>載重(KG)</th>
<th>停數</th>
</tr>
<tr>
<td>
<select class="form-control" x-model="modalElevatorInfo.spec" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="MAE100">MAE100有機房</option>
<option value="MAM200">MAM200無機房</option>
<option value="MAH100">MAH100小電梯</option>
<option value="MAF100">MAF100貨梯(有機房)</option>
</select>
</td>
<td>
<select name="" id="" class="form-control" x-model="modalElevatorInfo.person" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="15">15</option>
<option value="17">17</option>
<option value="20">20</option>
<option value="24">24</option>
</select>
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.weight" @change="getModalElevatorPrice()" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.stop" @change="getModalElevatorPrice()" />
</td>
</tr>
<tr class="table-active">
<th>速度</th>
<th>電梯數量</th>
<th>品牌</th>
<th>贈送M1</th>
</tr>
<tr>
<td>
<select name="" id="" class="form-control" x-model="modalElevatorInfo.speed" @change="getModalElevatorPrice()" @change="getModalElevatorPrice()" >
<option value="">請選擇</option>
<option value="9">9</option>
<option value="24">24</option>
<option value="30">30</option>
<option value="45">45</option>
<option value="60">60</option>
<option value="90">90</option>
<option value="105">105</option>
<option value="120">120</option>
<option value="150">150</option>
</select>
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.qty" disabled />
</td>
<td>
<select class="form-control" x-model="modalElevatorInfo.brand">
<option value="">請選擇</option>
<option value='永大'>永大</option>
<option value='三菱'>三菱</option>
<option value='崇友'>崇友</option>
<option value='Otis'>Otis</option>
<option value='櫻花'>櫻花</option>
<option value='立路'>立路</option>
<option value='富士達'>富士達</option>
<option value='富士'>富士</option>
<option value='測試品牌'>測試品牌</option>
<option value='sanyo'>sanyo</option>
<option value='測試品牌2'>測試品牌2</option>
<option value='測試品牌4'>測試品牌4</option>
<option value='中升'>中升</option>
<option value='長合'>長合</option>
<option value='宏偉電機工業股份有限公司'>宏偉電機工業股份有限公司</option>
<option value='保速達'>保速達</option>
<option value='東棋'>東棋</option>
<option value='安達'>安達</option>
<option value='百朝'>百朝</option>
<option value='太友'>太友</option>
<option value='永佳捷'>永佳捷</option>
<option value='永勝'>永勝</option>
<option value='其他'>其他</option>
</select>
</td>
<td>
<select class="form-control" x-model="modalElevatorInfo.m1" @change="getModalElevatorPrice()">
<option value="N"></option>
<option value="Y"></option>
</select>
</td>
</tr>
<tr class="table-active">
<th colspan=2>電梯許可證號</th>
<th colspan=2>保養方式</th>
</tr>
<tr class="table-active">
<td colspan=2><input type="number" class="form-control" x-model="modalElevatorInfo.permitNumber" /></td>
<td colspan=2>
<select class="form-control" x-model="modalElevatorInfo.method" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="A">全包</option>
<option value="B">半包</option>
<option value="C">清包</option>
</select>
</td>
</tr>
<tr class="table-active">
<th>保養週期</th>
<th>竣工檢查年度</th>
<th>上次年檢日期</th>
<th>年檢費用(元)</th>
</tr>
<tr>
<td>
<select name="" id="" class="form-control" x-model="modalElevatorInfo.cycle" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="1">月保</option>
<option value="2">月保兩次</option>
<option value="3">雙月保</option>
<option value="4">季保</option>
</select>
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.checkYear" />
</td>
<td>
<input type="date" class="form-control" x-model="modalElevatorInfo.lastDate" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.yearCheckFee" />
</td>
</tr>
<tr class="table-active">
<th>公司發布價(月)</th>
<th>保養月數</th>
<th>契約報價(月)</th>
<th>契約報價總額</th>
</tr>
<tr>
<td>
<input type="text" class="form-control" disabled x-model="modalElevatorInfo.price.toLocaleString()" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.months" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.sale_price" />
</td>
<td>
<input type="text" class="form-control" disabled x-model="(modalElevatorInfo.sale_price * modalElevatorInfo.months).toLocaleString()" />
</td>
</tr>
</table>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideCreateElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="createElevatorFn()">新增</button>
</div>
</div>
<div class="window-back" @click="hideCreateElevatorModal()"></div>
</div>

33
wms/cont/window-modal/otherOptionModal.php

@ -0,0 +1,33 @@
<div class="window-modal" x-cloak data-type="window-modal" x-show="modalShow.other" x-ref="createOtherOptionModal" id="createOtherOptionModal">
<div class="window-modal-content modal-xl">
<div class="window-modal-header">
<h4>新增除外項目</h4>
<button class="btn btn-close" @click="hideCreateOtherOptionModal()">X</button>
</div>
<div class="window-modal-body">
<div>
<table class="table">
<tr class="table-active">
<th>詢價單號</th>
<th>項目名稱</th>
<th>單價</th>
<th>數量</th>
<th>複價</th>
</tr>
<tr>
<td><input type="text" class="form-control" x-model="modalOtherOptionInfo.pr_no"></td>
<td><input type="text" class="form-control" x-model="modalOtherOptionInfo.name"></td>
<td><input type="number" class="form-control" x-model="modalOtherOptionInfo.price"></td>
<td><input type="number" class="form-control" x-model="modalOtherOptionInfo.num"></td>
<td><input type="text" disabled class="form-control" x-model="(modalOtherOptionInfo.price * modalOtherOptionInfo.num).toLocaleString()"></td>
</tr>
</table>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideCreateOtherOptionModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="createOtherOptionFn()">新增</button>
</div>
</div>
<div class="window-back" @click="hideCreateOtherOptionModal()"></div>
</div>

36
wms/cont/window-modal/otherToElevatorModal.php

@ -0,0 +1,36 @@
<div class="window-modal" x-cloak data-type="window-modal" x-show="modalShow.otherToElevator" x-ref="toOtherOptionElevatorModal" id="toOtherOptionElevatorModal">
<div class="window-modal-content modal-m">
<div class="window-modal-header">
<h4>配對電梯</h4>
<button class="btn btn-close" @click="hideToOtherOptionElevatorModal()">X</button>
</div>
<div class="window-modal-body">
<div>
<table class="table">
<tr>
<th>項次</th>
<th>規格</th>
<th>選擇</th>
</tr>
<template x-for="elevator in toElevators" :key="elevator.id">
<tr>
<td x-text="elevator.id"></td>
<td x-text="elevator.model"></td>
<td><input type="radio" name="otherOptionToElevator" :value="elevator.id" class="form-check-input" x-model="toElevatorNo" /></td>
</tr>
</template>
<tr x-show="toElevators.length == 0">
<td colspan="3">
<small class="text-danger" style="font-size:13px;font-weight:600">暫無可選電梯,請先新增電梯規格!</small>
</td>
</tr>
</table>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideToOtherOptionElevatorModal()">關閉</button>
<button type="button" x-show="toElevators.length > 0" class="btn btn-primary" @click="chkOtherOptionToElevators()">確認</button>
</div>
</div>
<div class="window-back" @click="hideToOtherOptionElevatorModal()"></div>
</div>

11
wms/contract/api/T8salIncomeApply.php → wms/contract/api/T8api.php

@ -1,17 +1,18 @@
<?php
require_once("../../T8_Authorization_from_bpm.php");
function T8API($data)
function T8salIncomeApply($data, $api_url)
{
$api_url = 'https://erp.masada.com.tw:780/twWebAPI/V1/SALINCOMEAPPLY/PostERPData';
// $api_url = 'https://erp.masada.com.tw:780/twWebAPI/V1/SALINCOMEAPPLY/PostERPData';
$validation = get_Auth();
echo '<pre>';
print_r(json_encode($data));
print_r($validation);
echo '</pre>';
// exit;
$header = [
"CHI_Authorization :" . $validation,
"GroupId:TEST"
"GroupId:MASADA"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url); // 设置请求的URL
@ -19,7 +20,7 @@ function T8API($data)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1); // 使用 POST
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
$response = curl_exec($ch);
if ($response === false) {

144
wms/contract/api/getContractData.php

@ -1,5 +1,6 @@
<?php
require_once('../conn.php');
// 保養
if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['contracttype']) && $_GET['contracttype'] == 'b') {
try {
$contractno = $_GET['contractno'];
@ -43,6 +44,7 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
}
}
// 新梯
if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['contracttype']) && $_GET['contracttype'] == 'm') {
try {
$contractno = $_GET['contractno'];
@ -69,28 +71,152 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$elevators_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$elevators_detail_arr = [];
foreach ($results as $keys => $result) {
$contract_elevator_qty = 0;
$sql = "SELECT * FROM pricereview_pay WHERE mid = :mid";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$pay_amount = $stmt->fetchAll(PDO::FETCH_ASSOC);
$pay_arr = [
'equipment_total' => 0, //設備款
'install_total' => 0, //安裝款
'elevotor_pay_detail' => []
];
$elevotor_pay_detail = [];
foreach ($pay_amount as $i => $pay) {
if ($pay['pay_kind'] <= 4) {
// 設備款總價
$pay_arr['equipment_total'] += $pay['pay_amount'];
if ($pay['pay_scale'] > 0) {
$elevotor_pay_detail = [
'kind' => $pay['pay_kind'],
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'amount' => $pay['pay_amount']
];
// $elevotor_pay_detail['pay_scale'] = $pay['pay_scale'];
// $pay_arr['elevotor_pay_detail']['kind'] = $pay['pay_kind'];
// $pay_arr['elevotor_pay_detail']['pay_scale'] = $pay['pay_scale'];
// $pay_arr['elevotor_pay_detail']['pay_period'] = $pay['pay_period'];
// $pay_arr['elevotor_pay_detail']['amount'] = $pay['pay_amount'];
array_push($pay_arr['elevotor_pay_detail'], $elevotor_pay_detail);
}
} else {
$pay_arr['install_total'] += $pay['pay_amount'];
if ($pay['pay_scale'] > 0) {
$a = $pay['pay_kind'];
$elevotor_pay_detail = [
'kind' => "$a",
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'amount' => $pay['pay_amount']
];
array_push($pay_arr['elevotor_pay_detail'], $elevotor_pay_detail);
// $elevotor_pay_detail[] = $pay['pay_kind'];
// $pay_arr['elevotor_pay_detail']['kind'] = $pay['pay_kind'];
// $pay_arr['elevotor_pay_detail']['pay_scale'] = $pay['pay_scale'];
// $pay_arr['elevotor_pay_detail']['pay_period'] = $pay['pay_period'];
// $pay_arr['elevotor_pay_detail']['amount'] = $pay['pay_amount'];
}
}
}
// echo "<pre>";
// print_r($pay_arr);
// echo "</pre>";
foreach ($elevators_results as $keys) {
$contract_elevator_qty += $keys['item_qty'];
}
foreach ($elevators_results as $keys => $result) {
$item_no = $result['item_no']; //電梯項次
// 電梯 OPTION
$sql = "SELECT * FROM pricereview_item WHERE mid =:mid AND item_group ='B' AND option_relate_spec = :item_no";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':item_no', $item_no);
$stmt->execute();
$option_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$option_arr[] = $option_results;
// echo "<pre>";
// print_r($option_arr);
// echo "</pre>";
if (!empty($option_results)) {
$result['option_price'] = 0;
// 電梯 OPTION 價格分別加到各台電梯
foreach ($option_results as $key => $option) {
if ($option['item_qty'] == $result['item_qty']) {
$result['option_price'] += intval($option['item_unit_price']);
// echo '1..';
// echo "<pre>";
// print_r($option['item_unit_price']);
// echo "</pre>";
} else if ($option['item_qty'] / $result['item_qty'] != 1) {
$item_qty = intval($option['item_qty']) / intval($result['item_qty']); // 總option數量 / 總電梯台數
$result['option_price'] += intval($option['item_unit_price']) * $item_qty;
// echo '2..';
// echo "<pre>";
// print_r(intval($option['item_unit_price']) . ' *' . $item_qty . '=' . intval($option['item_unit_price']) * $item_qty);
// echo "</pre>";
} else {
$result['option_price'] += $option['item_unit_price'] * intval($option['item_qty']);
// echo '3..';
}
// echo '<pre>';
// print_r($option['item_no'] . '--->' . $option['item_unit_price'] . '--->' . $option['item_qty']);
// echo '</pre>';
}
// print_r($result['option_price']);
// exit();
}
// 查詢保固延長
$sql = "SELECT * FROM pricereview_item WHERE mid =:mid AND item_group ='E' AND option_relate_spec = :item_no";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':item_no', $item_no);
$stmt->execute();
$other_option_arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($other_option_arr)) {
$result['option_other_price'] = 0;
// 電梯 OPTION 價格分別加到各台電梯
foreach ($other_option_arr as $key => $option) {
if ($option['item_qty'] == $result['item_qty']) {
$result['option_other_price'] += intval($option['item_unit_price']);
} else if ($option['item_qty'] / $result['item_qty'] != 1) {
$item_qty = intval($option['item_qty']) / intval($result['item_qty']); // 總option數量 / 總電梯台數
$result['option_other_price'] += intval($option['item_unit_price']) * $item_qty;
} else {
$result['option_other_price'] += $option['item_unit_price'] * intval($option['item_qty']);
}
}
}
$note = explode(',', $result['note']);
$result['spec'] = $note[0]; //型號
$result['person'] = $note[1]; // 人承
$result['floor'] = $note[2]; // 樓層
$result['speed'] = $note[3]; // 速度
for ($i = 0; $i < $result['item_qty']; $i++) {
$count_qty = $result['item_qty'];
for ($i = 0; $i < $count_qty; $i++) {
$result['elevator_price'] = round($result['item_price_ct'] / $result['item_qty']); //合約單台電提價格
$result['commission_fee'] = round($contract['special_fee']) / $contract_elevator_qty;
$result['item_no'] = $i + 1;
$result['item_qty'] = 1;
array_push($elevators_detail_arr, $result);
}
}
$count = COUNT($elevators_detail_arr);
$contract['elevators'] = $results;
$count = COUNT($elevators_detail_arr);
$contract['elevators'] = $elevators_results;
$contract['elevators_detail_arr'] = $elevators_detail_arr;
$contract['pay_arr'] = $pay_arr;
$contract['nums'] = $count;
// echo '<pre>';
// print_r($contract);
// echo '</pre>';
// exit;
$contractResponse = json_encode($contract);
// 設定回應標頭為 JSON
header('Content-Type: application/json');

31
wms/contract/api/getFacilityNo.php

@ -378,16 +378,31 @@ class CreateFacilityNo
* @param string|array $facility_no
* @return boolean $status : true:沒重複 false:重複
*/
function checkFacilityRepeatStatus($facility_no)
{
// worksite wipwholestatus
// 檢查 substring 後五碼
if (gettype($facility_no) == "string") {
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');
$sth = $pdo->prepare('SELECT * FROM `facility` WHERE `facilityno` = ?');
$sth = $pdo->prepare('SELECT * FROM `worksite` WHERE `facilityno` = ?');
$sth->bindValue(1, $facility_no);
$sth->execute();
if ($sth->rowCount() == 0)
if ($sth->rowCount() == 0) {
return true;
}
$facility_no = substr($facility_no, -5);
echo $facility_no;
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');
$sth = $pdo->prepare("SELECT * FROM `wipwholestatus` WHERE `facilityno` LIKE '%?'");
$sth->bindValue(1, '%' . $facility_no . '%');
$sth->execute();
if ($sth->rowCount() == 0) {
return true;
}
return false;
}
if (gettype($facility_no) == "array") {
@ -395,11 +410,21 @@ class CreateFacilityNo
$pdo->exec('SET CHARACTER SET utf8mb4');
$status = true;
foreach ($facility_no as $row) {
$sth = $pdo->prepare('SELECT * FROM `facility` WHERE `facilityno` = ?');
$sth = $pdo->prepare('SELECT * FROM `worksite` WHERE `facilityno` = ?');
$sth->bindValue(1, $row);
$sth->execute();
if ($sth->rowCount() !== 0)
$status = false;
$row = substr($row, -5);
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');
$sth = $pdo->prepare("SELECT * FROM `wipwholestatus` WHERE `facilityno` LIKE ?");
$sth->bindValue(1, '%' . $row . '%');
$sth->execute();
if ($sth->rowCount() != 0) {
$status = false;
}
}
return $status;
}

62
wms/contract/api/getT8NewContractData.php

@ -0,0 +1,62 @@
<?php
require_once('../conn.php');
$sql = "SELECT
BillNo, -- 合約號
OAmount -- 合約未稅金額
FROM salSalesOrder WHERE 1=1";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// echo "<pre>";
// print_r($result);
// echo "</pre>";
// exit();
$result_detail = [];
$result_master = [];
$result_arr = [];
foreach ($result as $key => $result) {
$no = $result['BillNo'];
$result_master['BillNo'] = $no;
$firstChar = substr($no, 0, 1);
if ($firstChar == 'M' && $key <= 100) {
$sql = "SELECT BizPartnerName FROM comBusinessPartner WHERE BizPartnerId = '$no' ";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$customer_name = $stmt->fetch(PDO::FETCH_ASSOC);
// $result_master[] = $result;
$sql = "SELECT
BillNo, -- 合約號
PayStage, -- 收款階段
PlanPercentage, -- 收款比例
PlanPayAmt -- 收款金額
FROM salOrderStagePay WHERE BillNo = '$no'";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$Detail = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($Detail)) {
foreach ($Detail as $key => $detail) {
$detail['PlanPercentage'] = (float)$detail['PlanPercentage'];
$Detail[$key]['PlanPercentage'] = $detail['PlanPercentage']; // 比例轉小數第二位
$Detail[$key]['PlanPayAmt'] = intval($detail['PlanPayAmt']); // 比例金額轉整數
}
if (mb_substr($Detail[0]['PayStage'], 0, 2) == '寶佳') {
$result_master['customer_status'] = 'strategy_customer';
} else if (!empty($customer_name) && mb_substr($customer_name['BizPartnerName'], 0, 1) == '【') {
$result_master['customer_status'] = 'strategy_customer';
} else {
$result_master['customer_status'] = 'general_customer';
}
$result_master['total_price'] = intval($result['OAmount']);
$result_master['detail'] = $Detail;
$result_arr[] = $result_master;
}
}
}
echo "<pre>";
print_r($result_arr);
echo "</pre>";

215
wms/contract/api/postContractData.php

@ -1,3 +1,5 @@
<meta charset="UTF-8">
<?php
require_once("../conn.php");
// require_once("../connt8.php");
@ -35,6 +37,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : [];
$payType = !empty($_POST['payType']) ? $_POST['payType'] : null;
$contract_type = !empty($_POST['contract_type']) ? $_POST['contract_type'] : null;
$sql = "SELECT * FROM account WHERE accountid = '$salesman'";
$stmt = $conn->prepare($sql);
@ -65,14 +68,14 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
echo json_encode($facility_arr);
// 電梯做番號
$facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num);
echo json_encode($facilityno);
T8insert($_POST, $facilityno, $depId, $connT8);
// if ($user_id == 'M0225') {
// echo '<pre>';
// print_r($facilityno);
// echo '</pre>';
// exit();
// }
echo json_encode($facilityno);
/// 獎金計算
$fail_arr = [];
if ($contractno === '') return $fail_arr[] = '合約號為必填';
if ($total_price == '') $fail_arr[] = '合約總價為必填';
@ -93,14 +96,20 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填';
if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填';
if ($num == '') $fail_arr[] = '電梯數量為必填';
if ($payType == '') $fail_arr[] = '付款方式為必填';
if ($payType == '') $fail_arr[] = '分期方式為必填';
if ($contract_type == '') $fail_arr[] = '合約類別為必填';
if (count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr);
exit();
}
T8insert($_POST, $facilityno, $depId);
bonusCreate($_POST, $facilityno, $conn);
/// 獎金計算
$aaa = bonusCreate($_POST, $facilityno, $conn);
if (!empty($aaa) && $aaa['status'] == 2) {
header("HTTP/1.1 422 Unprocessable Entity");
echo $aaa['data'];
exit();
}
//create account table
$accounttype = "A";
$accountid = $vat;
@ -112,8 +121,6 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$create_at = date('Y-m-d H:i:s');
$conn->beginTransaction();
// bonusCreate($_POST, $facilityno, $conn);
// exit();
$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);
@ -370,7 +377,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// T8insert($_POST, $facilityno);
// header('Content-Type: application/json');
header('Content-Type: application/json');
$jsonData = json_encode($files);
$conn->commit();
@ -382,11 +389,12 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
}
};
function T8insert($data, $facilityno, $depId)
function T8insert($data, $facilityno, $depId, $connT8)
{
require_once("../connt8.php");
// require_once("../conn.php");
// 引入 T8 API 連線
require_once("./T8salIncomeApply.php");
require_once("./T8api.php");
$contractno = !empty($data['contractno']) ? $data['contractno'] : null; // 合約號
$address = !empty($data['address']) ? $data['address'] : null; // 客戶地址
@ -409,7 +417,7 @@ function T8insert($data, $facilityno, $depId)
$connT8->beginTransaction();
$sql = "SELECT * FROM comCustomer WHERE BizPartnerId = :BizPartnerId";
$stmt = $conn->prepare($sql);
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
@ -423,6 +431,7 @@ function T8insert($data, $facilityno, $depId)
echo 'Error';
exit;
}
if (empty($result)) {
// 若 客戶資料為空,新增一筆到 comCustomer
// 新增客戶資料
@ -564,23 +573,26 @@ function T8insert($data, $facilityno, $depId)
// 分期代碼計算
$IncomeId = [
'A40006' => 1, //年繳
'A40007' => 4, //季繳
'A40003' => 12, //月繳
'A40004' => 6, //雙月繳
'A40005' => 2 //半年繳
'A40006' => 12, //年繳
'A40007' => 3, //季繳
'A40003' => 1, //月繳
'A40004' => 2, //雙月繳
'A40005' => 6 //半年繳
];
//分幾期 => 總共保養月 / 分期月
$SQuantity = $elevator['maintain_months'] / $IncomeId[$payType];
// 幾年
// $SQuantityYear = $elevator['maintain_months'] / 12;
//分幾期 () => 總共保養月 / 分期月
$SQuantitya = $elevator['maintain_months'] / $IncomeId[$payType];
$SQuantity = $IncomeId[$payType];
// $paymonth = $IncomeId[$payType] * $SQuantity;
$date_1 = getNext25thDate($contract_begin_date);
// 依每台電梯去加入各個的付款項
for ($i = 0; $i < $IncomeId[$payType]; $i++) {
for ($i = 1; $i <= $SQuantitya; $i++) {
$row++;
// 計算分期款的收款月份
$paymonth = $i * $SQuantity;
$paymonth = $i * $IncomeId[$payType];
$countDay = date('Y-m-d', strtotime("$date_1 + $paymonth months"));
$payDay = str_replace('-', '', $countDay);
$rows_data = [
@ -593,13 +605,11 @@ function T8insert($data, $facilityno, $depId)
"SPrice" => intval($elevator['sold_price']),
"SQuantity" => $SQuantity,
"ProjectId" => "$contractno",
"FromBillNo" => "$contractno",
"CU_MaterialId" => "$facility_no",
"CU_EstPayDate" => intval($payDay)
];
$salIncomeApplyDetail_rows[] = $rows_data;
// echo '<pre>';
// print_r($salIncomeApplyDetail_rows);
// echo '</pre>';
}
}
@ -641,10 +651,11 @@ function T8insert($data, $facilityno, $depId)
$API_body[] = $salIncomeApplyMaster;
$API_body[] = $salIncomeApplyDetail;
// 呼叫 API
// echo '<pre>';
// print_r($API_body);
// echo '</pre>';
$result = T8API($API_body);
echo '<pre>';
print_r($API_body);
echo '</pre>';
$api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALINCOMEAPPLY/PostERPData';
$result = T8salIncomeApply($API_body, $api_url);
if ($result['Status'] == 'Error' || $result['Status'] == 'Fails') {
@ -658,14 +669,17 @@ function bonusCreate($data, $facilityno, $conn)
{
try {
require_once("../../bonus/other/maintenance_contract_bonus_v2_1.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');
$create_at = date('Y-m-d H:i:s');
$contract_no = !empty($data['contractno']) ? $data['contractno'] : '';
$contract_kind = 3;
@ -677,26 +691,115 @@ function bonusCreate($data, $facilityno, $conn)
'A40003' => 'monthly' //月繳
];
$fail_arr = [];
$payDay = getNext25thDate($contract_begin_date);
foreach ($elevators as $key => $elevator) {
// print_r($payDay);
// echo '<pre>';
// print_r($elevator);
// echo '</pre>';
// exit;
$facility_no = $facilityno[$key];
$ver = $elevator['bonus_verson']; //獎金版本
$contract_type = $elevator['contract_type']; //合約類別
$payment_period = $payment[$payType]; //付款方式
$elevator_list_price = intval($elevator['stand_price']); //牌價
$fee_per_st = $elevator['contract_price']; //作翻契約金額
$commission_fee = $elevator['service_expense']; //服務費(月)
$elevator_list_price = !empty(intval($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'];
$region_director_id = $elevator['manager'];
$regular_contract_manger_id = !empty($elevator['regular_contract_manger_id']) ? $elevator['regular_contract_manger_id'] : '';
$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);
$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 : '';
// 如果保養合約 大於一年
if (!empty($maintain_months)) {
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
);
}
}
$bonus_json = [
'contract_type' => $contract_type,
@ -707,6 +810,8 @@ function bonusCreate($data, $facilityno, $conn)
'receivable_date_due' => $receivable_date_due,
'discount' => $discount
];
if (!empty($results)) {
if ($results['result_status'] != 'error') {
foreach ($results['bonus_array'] as $i => $result) {
@ -722,7 +827,37 @@ function bonusCreate($data, $facilityno, $conn)
$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);

39
wms/contract/api/postContractNewApplyData.php

@ -4,6 +4,7 @@ use function Symfony\Component\String\s;
require_once("../conn.php");
include_once("./upload_chk.php");
include_once "./postFlow.php";
ini_set('date.timezone', 'Asia/Taipei');
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
exit();
@ -42,6 +43,8 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$status = $_POST['status']; // 0:暫存 1:送審 2:退回 3:完成
$pays = json_decode($pays, true);
$form_key = $_POST['form_key'];
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
@ -160,6 +163,14 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
}
}
// -----處理檔案上傳 END-----
if($status == 1){
$current_assigner = "M0175";
$flow_code = "A";
$ekind = "新梯";
createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key);
}
header("HTTP/1.1 201 success!");
$conn->commit();
} else {
@ -211,7 +222,6 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
}
$deleted_at = date("Y-m-d H:i:s");
$removefiles = isset($_POST['removefiles']) ? json_decode($_POST['removefiles'], true) : [];
print_r($removefiles);
if(count($removefiles) > 0){
foreach($removefiles as $file){
$sql_str = "UPDATE contract_apply_files SET deleted_at = :deleted_at WHERE id = :fileid";
@ -221,9 +231,18 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$stmt ->execute();
}
}
if($status == 1){
$current_assigner = "M0175";
$flow_code = "A";
$ekind = "新梯";
createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key);
}
header("HTTP/1.1 201 success!");
$conn->commit();
}
} catch (PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 failed!");
@ -268,6 +287,8 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$progress = $_POST['progress'];
$review_comment = $_POST['review_comment'];
$user_id = $_POST['review_person_id'];
$form_key = $_POST['form_key'];
$mid = $contract_new_apply_id;
$review_date = date('Y-m-d H:i:s');
$conn->beginTransaction();
try {
@ -280,6 +301,13 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$stmt->bindParam(':review_person_id', $user_id);
$stmt->bindParam(':review_date', $review_date);
$stmt->execute();
//發送待簽通知
$current_assigner = "00000";
$flow_code = "Z";
$ekind = "新梯";
createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key);
header("HTTP/1.1 200 success!");
$conn->commit();
} catch (PDOException $e) {
@ -297,6 +325,8 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$progress = $_POST['progress'];
$review_comment = $_POST['review_comment'];
$user_id = $_POST['review_person_id'];
$form_key = $_POST['form_key'];
$mid = $contract_new_apply_id;
echo $user_id;
$review_date = date('Y-m-d H:i:s');
$conn->beginTransaction();
@ -310,6 +340,13 @@ if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] ==
$stmt->bindParam(':review_person_id', $user_id);
$stmt->bindParam(':review_date', $review_date);
$stmt->execute();
//發送待簽通知
$current_assigner = "00000";
$flow_code = "A";
$ekind = "新梯";
createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key);
header("HTTP/1.1 200 success!");
$conn->commit();
} catch (PDOException $e) {

58
wms/contract/api/postFlow.php

@ -0,0 +1,58 @@
<?php
require_once("../conn.php");
function createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key=null){
global $conn;
$form_id = $mid;
$seq = 0;
$system_id = "cta";
if($ekind == "新梯") $flow_id = "cta01";
if($ekind == "汰改") $flow_id = "cta02";
if($ekind == "保養") $flow_id = "cta03";
if($form_key == null){
$sql_str = "SELECT appwms.nextval('form_key') form_key";
$stmt = $conn->prepare($sql_str);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$form_key = $result['form_key'];
$seq = 0;
$sql_str = "INSERT INTO flow (system_id, flow_id, form_id, form_key, flow_code)
VALUES (:system_id, :flow_id, :form_id, :form_key, :flow_code)";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':system_id', $system_id);
$stmt->bindParam(':flow_id', $flow_id);
$stmt->bindParam(':form_id', $form_id);
$stmt->bindParam(':form_key', $form_key);
$stmt->bindParam(':flow_code', $flow_code);
$stmt->execute();
}else{
$sql_str = "UPDATE flow SET flow_code = :flow_code WHERE form_key = :form_key";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':form_key', $form_key);
$stmt->bindParam(':flow_code', $flow_code);
$stmt->execute();
$sql_str = "SELECT MAX(seq) AS max_seq FROM subflow WHERE form_key = :form_key";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':form_key', $form_key);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$seq = $result['max_seq'];
$seq ++;
}
$created_at = date("Y-m-d H:i:s");
$sql_str = "INSERT INTO subflow (form_key, seq, current_assigner, update_date,create_date)
VALUES (:form_key, :seq, :current_assigner, :update_date,:create_date)";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':form_key', $form_key);
$stmt->bindParam(':seq', $seq);
$stmt->bindParam(':current_assigner', $current_assigner);
$stmt->bindParam(':update_date', $created_at);
$stmt->bindParam(':create_date', $created_at);
$stmt->execute();
return $form_key;
}

629
wms/contract/api/postNewContractData.php

@ -1,16 +1,22 @@
<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') {
try {
$created_at = date('Y-m-d H:i:s');
$created_by = $_POST["user_id"];
$contractno = $_POST["contractno"];
@ -22,16 +28,15 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$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;
$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;
@ -39,27 +44,27 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
if (empty($contractno)) $fail_arr[] = '合約號為必填';
if (empty($customer)) $fail_arr[] = '客戶名稱為必填';
if (empty($manager)) $fail_arr[] = '負責人為必填';
if (empty($vat)) $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 (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);
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',
'MAZ100' => 'B',
'MAE100' => 'X', //小機房客梯
'MAM200' => 'W', //無機房客梯
'MAH100' => 'H', //小電梯
'MAQ100' => 'Z', //強趨梯
'MAF100' => 'F', //貨梯
'MAP100' => 'B', //平台梯
];
$arr = [];
// 建立作番號
@ -68,12 +73,136 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$arr[] = $dailyNecessities[$elevator['spec']];
}
$facilityno = $createFacilityNo->makeMFacilityNo('M', $arr, intval($elevators_nums));
echo '<pre>';
print_r($facilityno);
echo '</pre>';
exit();
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);
@ -136,7 +265,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$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)";
$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);
@ -151,7 +280,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$stmt->bindParam(":files_id", $files_id);
$stmt->bindParam(":created_at", $created_at);
$stmt->bindParam(":created_by", $created_by);
$stmt->bindParam(":qc", $qc);
// $stmt->bindParam(":qc", $qc);
$stmt->execute();
@ -159,6 +288,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
if ($result) {
header("HTTP/1.1 201 Created");
}
}
} catch (PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 Internal Server Error");
@ -166,9 +296,11 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
}
}
function T8Insert($data)
function T8Insert($data, $facilityno, $connT8)
{
require_once("../connt8.php");
// try {
// 引入銷售訂單 API
require_once("./T8API.php");
$contractno = $data['contractno'];
$partyA = $data['customer'];
@ -178,53 +310,83 @@ function T8Insert($data)
$user_id = $data['user_id'];
$salesman = $data['salesman'];
$createAt = date("Y-m-dH-i-s");
$elevators[] = $data['elevators'];
$createTime = str_replace('-', '', $createAt);
$connT8->beginTransaction();
$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) : []; //電梯
$sql = "SELECT * FROM comCustomer WHERE BizPartnerId = :BizPartnerId";
$stmt = $conn->prepare($sql);
$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,EMail,CreatorId,CreateTime,BizPartnerTypeId)
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:EMail,:CreatorId,:CreateTime,'10')";
(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', $customer); //企業名稱
$stmt->bindParam(':EnterpriseName', $partyA); //企業名稱
$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')";
(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', $address);
$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
@ -232,7 +394,7 @@ function T8Insert($data)
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':InvoiceAddress', $address);
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
@ -245,7 +407,6 @@ function T8Insert($data)
TaxNo=:TaxNo,
EnterpriseName=:EnterpriseName,
ContactAddress=:ContactAddress,
EMail=:EMail,
LastOperatorId=:LastOperatorId,
LastOperateTime=:LastOperateTime
WHERE BizPartnerId = :BizPartnerId
@ -254,9 +415,9 @@ function T8Insert($data)
$stmt->bindParam(':BizPartnerName', $partyA);
$stmt->bindParam(':WorkTelNo', $phone);
$stmt->bindParam(':TaxNo', $vat);
$stmt->bindParam(':EnterpriseName', $customer);
$stmt->bindParam(':EnterpriseName', $partyA);
$stmt->bindParam(':ContactAddress', $partyAaddress);
$stmt->bindParam(':EMail', $email);
// $stmt->bindParam(':EMail', $email);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
@ -274,52 +435,392 @@ function T8Insert($data)
VALUES(:ProjectId,:ProjectName,'C0',:CreateTime,:CreatorId,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->bindParam(':ProjectName', $customer);
$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)
function BounsCount($data, $conn, $facilityno)
{
// echo '<pre>';
// print_r($data);
// echo '</pre>';
// exit;
try {
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';
$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']; //受價總額
// $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';
// $result_bonus = elevator_new_deal_bonus_v2_0($ver,$contract_type,);
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();
}
echo '<pre>';
print_r($result_bonus);
echo '</pre>';
exit();
try {
}
$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();
}

115
wms/contract/api/test copy.json

@ -0,0 +1,115 @@
[
{
"name": "MainSalesOrder",
"rows": [
{
"BillNo": "M24020076",
"BillDate": 20240320,
"TypeId": "SO",
"FOrgId": "1000",
"OrgId": "1000",
"ModeId": "M",
"BizPartnerId": "M24020076",
"CurrId": "TWD",
"CurrOAmount": 1,
"CurrLAmount": 1,
"PersonId": "M0073",
"DueToId": "M24020076",
"TradeConditionId": "",
"TaxId": "ST005",
"CreditorCompId": "1001",
"CreditorOrgId": "1000",
"CreatorId": "M0225"
}
]
},
{
"name": "SubOrder",
"rows": [
{
"TaxId": "ST005",
"RequirementDate": 20240320,
"ConsignmentDate": 20240320,
"BillNo": "M24020076",
"RowCode": 1,
"ItemType": 1,
"MaterialId": "A40001",
"SUnitId": "SET",
"SQuantity": 1,
"SPrice": 910000,
"CU_MaterialId": "4MW00001"
},
{
"TaxId": "ST005",
"RequirementDate": 20240320,
"ConsignmentDate": 20240320,
"BillNo": "M24020076",
"RowCode": 2,
"ItemType": 1,
"MaterialId": "A40008",
"SUnitId": "SET",
"SQuantity": 1,
"SPrice": 390000,
"CU_MaterialId": "4MW00001"
},
{
"TaxId": "ST005",
"RequirementDate": 20240320,
"ConsignmentDate": 20240320,
"BillNo": "M24020076",
"RowCode": 3,
"ItemType": 0,
"MaterialId": "4MW00001",
"SUnitId": "SET",
"SQuantity": 1,
"SPrice": 0,
"CU_MaterialId": "4MW00001"
}
]
},
{
"name": "salOrderStagePay",
"rows": [
{
"PayStage": "簽約",
"PlanPercentage": 0.2,
"PlanPayAmt": 260000,
"PlanPayDate": 20240420,
"BillNo": "M24020076",
"RowCode": 1,
"RowNo": 1,
"UnWriteOffOAmount": 260000
},
{
"PayStage": "貨抵工地",
"PlanPercentage": 0.5,
"PlanPayAmt": 650000,
"PlanPayDate": 20241220,
"BillNo": "M24020076",
"RowCode": 2,
"RowNo": 2,
"UnWriteOffOAmount": 650000
},
{
"PayStage": "試車完工",
"PlanPercentage": 0.2,
"PlanPayAmt": 260000,
"PlanPayDate": 20250120,
"BillNo": "M24020076",
"RowCode": 3,
"RowNo": 3,
"UnWriteOffOAmount": 260000
},
{
"PayStage": "交車",
"PlanPercentage": 0.1,
"PlanPayAmt": 130000,
"PlanPayDate": 20250220,
"BillNo": "M24020076",
"RowCode": 4,
"RowNo": 4,
"UnWriteOffOAmount": 130000
}
]
}
]

207
wms/contract/api/test.json

@ -1,185 +1,66 @@
[
{
"name": "salIncomeApplyMaster",
//salSalesOrder
"name": "MainSalesOrder",
"rows": [
{
"BillNo": "B23100060",
"BillDate": "20240122",
"OrgId": "1000",
"BillNo": "Z001", //
"BillDate": 20210420, //
"TypeId": "SO", //
"FOrgId": "1000",
"TypeId": "RAS",
"BpOrgId": "1000",
"BizPartnerId": "B23100060",
"OrgId": "1000",
"ModeId": "T", // T M
"BizPartnerId": "M0225", //ID
"CurrId": "TWD",
"CurrOAmount": 1,
"CurrLAmount": 1,
"PersonId": "M0065",
"DtOrgId": "1000",
"DueToId": "B23100060",
"PersonId": "M0225", //
"DueToId": "512", //
"TradeConditionId": "",
"TaxId": "ST005",
"CompId": "1001",
"CreatorId": "M0225"
"CreditorCompId": "1000",
"CreditorOrgId": "1000",
"CreditorCurrOAmount": 1,
"CreditorCurrLAmount": 1,
"CompId": "1000"
}
]
},
{
"name": "salIncomeApplyDetail",
// salSalesOrderDetail
"name": "SubOrder",
"rows": [
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 1,
"RowNo": 1,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 2,
"RowNo": 2,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 3,
"RowNo": 3,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 4,
"RowNo": 4,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"SupplyCompId": "1001",
"SupplyOrgId": "1000",
"TaxId": "ST005",
"RowCode": 5,
"RowNo": 5,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 6,
"RowNo": 6,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 7,
"RowNo": 7,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 8,
"RowNo": 8,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 9,
"RowNo": 9,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 10,
"RowNo": 10,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
"RequirementDate": 20210420, //
"ConsignmentDate": 20210420, //
"DispatchCompId": "1001",
"DispatchOrgId": "1000",
"BillNo": "Z001", //
"RowCode": 1, //
"ItemType": 0,
"MaterialId": "Z001", //
"SUnitId": "SET",
"SQuantity": 1, //
"SPrice": 1 //
}
]
},
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 11,
"RowNo": 11,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
},
//salOrderStagePay
"name": "salOrderStagePay",
"rows": [
{
"BillNo": "B23100060",
"IncomeId": "A40003",
"TaxId": "ST005",
"RowCode": 12,
"RowNo": 12,
"ItemType": 1,
"SPrice": 1250,
"SQuantity": 1,
"ProjectId": "B23100060",
"FromSourceTag": 0,
"CU_MaterialId": "4TH53801"
"BillNo": "",
"RowCode": "",
"RowNo": "",
"PayStage": "ST003", //
"PlanPercentage": "Z001", //(%)
"PlanPayAmt": 1, //
"PlanPayDate": 1, // 1.
"UnWriteOffOAmount": 1 //
}
]
}

290
wms/contract/api/testT8API.php

@ -1,36 +1,258 @@
<?php
?>
<head>
<title>地址轉經緯度</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<h1>輸入地址以獲取經緯度</h1>
<form id="addressForm" method="post">
<input type="text" id="addressInput" name="address" placeholder="輸入地址">
<button type="submit">查詢</button>
</form>
<div id="map"></div>
<script>
// 使用AJAX提交表單
$(document).ready(function() {
$("#addressForm").submit(function(event) {
event.preventDefault();
var address = $("#addressInput").val();
$.ajax({
url: "get_lat_lng.php",
type: "POST",
data: {
address: address
},
success: function(data) {
$("#map").html(data);
// {
// "BillNo": "Z001", //合約單號
// "BillDate": 20210420, //簽約日期
// "TypeId": "SO", //
// "FOrgId": "1000",
// "OrgId": "1000",
// "ModeId": "T", // T汰改 M新梯
// "BizPartnerId": "M0225", //創建人ID
// "CurrId": "TWD",
// "CurrOAmount": 1,
// "CurrLAmount": 1,
// "PersonId": "M0225", //業務人員
// "DueToId": "512", //業務部門
// "TradeConditionId": "",
// "TaxId": "ST005",
// "CreditorCompId": "1000",
// "CreditorOrgId": "1000",
// "CreditorCurrOAmount": 1,
// "CreditorCurrLAmount": 1,
// "CompId": "1000"
// }
// ]
// },
// {
// //salSalesOrderDetail
// "name": "SubOrder",
// "rows": [
// {
// "SupplyCompId": "1001",
// "SupplyOrgId": "1000",
// "TaxId": "ST005",
// "RequirementDate": 20210420, //出貨日期
// "ConsignmentDate": 20210420, //發貨日期
// "DispatchCompId": "1001",
// "DispatchOrgId": "1000",
// "BillNo": "Z001", //合約號
// "RowCode": 1, //全部筆數排列
// "ItemType": 0,
// "MaterialId": "Z001", //作番號
// "SUnitId": "SET",
// "SQuantity": 1, //交易數量
// "SPrice": 1 //交易價格
// }
// ]
// },
// {
// "name": "salOrderStagePay",
// "rows": [
// {
// "BillNo": "",
// "RowCode": "",
// "RowNo": "",
// "PayStage": "ST003", //收款階段
// "PlanPercentage": "Z001", //計劃收款比例(%)
// "PlanPayAmt": 1, //計劃收款金額
// "PlanPayDate": 1, //計劃收款日期 1.第一筆都是簽約日
// "UnWriteOffOAmount": 1 //未核銷金額
// }
// ]
// }
// ]
require_once("../../T8_Authorization_from_bpm.php");
$api_url = "https://erp.masada.com.tw:780/twWebAPI/V1/SALSALESORDER/PostERPData";
$validation = get_Auth();
$header = [
"CHI_Authorization :" . $validation,
"GroupId:MASADA"
];
$url = "https://erp.masada.com.tw:780/twWebAPI/V1/GLFEEWRITEOFF/DeleteERPData?pkValue=1000,M24020076";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch);
if ($response === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
$result = json_decode($response, true);
// 若 API 傳入失敗。
if ($result['Status'] == 'Erroe') {
echo 'API傳入失敗,' . $result['ErrorMsg'];
print_r($result);
} else {
// print_r($result);
print_r($result);
}
print_r($result);
}
curl_close($ch);
exit();
$contract_no = "M24020003";
// $contract_no = "M24010109";
$MainSalesOrder_row = [
"BillNo" => "$contract_no", //合約單號
"BillDate" => 20210420, //簽約日期
"TypeId" => "SO", //
"FOrgId" => "1000",
"OrgId" => "1000",
"ModeId" => "M", // T汰改 M新梯
"BizPartnerId" => "$contract_no", //客戶代碼
"CurrId" => "TWD",
"CurrOAmount" => 1,
"CurrLAmount" => 1,
"PersonId" => "M0177", //業務人員
"DueToId" => "$contract_no", //債務方
"TradeConditionId" => "",
"TaxId" => "ST005",
"CreditorCompId" => "1001",
"CreditorOrgId" => "1000",
"CreatorId" => "M0225"
];
// //salSalesOrderDetail
// $SubOrder_row = [];
for ($i = 0; $i < 3; $i++) {
if ($i == 0) {
$row = [
// "SupplyCompId" => "1001",
// "SupplyOrgId" => "1000",
"TaxId" => "ST005",
"RequirementDate" => 20210420, //出貨日期
"ConsignmentDate" => 20210420, //發貨日期
// "DispatchCompId" => "1001",
// "DispatchOrgId" => "1000",
"BillNo" => "$contract_no", //合約號
"RowCode" => $i, //全部筆數排列
"ItemType" => 1,
"MaterialId" => "A40001", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => 100000 //交易價格
];
}
if ($i == 1) {
$row = [
// "SupplyCompId" => "1001",
// "SupplyOrgId" => "1000",
"TaxId" => "ST005",
"RequirementDate" => 20210420, //出貨日期
"ConsignmentDate" => 20210420, //發貨日期
// "DispatchCompId" => "1001",
// "DispatchOrgId" => "1000",
"BillNo" => "$contract_no", //合約號
"RowCode" => $i, //全部筆數排列
"ItemType" => 1,
"MaterialId" => "A40008", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => 650000 //交易價格
];
}
if ($i == 2) {
$row = [
"TaxId" => "ST005",
"RequirementDate" => 20210420, //出貨日期
"ConsignmentDate" => 20210420, //發貨日期
"BillNo" => "$contract_no", //合約號
"RowCode" => $i, //全部筆數排列
"ItemType" => 0,
"MaterialId" => "4MH00669", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => 0 //交易價格
];
}
});
});
});
</script>
</body>
$SubOrder_row[] = $row;
}
$salOrderStagePay_row = [];
$roww = [
"PayStage" => "簽約", //收款階段
"PlanPercentage" => 0.5, //計劃收款比例(%)
"PlanPayAmt" => 375000, //計劃收款金額
"PlanPayDate" => 20240101, //計劃收款日期 1.第一筆都是簽約日
"BillNo" => "$contract_no",
"RowCode" => 1,
"RowNo" => 1,
"UnWriteOffOAmount" => 375000 //未核銷金額
];
$roww2 = [
"PayStage" => "貨抵工地",
"PlanPercentage" => 0.5,
"PlanPayAmt" => 375000,
"PlanPayDate" => 20240101,
"BillNo" => "$contract_no",
"RowCode" => 2,
"RowNo" => 2,
"UnWriteOffOAmount" => 375000
];
$salOrderStagePay_row[] = $roww;
$salOrderStagePay_row[] = $roww2;
$MainSalesOrder = [
"name" => "MainSalesOrder",
'rows' => [$MainSalesOrder_row]
];
$SubOrder = [
"name" => "SubOrder",
"rows" => $SubOrder_row
];
$salOrderStagePay = [
"name" => "salOrderStagePay",
"rows" => $salOrderStagePay_row
];
$APIbody = [];
$APIbody[] = $MainSalesOrder;
$APIbody[] = $SubOrder;
$APIbody[] = $salOrderStagePay;
// $data = file_get_contents('test copy.json');
// $arr = json_decode($data, true);
// echo "<pre>";
// print_r($data);
// echo "</pre>";
echo "<pre>";
print_r(json_encode($APIbody, JSON_UNESCAPED_UNICODE));
echo "</pre>";
// exit();
$header = [
"CHI_Authorization :" . $validation,
"GroupId:TEST"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url); // 设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1); // 使用 POST
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($APIbody, JSON_UNESCAPED_UNICODE));
$response = curl_exec($ch);
if ($response === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
$result = json_decode($response, true);
// 若 API 傳入失敗。
if ($result['Status'] == 'Erroe') {
echo 'API傳入失敗,' . $result['ErrorMsg'];
print_r($result);
} else {
// print_r($result);
print_r($result);
}
print_r($result);
}
curl_close($ch);

6
wms/contract/conn.php

@ -34,7 +34,11 @@ try {
//設定主動以警告的形式報錯
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8TEST", "M0225", "IFFBU1E=");
// $connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8TEST", "M0225", "IFFBU1E=");
// $connT8 = new PDO("sqlsrv:Server=10.10.145.2;Database=T8MASADA", "masada", "@m222222");
$connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8MASADA", "masada", "@m222222");
if ($connT8) {
$connT8->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

62
wms/contract/contract-input.php

@ -57,8 +57,10 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<h4>業務確認項</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
<!-- <button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button> -->
<!-- <button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button> -->
</td>
</tr>
<tr>
@ -111,7 +113,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</td>
<td style="vertical-align: middle">契約成交價</td>
<td>
<input class="form-control disabled_select" type="text" name="tel" x-model="data.total_price" :disabled="data.disabled">
<input class="form-control disabled_select" type="number" name="tel" x-model="data.total_price" :disabled="data.disabled">
<p class="alerttext" x-show="data.total_price==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
@ -201,7 +203,18 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
</td>
</tr>
<tr>
<td style="vertical-align:middle">合約類別</td>
<td>
<select name="" id="" x-model="data.contract_type">
<option value="">請選擇</option>
<option value="new">新簽約</option>
<option value="free_to_charge">免保轉有費</option>
<option value="renew_priceissue">續簽約</option>
<option value="longcontract_m1_free_charge">長約</option>
</select>
</td>
</tr>
<!-- <tr>
<td></td>
<td></td>
@ -363,42 +376,48 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<td>
<input type="text" x-model="elevator.maintain_months">
</td>
<td style="vertical-align:middle">合約類別</td>
<td>
<!-- <td style="vertical-align:middle">合約類別</td> -->
<!-- <td>
<select name="" id="" x-model="elevator.contract_type">
<option value="">請選擇</option>
<option value="new">新簽約</option>
<option value="free_to_charge">免保轉有費</option>
<option value="renew_priceissue">續簽約</option>
</select>
</td>
</td> -->
<td style="vertical-align:middle">獎金適用版本</td>
<td>
<input type="text" x-model="elevator.bonus_verson" disabled="disabled">
<input type="text" x-model="elevator.bonus_verson">
</td>
<td style="vertical-align:middle">作番契約金額(月)</td>
<td><input type="text" x-model="elevator.sold_price"></td>
</tr>
<tr>
<td style="vertical-align:middle">作番契約金額(月)</td>
<td><input type="text" x-model="elevator.sold_price" disabled></td>
<td style="vertical-align:middle">牌價(標準價)</td>
<td style="vertical-align:middle">服務費</td>
<td>
<input type="text" x-model="elevator.stand_price" disabled>
<p>標準價+Option價格+與其他電梯共同分擔的費用貨價格</p>
<input type="text" x-model="elevator.service_expense">
</td>
<td style="vertical-align:middle">服務費</td>
<td style="vertical-align:middle">牌價(標準價)</td>
<td>
<input type="text" x-model="elevator.service_expense" disabled>
<input type="text" x-model="elevator.stand_price">
<p>標準價+Option價格+與其他電梯共同分擔的費用貨價格</p>
</td>
<td style="vertical-align:middle">折扣率(%)</td>
<td><input type="text" x-model='elevator.discount' disabled></td>
</tr>
<tr>
<td style="vertical-align:middle">地區處長員工號</td>
<td><input type="text" x-model="elevator.manager" disabled></td>
<td><input type="text" x-model="elevator.manager"></td>
<td style="vertical-align:middle">專任契約經理員工號</td>
<td><input type="text" x-model="elevator.regular_contract_manger_id"></td>
<!-- <td style="vertical-align:middle">折扣率(%)</td>
<td colspan="2">
<input type="text" x-model='elevator.discount'>
<p>(作番契約金額+服務費/台數) / 牌價 * 100</p>
</td> -->
</tr>
<!-- <tr>
<td style="vertical-align:middle">地區處長員工號</td>
<td><input type="text" x-model="elevator.manager"></td>
<td style="vertical-align:middle">專任契約經理員工號</td>
<td><input type="text" x-model="elevator.regular_contract_manger_id"></td>
</tr> -->
</tbody>
</template>
</template>
@ -439,4 +458,5 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<script>
const user_id = '<?php echo $user_id; ?>'
const user_name = '<?php echo $user_name; ?>'
// console.log(123);
</script>

69
wms/contract/contract-new-apply.php

@ -1,13 +1,45 @@
<?php
include_once("../header.php");
require_once("./conn.php");
if (!(isset($_GET['id']) && !empty($_GET['id']))) {
if (!(isset($_GET['id']) && !empty($_GET['id'])) && !(isset($_GET['form_key']) && !empty($_GET['form_key']))) {
$para = "function_name=pricereview&" . $token_link;
echo "<script>alert('非法訪問!!!');</script>";
echo "<script>window.history.go(-1);</script>";
exit;
}
$id = $_GET["id"];
$id = null;
if(isset($_GET['id'])){
$id = $_GET["id"];
}
$form_key = null;
if(isset($_GET['form_key'])){
$form_key = $_GET['form_key'];
}
if($form_key != null){
$sql_str = "SELECT form_id FROM flow WHERE system_id = 'cta' AND flow_id = 'cta01' AND form_key = :form_key";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':form_key', $form_key);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$id = $result['form_id'];
}
if(!$id){
$para = "function_name=pricereview&" . $token_link;
echo "<script>alert('非法訪問!!!');</script>";
echo "<script>window.history.go(-1);</script>";
exit;
}
$sql_str = "SELECT form_key FROM flow WHERE system_id = 'cta' AND flow_id = 'cta01' AND form_id = :id";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if($result){
$form_key = $result['form_key'];
}
$sql_str = "SELECT contract_new_apply.*, person_account.name AS review_person_name, person_final_account.name AS review_final_person_name
FROM contract_new_apply
@ -439,7 +471,13 @@ $para = "function_name=pricereview&" . $token_link;
<tr>
<td>第二期款交貨期限(日)</td>
<td>
<input type="number" class="form-control" x-model="data.secondPayDeadline" />
<select class="form-control" x-model="data.secondPayDeadline">
<option value="">請選擇</option>
<option value="30">30天</option>
<option value="60">60天</option>
<option value="90">90天</option>
<option value="120">120天</option>
</select>
<p class="alerttext" x-show="data.secondPayDeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
@ -513,8 +551,8 @@ $para = "function_name=pricereview&" . $token_link;
<?php endif; ?>
</td>
</tr>
<tr>
<td>業務承辦人</td>
<tr x-show="false">
<td>業務部審核</td>
<td><span><?php echo (!isset($contract['review_person_name']) || empty($contract['review_person_name'])) ? "---" : $contract['review_person_name'] . "(" . $contract['review_person_id'] . ")"; ?></span></td>
<td>
<?php if (($status == 1 || $status == 3) && $progress >= 2) : ?><span class="successtext">已同意</span><?php endif; ?>
@ -525,15 +563,15 @@ $para = "function_name=pricereview&" . $token_link;
<td><?php echo $contract['review_date'] ?? "---"; ?></td>
</tr>
<tr>
<td>業務部協理</td>
<td>業務部審核</td>
<td><span><?php echo (!isset($contract['review_final_person_name']) || empty($contract['review_final_person_name'])) ? "---" : $contract['review_final_person_name'] . "(" . $contract['review_final_person_id'] . ")"; ?></span></td>
<td>
<?php if ($status == 3) : ?><span class="successtext">結案同意</span><?php endif; ?>
<?php if ($status == 2) : ?><span class="failtext">結案不同意</span><?php endif; ?>
<?php if ($status < 2) : ?><span>---</span><?php endif; ?>
</td>
<td colspan=2><?php echo $contract['review_final_comment'] ?? "---"; ?></td>
<td><?php echo $contract['review_final_date'] ?? "---"; ?></td>
<td colspan=2><?php echo $contract['review_comment'] ?? "---"; ?></td>
<td><?php echo $contract['review_date'] ?? "---"; ?></td>
</tr>
<!-- <tr>
<td colspan="2" style="font-weight:bold">業務部承辦人</td>
@ -554,10 +592,10 @@ $para = "function_name=pricereview&" . $token_link;
</tbody>
</table>
<button @click="window.history.go(-1)" type="button" class="btn btn-primary btn-lg pull-right savebtn">回前頁</button>
<?php if (($isFirst == 1 && ($person == $user_id || $user_id == "M0174")) || ($isFirst == 0 && $status == 0 && ($person == $user_id || $user_id == "M0174"))) : ?>
<?php if (($isFirst == 1 && ($person == $user_id || $user_id == "M0174")) || ($isFirst == 0 && ($status == 0 || $status == 2) && ($person == $user_id || $user_id == "M0174"))) : ?>
<button x-show="true" x-on:click="submit()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>送審</span>
<span><?php if($status==2) echo "重新"; ?>送審</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
@ -578,7 +616,7 @@ $para = "function_name=pricereview&" . $token_link;
<span>
<?php
if (($user_id === "M0175" || $user_id == "TEST02") && $contract['progress'] <= 1) {
echo "同意(上呈)";
echo "同意(結案)";
} elseif (($user_id === "M0060" || $user_id == "TEST03") && $contract['progress'] == 2) {
echo "同意(結案)";
}
@ -629,7 +667,7 @@ $para = "function_name=pricereview&" . $token_link;
const price_b = <?php echo $price_b ?? ''; ?>;
const items = [...<?php echo json_encode($items) ?? []; ?>];
const user_id = '<?php echo $user_id ?>';
const mid = '<?php echo $_GET['id']; ?>';
const mid = '<?php echo $id; ?>';
const pays = [...<?php echo json_encode($pays) ?? []; ?>];
const secondPayDeadline = '';
const tradeaddress = '<?php echo $contract['address'] ?? ''; ?>';
@ -662,7 +700,7 @@ $para = "function_name=pricereview&" . $token_link;
const price_b = <?php echo $contract['install_fee'] ?? ''; ?>;
const items = [...<?php echo json_encode($items) ?? []; ?>];
const user_id = '<?php echo $user_id ?? ''; ?>';
const mid = '<?php echo $_GET['id']; ?>';
const mid = '<?php echo $id; ?>';
const pays = [...<?php echo json_encode($pays) ?? []; ?>];
const isFirst = <?php echo $isFirst; ?>;
const tradeaddress = '<?php echo $contract['trade_address'] ?? ''; ?>';
@ -676,13 +714,13 @@ $para = "function_name=pricereview&" . $token_link;
const total_items = <?php echo $contract['total_items'] ?? ''; ?>;
const contract_new_apply_id = <?php echo $contract_new_apply_id; ?>;
const originfiles = [...<?php echo json_encode($files) ?? []; ?>];
const description = '<?php echo $contract['description']; ?>';
const description = `<?php echo $contract['description']; ?>`;
const contractstatus = <?php echo $contract['status']; ?>;
const progress = <?php echo $contract['progress']; ?>;
</script>
<?php endif; ?>
<?php if ($status > 0 || ($person != $user_id && $user_id != "M0174")) : ?>
<?php if ($status ==1 || $status == 3 || ($person != $user_id && $user_id != "M0174")) : ?>
<script>
window.onload = () => {
const input = document.querySelectorAll('input');
@ -714,4 +752,5 @@ $para = "function_name=pricereview&" . $token_link;
alert("請先暫存或送審文件!")
}
}
const form_key = '<?php echo $form_key; ?>';
</script>

16
wms/contract/contract-newelevator-input.php

@ -134,7 +134,17 @@ $persons = array_map(function ($person) {
</td>
</tr>
<tr>
<td style="vertical-align: middle">區域</td>
<td>
<select id="area_no" name="area_no" x-model="data.area_no">
<option value="">請選擇</option>
<option value="N">北區</option>
<option value="Y">宜蘭</option>
<option value="T">桃園</option>
<option value="C">中區</option>
<option value="K">南區</option>
</select>
</td>
</tr>
</tbody>
</template>
@ -169,7 +179,7 @@ $persons = array_map(function ($person) {
<tr>
<td style="vertical-align: middle">電梯速度</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.person" disabled>
<input class="form-control disabled_select" type="text" x-model="elevator.speed" disabled>
</td>
<td style="vertical-align: middle">電梯樓停</td>
<td>
@ -187,7 +197,7 @@ $persons = array_map(function ($person) {
<tr>
<td style="vertical-align: middle">QC和官檢</td>
<td>
<select class="" id="qc" x-model="data.qc">
<select class="" id="qc" x-model="elevator.qc">
<option value="">請選擇QC或官檢</option>
<option value="Q">只需QC</option>
<option value="O">只需官檢</option>

68
wms/contract/js/alpine.js

@ -23,7 +23,7 @@ const contractDownload = () => {
data: {
illustrate: {
editshow: false,
plaintext: '茲因甲方向乙方訂購電梯,並委由乙方安裝系爭電梯,經雙方同意共同訂立本合約書,其條款如下:'
plaintext: '茲因甲方向乙方訂購電梯,並委由乙方安裝新增電梯,經雙方同意共同訂立本合約書,其條款如下:'
},
partyA: {
editshow: false,
@ -810,7 +810,7 @@ const contractNewInput = () => {
return {
init() { },
data: {
contractno: 'M23110004',
contractno: 'M24020076',
customer: '',
manager: '',
vat: '',
@ -819,15 +819,16 @@ const contractNewInput = () => {
lm_tel: '',
address: '',
salesman: '',
qc: '',
qc: '',
price_total: '', //合約總價
files: [],
contract_type: '1',
signing_date: '', //合約簽訂日期
elevators: [], // 電梯種類 Array
elevators_detail_arr: [], // 電梯台數 Array
nums: '', //電梯數量
pay_arr: [], //電梯付款種類
nums: 0, //電梯數量
area_no: 'T',
contract_arrival_date: ''
},
step: 1,
isLoading: false,
@ -838,6 +839,7 @@ const contractNewInput = () => {
if (this.step == 1) {
this.getContractDate();
} else if (this.step == 2) {
if (this.data.nums <= 0) return alert('請填寫電梯數量!')
this.getElevatorsData();
} else if (this.step == 3) {
this.getElevatorsData();
@ -865,15 +867,16 @@ const contractNewInput = () => {
this.data.elevators_detail_arr[i].latitude = ''; // 經度
this.data.elevators_detail_arr[i].longitude = ''; // 緯度
this.data.elevators_detail_arr[i].manage = ''; // 工地負責人
this.data.elevators_detail_arr[i].qc = ''; // QC和官檢
this.data.elevators_detail_arr[i].contract_arrival_date = ''; //合約交期(到工地)
this.data.elevators_detail_arr[i].qc = 'QO'; // QC和官檢
this.data.elevators_detail_arr[i].contract_arrival_date = this.data.contract_arrival_date; //合約交期(到工地)
// this.data.elevators_detail_arr[i].area_no = ''; //區域
}
this.step = 3;
this.isLoading = false;
} else if (this.step == 3) {
console.log(this.data.elevators_detail_arr);
this.step = 4;
this.isLoading = false;
// this.step = 4;
// this.isLoading = false;
}
},
getContractDate() {
@ -887,7 +890,7 @@ const contractNewInput = () => {
return
}
if (!this.customize) {
console.log(res.data);
console.log(res.data.customer);
this.data.customer = res.data.company
this.data.manager = res.data.manager
this.data.vat = res.data.uscc
@ -896,11 +899,13 @@ const contractNewInput = () => {
this.data.lm_tel = res.data.lm_tel
this.data.address = res.data.address
this.data.salesman = res.data.person
this.data.qc = res.data.qc;
// this.data.qc = res.data.qc;
this.data.price_total = res.data.price_total;
this.data.elevators = res.data.elevators;
this.data.elevators_detail_arr = res.data.elevators_detail_arr;
this.data.nums = res.data.nums;
this.data.pay_arr = res.data.pay_arr;
this.data.contract_arrival_date = res.data.facilitok_date;
}
this.step = 2
this.isLoading = false
@ -916,18 +921,19 @@ const contractNewInput = () => {
form.append('customer', this.data.customer);
form.append('manager', this.data.manager);
form.append('vat', this.data.vat);
form.append('area_no', this.data.area_no);
form.append('case_name', this.data.case_name);
form.append('linkman', this.data.linkman);
form.append('lm_tel', this.data.lm_tel);
form.append('address', this.data.address);
form.append('salesman', this.data.salesman);
form.append('qc', this.data.qc);
form.append('signing_date', this.data.signing_date);
form.append('nums', this.data.nums);
form.append('price_total', this.data.price_total);
form.append('contract_type', this.data.contract_type);
form.append('elevators_detail_arr', JSON.stringify(this.data.elevators_detail_arr));
form.append('elevators', JSON.stringify(this.data.elevators));
form.append('pay_arr', JSON.stringify(this.data.pay_arr));
form.append('contracttype', 'm');
form.append('user_id', user_id);
for (var i = 0; i < this.data.files.length; i++) {
@ -952,7 +958,7 @@ const contractNewInput = () => {
this.customize = false
} else {
alert('儲存失敗!可能為以下錯誤:\n' + res.data)
alert('儲存失敗!')
}
this.isLoading = false
}).catch(error => {
@ -1016,6 +1022,7 @@ const contractInput = () => {
disabled: false, //資料庫是否有電梯數量資料
elevators: [], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期
payType: '', //付款方式
contract_type: 'new'
// bonus_verson: 2.1,
// manager: '',
// regular_contract_manger_id: '',
@ -1048,6 +1055,7 @@ const contractInput = () => {
data.bonus_verson = 2.1;
},
getManager() {
for (let i = 0; i < this.data.elevators.length; i++) {
this.getBonusVerson(this.data.elevators[i]);
axios.get('./api/getContractData.php?contracttype=accountManger&salesman=' + this.data.salesman).then(res => {
@ -1070,6 +1078,7 @@ const contractInput = () => {
}
},
createElevator() {
if (this.data.num != this.data.elevators.length) {
for (let i = 0; i < this.data.num; i++) {
this.data.elevators.push({
spec: '', //規格
@ -1087,12 +1096,14 @@ const contractInput = () => {
useful_date: '', //許可證有效日期
maintain_times: '', //保養頻率
discount: '', //折價率
contract_type: '',
// contract_type: '',
manager: '',
regular_contract_manger_id: '',
bonus_verson: ''
bonus_verson: '',
sold_price: ''
})
}
}
},
getContractDate() {
axios.get('./api/getContractData.php?contracttype=b&contractno=' + this.data.contractno).then(res => {
@ -1101,16 +1112,18 @@ const contractInput = () => {
this.isLoading = false
return
}
console.log(res.data.service_expense);
if (!this.customize) {
this.data.elevators = res.data.elevators;
for (let i = 0; i < res.data.elevators.length; i++) {
// 合約總價格。
this.data.total_price = Number(res.data.elevators[i].sold_price) + Number(this.data.total_price);
this.data.total_price = Math.round(Number(res.data.elevators[i].sold_price) + Number(this.data.total_price));
// 服務費 (以單筆合約記,但計算獎金須傳入單月服務費)
this.data.elevators[i].service_expense = Math.round(this.data.elevators[i].service_expense / 12);
this.data.elevators[i].service_expense = Math.round(this.data.elevators[i].service_expense / res.data.elevators[i].maintain_months);
// 折扣率
this.data.elevators[i].discount = Math.round(((res.data.elevators[i].sold_price / res.data.elevators[i].stand_price) + this.data.elevators[i].service_expense) * 100);
this.data.elevators[i].discount = ((res.data.elevators[i].sold_price - this.data.elevators[i].service_expense) / res.data.elevators[i].stand_price);
this.data.elevators[i].sold_price = Math.round(res.data.elevators[i].sold_price);
}
this.data.total_price = Number(res.data.elevators[0].maintain_months) * this.data.total_price;
this.data.salesman = res.data.salesman
@ -1205,7 +1218,8 @@ const contractInput = () => {
form.append('num', this.data.num);
form.append('elevators', JSON.stringify(this.data.elevators));
form.append('contracttype', 'b');
form.append('payType', this.data.payType)
form.append('payType', this.data.payType);
form.append('contract_type', this.data.contract_type);
// 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) {
@ -1239,7 +1253,8 @@ const contractInput = () => {
this.data.zip = ''
this.data.partyAphone = ''
this.data.partyAemail = ''
this.data.payType = ''
this.data.payType = '';
this.data.contract_type = ''
}
this.isLoading = false
}).catch(error => {
@ -1465,6 +1480,7 @@ const contractNewApply = () => {
form.append('review_comment', this.data.review_comment);
form.append('description', this.data.description);
form.append('progress', 0);
form.append('form_key', form_key);
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
@ -1490,7 +1506,7 @@ const contractNewApply = () => {
let newstatus = 0;
if (this.progress <= 1) {
newprogress = 2;
newprogress = 3;
} else if (this.progress == 2) {
newprogress = 3;
}
@ -1498,7 +1514,7 @@ const contractNewApply = () => {
if (this.status == 1 && this.progress == 2) {
newstatus = 3
} else {
newstatus = 1
newstatus = 3
}
console.log(newstatus);
console.log(newprogress)
@ -1511,6 +1527,7 @@ const contractNewApply = () => {
form.append('review_comment', this.data.review_comment);
form.append('review_person_id', user_id);
form.append('progress', newprogress);
form.append('form_key', form_key);
axios.post('./api/postContractNewApplyData.php', form).then(res => {
if (res.status === 200) {
alert('審核成功');
@ -1518,11 +1535,13 @@ const contractNewApply = () => {
}
this.isLoading = false
}).catch(error => {
alert('審核失敗!可能為以下錯誤:\n' + error.response.data)
console.log('審核失敗!可能為以下錯誤:\n' + error.response.data)
alert('審核失敗!')
this.isLoading = false
})
},
disagree() {
console.log(user_id);
if (!confirm('確定退回嗎?')) return;
this.isLoading = true
const form = new FormData();
@ -1532,11 +1551,12 @@ const contractNewApply = () => {
form.append('review_comment', this.data.review_comment);
form.append('review_person_id', user_id);
form.append('progress', 0);
form.append('form_key', form_key);
axios.post('./api/postContractNewApplyData.php', form).then(res => {
if (res.status === 200) {
alert('退回成功');
console.log(res.data);
// window.location.reload();
window.location.reload();
}
this.isLoading = false
}).catch(error => {

2
wms/crm/crmm02-index.php

@ -170,7 +170,7 @@ if ($data) :
<span class="glyphicon glyphicon-pencil"></span>
</a>
<?php if ($user_name === $row['salesman'] || $user_id = 'M0225') : ?>
<a href="../mkt/pricereviewMaintainCreate.php?function_name=customer&token=<?= $token_link ?>&vol_no=<?= $row['vol_no'] ?>" class="btn btn-info btn-sm">
<a href="../cont/pricereviewCreate.php?function_name=sign_list&<?= $token_link ?>&vol_no=<?= $row['vol_no'] ?>" class="btn btn-info btn-sm">
轉價審
</a>
<?php endif ?>

8
wms/crm/crmm03-edit.php

@ -23,7 +23,7 @@ $salesman_opt = DB::result($sql);
#5.有望客戶狀態
$sql = "select code_name value ,content label from code where field_name='hope_customer_status'";
$hope_customer_status_opt = DB::result($sql);
print_r($hope_customer_status_opt);
#6.是否汰改
$is_renovation_opt = ["N" => "新梯(M)", "Y" => "汰改(T)"];
/*
@ -46,7 +46,10 @@ $speed_opt = DB::result($sql);
#卷號
$vol_no = "";
#抓取有望客戶資料
$customer_type = [
['value'=>'0', 0=>'0', 'label'=>'一般客戶', 1=>'一般客戶'],
['value'=>'1', 0=>'1', 'label'=>'戰略客戶', 1=>'戰略客戶'],
];
$hope_elevator_customer_column = [
'is_renovation' => ['label' => "產品屬性", "tag" => 'radio', 'attr' => ['required', 'class' => ' form-control form-control-sm'], 'options' => $is_renovation_opt],
'vol_no' => ['label' => "卷號", "tag" => 'text', 'attr' => ['required', 'readonly=true ', "value" => "$vol_no", 'class' => 'form-control form-control-sm']],
@ -67,6 +70,7 @@ $hope_elevator_customer_column = [
'num' => ['label' => "台數", "tag" => 'digits', 'attr' => ['min=1', 'digits', 'class' => 'form-control form-control-sm']],
'pre_order_date' => ['label' => "預定成交日", "tag" => 'date', 'attr' => ['class' => 'date form-control form-control-sm']],
'status' => ['label' => "有望客戶狀態", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm'], 'options' => $hope_customer_status_opt],
'customer_type' => ['label' => "客戶類型", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm'], 'options' => $customer_type],
//'next_visit_date' => ['label' => "下次拜訪時間", "tag" => 'date', 'attr' => ['class' => 'date form-control form-control-sm']],
// 'brand' => ['label' => "廠牌", "tag" => 'select', 'attr' => ['required', 'class' => ' form-control form-control-sm '], 'options' => $elevator_brand_opt],
//'quote_date' => ['label' => "報價日期", "tag" => 'date', 'attr' => ['class' => 'date form-control form-control-sm']],

2
wms/crm/crmm06_submit.php

@ -17,4 +17,4 @@ foreach ($cols as $col) {
$hecm->create($data);
echo "<script>alert('已保存');</script>";
header("Location:" . "localhost/wms/crm/crmm02-index.php?token=" . $request['token']);
header("Location:" . "crmm02-index.php?token=" . $request['token']);

1
wms/crm/model/HopeElevatorCustomerModel.php

@ -29,6 +29,7 @@ class HopeElevatorCustomerModel extends Model
'introducer',
'company',
'case_name',
'customer_type',
'creater_name',
'creater'];
}

7
wms/fun_global.php

@ -201,12 +201,13 @@ function check_user_permission($user_id, $token)
'/wms/test.php',
'/wms/delivery_kpi.php',
'/wms/contract_m-index.php',
'/wms/contract_b-index.php'
'/wms/contract_b-index.php',
];
if (in_array($_SERVER["SCRIPT_NAME"], $ignore_url_arr)) return;
$do = "";
$sql = "select accounttype from account where accountid = '$user_id'";
$res = mysqli_query($link, $sql);
if ($row = mysqli_fetch_assoc($res)) {
if ($row["accounttype"] == "E") $do = 3; // 管理員
@ -215,8 +216,8 @@ function check_user_permission($user_id, $token)
$res2 = mysqli_query($link, $sql2);
if ($row2 = mysqli_fetch_assoc($res2)) {
$arr = json_decode(urldecode($row2["permission"]), true);
//print_r($arr);
//echo "#".str_replace("/wms/", "", $_SERVER["SCRIPT_NAME"]);exit;
$do = $arr[str_replace("/wms/", "", $_SERVER["SCRIPT_NAME"])];
}
mysqli_free_result($res2);

3
wms/login.php

@ -89,6 +89,7 @@
</div>
</div>
<span style="color:red">
<?php
if (!empty($_GET['errno'])) {
if ($_GET['errno'] == 1) {
@ -102,7 +103,7 @@
}
}
?>
</span>
</div>

5
wms/mkt/api/postNewElevatorPricereview.php

@ -30,6 +30,8 @@ $attatch2_src = null;
$token = $_POST['token'];
$form_key = $_POST['form_key'];
$updated_at = date("Y-m-d H:i:s");
$updated_by = $_POST['user_id'];
$elevators = json_decode($_POST['elevators'], true);
$options = json_decode($_POST['options'], true);
$otherOptions = json_decode($_POST['otherOptions'], true);
@ -63,8 +65,6 @@ if(!empty($attatch1)){
$path = './pricereview-uploads/';
$attatch1_src = $path.$imgsrc;
if (!file_exists($path)) { mkdir($path); }
if ($error == 0) {
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
if (!in_array($ext, $allow_ext)) {
@ -155,7 +155,6 @@ try{
$stmt->bindParam(':status', $status);
$stmt->bindParam(':attatch1', $attatch1_src);
$stmt->bindParam(':attatch2', $attatch2_src);
$stmt->execute();
//整機單價

10
wms/mkt/api/postPricereviewSign.php

@ -31,11 +31,21 @@ try{
$stmt->bindParam(':sign_id', $sign_id);
$stmt->execute();
if($sign == 3){
$sql_str = "UPDATE pricereview_main SET status=:status, updated_at=:updated_at WHERE id = :id ";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':status', $result);
$stmt->bindParam(':id', $mid);
$stmt->bindParam(':updated_at', $updated_at);
$stmt->execute();
}else{
$sql_str = "UPDATE pricereview_main SET status=:status WHERE id = :id ";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':status', $result);
$stmt->bindParam(':id', $mid);
$stmt->execute();
}
include_once "./postSystemNotice.php";
$sql_str = "SELECT * FROM pricereview_main WHERE id = :id ORDER BY id DESC LIMIT 1";

25
wms/mkt/assets/js/pricereviewAlpine.js

@ -490,10 +490,14 @@ const pricereviewCreate = ()=>{
this.otherOptionKey++;
},
addOptionToElevator(key){
console.log(key);
console.log(this.selectedOptions);
this.currentOptionKey = key;
this.toElevators = [];
this.toElevatorNo = "";
const matchElevators = this.selectedOptions.filter(option=> option.key == key)[0].toElevator.map(elevator=> elevator.id)
console.log(matchElevators);
// this.toElevatorNo = matchElevators.length > 0 ? matchElevators[0] : '';
this.toElevatorNo = matchElevators[0]
this.elevators.forEach(elevator=>{
if(elevator.price > 0){
@ -544,7 +548,9 @@ const pricereviewCreate = ()=>{
chkOptionToElevators(){
const checkedOptions = [];
const matchElevators = this.elevators.filter(elevator=> elevator.id == this.toElevatorNo)[0]
console.log(this.elevators);
console.log(this.toElevatorNo);
console.log(this.elevators.filter(elevator=> elevator.id == this.toElevatorNo));
checkedOptions.push({
id: this.toElevatorNo,
model: matchElevators['model'] ,
@ -590,7 +596,22 @@ const pricereviewCreate = ()=>{
return issetElevators.includes(el.id)
})
})
console.log(this.selectedOptions);
this.otherOptions.forEach(option=>{
option.toElevator = option.toElevator.filter(el=>{
return issetElevators.includes(el.id)
})
})
this.maintainOptions.forEach(option=>{
option.toElevator = option.toElevator.filter(el=>{
return issetElevators.includes(el.id)
})
})
this.demolishOptions.forEach(option=>{
option.toElevator = option.toElevator.filter(el=>{
return issetElevators.includes(el.id)
})
})
},
removeOption(key){
console.log(this.selectedOptions);

9
wms/mkt/pricereview-index.php

@ -392,13 +392,15 @@ if ($data) :
<th>總經理</th>
<th>狀態</th>
<th>合約書申請</th>
<?php if($user_id == "M0060"): ?>
<th>送審時間</th>
<?php endif ; ?>
<!--<th>修改</th>-->
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sign1 = $sign2 = $sign3 = $sign4 = "";
$oneself = ($data["creater"] == $user_id) ? 1 : 0; // 是否為營業員本人
// 簽核狀況
@ -741,6 +743,11 @@ if ($data) :
<a class="applybtn" href="../contract/contract-download.php?id=<?php echo $data['id'] . '&' . $para ?>">下載</a>
<?php endif; ?>
</td>
<?php if($user_id == "M0060"): ?>
<td>
<?php echo $data['updated_at']; ?>
</td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>

8
wms/mkt/pricereviewCreate.php

@ -49,12 +49,11 @@ $hope_status = [
$sql_str = "SELECT hope_elevator_customer.*, code.content AS source_content, account.name AS salesman_name FROM hope_elevator_customer
LEFT JOIN code ON code.code_name = hope_elevator_customer.source
LEFT JOIN account ON account.accountid = hope_elevator_customer.salesman
WHERE hope_elevator_customer.vol_no = :vol_no AND code.field_name = 'customer_source'";
WHERE hope_elevator_customer.vol_no = :vol_no ";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $vol_no);
$stmt->execute();
$hope_customer = $stmt->fetch(PDO::FETCH_ASSOC);
if($user_id !== $hope_customer['salesman'] && $user_id !== "M0174"){
echo "<script>alert('無權限編輯此紀錄!您不是該單營業員。');window.history.go(-1);</script>";
exit;
@ -491,11 +490,6 @@ function convertDateTimeFormat($dateTimeStr) {
<option value="MAF100">MAE100貨梯(有機房)</option>
<option value="MAQ100">MAQ100強趨梯</option>
<option value="MAP100">MAP100平台梯</option>
<?php if($hope_customer['is_renovation']): ?>
<option value="M1">M1(系統更新)</option>
<option value="M1+M4(1:1)">M1+M4(1:1)系統+主機</option>
<option value="M1+M4(2:1)">M1+M4(2:1)系統+主機</option>
<?php endif; ?>
</select>
<span x-show="!elevator.specifications" class="errortext" x-cloak data-type="errortext">請選擇規格</span>
</td>

4
wms/mkt/window-modal/demolishToElevatorModal.php

@ -12,7 +12,7 @@
<th>規格</th>
<th>選擇</th>
</tr>
<template x-for="elevator in toElevators">
<template x-for="elevator in toElevators" :key="elevator.id">
<tr>
<td x-text="elevator.id"></td>
<td x-text="elevator.model"></td>
@ -29,7 +29,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideToDemolishOptionElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="chkDemolishOptionToElevators()">確認</button>
<button type="button" x-show="toElevators.length > 0" class="btn btn-primary" @click="chkDemolishOptionToElevators()">確認</button>
</div>
</div>
<div class="window-back" @click="hideToDemolishOptionElevatorModal()"></div>

5
wms/mkt/window-modal/elevatorModal.php

@ -23,11 +23,6 @@
<option value="MAF100">MAF100貨梯(有機房)</option>
<option value="MAQ100">MAQ100強趨梯</option>
<option value="MAP100">MAP100平台梯</option>
<?php if($hope_customer['is_renovation'] == 'Y'): ?>
<option value="M1">M1(系統更新)</option>
<option value="M1+M4(1:1)">M1+M4(1:1)系統+主機</option>
<option value="M1+M4(2:1)">M1+M4(2:1)系統+主機</option>
<?php endif; ?>
</select>
</td>
<td>

4
wms/mkt/window-modal/maintainToElevatorModal.php

@ -12,7 +12,7 @@
<th>規格</th>
<th>選擇</th>
</tr>
<template x-for="elevator in toElevators">
<template x-for="elevator in toElevators" :key="elevator.id">
<tr>
<td x-text="elevator.id"></td>
<td x-text="elevator.model"></td>
@ -29,7 +29,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideToMaintainOptionElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="chkMaintainOptionToElevators()">確認</button>
<button type="button" x-show="toElevators.length > 0" class="btn btn-primary" @click="chkMaintainOptionToElevators()">確認</button>
</div>
</div>
<div class="window-back" @click="hideToMaintainOptionElevatorModal()"></div>

6
wms/mkt/window-modal/optionToElevatorModal.php

@ -12,11 +12,11 @@
<th>規格</th>
<th>選擇</th>
</tr>
<template x-for="elevator in toElevators">
<template x-for="elevator in toElevators" :key="elevator.id">
<tr>
<td x-text="elevator.id"></td>
<td x-text="elevator.model"></td>
<td><input type="radio" name="optionToElevator" :value="elevator.id" class="form-check-input" x-model="toElevatorNo" /></td>
<td><input type="radio" name="optionToElevator" :value="elevator.id" class="form-check-input" x-model="toElevatorNo" @change="console.log(elevator.id, toElevatorNo)" /></td>
</tr>
</template>
<tr x-show="toElevators.length == 0">
@ -29,7 +29,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideToElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="chkOptionToElevators()">確認</button>
<button type="button" x-show="toElevators.length > 0" class="btn btn-primary" @click="chkOptionToElevators()">確認</button>
</div>
</div>
<div class="window-back" @click="hideToElevatorModal()"></div>

4
wms/mkt/window-modal/otherToElevatorModal.php

@ -12,7 +12,7 @@
<th>規格</th>
<th>選擇</th>
</tr>
<template x-for="elevator in toElevators">
<template x-for="elevator in toElevators" :key="elevator.id">
<tr>
<td x-text="elevator.id"></td>
<td x-text="elevator.model"></td>
@ -29,7 +29,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideToOtherOptionElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="chkOtherOptionToElevators()">確認</button>
<button type="button" x-show="toElevators.length > 0" class="btn btn-primary" @click="chkOtherOptionToElevators()">確認</button>
</div>
</div>
<div class="window-back" @click="hideToOtherOptionElevatorModal()"></div>

Loading…
Cancel
Save