10994015 1 year ago
parent
commit
099e2efcdc
  1. 4
      wms/T8_APItest.php
  2. BIN
      wms/account-receivable-facility.xlsx
  3. 469
      wms/account-receivable-index-ing.php
  4. 146
      wms/account-receivable-index.php
  5. BIN
      wms/account-receivable-test.xlsx
  6. 31815
      wms/account_receivable_sql_file.sql
  7. 12
      wms/contract-repair/api/putContractData.php
  8. 12
      wms/contract/api/postContractData.php
  9. 723
      wms/contract/contract-input.php
  10. 40
      wms/contract/js/alpine.js

4
wms/T8_APItest.php

@ -40,12 +40,12 @@ echo "ii";
"name": "salIncomeApplyDetail", "name": "salIncomeApplyDetail",
"rows": [{ "rows": [{
"BillNo": "B23100061", "BillNo": "B23100061",
"IncomeId": "A40003", "IncomeId": "A40004",
"TaxId": "ST005", "TaxId": "ST005",
"RowCode": 1, "RowCode": 1,
"ItemType": "1", "ItemType": "1",
"SPrice": 10000, "SPrice": 10000,
"SQuantity": 2, "SQuantity": 0,
"FromSourceTag": 0, "FromSourceTag": 0,
"FromBillNo": "" "FromBillNo": ""
}] }]

BIN
wms/account-receivable-facility.xlsx

Binary file not shown.

469
wms/account-receivable-index-ing.php

@ -1,4 +1,7 @@
<?php <?php
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Sign;
include "header.php"; include "header.php";
$follower = find_follow($user_id); $follower = find_follow($user_id);
@ -39,6 +42,45 @@ LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo
LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId
WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) ";
//作番大日程
$sql = "SELECT
tmp2.*,
d.name AS depart_name
FROM(
SELECT
a.manager,
a2.name as manager_name,
a.name,
a.department_id,
w.salesid,
w.contractno,
w.facilityno,
w.estimated_shipping_date,
w.real_contract_arrival_date,
w.actual_tofactory_date,
w.real_arrival_date,
w.install_end_date,
w.tryrun_end_date,
w.official_check_date,
w.delivery_date
from wipwholestatus AS w
left join account AS a
ON w.salesid = a.accountid
left join account AS a2
ON a2.accountid = a.manager
where w.status = '1' AND w.contract_type='A'
)AS tmp2
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d
ON d.department_id = tmp2.department_id ";
//ORDER BY contractno
// 期初收款資訊 // 期初收款資訊
$sql_opening = " $sql_opening = "
SELECT * FROM account_received "; SELECT * FROM account_received ";
@ -46,20 +88,25 @@ SELECT * FROM account_received ";
// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的 // 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的
if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) { if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
$sql_contract .= "AND (s.PersonId = '$user_id'"; $sql_contract .= "AND (s.PersonId = '$user_id'";
$sql_received .= " AND (PersonId = '$user_id'"; // $sql_received .= " AND (PersonId = '$user_id'";
$sql_opening .= " OR person_id = '$user_id'"; $sql_opening .= " OR person_id = '$user_id'";
$sql .= " WHERE salesid = '$user_id'";
if (count($follower) > 0) { if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'"; $column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower); $column_str .= implode("','", $follower);
$column_str .= "')"; $column_str .= "')";
$sql_contract .= " OR s.PersonId IN $column_str)"; $sql_contract .= " OR s.PersonId IN $column_str)";
$sql_received .= " OR PersonId IN $column_str)"; // $sql_received .= " OR PersonId IN $column_str)";
$sql_opening .= " OR person_id IN $column_str)"; $sql_opening .= " OR person_id IN $column_str)";
$sql .= " OR salesid IN $column_str ORDER BY contractno";
} else { } else {
$sql_contract .= ")"; $sql_contract .= ")";
$sql_received .= ")"; // $sql_received .= ")";
$sql_opening .= ")"; $sql_opening .= ")";
$sql .= " ORDER BY contractno";
}; };
} else {
$sql .= " ORDER BY contractno";
} }
$contract = $conn->query($sql_contract); $contract = $conn->query($sql_contract);
@ -183,41 +230,7 @@ foreach ($contract as $cont) {
//取作番大日程作番與時程 //取作番大日程作番與時程
// real_contract_arrival_date 預計出貨日 // real_contract_arrival_date 預計出貨日
// real_arrival_date 實際出貨日 // real_arrival_date 實際出貨日
$sql = "SELECT
tmp2.*,
d.name AS depart_name
FROM(
SELECT
a.manager,
a2.name as manager_name,
a.name,
a.department_id,
w.salesid,
w.contractno,
w.facilityno,
w.estimated_shipping_date,
w.real_contract_arrival_date,
w.actual_tofactory_date,
w.real_arrival_date,
w.install_end_date,
w.tryrun_end_date,
w.official_check_date,
w.delivery_date
from wipwholestatus AS w
left join account AS a
ON w.salesid = a.accountid
left join account AS a2
ON a2.accountid = a.manager
where w.status = '1' AND w.contract_type='A'
)AS tmp2
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d
ON d.department_id = tmp2.department_id ORDER BY contractno";
$wipwhole_array = mysqli_query($link, $sql); $wipwhole_array = mysqli_query($link, $sql);
foreach ($wipwhole_array as $wip) { foreach ($wipwhole_array as $wip) {
$today = strtotime(date('Ymd')); $today = strtotime(date('Ymd'));
@ -515,7 +528,7 @@ foreach ($wipwhole_array as $wip) {
} }
if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) {
if ( isset($arrayData[$wip['contractno']]['tryrun'][0]) && $arrayData[$wip['contractno']]['tryrun'][0] == "安裝試車後90天") { if (isset($arrayData[$wip['contractno']]['tryrun'][0]) && $arrayData[$wip['contractno']]['tryrun'][0] == "安裝試車後90天") {
$estimate_delivery_time = strtotime($wip['tryrun_end_date']); $estimate_delivery_time = strtotime($wip['tryrun_end_date']);
$tryruntime = $estimate_delivery_time + (90 * 86400); $tryruntime = $estimate_delivery_time + (90 * 86400);
$month = collect_month($tryruntime); $month = collect_month($tryruntime);
@ -846,6 +859,8 @@ $excel_aray = array();
$boga_array = array(); $boga_array = array();
$exclude_boga_array = array(); $exclude_boga_array = array();
$facility_array = array(); $facility_array = array();
$facility_boga_array = array();
$facility_exclude_boga_array = array();
foreach ($arrayData as $key => $value) { foreach ($arrayData as $key => $value) {
$value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0; $value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0;
$value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0; $value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0;
@ -916,7 +931,7 @@ foreach ($arrayData as $key => $value) {
$val[$stage][6] = (!(isset($val[$stage][6])) || is_null($val[$stage][6])) ? 0 : $val[$stage][6]; $val[$stage][6] = (!(isset($val[$stage][6])) || is_null($val[$stage][6])) ? 0 : $val[$stage][6];
} }
$facility_array[$valkey] = [ $facility_array[$valkey] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6],
@ -927,316 +942,82 @@ foreach ($arrayData as $key => $value) {
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget']
]; ];
} if ($value['sign'][0] == "寶佳出貨前30天") {
} $facility_boga_array[$valkey] = [
// foreach($facility_array as $key=>$value){ $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
// echo $key; $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6],
// echo '<br>'; $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6],
// print_r($value); $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6],
// echo '<br><br>'; $val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6],
// } $val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6],
$data = json_encode($excel_aray); $val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6],
$boga_data = json_encode($boga_array); $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6],
$exclude_boga_data = json_encode($exclude_boga_array); str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget']
$facility_data = json_encode($facility_array); ];
} else {
?> $facility_exclude_boga_array[$valkey] = [
<style> $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
table { $val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6],
table-layout: fixed; $val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6],
width: 100%; $val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6],
} $val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6],
td { $val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6],
word-wrap: break-word; $val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6],
} $val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget']
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;
}
</style>
<div class="btn-group btn-group-lg" style="padding:10 px;">
<button type="button" onclick="downloadData()" class="btn btn-success">全部<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="exclude_bogaData()" class="btn btn-info">不含寶佳<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="bogaData()" class="btn btn-warning">寶佳<span class="glyphicon glyphicon-download-alt"></span></button>
</div>
<div style="padding: 10px;">
<button type="button" onclick="downloadFacilityData()" class="btn btn-primary btn-lg">合約作番明細<span class="glyphicon glyphicon-download-alt"></span></button>
</div>
<div>
<?php
if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id == 'M0060') {
?>
<!-- <a href="facility-price.php?<?= $token_link ?>" class="btn btn-primary btn-lg pull-right">合約作番明細</span></a> -->
<?php
}
?>
</div>
<div style="width:98%;margin:1% ;overflow-x: auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%;">
<thead>
<tr>
<th style="width: 120px;">合約號</th>
<th style="width: 120px;">部門</th>
<th style="width: 120px;">經理</th>
<th style="width: 120px;">營業員</th>
<th style="width: 120px;">客戶名稱</th>
<th style="width: 120px;">簽約款</th>
<th style="width: 120px;">應收簽約金額</th>
<th style="width: 120px;">簽約最小催收次數</th>
<th style="width: 120px;">簽約最大催收次數</th>
<th style="width: 120px;">二次款</th>
<th style="width: 120px;">應收二次金額</th>
<th style="width: 120px;">二次最小催收次數</th>
<th style="width: 120px;">二次最大催收次數</th>
<th style="width: 120px;">貨抵工地款</th>
<th style="width: 120px;">應收貨抵工地金額</th>
<th style="width: 120px;">貨抵工地最小催收次數</th>
<th style="width: 120px;">貨抵工地最大催收次數</th>
<th style="width: 120px;">安裝款</th>
<th style="width: 120px;">應收安裝金額</th>
<th style="width: 120px;">安裝最小催收次數</th>
<th style="width: 120px;">安裝最大催收次數</th>
<th style="width: 120px;">試車款</th>
<th style="width: 120px;">應收試車金額</th>
<th style="width: 120px;">試車最小催收次數</th>
<th style="width: 120px;">試車最大催收次數</th>
<th style="width: 120px;">官檢款</th>
<th style="width: 120px;">應收官檢金額</th>
<th style="width: 120px;">官檢最小催收次數</th>
<th style="width: 120px;">官檢最大催收次數</th>
<th style="width: 120px;">移交款</th>
<th style="width: 120px;">應收移交金額</th>
<th style="width: 120px;">移交最小催收次數</th>
<th style="width: 120px;">移交最大催收次數</th>
<th style="width: 120px;">尾款</th>
<th style="width: 120px;">應收尾款金額</th>
<th style="width: 120px;">尾款最小催收次數</th>
<th style="width: 120px;">尾款最大催收次數</th>
<th style="width: 120px;">合約總金額</th>
<th style="width: 120px;" style="width: 120px;">目前應收</th>
<th style="width: 120px;" style="width: 120px;">已開發票金額</th>
<th style="width: 120px;">已收金額</th>
<!-- <th>作番狀態</th> -->
<th style="width: 350px;">收款狀態</th>
</tr>
</thead>
<tbody>
<?php
foreach ($arrayData as $key => $value) {
?>
<tr>
<th><a onclick="showContract('<?= $key ?>')"><?= $key ?> </a></th>
<td><?= $value[1] ?></td>
<td><?= $value[2] ?></td>
<td><?= $value[4] ?></td>
<td><?= $value[5] ?></td>
<td><?= number_format(round($value['sign'][1])) ?></td>
<td style="text-align: end;"><?= isset($value['sign'][3]) ? number_format(round($value['sign'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['sign']['min']) ? $value['sign']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['sign']['max']) ? $value['sign']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['second'][1]) ? number_format(round($value['second'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['second'][3]) ? number_format(round($value['second'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['second']['min']) ? $value['second']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['second']['max']) ? $value['second']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['arrive'][1]) ? number_format(round($value['arrive'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['arrive'][3]) ? number_format(round($value['arrive'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['arrive']['min']) ? $value['arrive']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['arrive']['max']) ? $value['arrive']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['install'][1]) ? number_format(round($value['install'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['install'][3]) ? number_format(round($value['install'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['install']['min']) ? $value['install']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['install']['max']) ? $value['install']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['tryrun'][1]) ? number_format(round($value['tryrun'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['tryrun'][3]) ? number_format(round($value['tryrun'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['tryrun']['min']) ? $value['tryrun']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['tryrun']['max']) ? $value['tryrun']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['check'][1]) ? number_format(round($value['check'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['check'][3]) ? number_format(round($value['check'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['check']['min']) ? $value['check']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['check']['max']) ? $value['check']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['delivery'][1]) ? number_format(round($value['delivery'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['delivery'][3]) ? number_format(round($value['delivery'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['delivery']['min']) ? $value['delivery']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['delivery']['max']) ? $value['delivery']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['final'][1]) ? number_format(round($value['final'][1])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['final'][3]) ? number_format(round($value['final'][3])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['final']['min']) ? $value['final']['min'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['final']['max']) ? $value['final']['max'] : '--' ?></td>
<td style="text-align: end;"><?= isset($value['total_budget']) ? number_format(round($value['total_budget'])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['receivable_budget']) ? number_format(round($value['receivable_budget'])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['invoice_budget']) ? number_format(round($value['invoice_budget'])) : '--' ?></td>
<td style="text-align: end;"><?= isset($value['received_budget']) ? number_format(round($value['received_budget'])) : '--' ?></td>
<td style="text-align: start;"><?= $value['facilities'] ?></td>
<!-- <td><button type="button" onclick="sendData('<?= $key ?>')" class="btn btn-primary btn-sm"><span class=" glyphicon glyphicon-search"></span></button>
</td> -->
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<script>
function showContract(BillNo) {
window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200');
console.log(BillNo);
}
function test() {
var BillData = <?= $boga_data ?>;
var form = document.createElement("form");
form.method = 'POST';
form.action = "account-receivable-excel.php?type=facility&<?= $token_link ?>";
var input = document.createElement("input");
input.type = "hidden";
input.name = "Bill";
input.value = JSON.stringify(BillData);
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
function downloadData() {
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-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-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
// xhr.send(JSON.stringify({
// Bill: <?= $data ?>
// })
// );
xhr.send(JSON.stringify({
Bill: <?= $data ?>
}));
}
function bogaData() {
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-excel.php?type=boga&<?= $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-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
} }
xhr.send(JSON.stringify({
Bill: <?= $boga_data ?>
}));
} }
function downloadFacilityData() { }
var xhr = new XMLHttpRequest(); $table = "";
var url = window.location.origin + "/wms/account-receivable-excel.php?type=facility&<?= $token_link ?>";
xhr.open('POST', url, true); //[stage] 0 款名 1金額 2 應收款日期
xhr.setRequestHeader('Content-Type', 'application/json'); //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
xhr.onreadystatechange = function() { // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址
if (xhr.readyState === 4 && xhr.status === 200) { // [合約號]['facility'][作番號]['no']
var file_path = xhr.responseText; //['receivable_budget'] / ['total_facility_num'] / ['total_budget']
var link = document.createElement('a'); //('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final');
var name = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; foreach ($arrayData as $key => $value) {
link.setAttribute('href', window.location.origin + "/wms/account-receivable-facility.xlsx"); foreach($value['facility'] as $fakey => $facility) {
link.setAttribute('download', name); foreach ($contractstage as $stage) {
link.style.display = 'none'; switch ($stage) {
document.body.appendChild(link); case 'sign':$stageno = 0;break;
link.click(); case 'second':$stageno=1;break;
document.body.removeChild(link); case 'arrive':$stageno=2;break;
case 'install':$stageno=3;break;
case 'tryrun':$stageno=4;break;
case 'check':$stageno=5;break;
case 'delivery':$stageno=6;break;
case 'final':$stageno=7;break;
} }
} if (isset($value[$stage]) && isset($value[$stage][0]) && !empty($value[$stage][0])) {
xhr.send(JSON.stringify({ if($value[$stage][3] >0){
Bill: <?= $facility_data ?> $stage3 = 1;
})); }else{
$stage3 = 0;
} }
$budget = $value[$stage][1];
function exclude_bogaData() { $receivable_date = $value[$stage][2];
var xhr = new XMLHttpRequest(); $table .= "INSERT INTO account_receivable (
var url = window.location.origin + "/wms/account-receivable-excel.php?type=exclude_boga&<?= $token_link ?>"; `contract_no`,
xhr.open('POST', url, true); `facility_no`,
xhr.setRequestHeader('Content-Type', 'application/json'); `stage`,
xhr.onreadystatechange = function() { `budget`,
if (xhr.readyState === 4 && xhr.status === 200) { `receivable_date`,
var file_path = xhr.responseText; `receivable`) VALUES ('$key','$fakey',$stageno,$budget,$receivable_date,$stage3); \n";
var link = document.createElement('a');
var name = "不含寶佳應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
link.setAttribute('href', window.location.origin + "/wms/account-receivable-test.xlsx");
link.setAttribute('download', name);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} }
} }
xhr.send(JSON.stringify({
Bill: <?= $exclude_boga_data ?>
}));
} }
}
$file_path = 'account_receivable_sql_file.sql';
if (file_put_contents($file_path, $table) !== false) {
function sendData(BillNo) { echo "SQL文件已成功生成:{$file_path}";
var BillData = <?= $data ?>; } else {
var Bill = BillData[BillNo]; echo "生成SQL文件时出现错误。";
var form = document.createElement("form"); }
form.method = 'POST'; // echo $table;
form.action = "account-receivable-check.php?<?= $token_link ?>";
var input = document.createElement("input");
input.type = "hidden";
input.name = "Bill";
input.value = JSON.stringify(Bill);
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
</script>

146
wms/account-receivable-index.php

@ -39,6 +39,45 @@ LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo
LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId
WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) ";
//作番大日程
$sql = "SELECT
tmp2.*,
d.name AS depart_name
FROM(
SELECT
a.manager,
a2.name as manager_name,
a.name,
a.department_id,
w.salesid,
w.contractno,
w.facilityno,
w.estimated_shipping_date,
w.real_contract_arrival_date,
w.actual_tofactory_date,
w.real_arrival_date,
w.install_end_date,
w.tryrun_end_date,
w.official_check_date,
w.delivery_date
from wipwholestatus AS w
left join account AS a
ON w.salesid = a.accountid
left join account AS a2
ON a2.accountid = a.manager
where w.status = '1' AND w.contract_type='A'
)AS tmp2
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d
ON d.department_id = tmp2.department_id ";
//ORDER BY contractno
// 期初收款資訊 // 期初收款資訊
$sql_opening = " $sql_opening = "
SELECT * FROM account_received "; SELECT * FROM account_received ";
@ -46,20 +85,25 @@ SELECT * FROM account_received ";
// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的 // 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的
if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) { if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
$sql_contract .= "AND (s.PersonId = '$user_id'"; $sql_contract .= "AND (s.PersonId = '$user_id'";
$sql_received .= " AND (PersonId = '$user_id'"; // $sql_received .= " AND (PersonId = '$user_id'";
$sql_opening .= " OR person_id = '$user_id'"; $sql_opening .= " OR person_id = '$user_id'";
$sql .= " WHERE salesid = '$user_id'";
if (count($follower) > 0) { if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'"; $column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower); $column_str .= implode("','", $follower);
$column_str .= "')"; $column_str .= "')";
$sql_contract .= " OR s.PersonId IN $column_str)"; $sql_contract .= " OR s.PersonId IN $column_str)";
$sql_received .= " OR PersonId IN $column_str)"; // $sql_received .= " OR PersonId IN $column_str)";
$sql_opening .= " OR person_id IN $column_str)"; $sql_opening .= " OR person_id IN $column_str)";
$sql .= " OR salesid IN $column_str ORDER BY contractno";
} else { } else {
$sql_contract .= ")"; $sql_contract .= ")";
$sql_received .= ")"; // $sql_received .= ")";
$sql_opening .= ")"; $sql_opening .= ")";
$sql .= " ORDER BY contractno";
}; };
}else{
$sql .= " ORDER BY contractno";
} }
$contract = $conn->query($sql_contract); $contract = $conn->query($sql_contract);
@ -183,41 +227,7 @@ foreach ($contract as $cont) {
//取作番大日程作番與時程 //取作番大日程作番與時程
// real_contract_arrival_date 預計出貨日 // real_contract_arrival_date 預計出貨日
// real_arrival_date 實際出貨日 // real_arrival_date 實際出貨日
$sql = "SELECT
tmp2.*,
d.name AS depart_name
FROM(
SELECT
a.manager,
a2.name as manager_name,
a.name,
a.department_id,
w.salesid,
w.contractno,
w.facilityno,
w.estimated_shipping_date,
w.real_contract_arrival_date,
w.actual_tofactory_date,
w.real_arrival_date,
w.install_end_date,
w.tryrun_end_date,
w.official_check_date,
w.delivery_date
from wipwholestatus AS w
left join account AS a
ON w.salesid = a.accountid
left join account AS a2
ON a2.accountid = a.manager
where w.status = '1' AND w.contract_type='A'
)AS tmp2
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d
ON d.department_id = tmp2.department_id ORDER BY contractno";
$wipwhole_array = mysqli_query($link, $sql); $wipwhole_array = mysqli_query($link, $sql);
foreach ($wipwhole_array as $wip) { foreach ($wipwhole_array as $wip) {
$today = strtotime(date('Ymd')); $today = strtotime(date('Ymd'));
@ -1006,42 +1016,22 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
} }
</style> </style>
<!-- <div style="width: 98%;margin: 1%;"> <div style="width: 98%;margin: 1%;">
<div class="btn-group btn-group-lg " style="padding:10 px;"> <div class="btn-group btn-group-md " style="padding:10 px; width: 100%;">
<button type="button" onclick="downloadData()" class="btn btn-success">全部<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadData()" class="btn btn-success">全部<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="exclude_bogaData()" class="btn btn-info">不含寶佳<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="exclude_bogaData()" class="btn btn-info">不含寶佳<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="bogaData()" class="btn btn-warning">寶佳<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="bogaData()" class="btn btn-warning">寶佳<span class="glyphicon glyphicon-download-alt"></span></button>
</div> </div>
</div> </div>
<div style="width: 98%;margin: 1%;"> <div style="width: 98%;margin: 1%;">
<div class="btn-group btn-group-lg"> <div class="btn-group btn-group-md" style="width: 100%;">
<button type="button" onclick="downloadFacilityData()" class="btn btn-success btn-lg">合約作番明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('AllData')" class="btn btn-success btn-md">作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="downloadFacilityBogaData()" class="btn btn-info btn-lg">寶佳合約作番明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('ExcludeData')" class="btn btn-info btn-md">不含寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" onclick="downloadFacilityExcludeBogaData()" class="btn btn-warning btn-lg">不含寶佳合約作番明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('BogaData')" class="btn btn-warning btn-md">寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
</div> </div>
</div> -->
<div class="btn-group" role="group">
<div class="btn-group" role="group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
合約
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><button type="button" onclick="downloadData()" class="btn btn-success">全部<span class="glyphicon glyphicon-download-alt"></span></button></li>
<li><button type="button" onclick="exclude_bogaData()" class="btn btn-info">不含寶佳<span class="glyphicon glyphicon-download-alt"></span></button></li>
<li><button type="button" onclick="bogaData()" class="btn btn-warning">寶佳<span class="glyphicon glyphicon-download-alt"></span></button></li>
</ul>
</div>
</div>
<div>
<?php
if (in_array(accountidToDepartId($user_id), array('220', '210')) || $user_id == 'M0060') {
?>
<!-- <a href="facility-price.php?<?= $token_link ?>" class="btn btn-primary btn-lg pull-right">合約作番明細</span></a> -->
<?php
}
?>
</div> </div>
<div style="width:98%;margin:1% ;overflow-x: auto;"> <div style="width:98%;margin:1% ;overflow-x: auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%;"> <table id="table_index" class="table table-striped table-bordered" style="width:100%;">
<thead> <thead>
@ -1222,7 +1212,20 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
} }
function downloadFacilityData() { function downloadFacilityData(content) {
if (content == 'AllData') {
var BillData = <?= $facility_data ?>;
var filename = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
}
else if(content == 'ExcludeData') {
var BillData = <?= $facility_exclude_boga_data ?>;
var filename = "不含寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
}
else if(content == 'BogaData'){
var BillData = <?= $facility_boga_data ?>;
var filename = "寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
}
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-excel.php?type=facility&<?= $token_link ?>"; var url = window.location.origin + "/wms/account-receivable-excel.php?type=facility&<?= $token_link ?>";
xhr.open('POST', url, true); xhr.open('POST', url, true);
@ -1231,9 +1234,8 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
if (xhr.readyState === 4 && xhr.status === 200) { if (xhr.readyState === 4 && xhr.status === 200) {
var file_path = xhr.responseText; var file_path = xhr.responseText;
var link = document.createElement('a'); var link = document.createElement('a');
var name = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
link.setAttribute('href', window.location.origin + "/wms/account-receivable-facility.xlsx"); link.setAttribute('href', window.location.origin + "/wms/account-receivable-facility.xlsx");
link.setAttribute('download', name); link.setAttribute('download', filename);
link.style.display = 'none'; link.style.display = 'none';
document.body.appendChild(link); document.body.appendChild(link);
link.click(); link.click();
@ -1241,7 +1243,7 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
} }
} }
xhr.send(JSON.stringify({ xhr.send(JSON.stringify({
Bill: <?= $facility_data ?> Bill: BillData
})); }));
} }

BIN
wms/account-receivable-test.xlsx

Binary file not shown.

31815
wms/account_receivable_sql_file.sql

File diff suppressed because it is too large

12
wms/contract-repair/api/putContractData.php

@ -67,7 +67,6 @@ if (isset($_POST['contracttype']) && $_POST['contracttype'] == 'r' && isset($_PO
} }
} }
function t8Insert($data) function t8Insert($data)
{ {
require_once('../../contract/connt8.php'); require_once('../../contract/connt8.php');
@ -99,7 +98,18 @@ function t8Insert($data)
$stmt->bindParam(':CreateTime', $create); $stmt->bindParam(':CreateTime', $create);
$stmt->execute(); $stmt->execute();
$sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime)
VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $repair_no);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':InvoiceAddress', $address);
$stmt->bindParam(':CreateTime', $create);
$stmt->execute();
$sql = "INSERT INTO ";
$connT8->commit(); $connT8->commit();
} }

12
wms/contract/api/postContractData.php

@ -34,6 +34,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$num = !empty($_POST['num']) ? $_POST['num'] : null; $num = !empty($_POST['num']) ? $_POST['num'] : null;
$files = !empty($_FILES['files']) ? $_FILES['files'] : null; $files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : []; $elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : [];
$payType = !empty($_POST['payType']) ? $_POST['payType'] : null;
// validate // validate
$fail_arr = []; $fail_arr = [];
if ($contractno === '') return $fail_arr[] = '合約號為必填'; if ($contractno === '') return $fail_arr[] = '合約號為必填';
@ -56,6 +57,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填'; if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填';
if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填'; if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填';
if ($num == '') $fail_arr[] = '電梯數量為必填'; if ($num == '') $fail_arr[] = '電梯數量為必填';
if ($payType == '') $fail_arr[] = '付款方式為必填';
if (count($fail_arr) > 0) { if (count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity"); header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr); echo json_encode($fail_arr);
@ -283,8 +285,8 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
} else { } else {
$files = null; $files = null;
} }
$sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by) $sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price,payType, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by)
VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)"; VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :payType ,:customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(":contract_no", $contractno); $stmt->bindParam(":contract_no", $contractno);
$stmt->bindParam(":contract_type", $contract_type); $stmt->bindParam(":contract_type", $contract_type);
@ -310,6 +312,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$stmt->bindParam(":max_bonus", $max_bonus); $stmt->bindParam(":max_bonus", $max_bonus);
$stmt->bindParam(":created_at", $created_at); $stmt->bindParam(":created_at", $created_at);
$stmt->bindParam(":created_by", $user_id); $stmt->bindParam(":created_by", $user_id);
$stmt->bindParam(':payType', $payType);
$stmt->execute(); $stmt->execute();
@ -324,7 +327,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// $stmt->bindParam(':CreateTime', $createTime); // $stmt->bindParam(':CreateTime', $createTime);
// $stmt->execute(); // $stmt->execute();
T8insert($_POST, $facilityno); // T8insert($_POST, $facilityno);
header('Content-Type: application/json'); header('Content-Type: application/json');
$jsonData = json_encode($files); $jsonData = json_encode($files);
@ -395,7 +398,8 @@ function T8insert($data, $facilityno)
$stmt->execute(); $stmt->execute();
$sql = "INSERT INTO comCustomer(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime) $sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime)
VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)"; VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)";
$stmt = $connT8->prepare($sql); $stmt = $connT8->prepare($sql);

723
wms/contract/contract-input.php

@ -1,351 +1,374 @@
<?php <?php
include("../header.php"); include("../header.php");
require_once("./conn.php"); require_once("./conn.php");
include_once("./api/getFacilityNo.php"); include_once("./api/getFacilityNo.php");
$accounttype = "B"; $accounttype = "B";
$sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype"; $sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype',$accounttype); $stmt->bindParam(':accounttype', $accounttype);
$stmt->execute(); $stmt->execute();
$workers = $stmt->fetchAll(PDO::FETCH_ASSOC); $workers = $stmt->fetchAll(PDO::FETCH_ASSOC);
$accounttype = "M"; $accounttype = "M";
$sql_str = "SELECT id,accountid, name FROM account WHERE accounttype = :accounttype"; $sql_str = "SELECT id,accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype',$accounttype); $stmt->bindParam(':accounttype', $accounttype);
$stmt->execute(); $stmt->execute();
$contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC); $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
?> ?>
<link rel="stylesheet" href="./styles/style.css"> <link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css"> <link rel="stylesheet" href="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" /> <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="./js/alpinejs/cdn.min.js"></script> <script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" ></script> <script src="./js/axios/axios.min.js"></script>
<div class="contract-input-component" x-data="contractInput"> <div class="contract-input-component" x-data="contractInput">
<div class="form" method="post" id="form" enctype="multipart/form-data" > <div class="form" method="post" id="form" enctype="multipart/form-data">
<input type="hidden" name='form_name' value="main_form" /> <input type="hidden" name='form_name' value="main_form" />
<div> <div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%"> <table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead> <thead>
<tr> <tr>
<td colspan="8"> <td colspan="8">
<h3 style='text-align:center'>合約入力(保養)</h3> <h3 style='text-align:center'>合約入力(保養)</h3>
</td> </td>
</tr> </tr>
</thead> </thead>
<template x-if="step==1"> <template x-if="step==1">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1"> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr> <tr>
<td style="vertical-align: middle">合約號</td> <td style="vertical-align: middle">合約號</td>
<td colspan="5"> <td colspan="5">
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" > <input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno">
</td> </td>
<td colspan="2" style="vertical-align: middle"> <td colspan="2" style="vertical-align: middle">
<label for="customize"> <label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位 <input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label> </label>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</template> </template>
<template x-if="step==2"> <template x-if="step==2">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2"> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2">
<tr> <tr>
<td colspan="7" style='vertical-align: middle;border-right:0px;'> <td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>業務確認項</h4> <h4>業務確認項</h4>
</td> </td>
<td class="text-right" style='border-left:0px;'> <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.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.close();">關閉分頁</button>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">立約人</td> <td style="vertical-align: middle">立約人</td>
<td> <td>
<input type="text" x-model="data.customer" /> <input type="text" x-model="data.customer" />
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">營業員</td> <td style="vertical-align: middle">營業員</td>
<td> <td>
<select class="ui fluid search dropdown" name="promiser" x-model="data.salesman"> <select class="ui fluid search dropdown" name="promiser" x-model="data.salesman">
<option value="">選擇營業員</option> <option value="">選擇營業員</option>
<?php foreach($contractpersons as $person){ ?> <?php foreach ($contractpersons as $person) { ?>
<option value="<?php echo $person['accountid'] ?>"><?php echo $person['name'] ?></option> <option value="<?php echo $person['accountid'] ?>"><?php echo $person['name'] ?></option>
<?php } ?> <?php } ?>
</select> </select>
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">合約開始時間</td> <td style="vertical-align: middle">合約開始時間</td>
<td> <td>
<input class="form-control disabled_select" type="date" name="start_date" x-model="data.contract_begin_date" > <input class="form-control disabled_select" type="date" name="start_date" x-model="data.contract_begin_date">
<p class="alerttext" x-show="data.contract_begin_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.contract_begin_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">合約終止時間</td> <td style="vertical-align: middle">合約終止時間</td>
<td> <td>
<input class="form-control disabled_select" type="date" name="end_date" x-model="data.contract_end_date" > <input class="form-control disabled_select" type="date" name="end_date" x-model="data.contract_end_date">
<p class="alerttext" x-show="data.contract_end_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.contract_end_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">電梯台數</td> <td style="vertical-align: middle">電梯台數</td>
<td> <td>
<input class="form-control disabled_select" type="number" x-model="data.num" :disabled="data.disabled"> <input class="form-control disabled_select" type="number" x-model="data.num" :disabled="data.disabled">
<p class="alerttext" x-show="data.num==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.num==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<p class="alerttext" x-show="data.num==0 && data.num!=''"><i class="fa-solid fa-circle-xmark"></i>電梯數量需大於0</p> <p class="alerttext" x-show="data.num==0 && data.num!=''"><i class="fa-solid fa-circle-xmark"></i>電梯數量需大於0</p>
</td> </td>
<td style="vertical-align: middle">統一編號/身分證</td> <td style="vertical-align: middle">統一編號/身分證</td>
<td> <td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" > <input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat">
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">維修型態</td> <td style="vertical-align: middle">維修型態</td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<select class="ui search dropdown" name="" x-model="data.mtype"> <select class="ui search dropdown" name="" x-model="data.mtype">
<option value="" >選擇維修型態</option> <option value="">選擇維修型態</option>
<option value="A">定期保養</option> <option value="A">定期保養</option>
</select> </select>
<p class="alerttext" x-show="data.mtype==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.mtype==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td></td> <td style="vertical-align: middle">契約成交價</td>
<td></td> <td>
</tr> <input class="form-control disabled_select" type="text" name="tel" x-model="data.total_price" :disabled="data.disabled">
<tr> <p class="alerttext" x-show="data.total_price==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<td style="vertical-align: middle">客戶電話</td> </td>
<td> </tr>
<input class="form-control disabled_select" type="text" name="tel" x-model="data.phone" > <tr>
<p class="alerttext" x-show="data.phone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">客戶電話</td>
</td> <td>
<td style="vertical-align: middle">Email</td> <input class="form-control disabled_select" type="text" name="tel" x-model="data.phone">
<td style="vertical-align: middle"> <p class="alerttext" x-show="data.phone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" type="email" name="email" x-model="data.email" > </td>
<p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">Email</td>
</td> <td style="vertical-align: middle">
<td style="vertical-align: middle">保養員</td> <input class="form-control disabled_select" type="email" name="email" x-model="data.email">
<td> <p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<select class="ui search dropdown" name="repairer_name" x-model="data.mworker"> </td>
<option value="">選擇保養員</option> <td style="vertical-align: middle">保養員</td>
<?php foreach($workers as $worker){ ?> <td>
<option value="<?php echo $worker['accountid']; ?>"><?php echo $worker['name'] ?></option> <select class="ui search dropdown" name="repairer_name" x-model="data.mworker">
<?php } ?> <option value="">選擇保養員</option>
</select> <?php foreach ($workers as $worker) { ?>
<p class="alerttext" x-show="data.mworker==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="<?php echo $worker['accountid']; ?>"><?php echo $worker['name'] ?></option>
</td> <?php } ?>
<td style="vertical-align: middle">保養頻率</td> </select>
<td> <p class="alerttext" x-show="data.mworker==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<select class="ui search dropdown" name="repairer_name" x-model="data.mcycle"> </td>
<option value="">選擇保養頻率</option> <td style="vertical-align: middle">保養頻率</td>
<option value="bw">雙週保</option> <td>
<option value="em">月保</option> <select class="ui search dropdown" name="repairer_name" x-model="data.mcycle">
</select> <option value="">選擇保養頻率</option>
<p class="alerttext" x-show="data.mcycle==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="bw">雙週保</option>
</td> <option value="em">月保</option>
</tr> </select>
<tr> <p class="alerttext" x-show="data.mcycle==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<td style="vertical-align: middle">業務聯繫人</td> </td>
<td> </tr>
<input type="text" x-model="data.partyA" name="partyA" /> <tr>
<p class="alerttext" x-show="data.partyA==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">業務聯繫人</td>
</td> <td>
<td style="vertical-align: middle">業務聯繫人地址</td> <input type="text" x-model="data.partyA" name="partyA" />
<td> <p class="alerttext" x-show="data.partyA==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" x-model="data.partyAaddress" type="text" name="contractaddress" value="" > </td>
<p class="alerttext" x-show="data.partyAaddress==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">業務聯繫人地址</td>
</td> <td>
<td style="vertical-align: middle">業務聯繫人電話</td> <input class="form-control disabled_select" x-model="data.partyAaddress" type="text" name="contractaddress" value="">
<td> <p class="alerttext" x-show="data.partyAaddress==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" type="text" name="contracttel" x-model="data.partyAphone" > </td>
<p class="alerttext" x-show="data.partyAphone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">業務聯繫人電話</td>
</td> <td>
<td style="vertical-align: middle">業務聯繫人Email</td> <input class="form-control disabled_select" type="text" name="contracttel" x-model="data.partyAphone">
<td> <p class="alerttext" x-show="data.partyAphone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" type="email" name="contracttel" x-model="data.partyAemail" > </td>
<p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">業務聯繫人Email</td>
</td> <td>
</tr> <input class="form-control disabled_select" type="email" name="contracttel" x-model="data.partyAemail">
<tr> <p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<td style="vertical-align: middle">區域</td> </td>
<td> </tr>
<select class="ui search dropdown" x-model="data.area"> <tr>
<option value="">選擇區域</option> <td style="vertical-align: middle">區域</td>
<template x-for="city in cities" :key="city.code"> <td>
<option x-bind:selected="city.name === data.area" x-text="city.name" :value="city.name"></option> <select class="ui search dropdown" x-model="data.area">
</template> <option value="">選擇區域</option>
</select> <template x-for="city in cities" :key="city.code">
<p class="alerttext" x-show="data.area==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option x-bind:selected="city.name === data.area" x-text="city.name" :value="city.name"></option>
</td> </template>
<td style="vertical-align: middle">詳細地址</td> </select>
<td colspan="2"> <p class="alerttext" x-show="data.area==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="text" x-model="data.address" /> </td>
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">詳細地址</td>
</td> <td colspan="2">
<td style="vertical-align: middle">附件</td> <input type="text" x-model="data.address" />
<td colspan="2"> <p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" /> </td>
</td> <td style="vertical-align: middle">分期方式</td>
</tr> <td colspan="2">
<select class="ui search dropdown" x-model="data.payType">
<tr> <option value="">選擇付款方式</option>
<option value="A40006">年繳</option>
</tr> <option value="A40007">季繳</option>
</tbody> <option value="A40003">月繳</option>
</template> <option value="A40004">雙月繳</option>
<template x-if="step==3"> <option value="A40005">半年繳</option>
<template x-for="(elevator, idx) in data.elevators" :key="elevator.apply_key + elevator.register_code"> </select>
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==3"> <p class="alerttext" x-show="data.payType==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<tr> </td>
<td colspan=8><p x-text="'電梯' + Number(idx+1)"></p></td> </tr>
</tr>
<tr> <tr>
<td style="vertical-align: middle">機種</td> <td></td>
<td> <td></td>
<select class="ui search dropdown" name="spec" x-model="data.elevators[idx].spec" > <td></td>
<option value="">選擇規格</option> <td></td>
<option value="MAE100">MAE100</option> <td></td>
<option value="MAM200">MAM200</option> <td style="vertical-align: middle">附件</td>
<option value="MAH100">MAH100</option> <td colspan="2">
<option value="MAQ100">MAQ100</option> <input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<option value="MAF100">MAF100</option> </td>
<option value="MAZ100">MAZ100</option> </tr>
</select> </tbody>
<p class="alerttext" x-show="!(data.elevators[idx].spec=='MAE100' || data.elevators[idx].spec=='MAM200' || data.elevators[idx].spec=='MAH100' || data.elevators[idx].spec=='MAQ100' || data.elevators[idx].spec=='MAF100' || data.elevators[idx].spec=='MAZ100')"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> </template>
</td> <template x-if="step==3">
<td style="vertical-align: middle">載重</td> <template x-for="(elevator, idx) in data.elevators" :key="elevator.apply_key + elevator.register_code">
<td> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==3">
<input type="text" x-model="data.elevators[idx].weight" /> <tr>
<p class="alerttext" x-show="data.elevators[idx].weight==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td colspan=8>
</td> <p x-text="'電梯' + Number(idx+1)"></p>
<td style="vertical-align: middle">速度</td> </td>
<td> </tr>
<input type="text" x-model="data.elevators[idx].speed" /> <tr>
<p class="alerttext" x-show="data.elevators[idx].speed==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">機種</td>
</td> <td>
<select class="ui search dropdown" name="spec" x-model="data.elevators[idx].spec">
<td style="vertical-align: middle">人乘</td> <option value="">選擇規格</option>
<td> <option value="MAE100">MAE100</option>
<input type="text" x-model="data.elevators[idx].persons" /> <option value="MAM200">MAM200</option>
<p class="alerttext" x-show="data.elevators[idx].persons==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="MAH100">MAH100</option>
</td> <option value="MAQ100">MAQ100</option>
</tr> <option value="MAF100">MAF100</option>
<tr> <option value="MAZ100">MAZ100</option>
<td style="vertical-align: middle">樓停</td> </select>
<td> <p class="alerttext" x-show="!(data.elevators[idx].spec=='MAE100' || data.elevators[idx].spec=='MAM200' || data.elevators[idx].spec=='MAH100' || data.elevators[idx].spec=='MAQ100' || data.elevators[idx].spec=='MAF100' || data.elevators[idx].spec=='MAZ100')"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="number" class="form-control" x-model="data.elevators[idx].stop" /> </td>
<p class="alerttext" x-show="data.elevators[idx].stop=='' || !data.elevators[idx].stop"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">載重</td>
</td> <td>
<td style="vertical-align: middle">樓層</td> <input type="text" x-model="data.elevators[idx].weight" />
<td> <p class="alerttext" x-show="data.elevators[idx].weight==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="text" x-model="data.elevators[idx].floors" /> </td>
<p class="alerttext" x-show="data.elevators[idx].floors=='' || !data.elevators[idx].floors"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">速度</td>
</td> <td>
<td style="vertical-align: middle">緯度</td> <input type="text" x-model="data.elevators[idx].speed" />
<td> <p class="alerttext" x-show="data.elevators[idx].speed==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="text" x-model="data.elevators[idx].latitude" /> </td>
<p class="alerttext" x-show="data.elevators[idx].latitude=='' || !data.elevators[idx].latitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> <td style="vertical-align: middle">人乘</td>
<td>
<td style="vertical-align: middle">經度</td> <input type="text" x-model="data.elevators[idx].persons" />
<td> <p class="alerttext" x-show="data.elevators[idx].persons==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="text" x-model="data.elevators[idx].longitude" /> </td>
<p class="alerttext" x-show="data.elevators[idx].longitude=='' || !data.elevators[idx].longitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> </tr>
</td> <tr>
</tr> <td style="vertical-align: middle">樓停</td>
<tr> <td>
<td style="vertical-align: middle">廠牌</td> <input type="number" class="form-control" x-model="data.elevators[idx].stop" />
<td> <p class="alerttext" x-show="data.elevators[idx].stop=='' || !data.elevators[idx].stop"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input type="text" x-model="data.elevators[idx].elevator_brand" class="form-control" /> </td>
<p class="alerttext" x-show="data.elevators[idx].elevator_brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">樓層</td>
</td> <td>
<td style="vertical-align: middle"> <input type="text" x-model="data.elevators[idx].floors" />
開門方式 <p class="alerttext" x-show="data.elevators[idx].floors=='' || !data.elevators[idx].floors"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">緯度</td>
<select class="ui search dropdown" name="" x-model="data.elevators[idx].opendoor"> <td>
<option value="">選擇開門方式</option> <input type="text" x-model="data.elevators[idx].latitude" />
<option value="2PCO">2PCO</option> <p class="alerttext" x-show="data.elevators[idx].latitude=='' || !data.elevators[idx].latitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<option value="2S">2S</option> </td>
<option value="2SL">2SL</option>
<option value="2SR">2SR</option> <td style="vertical-align: middle">經度</td>
<option value="2U">2U</option> <td>
<option value="3S">3S</option> <input type="text" x-model="data.elevators[idx].longitude" />
<option value="4PCO">4PCO</option> <p class="alerttext" x-show="data.elevators[idx].longitude=='' || !data.elevators[idx].longitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<option value="6PCO">6PCO</option> </td>
<option value="CO">CO</option> </tr>
</select> <tr>
<p class="alerttext" x-show="data.elevators[idx].opendoor=='' || !data.elevators[idx].opendoor "><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">廠牌</td>
</td> <td>
<td style="vertical-align: middle">保養別</td> <input type="text" x-model="data.elevators[idx].elevator_brand" class="form-control" />
<td> <p class="alerttext" x-show="data.elevators[idx].elevator_brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<select class="ui search dropdown" x-model="data.elevators[idx].maintainance"> </td>
<option value="">選擇保養別</option> <td style="vertical-align: middle">
<option value="A">全包</option> 開門方式
<option value="B">半包</option> </td>
<option value="C">清包</option> <td style="vertical-align: middle">
</select> <select class="ui search dropdown" name="" x-model="data.elevators[idx].opendoor">
<p class="alerttext" x-show="data.elevators[idx].maintainance=='' || !data.elevators[idx].maintainance"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="">選擇開門方式</option>
</td> <option value="2PCO">2PCO</option>
<td style="vertical-align: middle">竣檢日</td> <option value="2S">2S</option>
<td> <option value="2SL">2SL</option>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate"> <option value="2SR">2SR</option>
<p class="alerttext" x-show="data.elevators[idx].takecertificatedate=='' || !data.elevators[idx].takecertificatedate"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="2U">2U</option>
</td> <option value="3S">3S</option>
</tr> <option value="4PCO">4PCO</option>
<tr> <option value="6PCO">6PCO</option>
<option value="CO">CO</option>
<td style="vertical-align: middle">許可證有效時間</td> </select>
<td> <p class="alerttext" x-show="data.elevators[idx].opendoor=='' || !data.elevators[idx].opendoor "><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].useful_date"> </td>
<p class="alerttext" x-show="data.elevators[idx].useful_date=='' || !data.elevators[idx].useful_date"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">保養別</td>
</td> <td>
</tr> <select class="ui search dropdown" x-model="data.elevators[idx].maintainance">
<tr><td></td> <option value="">選擇保養別</option>
<td></td> <option value="A">全包</option>
<td></td> <option value="B">半包</option>
<td></td> <option value="C">清包</option>
<td></td> </select>
<td></td> <p class="alerttext" x-show="data.elevators[idx].maintainance=='' || !data.elevators[idx].maintainance"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<td></td> </td>
<td></td></tr> <td style="vertical-align: middle">竣檢日</td>
</tbody> <td>
</template> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate">
</template> <p class="alerttext" x-show="data.elevators[idx].takecertificatedate=='' || !data.elevators[idx].takecertificatedate"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</table> </td>
</tr>
<tr>
<button x-show="step==3" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading"> <td style="vertical-align: middle">許可證有效時間</td>
<span>存檔</span> <td>
</template> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].useful_date">
<template x-if="isLoading"> <p class="alerttext" x-show="data.elevators[idx].useful_date=='' || !data.elevators[idx].useful_date"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<div class="loader"></div> </td>
</template> </tr>
</button> <tr>
<button x-show="step<=2" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading"> <td></td>
<template x-if="!isLoading"> <td></td>
<span>下一步</span> <td></td>
</template> <td></td>
<template x-if="isLoading"> <td></td>
<div class="loader"></div> <td></td>
</template> <td></td>
</button> <td></td>
<button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn"> </tr>
<template x-if="!isLoading"> </tbody>
<span>上一步</span> </template>
</template> </template>
<template x-if="isLoading"> </table>
<div class="loader"></div>
</template>
</button> <button x-show="step==3" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
</div> <template x-if="!isLoading">
</div> <span>存檔</span>
</template>
</div> <template x-if="isLoading">
<script src="./js/jquery/jquery-3.1.1.min.js"></script> <div class="loader"></div>
<script src="semantic/dist/semantic.min.js" ></script> </template>
<script src="./js/alpine.js"></script> </button>
<script> <button x-show="step<=2" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading">
const user_id = '<?php echo $user_id; ?>' <template x-if="!isLoading">
const user_name = '<?php echo $user_name; ?>' <span>下一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>上一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
</div>
</div>
</div>
<script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="semantic/dist/semantic.min.js"></script>
<script src="./js/alpine.js"></script>
<script>
const user_id = '<?php echo $user_id; ?>'
const user_name = '<?php echo $user_name; ?>'
</script> </script>

40
wms/contract/js/alpine.js

@ -964,6 +964,7 @@ const contractInput = () => {
num: '', //電梯數量 num: '', //電梯數量
disabled: false, //資料庫是否有電梯數量資料 disabled: false, //資料庫是否有電梯數量資料
elevators: [], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期 elevators: [], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期
payType: ''
}, },
customize: false, customize: false,
step: 1, step: 1,
@ -1020,8 +1021,11 @@ const contractInput = () => {
return return
} }
if (!this.customize) { if (!this.customize) {
console.log(res.data); for (let i = 0; i < res.data.elevators.length; i++) {
this.data.total_price = res.data.sold_price this.data.total_price = Number(res.data.elevators[i].sold_price) + Number(this.data.total_price);
console.log(this.data.total_price);
}
this.data.total_price = Number(res.data.elevators[0].maintain_months) * this.data.total_price;
this.data.salesman = res.data.salesman this.data.salesman = res.data.salesman
this.data.contract_begin_date = res.data.contract_begin_date this.data.contract_begin_date = res.data.contract_begin_date
this.data.contract_end_date = res.data.contract_end_date this.data.contract_end_date = res.data.contract_end_date
@ -1035,7 +1039,7 @@ const contractInput = () => {
let cityIndex = this.data.address.indexOf('市'); let cityIndex = this.data.address.indexOf('市');
console.log(cityIndex); console.log(cityIndex);
if (cityIndex == -1) { if (cityIndex == -1) {
cityIndex = this.data.address.indexOf('縣'); // cityIndex = this.data.address.indexOf('縣');
} }
if (cityIndex > 1) { if (cityIndex > 1) {
// 獲取''市''前面的兩個字 // 獲取''市''前面的兩個字
@ -1111,13 +1115,14 @@ const contractInput = () => {
form.append('num', this.data.num); form.append('num', this.data.num);
form.append('elevators', JSON.stringify(this.data.elevators)); form.append('elevators', JSON.stringify(this.data.elevators));
form.append('contracttype', 'b'); form.append('contracttype', 'b');
form.append('payType', this.data.payType)
// 如果有附件檔案,可以逐一加入 // 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) { for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]); form.append('files[]', this.data.files[i]);
} }
axios.post('./api/postContractData.php', form).then(res => { axios.post('./api/postContractData.php', form).then(res => {
console.log(res.status); console.log(res);
if (res.status === 200) { if (res.status === 200) {
alert('儲存成功'); alert('儲存成功');
this.step = 1 this.step = 1
@ -1144,6 +1149,7 @@ const contractInput = () => {
this.data.zip = '' this.data.zip = ''
this.data.partyAphone = '' this.data.partyAphone = ''
this.data.partyAemail = '' this.data.partyAemail = ''
this.data.payType = ''
} }
this.isLoading = false this.isLoading = false
}).catch(error => { }).catch(error => {
@ -1217,7 +1223,7 @@ const contractNewApply = () => {
originfiles: originfiles, originfiles: originfiles,
description: description, description: description,
}, },
status:contractstatus, status: contractstatus,
progress: progress, progress: progress,
pays: { pays: {
1: { 1: {
@ -1271,7 +1277,7 @@ const contractNewApply = () => {
alert('試車時間不能低於10天') alert('試車時間不能低於10天')
return; return;
} }
this.isLoading = true this.isLoading = true
const form = new FormData(); const form = new FormData();
form.append('mid', this.data.mid); form.append('mid', this.data.mid);
@ -1332,10 +1338,10 @@ const contractNewApply = () => {
return; return;
} }
if (this.data.workdeadline_a < 30) { if (this.data.workdeadline_a < 30) {
while(this.data.workdeadline_note=='') { while (this.data.workdeadline_note == '') {
this.data.workdeadline_note = prompt('安裝時間需低於30天,請說明原因') this.data.workdeadline_note = prompt('安裝時間需低於30天,請說明原因')
} }
} }
this.isLoading = true this.isLoading = true
const form = new FormData(); const form = new FormData();
@ -1387,20 +1393,20 @@ const contractNewApply = () => {
agree() { agree() {
if (!confirm("確定同意嗎?")) return; if (!confirm("確定同意嗎?")) return;
this.isLoading = true this.isLoading = true
let newprogress = 0;
let newstatus = 0; let newprogress = 0;
let newstatus = 0;
if(this.progress <= 1){
if (this.progress <= 1) {
newprogress = 2; newprogress = 2;
}else if(this.progress == 2){ } else if (this.progress == 2) {
newprogress = 3; newprogress = 3;
} }
if(this.status == 1 && this.progress == 2){ if (this.status == 1 && this.progress == 2) {
newstatus = 3 newstatus = 3
}else{ } else {
newstatus = 1 newstatus = 1
} }
console.log(newstatus); console.log(newstatus);

Loading…
Cancel
Save