10994015 1 year ago
parent
commit
7364be5d5f
  1. 3
      .gitignore
  2. BIN
      wms/account-receivable-contract.xlsx
  3. 88
      wms/account-receivable-excel.php
  4. 162
      wms/account-receivable-maintainance-index.php
  5. 73
      wms/account-receivable-new-index.php
  6. 166
      wms/account-receivable-renovate-index.php
  7. BIN
      wms/account-receivable-renovate.xlsx
  8. 422
      wms/bonus/elevator_new/elevator_new_deal_bonus.php
  9. 30
      wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0_1.php
  10. 304
      wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_1.php
  11. 92
      wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php
  12. 194
      wms/contract/api/getContractData.php
  13. 46
      wms/contract/api/getFacilityNo.php
  14. 162
      wms/contract/api/newElevatorBonus.php
  15. 374
      wms/contract/api/newElevatorT8.php
  16. 379
      wms/contract/api/postContractData.php
  17. 526
      wms/contract/api/postNewContractData.php
  18. 4
      wms/contract/api/postRenovateContractData.php
  19. 150
      wms/contract/api/test copy.json
  20. 3
      wms/contract/conn.php
  21. 10
      wms/contract/contract-input.php
  22. 471
      wms/contract/contract-renovate-input.php
  23. 214
      wms/contract/js/alpine.js

3
.gitignore

@ -30,3 +30,6 @@ wms/chinese.php
phpinfo.php
wms/account_receivable_sql_file.sql
wms/account_receivable_maintainance_sql.sql
wms/account-receivable-contract.xlsx
wms/account-receivable-maintainance.xlsx
wms/account_receivable_renovate_sql.sql

BIN
wms/account-receivable-contract.xlsx

Binary file not shown.

88
wms/account-receivable-excel.php

@ -36,7 +36,7 @@ if ($type == 'newContract') {
'尾款催收金額', '尾款催收次數'
];
file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
@ -59,79 +59,61 @@ if ($type == 'newContract') {
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-contract.xlsx';
$writer->save($excelFileName);
} elseif ($type == 'facility') {
} elseif ($type == 'maintainance') {
$sheet->mergeCells('A1:H1');
$sheet->setTitle('保養催收統整');
$sheet->setCellValue('A1', '保養催收統整');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('A1')->getFont()->setSize(14);
$sheet->getRowDimension('1')->setRowHeight(38);
$colomnHeader = [
'T8單據日期', '作番號', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金名稱', '訂金合約金額', '訂金應收日期', '訂金目前應收金額', '訂金已開金額', '訂金未開金額', '訂金已收金額', '訂金催收金額', '訂金催收次數',
'二次款名稱', '二次款合約金額', '二次款應收日期', '二次款目前應收金額', '二次款已開金額', '二次款未開金額', '二次款已收金額', '二次款催收金額', '二次款催收次數',
'貨抵工地款名稱', '貨抵工地款合約金額', '貨抵工地款應收日期', '貨抵工地款目前應收金額', '貨抵工地款已開金額', '貨抵工地款未開金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數',
'安裝款名稱', '安裝款合約金額', '安裝款應收日期', '安裝款目前應收金額', '安裝款已開金額', '安裝款未開金額', '安裝款已收金額', '安裝款催收金額', '安裝款催收次數',
'試車款名稱', '試車款合約金額', '試車款應收日期', '試車款目前應收金額', '試車款已開金額', '試車款未開金額', '試車款已收金額', '試車款催收金額', '試車款催收次數',
'官檢款名稱', '官檢款合約金額', '官檢款應收日期', '官檢款目前應收金額', '官檢款已開金額', '官檢款未開金額', '官檢款已收金額', '官檢款催收金額', '官檢款催收次數',
'交車款名稱', '交車款合約金額', '交車款應收日期', '交車款目前應收金額', '交車款已開金額', '交車款未開金額', '交車款已收金額', '交車款催收金額', '交車款催收次數',
'尾款名稱', '尾款金額', '尾款應收日期', '尾款應收金額', '尾款已開金額', '尾款未開金額', '尾款已收金額', '尾款催收金額', '尾款催收次數',
'作番狀態', '合約-設備金額', '合約-安裝金額', '作番合約總金額', '作番總應收金額'
'合約號','序號','作番號','部門','契約員','客戶','金額','催收次數'
];
$sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2;
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
$sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BK'
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'
];
foreach ($column as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
$rowIndex++;
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-facility.xlsx';
$writer->save($excelFileName);
} else {
$excelFileName = 'account-receivable-contract.xlsx';
}elseif ($type == 'renovate') {
$sheet->mergeCells('A1:K1');
$sheet->setTitle('汰改催收統整');
$sheet->setCellValue('A1', '汰改催收統整');
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('A1')->getFont()->setSize(14);
$sheet->getRowDimension('1')->setRowHeight(38);
$colomnHeader = [
'T8單據日期', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金', '訂金目前應收', '訂金已開票金額', '訂金未開票金額', '訂金已收金額', '訂金催收金額', '訂金最大催收次數', '訂金最小催收次數',
'二次款', '二次款目前應收', '二次款已開票金額', '二次款未開票金額', '二次款已收金額', '二次款催收金額', '二次款最大催收次數', '二次款最小催收次數',
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地款已開票金額', '貨抵工地款未開票金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款最大催收次數', '貨抵工地款最小催收次數',
'安裝款', '安裝款目前應收', '安裝款已開票金額', '安裝款未開票金額', '安裝款已收金額', '安裝款催收金額', '安裝款最大催收次數', '安裝款最小催收次數',
'試車款', '試車款目前應收', '試車款已開票金額', '試車款未開票金額', '試車款已收金額', '試車款催收金額', '試車款最大催收次數', '試車款最小催收次數',
'官檢款', '官檢款目前應收', '官檢款已開票金額', '官檢款未開票金額', '官檢款已收金額', '官檢款催收金額', '官檢款最大催收次數', '官檢款最小催收次數',
'交車款', '交車款目前應收', '交車款已開票金額', '交車款未開票金額', '交車款已收金額', '交車款催收金額', '交車款最大催收次數', '交車款最小催收次數',
'尾款', '尾款目前應收', '尾款已開票金額', '尾款未開票金額', '尾款已收金額', '尾款催收金額', '尾款最大催收次數', '尾款最小催收次數',
'合約設備金額', '合約安裝金額', '合約總金額', '目前應收', '已開發票金額', '已收金額', '作番總數', '作番狀態'
'合約號','作番號','部門','營業員','客戶','收款階段名稱','應收日期','金額','已收金額','催收金額','催收次數'
];
$sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2;
// file_put_contents('account-receivable.txt', json_encode($Bill, JSON_UNESCAPED_UNICODE));
$sheet->fromArray($colomnHeader, NULL, 'A2');
$rowIndex = 3;
foreach ($Bill as $key => $value) {
$sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',
'CA', 'CB', 'CC', 'CD'
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I','J','K'
];
foreach ($column as $col) {
if ($col == 'CC') {
$sheet->getColumnDimension('CC')->setWidth(40);
$sheet->getStyle('CC')->getAlignment()->setWrapText(true);
} else {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
}
$rowIndex++;
}
$writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable-test.xlsx';
$writer->save($excelFileName);
$excelFileName = 'account-receivable-renovate.xlsx';
}
$writer->save($excelFileName);
echo $excelFileName;
?>
<!-- <script>

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

@ -77,7 +77,10 @@ LEFT JOIN arCheckBill
ON arCheckBill.BillNo = wod.FromBillNo
LEFT JOIN comDepartment AS cd
ON cd.DeptId = arCheckBill.DeptId
WHERE arCheckBill.TypeId = 'RVS'";
LEFT JOIN arWriteOffBill
ON arWriteOffBill.BillNo= wod.BillNo
WHERE arCheckBill.TypeId = 'RVS' AND arWriteOffBill.CreateTime >20240331235959";
// AND arWriteOffBill.CreateTime >20240229225959
$follower = find_follow($user_id);
if ((in_array($user_id, array('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) {
@ -117,7 +120,7 @@ ORDER BY
siam.PersonId ASC,
siam.BillNo ASC,
siamd.RowCode ASC";
$sql_writeOff.=" GROUP BY
$sql_writeOff .= " GROUP BY
wod.FromBillNo
,arCheckBill.LAmountWithTax";
@ -125,10 +128,20 @@ $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';
foreach ($query_writeoff->fetchAll(PDO::FETCH_ASSOC) as $row) {
$writeoff[$row['checkBillNo']] = ($row['TotalWriteOffAmount'] == $row['LAmountWithTax']) ? 'V' : 'X';
}
$wms_initial = array();
$sql_wms_initial = "SELECT * FROM account-avaible-maintainance WHERE received =1";
$query_wms_initial = mysqli_query($link, $sql_wms_initial);
if (is_iterable($query_wms_initial) > 0) {
foreach ($query_wms_initial as $row) {
$wms_initial[$row['contract_no']][$row['RowCode']] = $row['received'];
}
}
$excel_all = array();
$today = strtotime(date('Ymt'));
$table = "";
for ($i = 0; $i < count($rows); $i++) {
@ -142,11 +155,14 @@ for ($i = 0; $i < count($rows); $i++) {
$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']])){
if (!is_null($data[$tmpname]['checkBillNo']) && isset($writeoff[$data[$tmpname]['checkBillNo']])) {
$data[$tmpname]['WriteOff'] = $writeoff[$data[$tmpname]['checkBillNo']];
}else{
} else {
$data[$tmpname]['WriteOff'] = '--';
}
if (!is_null($data[$tmpname]['checkBillNo']) && isset($wms_initial[$row['ProjectId']][$row['RowCode']])) {
$data[$tmpname]['WriteOff'] = 'V';
}
$contract_no = $row['ProjectId'];
$facility_no = $row['CU_MaterialId'];
$RowCode = $row['RowCode'];
@ -157,37 +173,40 @@ for ($i = 0; $i < count($rows); $i++) {
$invoiceNo = $row['InvoiceNo'];
$tableinvoice_state = is_null($invoiceNo) ? 0 : 1;
$data[$tmpname]['invoice_budget'] = is_null($row['InvoiceOAmount']) ? 0 : $row['InvoiceOAmount'];
$invoice_budget = (is_null($data[$tmpname]['invoice_budget'])) ? 0 : $data[$tmpname]['invoice_budget'];
$table_writeoff = ($data[$tmpname]['WriteOff'] =='V') ? 1 : 0;
$table1 = "INSERT INTO account_receivable_maintainance(
`contract_no`,
`facility_no`,
`RowCode`,
`BillNo`,
`budget`,
`receivable`,
`invoice_state`,
`invoice_budget`,
`received`
";
$table2 = ") VALUES(
'$contract_no',
'$facility_no',
'$RowCode',
'$BillNo',
$budget,
$datahavetopay,
$tableinvoice_state,
$invoice_budget,
$table_writeoff
";
$table1 .= is_null($receivable_date) ? "" : ",`receivable_date`";
$table2 .= is_null($receivable_date) ? "" : ",'$receivable_date'";
$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";
$invoice_budget = (is_null($data[$tmpname]['invoice_budget'])) ? 0 : $data[$tmpname]['invoice_budget'];
if(isset($data[$tmpname]['WriteOff']) && $data[$tmpname]['WriteOff'] !== 'V' && isset($data[$tmpname]['collecttime']) && $data[$tmpname]['collecttime']>0){
$excel_all[$tmpname] = [$data[$tmpname]['ProjectId'], $data[$tmpname]['RowCode'], $data[$tmpname]['CU_MaterialId'], $data[$tmpname]['DeptName'], $data[$tmpname]['PersonName'], $data[$tmpname]['BizPartnerName'], $data[$tmpname]['OAmountWithTax'], $data[$tmpname]['collecttime']];
}
// $table_writeoff = ($data[$tmpname]['WriteOff'] =='V') ? 1 : 0;
// $table1 = "INSERT INTO account_receivable_maintainance(
// `contract_no`,
// `facility_no`,
// `RowCode`,
// `BillNo`,
// `budget`,
// `receivable`,
// `invoice_state`,
// `invoice_budget`,
// `received`
// ";
// $table2 = ") VALUES(
// '$contract_no',
// '$facility_no',
// '$RowCode',
// '$BillNo',
// $budget,
// $datahavetopay,
// $tableinvoice_state,
// $invoice_budget,
// $table_writeoff
// ";
// $table1 .= is_null($receivable_date) ? "" : ",`receivable_date`";
// $table2 .= is_null($receivable_date) ? "" : ",'$receivable_date'";
// $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';
@ -203,6 +222,8 @@ for ($i = 0; $i < count($rows); $i++) {
// echo "<br>------------<br>";
// }
// exit();
$total_data = json_encode($excel_all);
?>
<style>
table {
@ -250,11 +271,11 @@ for ($i = 0; $i < count($rows); $i++) {
}
</style>
<!-- <div style="width: 98%;margin: 1%;">
<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>
<div class="container">
<div class="text-center" style="margin-bottom: 20px;">
<h3><strong>應收帳款(保養)</strong></h3>
@ -347,17 +368,17 @@ include "./footer.php";
<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;width:80px'>序號</th>
<th style='text-align:center;vertical-align: middle;width:150px'>作番號</th>
<th style='text-align:center;vertical-align: middle;width:150px'>部門</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;width:180px'>客戶名稱</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;width:100px'>是否收齊</th>
<th style='text-align:center;vertical-align: middle;'>催收次數</th>
</tr>
@ -372,13 +393,13 @@ include "./footer.php";
<!-- <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>
<td class="collect"><?= (($row['havetopay'] == "V") && ($row['WriteOff'] !== 'V')) ? $row['collecttime'] : 0; ?></td>
</tr>
<?php } ?>
</tbody>
@ -400,29 +421,6 @@ include "./footer.php";
}
}
}
// 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;
@ -510,8 +508,28 @@ include "./footer.php";
}
}
function check(searchname) {
console.log(searchname);
function downloadData() {
var BillData = <?= $total_data ?>;
var filename = "保養催收帳款" + "<?= date('Ymd-Hm') ?>" + ".xlsx";
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-excel.php?type=maintainance&<?= $token_link ?>";
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var link = document.createElement('a');
link.setAttribute('href', window.location.origin + "/wms/account-receivable-contract.xlsx");
link.setAttribute('download', filename);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
xhr.send(JSON.stringify({
Bill: BillData
}));
}
</script>

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

@ -794,7 +794,6 @@ foreach ($final_paystage as $key => &$value) {
}
}
//合約資料填回arrayData
foreach ($final_paystage as $key => $value) {
for ($sequence = 1; $sequence <= count($value); $sequence++) {
@ -811,9 +810,6 @@ foreach ($final_paystage as $key => $value) {
$arvalue['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
$arrayData[$key]['receivable_budget'] += $value[$sequence]['PlanPayAmt'];
}
// else {
// $arvalue['receivable_budget'] = 0;
// }
if ($arvalue['collect_month'] < $value[$sequence]['collect_month']) {
$arvalue['collect_month'] = $value[$sequence]['collect_month'];
}
@ -837,7 +833,7 @@ foreach ($final_paystage as $key => $value) {
$sum_received_budget += $value[$sequence]['received_budget'];
$sum_invoice_budget += $value[$sequence]['invoice_budget'];
}
if ($value[$sequence]['collect_month'] > $arrayData[$key]['collect_month']) {
if ((round($arvalue['receivable_budget'] - $arvalue['received_budget']) >2)&&($value[$sequence]['collect_month'] > $arrayData[$key]['collect_month'])) {
$arrayData[$key]['collect_month'] = $value[$sequence]['collect_month'];
}
}
@ -914,34 +910,34 @@ foreach ($arrayData as $key => &$value) {
$excel_contract_all_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_all_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_all_array[$key][7] = $excel_contract_array[$key][17];
$total_collect_budget += $excel_contract_all_array[$key][6];
$total_collect_facility += $excel_contract_all_array[$key][4];
$total_collect_budget += $excel_contract_all_array[$key][7];
$total_collect_facility += $excel_contract_all_array[$key][5];
$isBoga = 0;
if (stristr($value['PayStage'][1]['PayStage'], '寶佳')) {
$isBoga = 1;
$excel_contract_boga_array[$key] = array_fill(0, 24, '');
$excel_contract_boga_array[$key][0] = $excel_contract_array[$key][0];
$excel_contract_boga_array[$key][1] = $excel_contract_array[$key][3];
$excel_contract_boga_array[$key][2] = $excel_contract_array[$key][8];
$excel_contract_boga_array[$key][3] = $excel_contract_array[$key][11];
$excel_contract_boga_array[$key][4] = $excel_contract_array[$key][19];
$excel_contract_boga_array[$key][5] = $excel_contract_array[$key][20];
$excel_contract_boga_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_boga_array[$key][7] = $excel_contract_array[$key][18];
$boga_collect_budget += $excel_contract_boga_array[$key][6];
$boga_collect_facility += $excel_contract_boga_array[$key][4];
$excel_contract_boga_array[$key][2] = $excel_contract_array[$key][6];
$excel_contract_boga_array[$key][3] = $excel_contract_array[$key][8];
$excel_contract_boga_array[$key][4] = $excel_contract_array[$key][11];
$excel_contract_boga_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_boga_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_boga_array[$key][7] = $excel_contract_array[$key][17];
$boga_collect_budget += $excel_contract_boga_array[$key][7];
$boga_collect_facility += $excel_contract_boga_array[$key][5];
} else {
$excel_contract_noboga_array[$key] = array_fill(0, 24, '');
$excel_contract_noboga_array[$key][0] = $excel_contract_array[$key][0];
$excel_contract_noboga_array[$key][1] = $excel_contract_array[$key][3];
$excel_contract_noboga_array[$key][2] = $excel_contract_array[$key][8];
$excel_contract_noboga_array[$key][3] = $excel_contract_array[$key][11];
$excel_contract_noboga_array[$key][4] = $excel_contract_array[$key][19];
$excel_contract_noboga_array[$key][5] = $excel_contract_array[$key][20];
$excel_contract_noboga_array[$key][6] = $excel_contract_array[$key][17];
$excel_contract_noboga_array[$key][7] = $excel_contract_array[$key][18];
$noboga_collect_budget += $excel_contract_noboga_array[$key][6];
$noboga_collect_facility += $excel_contract_noboga_array[$key][4];
$excel_contract_noboga_array[$key][2] = $excel_contract_array[$key][6];
$excel_contract_noboga_array[$key][3] = $excel_contract_array[$key][8];
$excel_contract_noboga_array[$key][4] = $excel_contract_array[$key][11];
$excel_contract_noboga_array[$key][5] = $excel_contract_array[$key][19];
$excel_contract_noboga_array[$key][6] = $excel_contract_array[$key][20];
$excel_contract_noboga_array[$key][7] = $excel_contract_array[$key][17];
$noboga_collect_budget += $excel_contract_noboga_array[$key][7];
$noboga_collect_facility += $excel_contract_noboga_array[$key][5];
}
}
@ -1138,9 +1134,9 @@ foreach ($arrayData as $key => &$value) {
}
}
// $excel_contract_all_array['last']= $excel_contract_boga_array['last'] = $excel_contract_noboga_array['last'] = array_fill(0, 23, '');
$excel_contract_all_array['last']= ['合計', '', '', '', $total_collect_facility, '', $total_collect_budget, '', $total_sign_collect_budget, '', $total_second_collect_budget, '', $total_arrival_collect_budget, '', $total_install_collect_budget, '', $total_tryrun_collect_budget, '', $total_check_collect_budget, '', $total_delivery_collect_budget, '', $total_final_collect_budget, ''];
$excel_contract_boga_array['last']= ['合計', '', '', '', $boga_collect_facility, '', $boga_collect_budget, '', $boga_sign_collect_budget, '', $boga_second_collect_budget, '', $boga_arrival_collect_budget, '', $boga_install_collect_budget, '', $boga_tryrun_collect_budget, '', $boga_check_collect_budget, '', $boga_delivery_collect_budget, '', $boga_final_collect_budget, ''];
$excel_contract_noboga_array['last']= ['合計', '', '', '', $noboga_collect_facility, '', $noboga_collect_budget, '', $noboga_sign_collect_budget, '', $noboga_second_collect_budget, '', $noboga_arrival_collect_budget, '', $noboga_install_collect_budget, '', $noboga_tryrun_collect_budget, '', $noboga_check_collect_budget, '', $noboga_delivery_collect_budget, '', $noboga_final_collect_budget, ''];
$excel_contract_all_array['last']= ['合計', '', '', '','', $total_collect_facility, '', $total_collect_budget, $total_sign_collect_budget, '', $total_second_collect_budget, '', $total_arrival_collect_budget, '', $total_install_collect_budget, '', $total_tryrun_collect_budget, '', $total_check_collect_budget, '', $total_delivery_collect_budget, '', $total_final_collect_budget, ''];
$excel_contract_boga_array['last']= ['合計', '', '', '','', $boga_collect_facility, '', $boga_collect_budget, $boga_sign_collect_budget, '', $boga_second_collect_budget, '', $boga_arrival_collect_budget, '', $boga_install_collect_budget, '', $boga_tryrun_collect_budget, '', $boga_check_collect_budget, '', $boga_delivery_collect_budget, '', $boga_final_collect_budget, ''];
$excel_contract_noboga_array['last']= ['合計', '', '', '','', $noboga_collect_facility, '', $noboga_collect_budget, $noboga_sign_collect_budget, '', $noboga_second_collect_budget, '', $noboga_arrival_collect_budget, '', $noboga_install_collect_budget, '', $noboga_tryrun_collect_budget, '', $noboga_check_collect_budget, '', $noboga_delivery_collect_budget, '', $noboga_final_collect_budget, ''];
// print_r($excel_contract_array['M230064']);
// echo "<br>---------------------------------------------------------<br>";
@ -1342,7 +1338,7 @@ $testtotal = 0;
</div>
<div class="col-md-3">
<label for="average_contract_facility">平均台數 (台/合約)</label>
<input type="text" class="form-control" id="average_contract_facility" name="average_contract_facility" value="<?= number_format($average_contract_facility) ?>" disabled>
<input type="text" class="form-control" id="average_contract_facility" name="average_contract_facility" value="<?= round($average_contract_facility,2) ?>" disabled>
</div>
</div>
</form>
@ -1362,9 +1358,9 @@ $testtotal = 0;
<tr>
<th class="text-center" style="vertical-align: middle;">合約催收次數</th>
<td colspan="2">
<input type="text" class='form-control' id='search_collectstart' name='collect_time_start' style='width:10%;display:inline;' oninput="searchFront('collectstart')">
<input type="text" class='form-control' id='search_collectstart' name='collect_time_start' style='width:40%;display:inline;' oninput="searchFront('collectstart')">
≤ 催收次數 ≤
<input type="text" class='form-control' id='search_collectend' name='collect_time_end' style='width:10%;display:inline;' oninput="searchFront('collectend')">
<input type="text" class='form-control' id='search_collectend' name='collect_time_end' style='width:40%;display:inline;' oninput="searchFront('collectend')">
<!-- <button type="submit" class="btn btn-primary btn-sm">搜尋</button> -->
</td>
</tr>
@ -1416,7 +1412,10 @@ $testtotal = 0;
<?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% ;overflow-x: auto;">
<table class="table table-striped table-bordered" style="width:100%;">
@ -1603,6 +1602,20 @@ include "./footer.php";
<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 searchFront(area) {
var term = 'search_' + area;

166
wms/account-receivable-renovate-index.php

@ -101,29 +101,16 @@ 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";
WHERE Main.InvoiceState!=2 AND Main.InvoiceDate>20240229 ";
// T8核銷
$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 = 'T'";
$sql_received = "SELECT Detail.OrderBillNo,
Detail.CurrWriteOffLAmount,
Main.BillDate
FROM arWriteOffBillDetail AS Detail
LEFT JOIN arWriteOffBill AS Main
ON Detail.BillNo=Main.BillNo
WHERE LEN(Detail.OrderBillNo)>0 AND Main.BillDate>20240229 ";
$contractNumbers = array();
@ -294,6 +281,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "C";
}
}
// $received_array = $conn->query($sql_received);
$received_array = $conn->query($sql_received);
$invoice_data = $conn->query($sql_invoice);
$contract_budget_data = $conn->query($sql_contract_budget);
@ -647,6 +635,52 @@ foreach ($allPayStages as $key => &$payStage) {
}
}
// 將WMS內期初資料整理進arrayData
$sql_initial = "SELECT * FROM account_receivable_renovate";
$result_initial = mysqli_query($link, $sql_initial);
foreach($result_initial as $value){
$billno = $value['contract_no'];
switch ($value['contract_no']) {
case 'M220104':
$billNo = 'SO20230701001';
break;
case 'M230098':
$billNo = 'SO20230701002';
break;
case 'M230159':
$billNo = 'SO20230701003';
break;
case 'M230992':
$billNo = 'SO20230901001';
break;
case 'M230492':
$billNo = 'SO20231110001';
break;
case 'M230557':
$billNo = 'SO20231110002';
break;
case 'M230496':
$billNo = 'SO20231110003';
break;
case 'M230683':
$billNo = 'SP20240108001';
break;
case 'B230726':
$billNo = 'SP20240116004';
break;
case 'M220035':
$billNo = 'T220035';
break;
case 'M230098':
$billNo = 'T230098';
break;
}
if(isset($arrayData[$billNo])){
$arrayData[$billNo]['invoice_budget'] += intval($value['invoice_budget']);
$arrayData[$billNo]['received_budget'] += intval($value['received_budget']);
}
}
// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號]
foreach ($invoice_data as $invoice) {
if (isset($invoice['BillNo']) && isset($arrayData[$invoice['BillNo']])) {
@ -659,25 +693,10 @@ foreach ($invoice_data as $invoice) {
foreach ($received_array as $received) {
$BillNo = $received['OrderBillNo'];
if (isset($arrayData[$BillNo])) {
// if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) {
$arrayData[$BillNo]['received_budget'] += $received['CurrStandOffOAmount'];
// array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']);
// }
}
}
//未在T8的收款資料
$sql_wms = "SELECT * FROM account_received WHERE type='T' ";
$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'];
$arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']] = [date("Y-m-d", strtotime($wms['invoice_date'])), $wms['invoice_budget'], 1];
}
if (isset($arrayData[$wms['BillNo']]) && isset($arrayData[$wms['BillNo']]['received_budget'])) {
$arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget'];
$arrayData[$BillNo]['received_budget'] += $received['CurrWriteOffLAmount'];
}
}
// $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount']
foreach ($final_paystage as $key => &$payStage) {
if (isset($arrayData[$key]['invoice_budget']) && isset($arrayData[$key]['received_budget'])) {
@ -766,14 +785,13 @@ foreach ($arrayData as $key => $value) {
} else {
$thisplanpaydate = $thisPayStage['PlanPayDate'];
}
if ($havetopay == "V" && $unReceivedAmount > 1) {
if ($havetopay == "V" && ($unReceivedAmount > 10) && ($final_paystage[$key][$sequence]['collect_month'] >0)) {
$print_array[$keyname] = [
$value[10], $thisPayStage['facilityno'], $value[0], $value[1], $value[11], $value['ManagerName'], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8],
$thisPayStage['name'], $thisplanpaydate, $havetopay,
number_format(round($final_paystage[$key][$sequence]['PayAmount'])),
number_format(round($final_paystage[$key][$sequence]['InvoiceAmount'])), number_format(round($unInvoiceAmount)),
number_format(round($final_paystage[$key][$sequence]['receivedAmount'])), number_format(round($unReceivedAmount)),
number_format(round($final_paystage[$key][$sequence]['collect_month']))
$value[10], $thisPayStage['facilityno'], $value[1],$value[4], $value[5],
$thisPayStage['name'], $thisplanpaydate,
round($final_paystage[$key][$sequence]['PayAmount']),
round($final_paystage[$key][$sequence]['receivedAmount']), round($unReceivedAmount),
round($final_paystage[$key][$sequence]['collect_month'])
];
}
@ -793,41 +811,41 @@ foreach ($arrayData as $key => $value) {
} else {
$invoice_state = 0;
}
$table1 = "INSERT INTO account_receivable_renovate(
`contract_no`,
`facility_no`,
`stagename`,
`budget`,
`receivable`,
`invoice_state`,
`invoice_budget`,
`received_budget`
";
$table2 = ") VALUES (
'$value[10]',
'$thisPayStage[facilityno]',
'$thisPayStage[name]',
$table_budget,
$table_hadtopay,
$invoice_state,
$table_invoice_budget,
$table_received_budget
";
// $table1 = "INSERT INTO account_receivable_renovate(
// `contract_no`,
// `facility_no`,
// `stagename`,
// `budget`,
// `receivable`,
// `invoice_state`,
// `invoice_budget`,
// `received_budget`
// ";
// $table2 = ") VALUES (
// '$value[10]',
// '$thisPayStage[facilityno]',
// '$thisPayStage[name]',
// $table_budget,
// $table_hadtopay,
// $invoice_state,
// $table_invoice_budget,
// $table_received_budget
// ";
if (!is_null($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate'])) {
$table1 .= ",`receivable_date`";
$receivable_date = date('Y-m-d', strtotime($final_paystage[$key][$sequence]['PlanPayDate']));
$table2 .= ",'$receivable_date' \n";
}
$table .= $table1 . $table2 . "); \n";
// if (!is_null($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate'])) {
// $table1 .= ",`receivable_date`";
// $receivable_date = date('Y-m-d', strtotime($final_paystage[$key][$sequence]['PlanPayDate']));
// $table2 .= ",'$receivable_date' \n";
// }
// $table .= $table1 . $table2 . "); \n";
}
}
}
// $file_path = 'account_receivable_renovate_sql.sql';
// if (file_put_contents($file_path, $table) !== false) {
// // echo "SQL文件已成功生成:{$file_path}";
// echo "SQL文件已成功生成:{$file_path}";
// } else {
// // echo "生成SQL文件时出现错误。";
// echo "生成SQL文件时出现错误。";
// }
$total_data = json_encode($print_array);
$average_budget = $sum_total_budget / $sum_facility;
@ -1089,7 +1107,7 @@ include "./footer.php";
function downloadData() {
var xhr = new XMLHttpRequest();
var url = window.location.origin + "/wms/account-receivable-renovate-excel.php?type=all&<?= $token_link ?>";
var url = window.location.origin + "/wms/account-receivable-excel.php?type=renovate&<?= $token_link ?>";
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {

BIN
wms/account-receivable-renovate.xlsx

Binary file not shown.

422
wms/bonus/elevator_new/elevator_new_deal_bonus.php

@ -1,112 +1,165 @@
<?php
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, $elevator_pay_kind, $sales_id, $region_manger_id)
{
$bonus_array = [];
if ($ver == "2.0") {
$discount = round($elevator_knockdown_price / $elevator_list_price, 3); #銷售點數,取到小數點第三位。
foreach ($elevator_pay_kind as $elevator_pay_kind) {
// 單次款項的種類
// $pay_amount = round($elevator_pay_kind['pay_amount'] / 1.05); //不含稅
$pay_amount = $elevator_pay_kind['pay_amount']; //不含稅
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.007;
#地區經理提成獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
case "general_customer":
switch ($elevator_type) {
#客梯(passenger)、貨梯(cargo)
case ($elevator_type == "passenger" or $elevator_type == "cargo"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $elevator_knockdown_price * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $elevator_knockdown_price * 0.018;
break;
case ($discount >= 0.75 and $discount < 0.9):
$sales_bonus = $elevator_knockdown_price * 0.015;
break;
case ($discount < 0.75):
$sales_bonus = $elevator_knockdown_price * 0.008;
break;
};
break;
#小電梯(dumbwaiter)、平台梯(flatbase)、強驅(positive_drive)
case ($elevator_type == "dumbwaiter" or $elevator_type == "flatbase" or $elevator_type == "positive_drive"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $elevator_knockdown_price * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $elevator_knockdown_price * 0.018;
break;
case ($discount >= 0.72 and $discount < 0.9):
$sales_bonus = $elevator_knockdown_price * 0.015;
break;
case ($discount < 0.72):
$sales_bonus = $elevator_knockdown_price * 0.008;
break;
};
break;
};
#區域經理提成獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "1-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款20%,發放總獎金20%" #發放規定
]);
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "1-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%" #發放規定
]);
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $pay_amount * 0.007;
#地區經理提成獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array, [
"bonus_type" => "1-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%" #發放規定
]);
case "general_customer":
switch ($elevator_type) {
#客梯(passenger)、貨梯(cargo)
case ($elevator_type == "passenger" or $elevator_type == "cargo"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $pay_amount * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $pay_amount * 0.018;
break;
case ($discount >= 0.75 and $discount < 0.9):
$sales_bonus = $pay_amount * 0.015;
break;
case ($discount < 0.75):
$sales_bonus = $pay_amount * 0.008;
break;
};
break;
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "2-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
#小電梯(dumbwaiter)、平台梯(flatbase)、強驅(positive_drive)
case ($elevator_type == "dumbwaiter" or $elevator_type == "flatbase" or $elevator_type == "positive_drive"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $pay_amount * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $pay_amount * 0.018;
break;
case ($discount >= 0.72 and $discount < 0.9):
$sales_bonus = $pay_amount * 0.015;
break;
case ($discount < 0.72):
$sales_bonus = $pay_amount * 0.008;
break;
};
break;
};
#區域經理提成獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
$sales_bonus = round($sales_bonus);
$pay_scale = $elevator_pay_kind['pay_scale'];
switch ($elevator_pay_kind['pay_kind']) {
//訂金
case '1':
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "4", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "2-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "11", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
break;
//二次
case '2':
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "5", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus), #金額
"payment_schedul_due" => "twice", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//貨抵工地
case '3':
array_push($bonus_array, [
"bonus_type" => "6", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "12", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
// 材料其他
case '4':
array_push($bonus_array, [
"bonus_type" => "7", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "other", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝完畢
case '5':
array_push($bonus_array, [
"bonus_type" => "8", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installed", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//驗收
case '6':
array_push($bonus_array, [
"bonus_type" => "9", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝其他
case '7':
array_push($bonus_array, [
"bonus_type" => "10", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installOther", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
}
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱
@ -125,79 +178,126 @@ function elevator_new_deal_bonus_v2_0($ver, $contract_type, $elevator_type, $ele
return $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_pay_kind, $sales_id, $region_manger_id)
{
$bonus_array = [];
if ($ver == "1.0") {
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.007;
#地區經理經理獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
case "general_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.015;
#區域經理獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "1-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款20%,發放總獎金20%" #發放規定
]);
foreach ($elevator_pay_kind as $elevator_pay_kind) {
$elevator_pay_kind['pay_amount'] = round($elevator_pay_kind['pay_amount'] / 1.05);
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_pay_kind['pay_amount'] * 0.007;
#地區經理經理獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "1-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%" #發放規定
]);
case "general_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_pay_kind['pay_amount'] * 0.015;
#區域經理獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
$pay_scale = $elevator_pay_kind['pay_scale'];
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array, [
"bonus_type" => "1-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%" #發放規定
]);
switch ($elevator_pay_kind['pay_kind']) {
// 訂金
case '1':
array_push($bonus_array, [
"bonus_type" => "4", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "2-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
array_push($bonus_array, [
"bonus_type" => "11", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
break;
// 二次款
case '2':
array_push($bonus_array, [
"bonus_type" => "5", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "twice", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
// 貨抵工地
case '3':
array_push($bonus_array, [
"bonus_type" => "6", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "2-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
array_push($bonus_array, [
"bonus_type" => "12", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
break;
// 材料其他
case '4':
array_push($bonus_array, [
"bonus_type" => "7", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "other", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝完畢
case '5':
array_push($bonus_array, [
"bonus_type" => "8", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installed", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//驗收
case '6':
array_push($bonus_array, [
"bonus_type" => "9", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝其他
case '7':
array_push($bonus_array, [
"bonus_type" => "10", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installOther", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
}
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱

30
wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0_1.php

@ -59,6 +59,7 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_pay_kind,
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
foreach ($elevator_pay_kind as $elevator_pay_kind) {
$elevator_pay_kind['pay_amount'] = round($elevator_pay_kind['pay_amount'] / 1.05);
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
@ -79,10 +80,10 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_pay_kind,
// print_r($pay_scale);
// echo "</pre>";
switch ($elevator_pay_kind['pay_kind']) {
// 訂金
case '1':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_type" => "4", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
@ -90,25 +91,27 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_pay_kind,
]);
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_type" => "11", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
break;
// 二次款
case '2':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-二次段", #獎金名稱
"bonus_type" => "5", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "twice", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
// 貨抵工地
case '3':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-貨到工地款段", #獎金名稱
"bonus_type" => "6", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
@ -116,46 +119,47 @@ function elevator_new_deal_bonus_v1_0($ver, $contract_type, $elevator_pay_kind,
]);
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_type" => "12", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
break;
// 材料其他
case '4':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-材料其他段", #獎金名稱
"bonus_type" => "7", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "other", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝完畢
case '5':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-安裝完畢段", #獎金名稱
"bonus_type" => "8", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installed", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//驗收
case '6':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_type" => "9", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝其他
case '7':
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-安裝其他段", #獎金名稱
"bonus_type" => "10", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installOther", #訂金已收款20%

304
wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_1.php

@ -33,119 +33,225 @@ result_array[
"$bonus_array"=>$bonus_array #所有獎金水庫
];
$elevator_pay_kind[]
ex :
[
]
*/
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, $elevator_pay_kind, $sales_id, $region_manger_id)
{
$bonus_array = [];
if ($ver == "2.0") {
$elevator_knockdown_price = round($elevator_knockdown_price / 1.05); //不含稅
$discount = round($elevator_knockdown_price / $elevator_list_price, 3); #銷售點數,取到小數點第三位。
// echo "<pre>";
// print_r($elevator_pay_kind);
// echo "</pre>";
foreach ($elevator_pay_kind as $elevator_pay_kind) {
// 單次款項的種類
// $pay_amount = round($elevator_pay_kind['pay_amount'] / 1.05); //不含稅
$pay_amount = $elevator_pay_kind['pay_amount']; //不含稅
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $elevator_knockdown_price * 0.007;
#地區經理提成獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
case "general_customer":
switch ($elevator_type) {
#客梯(passenger)、貨梯(cargo)
case ($elevator_type == "passenger" or $elevator_type == "cargo"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $elevator_knockdown_price * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $elevator_knockdown_price * 0.018;
break;
case ($discount >= 0.75 and $discount < 0.9):
$sales_bonus = $elevator_knockdown_price * 0.015;
break;
case ($discount < 0.75):
$sales_bonus = $elevator_knockdown_price * 0.008;
break;
};
break;
#小電梯(dumbwaiter)、平台梯(flatbase)、強驅(positive_drive)
case ($elevator_type == "dumbwaiter" or $elevator_type == "flatbase" or $elevator_type == "positive_drive"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $elevator_knockdown_price * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $elevator_knockdown_price * 0.018;
break;
case ($discount >= 0.72 and $discount < 0.9):
$sales_bonus = $elevator_knockdown_price * 0.015;
break;
case ($discount < 0.72):
$sales_bonus = $elevator_knockdown_price * 0.008;
break;
};
break;
};
#區域經理提成獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.2), #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款20%,發放總獎金20%" #發放規定
]);
#營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%" #發放規定
]);
#合約總類($contract_type):戰略客戶(strategy_customer)、一般客戶(general_customer)
switch ($contract_type) {
case "strategy_customer":
#契約員獎金($sales_bonus)
$sales_bonus = $pay_amount * 0.007;
#地區經理提成獎金($region_manager_bonus)
$region_manager_bonus = 400;
break;
#營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
array_push($bonus_array, [
"bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus * 0.3), #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%" #發放規定
]);
case "general_customer":
switch ($elevator_type) {
#客梯(passenger)、貨梯(cargo)
case ($elevator_type == "passenger" or $elevator_type == "cargo"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $pay_amount * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $pay_amount * 0.018;
break;
case ($discount >= 0.75 and $discount < 0.9):
$sales_bonus = $pay_amount * 0.015;
break;
case ($discount < 0.75):
$sales_bonus = $pay_amount * 0.008;
break;
};
break;
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
#小電梯(dumbwaiter)、平台梯(flatbase)、強驅(positive_drive)
case ($elevator_type == "dumbwaiter" or $elevator_type == "flatbase" or $elevator_type == "positive_drive"):
switch ($discount) {
case ($discount >= 1.0):
$sales_bonus = $pay_amount * 0.02;
break;
case ($discount >= 0.9 and $discount < 1.0):
$sales_bonus = $pay_amount * 0.018;
break;
case ($discount >= 0.72 and $discount < 0.9):
$sales_bonus = $pay_amount * 0.015;
break;
case ($discount < 0.72):
$sales_bonus = $pay_amount * 0.008;
break;
};
break;
};
#區域經理提成獎金($region_manager_bonus)
$region_manager_bonus = 600;
break;
};
$sales_bonus = round($sales_bonus);
$pay_scale = $elevator_pay_kind['pay_scale'];
switch ($elevator_pay_kind['pay_kind']) {
//訂金
case '1':
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "4", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "deposit", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
#區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "11", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "deposit", #訂金已收款100%
"payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
]);
break;
//二次
case '2':
#營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
array_push($bonus_array, [
"bonus_type" => "5", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => round($sales_bonus), #金額
"payment_schedul_due" => "twice", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//貨抵工地
case '3':
array_push($bonus_array, [
"bonus_type" => "6", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "shipping", #訂金已收款20%
"payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
#區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
array_push($bonus_array, [
"bonus_type" => "12", #獎金名稱
"bonus_receiver" => $region_manger_id, #發放人員
"bonus_amount" => round($region_manager_bonus * 0.5), #金額
"payment_schedul_due" => "shipping", #貨到工地款(含)之前所有款項已收款100%
"payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
]);
// 材料其他
case '4':
array_push($bonus_array, [
"bonus_type" => "7", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "other", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝完畢
case '5':
array_push($bonus_array, [
"bonus_type" => "8", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installed", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//驗收
case '6':
array_push($bonus_array, [
"bonus_type" => "9", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "acceptance", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
//安裝其他
case '7':
array_push($bonus_array, [
"bonus_type" => "10", #獎金名稱
"bonus_receiver" => $sales_id, #發放人員
"bonus_amount" => $sales_bonus, #金額
"payment_schedul_due" => "installOther", #訂金已收款20%
"payment_schedul_regulation" => "訂金已收款$pay_scale%,發放總獎金$pay_scale%" #發放規定
]);
break;
}
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
// #營銷人員銷售獎金水庫-----訂金已收款20%,發放總獎金20%
// array_push($bonus_array, [
// "bonus_type" => "營銷人員銷售獎金-訂金段", #獎金名稱
// "bonus_receiver" => $sales_id, #發放人員
// "bonus_amount" => round($sales_bonus), #金額
// "payment_schedul_due" => "deposit", #訂金已收款20%
// "payment_schedul_regulation" => "訂金已收款20%,發放總獎金20%" #發放規定
// ]);
// #營銷人員銷售獎金水庫-----出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%
// array_push($bonus_array, [
// "bonus_type" => "營銷人員銷售獎金-出貨款段", #獎金名稱
// "bonus_receiver" => $sales_id, #發放人員
// "bonus_amount" => round($sales_bonus * 0.5), #金額
// "payment_schedul_due" => "shipping", #訂金已收款20%
// "payment_schedul_regulation" => "出貨前期所有款項已收齊,且出貨款已收款50%,發放總獎金50%" #發放規定
// ]);
// #營銷人員銷售獎金水庫-----驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%
// array_push($bonus_array, [
// "bonus_type" => "營銷人員銷售獎金-驗收款段", #獎金名稱
// "bonus_receiver" => $sales_id, #發放人員
// "bonus_amount" => round($sales_bonus * 0.3), #金額
// "payment_schedul_due" => "acceptance", #訂金已收款20%
// "payment_schedul_regulation" => "驗收前期所有款項已收齊,且驗收款已收款30%,發放總獎金30%" #發放規定
// ]);
// #區域經理提成獎金水庫-----訂金已收款100%,發放總獎金50%
// array_push($bonus_array, [
// "bonus_type" => "區域經理提成獎金-訂金段", #獎金名稱
// "bonus_receiver" => $region_manger_id, #發放人員
// "bonus_amount" => round($region_manager_bonus * 0.5), #金額
// "payment_schedul_due" => "deposit", #訂金已收款100%
// "payment_schedul_regulation" => "訂金已收款100%,發放總獎金50%" #發放規定
// ]);
// #區域經理獎金水庫-----貨到工地款(含)之前所有款項已收款100%,發放總獎金50%
// array_push($bonus_array, [
// "bonus_type" => "區域經理提成獎金-貨到工地款段", #獎金名稱
// "bonus_receiver" => $region_manger_id, #發放人員
// "bonus_amount" => round($region_manager_bonus * 0.5), #金額
// "payment_schedul_due" => "deliveried", #貨到工地款(含)之前所有款項已收款100%
// "payment_schedul_regulation" => "貨到工地款(含)之前所有款項已收款100%,發放總獎金50%" #發放規定
// ]);
$result_array = [
"ver" => $ver, #獎金版本
"result_status" => "success", #計算結果
"bonus_array" => $bonus_array #獎金水庫
];
}
} else {
array_push($bonus_array, [
"bonus_type" => "error", #獎金名稱

92
wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php

@ -34,10 +34,31 @@ result_array[
*/
require_once("elevator_new_deal_bonus_v2_0.php");
require_once("elevator_new_deal_bonus_v2_0_1.php");
#$ver, $contract_type, $elevator_type, $elevator_list_price, $elevator_knockdown_price, $sales_id, $region_manger_id
$pay_kind_arr = [
[
"pay_kind" => '1',
"pay_scale" => 20,
"pay_amount" => 0
],
[
"pay_kind" => '3',
"pay_scale" => 50,
"pay_amount" => 0
],
[
"pay_kind" => '5',
"pay_scale" => 20,
"pay_amount" => 0
],
[
"pay_kind" => '6',
"pay_scale" => 10,
"pay_amount" => 0
]
];
#獎金測試
$examination_array = [
#錯誤版本
@ -55,50 +76,59 @@ $examination_array = [
["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", "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%
// #一般客戶(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%
];
for ($i = 0; $i < count($examination_array); $i++) {
$arr = [];
foreach ($pay_kind_arr as $key => $pay_kind) {
$pay_kind['pay_amount'] = $examination_array[$i][4] * $pay_kind['pay_scale'] / 100;
array_push($arr, $pay_kind);
}
$result = elevator_new_deal_bonus_v2_0(
$examination_array[$i][0],
$examination_array[$i][1],
$examination_array[$i][2],
$examination_array[$i][3],
$examination_array[$i][4],
$arr,
$examination_array[$i][5],
$examination_array[$i][6]
);
echo "<pre>";
print_r($result);
echo "</pre>";
$customer = [
'strategy_customer' => '戰略客戶',
'general_customer' => '一般客戶'

194
wms/contract/api/getContractData.php

@ -49,7 +49,9 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
$contractno = $_GET['contractno'];
$sql_str = "SELECT a.*,b.lm_tel,b.uscc,b.manager,b.linkman FROM pricereview_main AS a
LEFT JOIN hope_elevator_customer AS b ON a.contractno = b.vol_no
WHERE a.contractno = :contractno AND a.status != 'YN' ";
WHERE a.contractno = :contractno
-- AND a.status != 'YN'
";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':contractno', $contractno);
$stmt->execute();
@ -73,11 +75,11 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
$elevators_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$elevators_detail_arr = [];
$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, //設備款
@ -91,10 +93,10 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
$pay_arr['equipment_total'] += $pay['pay_amount'];
if ($pay['pay_scale'] > 0) {
$elevotor_pay_detail = [
'kind' => $pay['pay_kind'],
'pay_kind' => $pay['pay_kind'],
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'amount' => $pay['pay_amount']
'pay_amount' => $pay['pay_amount']
];
// $elevotor_pay_detail['pay_scale'] = $pay['pay_scale'];
// $pay_arr['elevotor_pay_detail']['kind'] = $pay['pay_kind'];
@ -108,18 +110,12 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
if ($pay['pay_scale'] > 0) {
$a = $pay['pay_kind'];
$elevotor_pay_detail = [
'kind' => "$a",
'pay_kind' => "$a",
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'amount' => $pay['pay_amount']
'pay_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'];
}
}
}
@ -127,6 +123,7 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
// print_r($pay_arr);
// echo "</pre>";
// 計算電梯數
foreach ($elevators_results as $keys) {
$contract_elevator_qty += $keys['item_qty'];
}
@ -212,6 +209,179 @@ if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['cont
}
}
// 汰改
if (isset($_GET['contractno']) && $_GET['contractno'] != '' && isset($_GET['contracttype']) && $_GET['contracttype'] == 't') {
try {
$contractno = $_GET['contractno'];
$sql = "SELECT a.*,b.lm_tel,b.uscc,b.manager,b.linkman FROM pricereview_main AS a
LEFT JOIN hope_elevator_customer AS b ON a.contractno = b.vol_no
WHERE a.contractno = :contractno
-- AND a.status != 'YN'
";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':contractno', $contractno);
$stmt->execute();
$contract = $stmt->fetch(PDO::FETCH_ASSOC);
$id = $contract['id'];
// 查詢 manager and departno
$salesman = $contract['person'];
$sql = "SELECT * FROM account WHERE accountid = :accountid ";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':accountid', $salesman);
$stmt->execute();
$account_detail = $stmt->fetch(PDO::FETCH_ASSOC);
$contract['manager'] = $account_detail['manager'];
$contract['salesman_departno'] = $account_detail['department_id'];
// 價格審查單-明細項目
$mid = $contract['id'];
$sql = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'A' ";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$elevators_results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$elevators_detail_arr = [];
$contract_elevator_qty = 0;
// 合約付款項目
$sql = "SELECT * FROM pricereview_pay WHERE mid =:id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$pay_amount = $stmt->fetchAll(PDO::FETCH_ASSOC);
// $pay_kind[] = $result;
// $contract['pay_kind'] = $pay_kind;
$pay_arr = [
'equipment_total' => 0, //設備款
'install_total' => 0, //安裝款
'elevotor_pay_detail' => []
];
// echo "<pre>";
// print_r($pay_amount);
// echo "</pre>";
$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 = [
'pay_kind' => $pay['pay_kind'],
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'pay_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 = [
'pay_kind' => "$a",
'pay_scale' => $pay['pay_scale'],
'pay_period' => $pay['pay_period'],
'pay_amount' => $pay['pay_amount']
];
array_push($pay_arr['elevotor_pay_detail'], $elevotor_pay_detail);
}
}
}
// 計算電梯數
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']);
} 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;
} else {
$result['option_price'] += $option['item_unit_price'] * intval($option['item_qty']);
}
}
}
// 電梯 拆梯 價格分配到每台電梯
$sql = "SELECT * FROM pricereview_item WHERE mid =:mid AND item_group ='D' AND option_relate_spec = :item_no";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':item_no', $item_no);
$stmt->execute();
$dismantle_arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($dismantle_arr)) {
$result['dismantle_price'] = 0;
// 電梯 OPTION 價格分別加到各台電梯
foreach ($dismantle_arr as $key => $dismantle) {
if ($dismantle['item_qty'] == $result['item_qty']) {
$result['dismantle_price'] += intval($dismantle['item_unit_price']);
} else if ($dismantle['item_qty'] / $result['item_qty'] != 1) {
$item_qty = intval($dismantle['item_qty']) / intval($result['item_qty']); // 總option數量 / 總電梯台數
$result['dismantle_price'] += intval($dismantle['item_unit_price']) * $item_qty;
} else {
$result['dismantle_price'] += $dismantle['item_unit_price'] * intval($dismantle['item_qty']);
}
}
}
$note = explode(',', $result['note']);
$result['spec'] = $note[0]; //型號
$result['person'] = $note[1]; // 人承
$result['floor'] = $note[2]; // 樓層
$result['speed'] = $note[3]; // 速度
$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'] = $elevators_results;
$contract['elevators_detail_arr'] = $elevators_detail_arr;
$contract['pay_arr'] = $pay_arr;
$contract['nums'] = $count;
// echo "<pre>";
// print_r($contract);
// echo "</pre>";
header('Content-Type: application/json');
echo json_encode($contract);
} catch (PDOException $e) {
die("ERROR!!!: " . $e->getMessage());
}
}
if (!empty($_GET['contracttype']) && $_GET['contracttype'] == 'accountManger' && !empty($_GET['salesman'])) {
try {
$salesman = $_GET['salesman'];

46
wms/contract/api/getFacilityNo.php

@ -49,6 +49,21 @@ class CreateFacilityNo
}
}
function connectionT8DB()
{
try {
$connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8TEST", "M0225", "IFFBU1E=");
if ($connT8) {
$connT8->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
// $connT8->exec('SET CHARACTER SET utf8mb4');
return $connT8;
//如果連接錯誤,將抛出一個PDOException異常對象
} catch (PDOException $e) {
//如果連結資料庫失敗則顯示錯誤訊並停止本頁的工作
die("ERROR!!!: " . $e->getMessage());
}
}
/**
* 結束資料庫連線
*/
@ -381,11 +396,15 @@ class CreateFacilityNo
function checkFacilityRepeatStatus($facility_no)
{
include_once('../conn.php');
// worksite wipwholestatus
// 檢查 substring 後五碼
if (gettype($facility_no) == "string") {
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');
$connT8 = $this->connectionDB();
$sth = $pdo->prepare('SELECT * FROM `worksite` WHERE `facilityno` = ?');
$sth->bindValue(1, $facility_no);
$sth->execute();
@ -393,29 +412,48 @@ class CreateFacilityNo
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 = $pdo->prepare("SELECT * FROM `wipwholestatus` WHERE `facilityno` LIKE ? ");
$sth->bindValue(1, '%' . $facility_no . '%');
$sth->execute();
if ($sth->rowCount() == 0) {
return true;
}
$sql = "SELECT * FROM comMaterial WHERE MaterialId like '%$facility_no%'";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$count = $stmt->rowCount();
echo $count;
if ($count == 0) {
return true;
}
return false;
}
if (gettype($facility_no) == "array") {
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');
$connT8 = $this->connectionT8DB();
$status = true;
foreach ($facility_no as $row) {
$sth = $pdo->prepare('SELECT * FROM `worksite` WHERE `facilityno` = ?');
$sth->bindValue(1, $row);
$sth->execute();
if ($sth->rowCount() !== 0)
if ($sth->rowCount() !== 0) {
$status = false;
}
$sql = "SELECT * FROM comMaterial WHERE MaterialId like '%$row%' ";
echo $sql;
$stmt = $connT8->prepare($sql);
$stmt->execute();
$count = $stmt->rowCount();
echo $count;
if ($count != 0) {
$status = false;
}
$row = substr($row, -5);
$pdo = $this->connectionDB();
$pdo->exec('SET CHARACTER SET utf8mb4');

162
wms/contract/api/newElevatorBonus.php

@ -0,0 +1,162 @@
<?php
function BounsCount($data, $conn, $facilityno)
{
try {
require_once("../../bonus/elevator_new/elevator_new_deal_bonus.php");
$dailyNecessities = [
'MAE100' => 'passenger', //小機房
'MAM200' => 'passenger', //無機房
'MAH100' => 'dumbwaiter', //小電梯
'MAQ100' => 'positive_drive', //強趨梯
'MAF100' => 'cargo', //貨梯
'MAP100' => 'flatbase', // 平台踢
];
$contractType = [
'1' => 'strategy_customer',
'2' => 'general_customer'
];
$signing_date = $data['signing_date'];
$bonus_v1_0_date = '2024-01-02';
$bonus_v2_0_date = '2024-01-03';
$contract_type = $data['contract_type'];
$total = $data['price_total'];
$type = $contractType[$contract_type]; //戰略客戶 or 一般客戶
// $elevator_knockdown_price = $data['price_total']; //受價總額
$elevators = json_decode($data['elevators_detail_arr'], true);
$contract_no = $data['contractno'];
$salesman = $data['salesman'];
$manager = $data['manager'];
$contract_kind = 1;
$pay_arr = !empty($data['pay_arr']) ? json_decode($data['pay_arr'], true) : []; //電梯
$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) {
$other_price = !empty($elevator['option_other_price']) ? $elevator['option_other_price'] : 0;
$elevator_knockdown_price = $elevator['elevator_price']; // 單台電梯售價
$elevator_list_price = $other_price + $elevator['option_price'] + $elevator['elevator_price']; //牌價
$result_bonus = elevator_new_deal_bonus_v1_0($ver, $type, $pay_arr['elevotor_pay_detail'], $salesman, $manager);
$facility_no = $facilityno[$key];
$bonus_json = [
'contract_type' => $type,
'total' => $elevator_list_price,
'fee_per_st' => $elevator_knockdown_price
];
echo "<pre>";
print_r($result_bonus);
echo "</pre>";
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 = $result['bonus_type']; //發放類別
// $bonus_kind = $bonus_type[1];
$amount = round($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'] = $result['payment_schedul_due'];
$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();
}
} else {
$status = 0;
}
} else {
$status = 0;
}
}
if ($status == 0) {
$response = [
"status" => "2",
"data" => "create_bonus_error"
];
} else {
$response = [
"status" => "1",
"data" => "Success"
];
}
return $response;
} else if ($signing_date >= $bonus_v2_0_date) {
$ver = '2.0';
foreach ($elevators as $key => $elevator) {
$option_other_price = !empty($elevator['option_other_price']) ? intval($elevator['option_other_price']) : 0;
$elevator_type = $dailyNecessities[$elevator['spec']];
$elevator_list_price = $option_other_price + $elevator['option_price'] + $elevator['elevator_price'];
$elevator_knockdown_price = $elevator['elevator_price'];
$commission_fee = $elevator['commission_fee'];
$result_bonus = elevator_new_deal_bonus_v2_0(
$ver,
$type,
$elevator_type,
$elevator_list_price,
$elevator_knockdown_price,
$pay_arr['elevotor_pay_detail'],
$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 = $result['bonus_type']; //發放類別
$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'] = $result['payment_schedul_due'];
$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();
}
} else {
$status = 0;
}
} else {
$status = 0;
}
}
if ($status == 0) {
$response = [
"status" => "2",
"data" => "create_bonus_error"
];
} else {
$response = [
"status" => "1",
"data" => "Success"
];
}
}
return $response;
} catch (PDOException $e) {
header("HTTP/1.1 500 Internal Server Error");
die('Error!:' . $e->getMessage());
}
}

374
wms/contract/api/newElevatorT8.php

@ -0,0 +1,374 @@
<?php
function T8Insert($data, $facilityno, $connT8)
{
// try {
// 引入銷售訂單 API
require_once("./T8API.php");
$contractno = $data['contractno'];
$partyA = $data['customer'];
$phone = $data['lm_tel'];
$vat = $data['vat'];
$partyAaddress = $data['address'];
$user_id = $data['user_id'];
$salesman = $data['salesman'];
$createAt = date("Y-m-dH-i-s");
$elevators = !empty($data['elevators_detail_arr']) ? json_decode($data['elevators_detail_arr'], true) : []; //電梯
$pay_arr = !empty($data['pay_arr']) ? json_decode($data['pay_arr'], true) : []; //電梯
$createTime = str_replace('-', '', $createAt);
$signing_date = intval(str_replace("-", '', $data['signing_date'])); //簽訂日期
// echo
// $pay_kind = [
// '1' => '簽約',
// '2' => '二次款',
// '3' => '貨抵工地',
// '4' => '材料其他',
// '5' => '試車完工', //安裝完畢
// '6' => '交車' //交車
// ];
$pay_kind = [
'1' => '簽約',
'2' => '二次款',
'3' => '貨抵工地',
'4' => '材料其他',
'5' => '試車完工', //安裝完畢
'6' => '交車' //交車
];
$sql = "SELECT * FROM comCustomer
WHERE BizPartnerId = :BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// 新增客戶 table
if (empty($result)) {
// 若 客戶資料為空,新增一筆到 comCustomer
// 新增客戶資料
$sql = "INSERT INTO comBusinessPartner
(BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:CreatorId,:CreateTime,'10')";
// $sql = "INSERT INTO comBusinessPartner
// (BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
// VALUES('$contractno','$partyA',1,'TW','$phone',99999999,'$vat', '$partyA','$partyAaddress','$user_id',$createTime,'10')";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->bindParam(':BizPartnerName', $partyA); //客戶名稱
$stmt->bindParam(':WorkTelNo', $phone);
$stmt->bindParam(':TaxNo', $vat);
$stmt->bindParam(':EnterpriseName', $partyA); //企業名稱
$stmt->bindParam(':ContactAddress', $partyAaddress);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,ConditionId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)VALUES
('1000','10','0008','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime,'35')";
// $sql = "INSERT INTO comCustomer
// (OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)
// VALUES('1000','10','TWD','$contractno','$salesman','$user_id',1,'$partyAaddress','$createTime','35')";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
exit();
} else {
// 若客戶資料不為空,更新該客戶資訊。
$sql = "UPDATE comCustomer SET
PersonId=:PersonId,
ConditionId='0008',
CurrId='TWD',
InvoiceAddress=:InvoiceAddress,
LastOperatorId=:LastOperatorId,
LastOperateTime=:LastOperateTime
WHERE BizPartnerId=:BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
$sql = "UPDATE comBusinessPartner SET
BizPartnerName=:BizPartnerName,
WorkTelNo=:WorkTelNo,
TaxNo=:TaxNo,
EnterpriseName=:EnterpriseName,
ContactAddress=:ContactAddress,
LastOperatorId=:LastOperatorId,
LastOperateTime=:LastOperateTime
WHERE BizPartnerId = :BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerName', $partyA);
$stmt->bindParam(':WorkTelNo', $phone);
$stmt->bindParam(':TaxNo', $vat);
$stmt->bindParam(':EnterpriseName', $partyA);
$stmt->bindParam(':ContactAddress', $partyAaddress);
// $stmt->bindParam(':EMail', $email);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
}
$sql = "SELECT * FROM comProject WHERE ProjectId = :ProjectId";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->execute();
$resultProject = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($resultProject)) {
//新增於 comProject。合約 table
$sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,CreateTime,CreatorId,IsInUsed)
VALUES(:ProjectId,:ProjectName,'C0',:CreateTime,:CreatorId,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->bindParam(':ProjectName', $partyA);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->execute();
}
$sql = "SELECT * FROM salSalesOrder WHERE BillNo = :BillNo";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BillNo', $contractno);
$contractT8 = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($contractT8)) {
foreach ($elevators as $index => $elevator) {
$count = 1;
// 產品集成維護
$facility_no = $facilityno[$index];
$MaterialName = "$partyA($facility_no)";
$contract_arrival_a = $elevator['contract_arrival_date'];
$sql = "SELECT * FROM comMaterial WHERE MaterialId = '$facility_no'";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$MaterialisIt = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($MaterialisIt)) {
$sql = "INSERT INTO comMaterial
(FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime,IsInUsed)
VALUES ('1000',:MaterialId,'10','A',:CreatorId,:CreateTime,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialGroup
(MaterialTypeId,MaterialId,MaterialName,MaterialCategoryId,IsInUsed,UnitId,CreatorId,CreateTime)
VALUES ('10',:MaterialId,:MaterialName,'A',1,'SET',:CreatorId,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':MaterialName', $MaterialName);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialPurchases
(Orgid,MaterialTypeId,MaterialId,CurrId,SUnitId,TaxId,CreatorId,CreateTime)
VALUES ('1000','10',:MaterialId,'TWD','SET','ST005',:CreatorId,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO plsMaterialPlanData
(PlanRangeId,MaterialId,FOrgId,MaterialTypeId,CreatorId,CreateTime,DefaultDemandOrg) VALUES
(1000,:MaterialId,1000,10,:CreatorId,:CreateTime,1000)
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialSales
(OrgId,MAterialTypeId,MaterialId,CurrId,SUnitId,SupplyOrgId,CreatorId,CreateTime,IsInUsed) VALUES
(1000,10,:MaterialId,'TWD','SET',1000,:CreatorId,:CreateTime,1)
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
}
// 階段收款資訊
$salOrderStagePay_row = [];
$equipment_total = 0;
$install_total = 0;
$equipment_total = $pay_arr['equipment_total'];
$install_total = $pay_arr['install_total'];
$count_a = 0;
$count_month = 1;
foreach ($pay_arr['elevotor_pay_detail'] as $key => $detail) {
if ($detail['pay_kind'] == 3) {
$PlanPayDate = $contract_arrival_a;
} else if ($detail['pay_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['pay_kind']];
$PlanPercentage = intval($detail['pay_scale']) / 100;
$rows = [
"PayStage" => "$PayStage", //收款階段
"PlanPercentage" => $PlanPercentage, //計劃收款比例(%)
"PlanPayAmt" => $detail['pay_amount'], //計劃收款金額
"PlanPayDate" => $contract_arrival_date, //計劃收款日期 1.第一筆都是簽約日
"BillNo" => "$contractno",
"RowCode" => $key + 1,
"RowNo" => $key + 1,
"UnWriteOffOAmount" => $detail['pay_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;
if ($user_id == 'M0225') {
echo "<pre>";
print_r(json_encode($API_body, JSON_UNESCAPED_UNICODE));
echo "</pre>";
}
// $api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALSALESORDER/PostERPData'; //正式區
$api_url = "http://60.244.87.101:880/twWebAPI/V1/SALSALESORDER/PostERPData"; //測試區
$result = T8salIncomeApply($API_body, $api_url);
if ($user_id == 'M0225') {
echo "<pre>";
print_r($result);
echo "</pre>";
}
if (!empty($result) && ($result['Status'] == 'Fails' || $result['Status'] == 'Error')) {
$Error_msg = $result['ErrorMsg'];
// echo "<script>alert('$Error_msg')</script>";
// exit();
// echo $result['ErrorMsg'];
// echo "</script>";
echo $Error_msg;
}
} else {
echo '資料已新增過,請洽資訊人員';
// exit();
}
// $connT8->commit();
// } catch (PDOException $e) {
// $connT8->rollback();
// header("HTTP/1.1 500 Internal Server Error");
// die('Error!:' . $e->getMessage());
// }
}

379
wms/contract/api/postContractData.php

@ -1,7 +1,6 @@
<?php
header("Content-Type: text/html; charset=utf-8");
require_once("../conn.php");
// require_once("../connt8.php");
include_once("./getFacilityNo.php");
include_once("./getComboNo.php");
include_once("./upload_chk.php");
@ -68,9 +67,10 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
foreach ($elevators as $elevator) {
$facility_arr[] = $dailyNecessities[$elevator['spec']];
}
// echo json_encode($facility_arr);
// 電梯做番號
$facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num);
echo json_encode($facilityno);
// exit();
// if ($user_id == 'M0225') {
// echo '<pre>';
@ -79,7 +79,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// exit();
// }
$fail_arr = [];
// if ($contractno === '') return $fail_arr[] = '合約號為必填';
if ($contractno === '') return $fail_arr[] = '合約號為必填';
if ($total_price == '') $fail_arr[] = '合約總價為必填';
if ($salesman == '') $fail_arr[] = '營業員為必填';
if ($contract_begin_date == '') $fail_arr[] = '合約開始時間為必填';
@ -108,11 +108,10 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
echo json_encode($fail_arr, JSON_UNESCAPED_UNICODE);
exit();
}
exit();
T8insert($_POST, $facilityno, $depId, $connT8);
exit();
// T8insert($_POST, $facilityno, $depId, $connT8);
/// 獎金計算
$aaa = bonusCreate($_POST, $facilityno, $conn);
exit();
if (!empty($aaa) && $aaa['status'] == 2) {
header("HTTP/1.1 422 Unprocessable Entity");
echo $aaa['data'];
@ -292,7 +291,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
}
// $regular_contract_manger_id = $elevators[$idx]['regular_contract_manger_id'];
$regular_contract_manger_id = $elevators[$idx]['regular_contract_manger_id'];
// $sql = "SELECT * FROM account WHERE accountid = '' ";
$sql = "SELECT * FROM account WHERE accountid = '$maintance_manager' ";
$stmt = $conn->prepare($sql);
@ -306,17 +305,15 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// 南部 : M0077
// 保養組長之後調整
$mail_title = "保養計畫 : 合約號:" . $contractno . "作番號:" . $no . "-請安排此作番的保養人員";
$mail_content = "保養計畫 : 合約號:" . $contractno . "作番號:" . $no . "-請安排此作番的保養人員 <a href='https://www.masada.com.tw/wms/schedule-index.php?contractno=$contractno&facilityno=$no&token=$token'>點我</a>";
$mail_content = "保養計畫 : 合約號:" . $contractno . "作番號:" . $no . "-請安排此作番的保養人員 <a href='https://www.masada.com.tw/wms/schedule-index.php?check=1&contractno=$contractno&facilityno=$no&token=$token'>點我</a>";
// exit();
$mail->sendx(
$mail_title,
$mail_content,
[
// [$user_id, $user_detail['email']],
[$user_id, $user_detail['email']],
// [$maintance_manager, $maintance_manager_detail['email']],
// ['M0012', 'Yingying@masada.com.tw']
// [$regular_contract_manger_id, $regular_contract_manger_mail['mail']],
['M0225', 'lkmd555@masada.com.tw']
// ['M0225', 'lkmd555@masada.com.tw']
// ['M0012', 'Yingying@masada.com.tw']
],
"永佳捷科技"
@ -400,10 +397,17 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
} else {
$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,payType, customer_phone, customer_email, repairman, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by,signing_date)
VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :payType ,:customer_phone, :customer_email, :repairman, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by,:signing_date)";
$kind = [
'new' => '1',
'free_to_charge' => '2',
'renew_priceissue' => '3',
'longcontract_m1_free_charge' => '4'
];
$sql_str = "INSERT INTO contract_b_signed_back (contract_no,contract_kind, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price,payType, customer_phone, customer_email, maintance_manager, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, created_at, created_by,signing_date)
VALUES (:contract_no, :contract_type,:contract_kind, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :payType ,:customer_phone, :customer_email, :maintance_manager, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :created_at, :created_by,:signing_date)";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(":contract_no", $contractno);
$stmt->bindParam(":contract_kind", $kind[$contract_type]);
$stmt->bindParam(":contract_type", $contract_type);
$stmt->bindParam(":company", $company);
$stmt->bindParam(":customer_no", $customer_no);
@ -413,8 +417,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$stmt->bindParam(":total_price", $total_price);
$stmt->bindParam(":customer_phone", $customer_phone);
$stmt->bindParam(":customer_email", $customer_email);
$stmt->bindParam(":repairman", $repairman);
// $stmt->bindParam(":cycle", $cycle); // 保養頻率在做番上,這邊不 insert。
$stmt->bindParam(":maintance_manager", $maintance_manager);
$stmt->bindParam(":contact_person", $contact_person);
$stmt->bindParam(":contact_address", $contact_address);
$stmt->bindParam(":contact_phone", $contact_phone);
@ -423,13 +426,13 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$stmt->bindParam(":area", $area);
$stmt->bindParam(":address", $address);
$stmt->bindParam(":files_id", $files_id);
$stmt->bindParam(":bonus", $bonus);
$stmt->bindParam(":max_bonus", $max_bonus);
$stmt->bindParam(":created_at", $created_at);
$stmt->bindParam(":created_by", $user_id);
$stmt->bindParam(':payType', $payType);
$stmt->bindParam(':signing_date', $signing_date);
// $stmt->bindParam(":cycle", $cycle); // 保養頻率在做番上,這邊不 insert。
// $stmt->bindParam(":bonus", $bonus);
// $stmt->bindParam(":max_bonus", $max_bonus);
$stmt->execute();
// T8insert($_POST, $facilityno);
@ -471,6 +474,7 @@ function T8insert($data, $facilityno, $depId, $connT8)
$invoice = !empty($_POST['invoice']) ? $_POST['invoice'] : '';
$invoice_address = !empty($_POST['invoice_address']) ? $_POST['invoice_address'] : '';
$total_price = !empty($_POST['total_price']) ? intval($_POST['total_price']) : 0;
// $email = !empty($data['email']) ? $data['email'] : null;
// $partyAaddress = !empty($data['partyAaddress']) ? $data['partyAaddress'] : null; // 業務聯絡人地址
// $num = !empty($data['num']) ? $data['num'] : null; // 電梯數量
@ -566,6 +570,7 @@ function T8insert($data, $facilityno, $depId, $connT8)
// echo '<pre>';
// print_r($elevators['maintainance']);
// echo '</pre>';
foreach ($elevators as $index => $elevator) {
$maintainance_type = $elevator['maintainance'];
if ($maintainance_type == 'A') {
@ -581,16 +586,17 @@ function T8insert($data, $facilityno, $depId, $connT8)
$stmt->bindParam(':ProjectId', $contractno);
$stmt->execute();
$resultProject = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($resultProject)) {
//新增於 comProject。合約 table
$sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,ValidityFromDate,ValidityToDate,CreateTime,CreatorId,IsInUsed)
VALUES(:ProjectId,:ProjectName,:TypeId,:ValidityFromDate,:ValidityToDate,:CreateTime,:CreatorId,1)";
$sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,CreateTime,CreatorId,IsInUsed)
VALUES(:ProjectId,:ProjectName,:TypeId,:CreateTime,:CreatorId,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->bindParam(':ProjectName', $customer);
$stmt->bindParam(':TypeId', $type);
$stmt->bindParam(':ValidityFromDate', $beginDate);
$stmt->bindParam(':ValidityToDate', $endDate);
// $stmt->bindParam(':ValidityFromDate', $beginDate);
// $stmt->bindParam(':ValidityToDate', $endDate);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->execute();
@ -598,7 +604,6 @@ function T8insert($data, $facilityno, $depId, $connT8)
$row = 0;
// // 新增電梯數
foreach ($elevators as $index => $elevator) {
$facility_no = $facilityno[$index];
$sql = "INSERT INTO comMaterial
(FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime)
@ -638,14 +643,11 @@ function T8insert($data, $facilityno, $depId, $connT8)
];
// 幾年
// $SQuantityYear = $elevator['maintain_months'] / 12;
// 單台電梯契約報價
$price_of_month = intval($elevator['sold_price']);
print_r($price_of_month);
exit;
//分幾期 () => 總共保養月 / 分期月
$SQuantitya = $elevator['maintain_months'] / $IncomeId[$payType];
$SQuantity = $IncomeId[$payType];
$date_1 = getNext25thDate($contract_begin_date);
// 依每台電梯去加入各個的付款項
@ -673,11 +675,13 @@ function T8insert($data, $facilityno, $depId, $connT8)
}
}
$count_rows_data = COUNT($salIncomeApplyDetail_rows);
$T8total = $price_of_month * $count_rows_data;
$T8total = $price_of_month * $elevator['maintain_months'];
// echo "<pre>";
// print_r($salIncomeApplyDetail_rows);
// print_r($T8total);
// echo "</pre>";
// exit;
if ($T8total != $total_price) {
echo '1';
$difference = $T8total - $total_price;
$salIncomeApplyDetail_rows[$count_rows_data - 1]['SPrice'] = $salIncomeApplyDetail_rows[$count_rows_data - 1]['SPrice'] - $difference;
}
@ -706,7 +710,8 @@ function T8insert($data, $facilityno, $depId, $connT8)
"DeptId" => "$depId",
"IsPriceWithTax" => 1,
"CU_ContractStart" => intval($beginDate),
"CU_ContractEnd" => intval($endDate)
"CU_ContractEnd" => intval($endDate),
"AddrId" => "$invoice_address"
];
$salIncomeApplyMaster = [
@ -724,14 +729,12 @@ function T8insert($data, $facilityno, $depId, $connT8)
echo '<pre>';
print_r(json_encode($API_body));
echo '</pre>';
// exit();
// $api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALINCOMEAPPLY/PostERPData'; //正式區
$api_url = "http://60.244.87.101:880/twWebAPI/V1/SALINCOMEAPPLY/PostERPData"; //測試區
$result = T8salIncomeApply($API_body, $api_url);
// echo '<pre>';
// print_r($result);
// echo '</pre>';
// exit();
if ($result['Status'] == 'Error' || $result['Status'] == 'Fails') {
http_response_code(404);
die('Error!:' . $result['ErrorMsg']);
@ -741,143 +744,142 @@ function T8insert($data, $facilityno, $depId, $connT8)
function bonusCreate($data, $facilityno, $conn)
{
try {
require_once("../../bonus/maintance/maintaenance_contract_bonus.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 H:i:s');
$contract_no = !empty($data['contractno']) ? $data['contractno'] : '';
$contract_kind = 3;
$payment = [
'A40006' => 'annually', //年繳
'A40007' => 'quarterly', //季繳
'A40004' => 'bimonthly', // 雙月繳
'A40005' => 'semiannually', // 半年繳
'A40003' => 'monthly' //月繳
];
// try {
require_once("../../bonus/maintance/maintaenance_contract_bonus.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 H:i:s');
$contract_no = !empty($data['contractno']) ? $data['contractno'] : '';
$contract_kind = 3;
$payment = [
'A40006' => 'annually', //年繳
'A40007' => 'quarterly', //季繳
'A40004' => 'bimonthly', // 雙月繳
'A40005' => 'semiannually', // 半年繳
'A40003' => 'monthly' //月繳
];
$fail_arr = [];
$payDay = getNext25thDate($contract_begin_date);
foreach ($elevators as $key => $elevator) {
$facility_no = $facilityno[$key];
$ver = $elevator['bonus_verson']; //獎金版本
$payment_period = $payment[$payType]; //付款方式
$elevator_list_price = !empty(($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'] / 100;
$region_director_id = $elevator['manager'];
$regular_contract_manger_id = !empty($elevator['regular_contract_manger_id']) ? $elevator['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 : '';
/////////////////////////////////
// 如果保養合約 大於一年 2.0版本
// if (!empty($maintain_months)) {
// if ($ver == '2.1') {
// 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
// );
// }
// } else
if ($ver == '2.0') {
$fail_arr = [];
$payDay = getNext25thDate($contract_begin_date);
foreach ($elevators as $key => $elevator) {
$facility_no = $facilityno[$key];
$ver = $elevator['bonus_verson']; //獎金版本
$payment_period = $payment[$payType]; //付款方式
$elevator_list_price = !empty(($elevator['stand_price'])) ? intval($elevator['stand_price']) : 0; //牌價
$fee_per_st = !empty($elevator['sold_price']) ? intval(round($elevator['sold_price'] / 1.05, 2)) : 0; //作翻契約金額 (不含稅)
$commission_fee = !empty($elevator['service_expense']) ? intval($elevator['service_expense']) : 0; //服務費(月/台)
$receivable_date_due = $payDay; //第一筆保養款項收回日
$sales_id = $salesman; //營業人員
$discount = $elevator['discount'] / 100;
$region_director_id = $elevator['manager'];
$regular_contract_manger_id = !empty($elevator['regular_contract_manger_id']) ? $elevator['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 : '';
///////////////////////////////
// 如果保養合約 大於一年 2.0版本
if (!empty($maintain_months)) {
if ($ver == '2.1') {
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
);
}
} else if ($ver == '2.0') {
$contract_years = $years > 2 ? 'above_two' : 'one';
// echo $contract_years;
@ -896,9 +898,9 @@ function bonusCreate($data, $facilityno, $conn)
}
// }
/////////////////////////////////
// echo "<pre>";
// print_r($results);
// echo "</pre>";
echo "<pre>";
print_r($results);
echo "</pre>";
/////////////////////////////////
$bonus_json = [
'contract_type' => $contract_type,
@ -943,26 +945,27 @@ function bonusCreate($data, $facilityno, $conn)
$stmt->execute();
}
}
$request = [
"status" => "1",
"data" => "Success"
];
} else {
$request = [
"status" => "2",
"data" => "create_bonus_error"
];
}
$request = [
"status" => "1",
"data" => "Success"
];
} else {
$request = [
"status" => "2",
"data" => "create_bonus_error"
];
}
// exit();
}
return $request;
// exit();
} catch (PDOException $e) {
http_response_code(404);
echo $e->getMessage();
die('Error!:' . $e->getMessage());
}
return $request;
// exit();
// } catch (PDOException $e) {
// http_response_code(404);
// echo $e->getMessage();
// die('Error!:' . $e->getMessage());
// }
}
// 計算保養開始日期的當月25號

526
wms/contract/api/postNewContractData.php

@ -8,6 +8,8 @@ require_once("../conn.php");
include_once("./getFacilityNo.php");
include_once("./getComboNo.php");
include_once("./upload_chk.php");
include_once("./newElevatorBonus.php");
include_once("./newElevatorT8.php");
ini_set('date.timezone', 'Asia/Taipei');
@ -33,10 +35,8 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$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;
@ -44,13 +44,14 @@ 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($case_name)) $fail_arr[] = '案名為必填';
if (empty($linkman)) $fail_arr[] = '聯絡人為必填';
if (empty($lm_tel)) $fail_arr[] = '聯絡人電話為必填';
if (empty($address)) $fail_arr[] = '地址為必填';
if (empty($salesman)) $fail_arr[] = '營業員為必填';
// if (empty($elevators_detail_arr['qc'])) $fail_arr[] = '請選擇QC或官檢';
// if (empty($vat)) $fail_arr[] = '統編/身分證為必填';
if (count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr, JSON_UNESCAPED_UNICODE);
@ -76,7 +77,10 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
echo json_encode($facilityno);
// $bonus_result = BounsCount($_POST, $conn, $facilityno);
// echo "<pre>";
// print_r($bonus_result);
// echo "</pre>";
// exit();
// if (!empty($bonus_result) && $bonus_result['status'] == "2") {
// $fail_arr[] = '獎金計算錯誤,請再檢查或連繫資訊人員';
// // header("HTTP/1.1 422 Unprocessable Entity");
@ -85,7 +89,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// }
T8Insert($_POST, $facilityno, $connT8);
// exit();
exit();
try {
$conn->beginTransaction();
@ -296,515 +300,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
}
}
function T8Insert($data, $facilityno, $connT8)
{
// try {
// 引入銷售訂單 API
require_once("./T8API.php");
$contractno = $data['contractno'];
$partyA = $data['customer'];
$phone = $data['lm_tel'];
$vat = $data['vat'];
$partyAaddress = $data['address'];
$user_id = $data['user_id'];
$salesman = $data['salesman'];
$createAt = date("Y-m-dH-i-s");
$elevators = !empty($data['elevators_detail_arr']) ? json_decode($data['elevators_detail_arr'], true) : []; //電梯
$pay_arr = !empty($data['pay_arr']) ? json_decode($data['pay_arr'], true) : []; //電梯
$createTime = str_replace('-', '', $createAt);
$signing_date = intval(str_replace("-", '', $data['signing_date'])); //簽訂日期
// echo
// $pay_kind = [
// '1' => '簽約',
// '2' => '二次款',
// '3' => '貨抵工地',
// '4' => '材料其他',
// '5' => '試車完工', //安裝完畢
// '6' => '交車' //交車
// ];
$pay_kind = [
'1' => '簽約',
'2' => '二次款',
'3' => '貨抵工地',
'4' => '材料其他',
'5' => '試車完工', //安裝完畢
'6' => '交車' //交車
];
$sql = "SELECT * FROM comCustomer
WHERE BizPartnerId = :BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// 新增客戶 table
if (empty($result)) {
// 若 客戶資料為空,新增一筆到 comCustomer
// 新增客戶資料
$sql = "INSERT INTO comBusinessPartner
(BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
VALUES(:BizPartnerId,:BizPartnerName,1,'TW',:WorkTelNo,99999999,:TaxNo,:EnterpriseName,:ContactAddress,:CreatorId,:CreateTime,'10')";
// $sql = "INSERT INTO comBusinessPartner
// (BizPartnerId,BizPartnerName,BusinessAttr,CountryId,WorkTelNo,BizToDate,TaxNo,EnterpriseName,ContactAddress,CreatorId,CreateTime,BizPartnerTypeId)
// VALUES('$contractno','$partyA',1,'TW','$phone',99999999,'$vat', '$partyA','$partyAaddress','$user_id',$createTime,'10')";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->bindParam(':BizPartnerName', $partyA); //客戶名稱
$stmt->bindParam(':WorkTelNo', $phone);
$stmt->bindParam(':TaxNo', $vat);
$stmt->bindParam(':EnterpriseName', $partyA); //企業名稱
$stmt->bindParam(':ContactAddress', $partyAaddress);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,ConditionId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)VALUES
('1000','10','0008','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime,'35')";
// $sql = "INSERT INTO comCustomer
// (OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime,InvoiceId)
// VALUES('1000','10','TWD','$contractno','$salesman','$user_id',1,'$partyAaddress','$createTime','35')";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
} else {
// 若客戶資料不為空,更新該客戶資訊。
$sql = "UPDATE comCustomer SET
PersonId=:PersonId,
ConditionId='0008',
CurrId='TWD',
InvoiceAddress=:InvoiceAddress,
LastOperatorId=:LastOperatorId,
LastOperateTime=:LastOperateTime
WHERE BizPartnerId=:BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':InvoiceAddress', $partyAaddress);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
$sql = "UPDATE comBusinessPartner SET
BizPartnerName=:BizPartnerName,
WorkTelNo=:WorkTelNo,
TaxNo=:TaxNo,
EnterpriseName=:EnterpriseName,
ContactAddress=:ContactAddress,
LastOperatorId=:LastOperatorId,
LastOperateTime=:LastOperateTime
WHERE BizPartnerId = :BizPartnerId
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerName', $partyA);
$stmt->bindParam(':WorkTelNo', $phone);
$stmt->bindParam(':TaxNo', $vat);
$stmt->bindParam(':EnterpriseName', $partyA);
$stmt->bindParam(':ContactAddress', $partyAaddress);
// $stmt->bindParam(':EMail', $email);
$stmt->bindParam(':LastOperatorId', $user_id);
$stmt->bindParam(':LastOperateTime', $createTime);
$stmt->bindParam(':BizPartnerId', $contractno);
$stmt->execute();
}
$sql = "SELECT * FROM comProject WHERE ProjectId = :ProjectId";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->execute();
$resultProject = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($resultProject)) {
//新增於 comProject。合約 table
$sql = "INSERT INTO comProject(ProjectId,ProjectName,TypeId,CreateTime,CreatorId,IsInUsed)
VALUES(:ProjectId,:ProjectName,'C0',:CreateTime,:CreatorId,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':ProjectId', $contractno);
$stmt->bindParam(':ProjectName', $partyA);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->execute();
}
$sql = "SELECT * FROM salSalesOrder WHERE BillNo = :BillNo";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BillNo', $contractno);
$contractT8 = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($contractT8)) {
foreach ($elevators as $index => $elevator) {
$count = 1;
// 產品集成維護
$facility_no = $facilityno[$index];
$MaterialName = "$partyA($facility_no)";
$contract_arrival_a = $elevator['contract_arrival_date'];
$sql = "SELECT * FROM comMaterial WHERE MaterialId = '$facility_no'";
$stmt = $connT8->prepare($sql);
$stmt->execute();
$MaterialisIt = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($MaterialisIt)) {
$sql = "INSERT INTO comMaterial
(FOrgid,MaterialId,MaterialTypeId,MaterialCategoryId,CreatorId,CreateTime,IsInUsed)
VALUES ('1000',:MaterialId,'10','A',:CreatorId,:CreateTime,1)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialGroup
(MaterialTypeId,MaterialId,MaterialName,MaterialCategoryId,IsInUsed,UnitId,CreatorId,CreateTime)
VALUES ('10',:MaterialId,:MaterialName,'A',1,'SET',:CreatorId,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':MaterialName', $MaterialName);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialPurchases
(Orgid,MaterialTypeId,MaterialId,CurrId,SUnitId,TaxId,CreatorId,CreateTime)
VALUES ('1000','10',:MaterialId,'TWD','SET','ST005',:CreatorId,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO plsMaterialPlanData
(PlanRangeId,MaterialId,FOrgId,MaterialTypeId,CreatorId,CreateTime,DefaultDemandOrg) VALUES
(1000,:MaterialId,1000,10,:CreatorId,:CreateTime,1000)
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
$sql = "INSERT INTO comMaterialSales
(OrgId,MAterialTypeId,MaterialId,CurrId,SUnitId,SupplyOrgId,CreatorId,CreateTime,IsInUsed) VALUES
(1000,10,:MaterialId,'TWD','SET',1000,:CreatorId,:CreateTime,1)
";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':MaterialId', $facility_no);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':CreateTime', $createTime);
$stmt->execute();
}
// 階段收款資訊
$salOrderStagePay_row = [];
$equipment_total = 0;
$install_total = 0;
$equipment_total = $pay_arr['equipment_total'];
$install_total = $pay_arr['install_total'];
$count_a = 0;
$count_month = 1;
foreach ($pay_arr['elevotor_pay_detail'] as $key => $detail) {
if ($detail['kind'] == 3) {
$PlanPayDate = $contract_arrival_a;
} else if ($detail['kind'] > 3) {
$PlanPayDate = date("Y-m-d", strtotime($contract_arrival_a . '+' . $count_month . ' month'));
$count_month++;
} else {
$PlanPayDate = $signing_date;
$count_a++;
if ($count_a == 1) {
$PlanPayDate = date("Y-m-d", strtotime($signing_date . '+' . $count_a . ' month'));
}
}
$contract_arrival_date = intval(str_replace("-", '', $PlanPayDate)); //貨到工地日
$PayStage = $pay_kind[$detail['kind']];
$PlanPercentage = intval($detail['pay_scale']) / 100;
$rows = [
"PayStage" => "$PayStage", //收款階段
"PlanPercentage" => $PlanPercentage, //計劃收款比例(%)
"PlanPayAmt" => $detail['amount'], //計劃收款金額
"PlanPayDate" => $contract_arrival_date, //計劃收款日期 1.第一筆都是簽約日
"BillNo" => "$contractno",
"RowCode" => $key + 1,
"RowNo" => $key + 1,
"UnWriteOffOAmount" => $detail['amount'] //未核銷金額
];
$salOrderStagePay_row[] = $rows;
}
// 設備
$row1 = [
"TaxId" => "ST005",
"RequirementDate" => $signing_date, //出貨日期
"ConsignmentDate" => $signing_date, //發貨日期
"BillNo" => "$contractno", //合約號
"RowCode" => $count, //全部筆數排列
"ItemType" => 1,
"MaterialId" => "A40001", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => $equipment_total, //交易價格
"CU_MaterialId" => $facility_no
];
$count++;
// 安裝
$row2 = [
"TaxId" => "ST005",
"RequirementDate" => $signing_date, //出貨日期
"ConsignmentDate" => $signing_date, //發貨日期
"BillNo" => "$contractno", //合約號
"RowCode" => $count, //全部筆數排列
"ItemType" => 1,
"MaterialId" => "A40008", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => $install_total, //交易價格
"CU_MaterialId" => $facility_no
];
$count++;
// 產品(作番)
$row3 = [
"TaxId" => "ST005",
"RequirementDate" => $signing_date, //出貨日期
"ConsignmentDate" => $signing_date, //發貨日期
"BillNo" => "$contractno", //合約號
"RowCode" => $count, //全部筆數排列
"ItemType" => 0,
"MaterialId" => "$facility_no", //1.設備(A40001)、2.安裝(A4008)、3.作番號(作番)
"SUnitId" => "SET",
"SQuantity" => 1, //交易數量
"SPrice" => 0, //交易價格
"CU_MaterialId" => $facility_no // 歸屬作番號
];
$count++;
$SubOrder_row[] = $row1;
$SubOrder_row[] = $row2;
$SubOrder_row[] = $row3;
$count++;
}
$MainSalesOrder_row = [
"BillNo" => "$contractno", //合約單號
"BillDate" => $signing_date, //簽約日期
"TypeId" => "SO", //
"FOrgId" => "1000",
"OrgId" => "1000",
"ModeId" => "M", // T汰改 M新梯
"BizPartnerId" => "$contractno", //客戶代碼
"CurrId" => "TWD",
"CurrOAmount" => 1,
"CurrLAmount" => 1,
"PersonId" => "$salesman", //業務人員
"DueToId" => "$contractno", //債務方
"TradeConditionId" => "",
"TaxId" => "ST005",
"CreditorCompId" => "1001",
"CreditorOrgId" => "1000",
"CreatorId" => "$user_id"
// "CompId" => "1001",
// "CreditorCurrOAmount" => 1,
// "CreditorCurrLAmount" => 1
];
$MainSalesOrder = [
"name" => "MainSalesOrder",
'rows' => [$MainSalesOrder_row]
];
$SubOrder = [
"name" => "SubOrder",
"rows" => $SubOrder_row
];
$salOrderStagePay = [
"name" => "salOrderStagePay",
"rows" => $salOrderStagePay_row
];
$API_body = [];
$API_body[] = $MainSalesOrder;
$API_body[] = $SubOrder;
$API_body[] = $salOrderStagePay;
echo "<pre>";
print_r(json_encode($API_body, JSON_UNESCAPED_UNICODE));
echo "</pre>";
// $api_url = "https://erp.masada.com.tw:780/twWebAPI/V1/SALSALESORDER/PostERPData";
// $api_url = "http://127.0.0.1:880/twWebAPI/V1/SALSALESORDER/PostERPData";
$api_url = 'http://10.10.145.2:880/twWebAPI/V1/SALSALESORDER/PostERPData';
$result = T8salIncomeApply($API_body, $api_url);
echo "<pre>";
print_r($result);
echo "</pre>";
if (!empty($result) && ($result['Status'] == 'Fails' || $result['Status'] == 'Error')) {
echo $result['ErrorMsg'];
}
} else {
echo '資料已新增過,請洽資訊人員';
// exit();
}
$connT8->commit();
// } catch (PDOException $e) {
// $connT8->rollback();
// header("HTTP/1.1 500 Internal Server Error");
// die('Error!:' . $e->getMessage());
// }
}
function BounsCount($data, $conn, $facilityno)
{
try {
require_once("../../bonus/elevator_new/elevator_new_deal_bonus.php");
$dailyNecessities = [
'MAE100' => 'passenger', //小機房
'MAM200' => 'passenger', //無機房
'MAH100' => 'dumbwaiter', //小電梯
'MAQ100' => 'positive_drive', //強趨梯
'MAF100' => 'cargo', //貨梯
'MAP100' => 'flatbase', // 平台踢
];
$contractType = [
'1' => 'strategy_customer',
'2' => 'general_customer'
];
$signing_date = $data['signing_date'];
$bonus_v1_0_date = '2024-01-02';
$bonus_v2_0_date = '2024-01-03';
$contract_type = $data['contract_type'];
$total = $data['price_total'];
$type = $contractType[$contract_type]; //戰略客戶 or 一般客戶
// $elevator_knockdown_price = $data['price_total']; //受價總額
$elevators = json_decode($data['elevators_detail_arr'], true);
$contract_no = $data['contractno'];
$salesman = $data['salesman'];
$manager = $data['manager'];
$contract_kind = 1;
$create_id = $data['user_id'];
$create_at = date("Y-m-d H:i:s");
$status = 1;
$result_bonus = [];
$result_bonus_arr = [];
if ($signing_date <= $bonus_v1_0_date) {
$ver = '1.0';
foreach ($elevators as $key => $elevator) {
$elevator_knockdown_price = $elevator['elevator_price']; // 單台電梯售價
$elevator_list_price = $elevator['option_other_price'] + $elevator['option_price'] + $elevator['elevator_price']; //牌價
$result_bonus = elevator_new_deal_bonus_v1_0($ver, $type, $elevator_knockdown_price, $salesman, $manager);
$facility_no = $facilityno[$key];
$bonus_json = [
'contract_type' => $type,
'total' => $elevator_list_price,
'fee_per_st' => $elevator_knockdown_price
];
if (!empty($result_bonus)) {
if ($result_bonus['result_status'] != "error") {
foreach ($result_bonus['bonus_array'] as $i => $result) {
$bonus_type = explode('-', $result['bonus_type']);
$pay_man_type = $bonus_type[0]; //發放類別
$bonus_kind = $bonus_type[1];
$amount = $result['bonus_amount']; //獎金水庫
$bonus_receiver = $result['bonus_receiver']; //發放人員
$bonus_json['payment_schedul_due'] = $result['payment_schedul_due'];
$bonus_json['payment_schedul_regulation'] = $result['payment_schedul_regulation'];
$bonus_json['bonus_kind'] = $bonus_kind;
$a = json_encode($bonus_json, JSON_UNESCAPED_UNICODE);
$sql = "INSERT INTO bonus
(bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,status,bonus_json,create_id,create_at) VALUES
($pay_man_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$bonus_receiver',$status,'$a','$create_id','$create_at')
";
$stmt = $conn->prepare($sql);
$stmt->execute();
}
$request = [
"status" => "1",
"data" => "Success"
];
return $request;
}
$request = [
"status" => "2",
"data" => "create_bonus_error"
];
return $request;
}
}
} else if ($signing_date >= $bonus_v2_0_date) {
$ver = '2.0';
foreach ($elevators as $key => $elevator) {
$option_other_price = !empty($elevator['option_other_price']) ? intval($elevator['option_other_price']) : 0;
$elevator_type = $dailyNecessities[$elevator['spec']];
$elevator_list_price = $option_other_price + $elevator['option_price'] + $elevator['elevator_price'];
$elevator_knockdown_price = $elevator['elevator_price'];
$commission_fee = $elevator['commission_fee'];
$result_bonus = elevator_new_deal_bonus_v2_0(
$ver,
$type,
$elevator_type,
$elevator_list_price,
$elevator_knockdown_price,
$salesman,
$manager
);
$facility_no = $facilityno[$key];
$bonus_json = [
'contract_type' => $type,
'total' => $elevator_list_price,
'fee_per_st' => $elevator_knockdown_price
];
if (!empty($result_bonus)) {
if ($result_bonus['result_status'] != "error") {
foreach ($result_bonus['bonus_array'] as $i => $result) {
$bonus_type = explode('-', $result['bonus_type']);
$pay_man_type = $bonus_type[0]; //發放類別
$bonus_kind = $bonus_type[1];
$amount = $result['bonus_amount']; //獎金水庫
$bonus_receiver = $result['bonus_receiver']; //發放人員
$bonus_json['payment_schedul_due'] = $result['payment_schedul_due'];
$bonus_json['payment_schedul_regulation'] = $result['payment_schedul_regulation'];
$bonus_json['bonus_kind'] = $bonus_kind;
$a = json_encode($bonus_json, JSON_UNESCAPED_UNICODE);
$sql = "INSERT INTO bonus
(bonus_type,bonus_verson,contract_no,contract_type,facility_no,amount,receiver,status,bonus_json,create_id,create_at) VALUES
($pay_man_type,'$ver','$contract_no',$contract_kind,'$facility_no',$amount,'$bonus_receiver',$status,'$a','$create_id','$create_at')
";
$stmt = $conn->prepare($sql);
$stmt->execute();
}
}
$request = [
"status" => "1",
"data" => "Success"
];
} else {
$request = [
"status" => "2",
"data" => "create_bonus_error"
];
}
}
}
return $request;
} catch (PDOException $e) {
header("HTTP/1.1 500 Internal Server Error");
die('Error!:' . $e->getMessage());
}
}
function do_wws_assign1($user_id, $form_id, $flow_code, $conn)
{

4
wms/contract/api/postRenovateContractData.php

@ -0,0 +1,4 @@
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";

150
wms/contract/api/test copy.json

@ -1,43 +1,115 @@
[
{
"apply_key": "11111111",
"register_code": "B32510261185",
"elevator_brand": "1",
"elevator_kind": "E",
"spec": "MAH100",
"weight": "450",
"speed": "45.00",
"stop": "3",
"floors": "3",
"persons": "6",
"elevator_num": "0",
"useful_years": "106",
"last_check_date": "1",
"speed_governors_check_expense": "0",
"maintain_times": "1",
"is_m1_bundle": "N",
"maintainance": "B",
"maintain_months": "12",
"maintain_period": "1",
"stand_price": "1250.00",
"contract_price": "1250.00",
"sold_price": 1250,
"commission_expense": null,
"management_expense": null,
"annual_survey_expense": "0.00",
"service_expense": 0,
"cmstatus": "Y",
"updated_at": null,
"creater": null,
"created_at": "2024-02-26 15:24:23",
"discount": 100,
"latitude": "112",
"longitude": "11",
"takecertificatedate": "112",
"opendoor": "2PCO",
"useful_date": "113-01-01",
"bonus_verson": "2.0",
"manager": "M0029",
"regular_contract_manger_id": "M0054"
"name": "MainSalesOrder",
"rows": [
{
"BillNo": "M24020076",
"BillDate": 20240306,
"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": 20240306,
"ConsignmentDate": 20240306,
"BillNo": "M24020076",
"RowCode": 1,
"ItemType": 1,
"MaterialId": "A40001",
"SUnitId": "SET",
"SQuantity": 1,
"SPrice": 910000,
"CU_MaterialId": "4MW00001"
},
{
"TaxId": "ST005",
"RequirementDate": 20240306,
"ConsignmentDate": 20240306,
"BillNo": "M24020076",
"RowCode": 2,
"ItemType": 1,
"MaterialId": "A40008",
"SUnitId": "SET",
"SQuantity": 1,
"SPrice": 390000,
"CU_MaterialId": "4MW00001"
},
{
"TaxId": "ST005",
"RequirementDate": 20240306,
"ConsignmentDate": 20240306,
"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": 20240406,
"BillNo": "M24020076",
"RowCode": 1,
"RowNo": 1,
"UnWriteOffOAmount": 260000
},
{
"PayStage": "貨抵工地",
"PlanPercentage": 0.5,
"PlanPayAmt": 650000,
"PlanPayDate": 20240306,
"BillNo": "M24020076",
"RowCode": 2,
"RowNo": 2,
"UnWriteOffOAmount": 650000
},
{
"PayStage": "試車完工",
"PlanPercentage": 0.2,
"PlanPayAmt": 260000,
"PlanPayDate": 20240306,
"BillNo": "M24020076",
"RowCode": 3,
"RowNo": 3,
"UnWriteOffOAmount": 260000
},
{
"PayStage": "交車",
"PlanPercentage": 0.1,
"PlanPayAmt": 130000,
"PlanPayDate": 20240306,
"BillNo": "M24020076",
"RowCode": 4,
"RowNo": 4,
"UnWriteOffOAmount": 130000
}
]
}
]

3
wms/contract/conn.php

@ -34,11 +34,10 @@ 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=10.10.145.2;Database=T8MASADA", "masada", "@m222222");
// $connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8MASADA", "masada", "@m222222");
$connT8 = new PDO("sqlsrv:Server=220.130.203.251;Database=T8TEST", "M0225", "IFFBU1E=");
if ($connT8) {
$connT8->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

10
wms/contract/contract-input.php

@ -119,7 +119,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<tr>
<td style="vertical-align: middle">簽約日</td>
<td>
<input class="form-control disabled_select" type="date" name="end_date" x-model="data.signing_date">
<input class="form-control disabled_select" type="date" name="end_date" x-model="data.signing_date" @change="console.log($event.target.value)">
<p class="alerttext" x-show="data.signing_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">合約開始時間</td>
@ -134,7 +134,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</td>
<td style="vertical-align: middle">契約成交價</td>
<td style="vertical-align: middle">契約成交價(月)</td>
<td>
<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>
@ -143,8 +143,8 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<tr>
<td style="vertical-align: middle">發票抬頭</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.invoice">
<!-- <p class="alerttext" x-show="data.invoice==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> -->
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.invoice" @change="console.log($event.target.value)">
<!-- <p class=" alerttext" x-show="data.invoice==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> -->
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
@ -217,7 +217,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<td style="vertical-align: middle">保養經理</td>
<td>
<select class="ui search dropdown" name="repairer_name" x-model="data.maintance_manager">
<select class="ui search dropdown" name="maintance_manager" x-model="data.maintance_manager">
<option value="">選擇保養經理</option>
<option value="M0090">M0090--顏慶豪(北北基)</option>
<option value="M0223">M0223--鄭登元(桃竹)</option>

471
wms/contract/contract-renovate-input.php

@ -0,0 +1,471 @@
<?php
include('../header.php');
require_once('./conn.php');
$accounttype = "M";
$sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype ORDER BY accountid";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(":accounttype", $accounttype);
$stmt->execute();
$persons = $stmt->fetchAll(PDO::FETCH_ASSOC);
$persons = array_map(function ($person) {
return [
'view' => $person['name'] . '-' . $person['accountid'],
'value' => $person['accountid'],
'name' => $person['name']
];
}, $persons);
?>
<link rel="stylesheet" href="./styles/style.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" />
<script src="./js/alpine.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js"></script>
<script src="./js/jquery/jquery-3.1.1.min.js"></script>
<!-- <script src="./semantic/dist/semantic.min.js"></script> -->
<div class="renovate_input" x-data="renovateInput">
<div class="form" method="post" id="form" enctype="multipart/form-data">
<input type="hidden" name="form_name" value="main_form">
<div>
<table class="table table-borderd query-table table-striped table-bordered display compact" style="width:99%; margin-left:.5%">
<thead>
<tr>
<td colspan="8">
<h3 style="text-align:center">汰改合約入力</h3>
</td>
</tr>
</thead>
<template x-if="step==1">
<tbody style="font-weight:bolder; margin:botton 20px">
<tr>
<td style="vertical-align:middle;">合約號</td>
<td colspan="6">
<input type="text" class="form-control" @keyup="nextStepKeyupFn($event)" name="contract_no" x-model="data.contract_no">
</td>
<td colspan="1" style="vertical-align:middle"></td>
</tr>
</tbody>
</template>
<template x-if="step==2">
<tbody style="font-weight:bolder; margin:botton 20px" x-show="step==2">
<tr>
<td colspan="7" style="vertical-align:middle;border-right:0px;">
<h4>業務確認項</h4>
</td>
<td class="text-right" style="border-left:0px">
<button type="button" id="btn_back" class="btn btn-default" onclick="location.reload()">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close()">關閉</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control disabled_select" type="text" name="" x-model="data.customer">
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align:middle">電梯數量</td>
<td>
<input type="text" class="form-control disabled_select" name="num" x-model="data.nums" disabled>
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="" x-model="data.vat">
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員</td>
<td style="vertical-align: middle">
<div class="ui form">
<select class="salesman" id="salesman" x-model="data.salesman">
<option value="">請選擇營業員</option>
<?php foreach ($persons as $person) : ?>
<option value="<?php echo $person['value']; ?>"><?php echo $person['view']; ?></option>
<?php endforeach ?>
</select>
</div>
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">負責人</td>
<td>
<input type="text" class="form-control disabled_select" name="" x-model="data.main_linkman">
<p class="alerttext" x-show="data.main_linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人</td>
<td>
<input class="form-control disabled_select" type="text" name="" x-model="data.linkman">
<p class="alerttext" x-show="data.linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="" x-model="data.lm_tel">
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">案件名稱</td>
<td>
<input class="form-control disabled_select" type="text" name="" x-model="data.case_name">
<p class="alerttext" x-show="data.case_name==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">合約簽訂日期</td>
<td>
<input class="form-control disabled_select" type="date" name="" x-model="data.signing_date">
<p class="alerttext" x-show="data.signing_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">客戶類型</td>
<td>
<select name="contract_type" id="contract_type" x-model="data.contract_type">
<option value="">請選擇</option>
<option value="1">戰略客戶</option>
<option value="2">一般客戶</option>
</select>
</td>
<td style="vertical-align: middle">附件上傳</td>
<td colspan="3">
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
</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>
<!-- 客戶款別分別如何分期 -->
<template x-if="step==4">
<tbody style="font-weight:bolder; margin:botton 20px" x-show="step==4">
<div>
<tr>
<td colspan='8' style="vertical-align:middle ">款別分期</td>
</tr>
<tr>
<!-- <td colspan='1'>付款辦法</td> -->
<td colspan='1'>款別</td>
<td colspan='1'>比例%</td>
<td colspan='1'>金額</td>
<td colspan='1'>繳款方式(月)</td>
<td colspan="4"></td>
</tr>
<tr>
<!-- <td rowspan="3">材料</td> -->
<td>1、訂金</td>
<td>
<input type="text" x-model='data.scale[0]' disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[0]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[0] @change="totalFn()">
<template x-for="pay in data.payarr" :key="pay">
<option x-text="pay" :disabled="data.amount[0] == 0"></option>
</template> -->
<input type="text" x-model="data.paykind[0]" :disabled="data.amount[0] == 0" @input="totalFn()">
</select>
</td>
<td colspan="4"></td>
</tr>
<tr>
<td>2、二次款</td>
<td>
<input type="text" x-model='data.scale[1]' disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[1]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[1] @change="totalFn()">
<template x-for="pay in data.payarr" :key="pay">
<option x-text="pay" :disabled="data.amount[1] == 0"></option>
</template>
</select> -->
<input type="text" x-model="data.paykind[1]" :disabled="data.amount[1] == 0" @input="totalFn()">
</td>
<td colspan="4"></td>
</tr>
<tr>
<td>3、貨到工地款</td>
<td>
<input type="text" x-model='data.scale[2]' disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[2]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[2] @change="totalFn()">
<template x-for="pay in data.payarr" :key="pay">
<option x-text="pay" :disabled="data.amount[2] == 0"></option>
</template>
</select> -->
<input type="text" x-model="data.paykind[2]" :disabled="data.amount[2] == 0" @input="totalFn()">
</td>
<td colspan="4"></td>
</tr>
<tr>
<!-- <td rowspan="3">安裝</td> -->
<td>5、安裝完畢款</td>
<td>
<input type="text" x-model='data.scale[4]' disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[4]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[4] @change="totalFn()" :disabled="data.amount[4] == 0">
<template x-for="pay in data.payarr" :key="pay">
<option x-text="pay"></option>
</template>
</select> -->
<input type="text" x-model="data.paykind[4]" :disabled="data.amount[4] == 0" @input="totalFn()">
</td>
<td colspan="4"></td>
</tr>
<tr>
<td>6、驗收款</td>
<td>
<input type="text" x-model="data.scale[5]" disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[5]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[5] @change="totalFn()" :disabled="data.amount[5] == 0">
<template x-for="pay in data.payarr" :key="pay">
<option x-text="pay"></option>
</template>
</select> -->
<input type="text" x-model="data.paykind[5]" :disabled="data.amount[5] == 0" @input="totalFn()">
</td>
<td colspan="4"></td>
</tr>
<tr>
<td>7、其他</td>
<td>
<input type="text" x-model='data.scale[6]' disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.amount[6]" disabled>
</td>
<td>
<!-- <select x-model=data.paykind[6] @change=" totalFn()" :disabled="data.amount[6] == 0">
<template x-for="pay in data.payarr" :key="pay">
<option :value="pay" x-text="pay"></option>
</template>
</select> -->
<input type="text" x-model="data.paykind[6]" :disabled="data.amount[6] == 0" x-on:input="console.log(data.paykind[6])">
</td>
<td colspan="4"></td>
</tr>
<tr>
<td colspan="1">合計</td>
<td>
<input type="text" x-model="data.total_scale" disabled>
</td>
<td colspan="1">
<input type="text" x-model="data.total_amount" disabled>
</td>
<td>
<input type="text" x-model="data.total_month" disabled>
</td>
<td colspan="4"></td>
</tr>
</div>
</tbody>
</template>
<template x-if="step == 3">
<template x-for="(elevator, idx) in data.elevators_detail_arr" :key="idx">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==3">
<tr>
<td colspan=8>
<p x-text="'電梯' + Number(idx+1)"></p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">電梯型號</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.spec" disabled>
</td>
<td style="vertical-align: middle">開門方式</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.item_op" disabled>
</td>
<td style="vertical-align: middle">電梯載重</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.item_weight" disabled>
</td>
<td style="vertical-align: middle">電梯人乘</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.person" disabled>
</td>
</tr>
<tr>
<td style="vertical-align: middle">電梯速度</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.speed" disabled>
</td>
<td style="vertical-align: middle">電梯樓停</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.floor" disabled>
</td>
<td style="vertical-align: middle">電梯樓層</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.floor">
</td>
<td style="vertical-align: middle">合約交期(到工地)</td>
<td>
<input class="form-control disabled_select" type="date" x-model="elevator.contract_arrival_date">
</td>
</tr>
<tr>
<td style="vertical-align: middle">QC和官檢</td>
<td>
<select class="" id="qc" x-model="elevator.qc">
<option value="">請選擇QC或官檢</option>
<option value="Q">只需QC</option>
<option value="O">只需官檢</option>
<option value="QO">QC和官檢</option>
</select>
<p class="alerttext" x-show="data.qc==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">工地負責人</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.manage">
</td>
<td style="vertical-align: middle">工務部門負責人</td>
<td style="vertical-align: middle">
<select class="form-control " id="warehouseid" name="warehouseid" x-model="elevator.warehouseid">
<option value="">未選擇</option>
<optgroup label="北區">
<option value="M0041">張潘榮(桃竹以北)</option>
<option value="M0150">羅盛騰(桃竹)</option>
<option value="M0040">吳宗紘</option>
</optgroup>
<optgroup label="中區">
<option value="M0198">廖堉勝</option>
<option value="M0158">劉子睿(新梯)</option>
<option value="M0161">鄭永典(汰改)</option>
<option value="M0159">孫仲凱</option>
<option value="M0202">徐錦潤</option>
<option value="M0113">林瑋隆</option>
</optgroup>
<optgroup label="南區">
<option value="M0078">許益連</option>
<option value="M0102">鄭存邑(高屏、台東)</option>
<option value="M0187">田祖豪(台南、嘉義)</option>
<option value="M0077">鍾玉龍</option>
</optgroup>
<optgroup label="宜蘭">
<option value="M0087">高培軒</option>
</optgroup>
</select>
</td>
<td style="vertical-align: middle">汰改種類</td>
<td style="vertical-align: middle">
<!-- <select multiple x-model="elevator.selectedOptions">
<template x-for="option in data.options">
<option x-text="option" :value="option"></option>
</template>
</select>
<p>選擇的選項: <span x-text="elevator.selectedOptions.join(', ')"></span></p> -->
<select x-model="elevator.selectedItems" :id="'renovate_type'+idx" name="renovate_type[]" x-on:change="cons()">
<option value="M1">M1</option>
<option value="M2">M2</option>
<option value="M3">M3</option>
<option value="M4">M4</option>
<option value="MA">MA</option>
</select>
</td>
</tr>
<tr>
<td style="vertical-align: middle">現場地址</td>
<td colspan="3">
<input class="form-control disabled_select" type="text" x-model="data.address">
</td>
<td style="vertical-align: middle">經度</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.latitude">
</td>
<td style="vertical-align: middle">緯度</td>
<td>
<input class="form-control disabled_select" type="text" x-model="elevator.longitude">
</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</template>
</template>
</table>
<button x-show="step==4" @click="save()" type="button" class="btn btn-primary btn-lg pull-right savebutton" :disabled="isLoading">
<template x-if="!isLoading">
<span>存檔</span>
</template>
<template x-if="isLoading">
<span class="loader"></span>
</template>
</button>
<button x-show="step<=3" @click="nextStepFn()" class="btn btn-primary btn-lg pull-right savebutton" :disabled="isLoading">
<template x-if="!isLoading">
<span>下一步</span>
</template>
<template x-if="isLoading">
<span class="loader"></span>
</template>
</button>
<button x-show="step>1" @click="preStepFn()" class="btn btn-primary btn-lg pull-right savebutton" :disabled="isLoading">
<template x-if="!isLoading">
<span>上一步</span>
</template>
<template x-if="isLoading">
<span class="loaders"></span>
</template>
</button>
</div>
</div>
</div>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script type="text/javascript">
const user_id = '<?= $user_id ?>';
</script>

214
wms/contract/js/alpine.js

@ -808,7 +808,11 @@ const contractDownload = () => {
const contractNewInput = () => {
return {
init() { },
init() {
// nextTick(() => {
// $('#renovate_type').select2();
// });
},
data: {
contractno: 'M24020076',
customer: '',
@ -828,7 +832,7 @@ const contractNewInput = () => {
pay_arr: [], //電梯付款種類
nums: 0, //電梯數量
area_no: 'T',
contract_arrival_date: ''
contract_arrival_date: '',
},
fail_arr: [],
step: 1,
@ -841,7 +845,7 @@ const contractNewInput = () => {
this.getContractDate();
} else if (this.step == 2) {
if (this.data.nums <= 0) return alert('請填寫電梯數量!')
checkInput();
// checkInput();
this.getElevatorsData();
} else if (this.step == 3) {
this.getElevatorsData();
@ -1039,7 +1043,8 @@ const contractInput = () => {
contract_type: 'new',
signing_date: '',
token: token,
maintance_manager: ''
maintance_manager: '',
// bonus_verson: 2.1,
// manager: '',
// regular_contract_manger_id: '',
@ -1227,7 +1232,6 @@ const contractInput = () => {
form.append('phone', this.data.phone);
form.append('email', this.data.email);
form.append('mworker', this.data.mworker);
// form.append('mcycle', this.data.mcycle);
form.append('salesman', this.data.salesman);
form.append('contract_begin_date', this.data.contract_begin_date);
form.append('contract_end_date', this.data.contract_end_date);
@ -1248,6 +1252,8 @@ const contractInput = () => {
form.append('contract_type', this.data.contract_type);
form.append('signing_date', this.data.signing_date);
form.append('maintance_manager', this.data.maintance_manager);
form.append('invoice', this.data.invoice);
form.append('invoice_address', this.data.invoice_address);
// 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) {
@ -1604,4 +1610,202 @@ const contractNewApply = () => {
}
}
}
const renovateInput = () => {
return {
// init() {
// this.initSelect2();
// },
// initSelect2() {
// console.log(123);
// $('#renovate_type').select2();
// },
data: {
contract_no: 'T24030025',
customer: '',
salesman: '',
main_linkman: '', //負責人
linkman: '',
lm_tel: '',
vat: '',
case_name: '',
address: '',
area_no: '',
manager: '',
price_total: '', //合約總價
files: [],
contract_type: '1',
signing_date: '',
elevators: [], //電梯總類
elevators_detail_arr: [], // 電梯台數 Array
payarr: ['', 1, 2, 6, 12],
paykind: [0, 0, 0, 0, 0, 0, 0], //電梯付款種類的分期方式
scale: [0, 0, 0, 0, 0, 0, 0],
amount: [0, 0, 0, 0, 0, 0, 0],
pay_arr: [], // 電梯付款種類
total_month: 0,
total_scale: 0,
total_amount: 0,
// disable: false
// options: ['Option 1', 'Option 2', 'Option 3']
// paykindTotal: this.total(),
},
step: 1,
isLoading: false,
nextStepFn() {
if (this.step == 1) {
if (this.data.contract_no == '') return alert('請輸入合約號');
this.isLoading = true;
this.getContractData();
} else if (this.step == 2) {
if (this.data.nums <= 0) return alert('請填寫電梯數量!')
this.getElevatorsData();
} else if (this.step == 3) {
this.totalFn();
this.checkDisableStatus();
this.step = 4;
}
// this.step = 3;
},
getContractData() {
axios.get('./api/getContractData.php?contracttype=t&contractno=' + this.data.contract_no).then(res => {
console.log(res.data);
if (!res.data) {
this.step = 2;
this.isLoading = false;
return;
}
this.data.pay_arr = res.data.pay_arr;
for (let i = 0; i < this.data.pay_arr['elevotor_pay_detail'].length; i++) {
let kind = this.data.pay_arr['elevotor_pay_detail'][i].pay_kind - 1;
let amount = this.data.pay_arr['elevotor_pay_detail'][i].pay_amount;
let scale = this.data.pay_arr['elevotor_pay_detail'][i].pay_scale;
console.log(kind);
this.data.amount[kind] = amount;
this.data.scale[kind] = scale;
}
this.data.customer = res.data.company
this.data.main_linkman = res.data.manager
this.data.vat = res.data.uscc
this.data.case_name = res.data.case_name
this.data.linkman = res.data.linkman
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.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.contract_arrival_date = res.data.facilitok_date;
this.step = 2;
this.isLoading = false;
}).catch(err => {
console.log(err);
this.isLoading = false;
})
},
getElevatorsData() {
if (this.step == 2) {
for (let i = 0; i < this.data.nums; i++) {
// this.initSelect2(i);
// console.log(this.data.elevators_detail_arr[i]);
this.data.elevators_detail_arr[i].warehouseid = ''; // 公務部門負責人
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 = 'QO'; // QC和官檢
this.data.elevators_detail_arr[i].contract_arrival_date = this.data.contract_arrival_date; //合約交期(到工地)
this.data.elevators_detail_arr[i].selectedItems = '';
// 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;
}
},
cons() {
console.log(this.data.elevators_detail_arr);
},
// 計算總共分期月數
totalFn() {
let total_month = 0
for (let i = 0; i < this.data.paykind.length; i++) {
if (this.data.paykind[i] != '0') {
total_month += Number(this.data.paykind[i]);
}
}
this.data.total_month = total_month;
let total_scale = 0
for (let i = 0; i < this.data.scale.length; i++) {
if (this.data.scale[i] != '0') {
total_scale += Number(this.data.scale[i]);
}
}
let total_amount = 0
for (let i = 0; i < this.data.scale.length; i++) {
if (this.data.scale[i] != '0') {
total_amount += Number(this.data.amount[i]);
}
}
// console.log(123);
this.data.total_month = total_month;
this.data.total_scale = total_scale;
this.data.total_amount = total_amount;
},
checkDisableStatus() {
for (let i = 0; i < this.data.amount.length; i++) {
if (this.data.amount[i] == 0) {
this.data.disable = true;
}
}
},
// initSelect2(idx) {
// this.data.elevators_detail_arr[idx].selectedItems = $('#renovate_type' + idx).select2().val();
// },
nextStepKeyupFn(e) {
if (e.keyCode != 13) return
if (this.step == 1) {
this.getContractData();
// console.log(this.step);
}
},
preStepFn() {
this.step -= 1;
console.log(this.step);
},
save() {
console.log(this.data);
const form = new FormData();
form.append('contractno', this.data.contract_no);
form.append('customer', this.data.customer);
form.append('manager', this.data.main_linkman);
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('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('scale', JSON.stringify(this.data.scale));
form.append('contracttype', 'm');
form.append('user_id', user_id);
axios.post('./api/postRenovateContractData.php', form).then(res => {
})
}
}
}
Loading…
Cancel
Save