diff --git a/.gitignore b/.gitignore index 44e45c2f..39c6cbea 100644 --- a/.gitignore +++ b/.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 diff --git a/wms/T8_Authorization_curl.php b/wms/T8_Authorization_curl.php new file mode 100644 index 00000000..09046bcf --- /dev/null +++ b/wms/T8_Authorization_curl.php @@ -0,0 +1,50 @@ +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; ?> +

應收帳款(保養)

@@ -347,17 +368,17 @@ include "./footer.php"; 合約號 - 序號 - 作番號 - 部門 + 序號 + 作番號 + 部門 契約員 - 客戶名稱 + 客戶名稱 應收日期 是否應收 款別金額 - 是否收齊 + 是否收齊 催收次數 @@ -372,13 +393,13 @@ include "./footer.php"; " . $row['PersonName']; ?> " . $row['BizPartnerName']; ?> - + - - + + @@ -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&"; - // 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 = "汰改應收帳款" + "" + ".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 = ; + var filename = "保養催收帳款" + "" + ".xlsx"; + var xhr = new XMLHttpRequest(); + var url = window.location.origin + "/wms/account-receivable-excel.php?type=maintainance&"; + 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 + })); + } \ No newline at end of file diff --git a/wms/account-receivable-new-index.php b/wms/account-receivable-new-index.php index 712c8647..b39ac4ab 100644 --- a/wms/account-receivable-new-index.php +++ b/wms/account-receivable-new-index.php @@ -111,7 +111,7 @@ if (!is_null($end_date)) { $end_date = (int)date('Ymd', strtotime($end_date)); $sql_all_contract .= " AND MainAll.BillDate <= $end_date "; } -if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) { +if ((in_array($user_id, array('M0060', 'M0175','M0168'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) { } else { $sql_all_contract .= " AND (MainAll.PersonId = '$user_id'"; if (count($follower) > 0) { @@ -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']; } } @@ -846,11 +842,17 @@ foreach ($final_paystage as $key => $value) { } } -$average_A40001 = $sum_A40001 / $sum_facility; +if($sum_facility>0){ + $average_A40001 = $sum_A40001 / $sum_facility; $average_A40008 = $sum_A40008 / $sum_facility; $average_facility_budget = $sum_total_budget / $sum_facility; -$average_contract_budget = $sum_total_budget / $sum_contract; -$average_contract_facility = $sum_facility / $sum_contract; +} +if($sum_contract>0){ + $average_contract_budget = $sum_total_budget / $sum_contract; + $average_contract_facility = $sum_facility / $sum_contract; +} + + // excel 結果 @@ -914,34 +916,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]; } } @@ -981,7 +983,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][34] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][33]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][10] = $excel_contract_array[$key][33]; - $excel_contract_all_array[$key][11] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][11] = $excel_contract_array[$key][34]; $total_second_collect_budget += $excel_contract_all_array[$key][10]; if ($isBoga == 1) { $excel_contract_boga_array[$key][10] = $excel_contract_all_array[$key][10]; @@ -1006,7 +1008,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][41] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][40]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][12] = $excel_contract_array[$key][40]; - $excel_contract_all_array[$key][13] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][13] = $excel_contract_array[$key][41]; $total_arrival_collect_budget += $excel_contract_all_array[$key][12]; if ($isBoga == 1) { $excel_contract_boga_array[$key][12] = $excel_contract_all_array[$key][12]; @@ -1047,7 +1049,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][55] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][54]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][16] = $excel_contract_array[$key][54]; - $excel_contract_all_array[$key][17] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][17] = $excel_contract_array[$key][55]; $total_tryrun_collect_budget += $excel_contract_all_array[$key][16]; if ($isBoga == 1) { $excel_contract_boga_array[$key][16] = $excel_contract_all_array[$key][16]; @@ -1070,7 +1072,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][62] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][61]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][18] = $excel_contract_array[$key][61]; - $excel_contract_all_array[$key][19] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][19] = $excel_contract_array[$key][62]; $total_check_collect_budget += $excel_contract_all_array[$key][18]; $excel_contract_noboga_array[$key][18] = $excel_contract_all_array[$key][18]; @@ -1088,7 +1090,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][69] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][68]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][20] = $excel_contract_array[$key][68]; - $excel_contract_all_array[$key][21] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][21] = $excel_contract_array[$key][69]; $total_delivery_collect_budget += $excel_contract_all_array[$key][20]; $excel_contract_noboga_array[$key][20] = $excel_contract_all_array[$key][20]; $excel_contract_noboga_array[$key][21] = $excel_contract_all_array[$key][21]; @@ -1105,7 +1107,7 @@ foreach ($arrayData as $key => &$value) { $excel_contract_array[$key][76] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month']) && abs($excel_contract_array[$key][75]) > 10) ? round($payvalue['collect_month']) : 0; if (isset($excel_contract_all_array[$key])) { $excel_contract_all_array[$key][22] = $excel_contract_array[$key][75]; - $excel_contract_all_array[$key][23] = (isset($payvalue['collect_month']) && !is_null($payvalue['collect_month'])) ? round($payvalue['collect_month']) : 0; + $excel_contract_all_array[$key][23] = $excel_contract_array[$key][76]; $total_final_collect_budget += $excel_contract_all_array[$key][22]; if ($isBoga == 1) { $excel_contract_boga_array[$key][22] = $excel_contract_all_array[$key][22]; @@ -1138,9 +1140,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 "
---------------------------------------------------------
"; @@ -1342,7 +1344,7 @@ $testtotal = 0;
- +
@@ -1362,9 +1364,9 @@ $testtotal = 0; 合約催收次數 - + ≤ 催收次數 ≤ - + @@ -1416,7 +1418,10 @@ $testtotal = 0; - +
+ + +
@@ -1603,6 +1608,20 @@ include "./footer.php"; + + +
+ + + + + + + +
\ No newline at end of file diff --git a/wms/bonus/elevator_new/elevator_new_deal_bonus.php b/wms/bonus/elevator_new/elevator_new_deal_bonus.php index 7138e787..fdcf8764 100644 --- a/wms/bonus/elevator_new/elevator_new_deal_bonus.php +++ b/wms/bonus/elevator_new/elevator_new_deal_bonus.php @@ -1,112 +1,165 @@ = 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", #獎金名稱 diff --git a/wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0_1.php b/wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0_1.php index c639fe48..77753530 100644 --- a/wms/bonus/elevator_new/elevator_new_deal_bonus_v1_0_1.php +++ b/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 ""; 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% diff --git a/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_1.php b/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_1.php index a63b72a8..3aadeae7 100644 --- a/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_1.php +++ b/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 "
";
+		// print_r($elevator_pay_kind);
+		// echo "
"; + 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", #獎金名稱 diff --git a/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php b/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php index 600d4071..ba98e25f 100644 --- a/wms/bonus/elevator_new/elevator_new_deal_bonus_v2_0_examination.php +++ b/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 "
";
+	print_r($result);
+	echo "
"; $customer = [ 'strategy_customer' => '戰略客戶', 'general_customer' => '一般客戶' diff --git a/wms/chengyanUI/select3.css b/wms/chengyanUI/select3.css new file mode 100644 index 00000000..fa4dd032 --- /dev/null +++ b/wms/chengyanUI/select3.css @@ -0,0 +1,106 @@ +body { + background-color: #aaa; + padding: 150px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box !important; +} + +.select3 { + position: relative; +} +.select3 > .input { + width: 250px; + padding: 12px 15px; + border-radius: 10px; + background-color: #fff; + font-size: 13px; + cursor: pointer; + position: relative; +} +.select3 > .input > i { + position: absolute; + top: 50%; + right: 8px; + transform: translateY(-50%); + font-size: 12px; +} +.select3 > .select { + display: none; + position: absolute; + top: 44px; + left: 0; + width: 250px; + padding: 16px 10px; + background-color: #fff; + border-radius: 10px; + box-sizing: border-box !important; + overflow: hidden; + animation: fadein 0.085s linear; +} +.select3 > .select > input[type=text] { + outline: none; + border: 1px #999 solid; + width: 100%; + border-radius: 4px; + height: 31px; + padding: 12px; + margin-bottom: 3px; +} +.select3 > .select > .options { + overflow-y: scroll; + max-height: 205px; + height: auto; +} +.select3 > .select > .options::-webkit-scrollbar { + width: 7px; +} +.select3 > .select > .options::-webkit-scrollbar-track { + background-color: transparent; + background-size: 10px 10px; +} +.select3 > .select > .options::-webkit-scrollbar-thumb { + background: #aaa; + border-radius: 5px; +} +.select3 > .select > .options > label { + width: 100%; + display: block; + padding: 10px; + cursor: pointer; + border-bottom: 1px #ccc solid; + transition: 0.2s; +} +.select3 > .select > .options > label:hover { + transform: scale(1.05); +} +.select3 > .select > .options > label.check { + background-color: #5BC0DE; + color: #fff; + animation: check 0.1s linear; +} + +@keyframes fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes check { + 0% { + transform: translateX(0px); + background-color: rgba(91, 192, 222, 0); + } + 0% { + transform: translateX(180px); + } + 100% { + transform: translateX(0px); + background-color: rgb(91, 192, 222); + } +}/*# sourceMappingURL=select3.css.map */ \ No newline at end of file diff --git a/wms/chengyanUI/select3.css.map b/wms/chengyanUI/select3.css.map new file mode 100644 index 00000000..a49de8d4 --- /dev/null +++ b/wms/chengyanUI/select3.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["select3.scss","select3.css"],"names":[],"mappings":"AAAA;EACI,sBAAA;EACA,cAAA;ACCJ;;ADCA;EACI,SAAA;EACA,UAAA;EACA,iCAAA;ACEJ;;ADAA;EACI,kBAAA;ACGJ;ADFI;EACI,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EAEA,eAAA;EACA,eAAA;EACA,kBAAA;ACGR;ADFQ;EACI,kBAAA;EACA,QAAA;EACA,UAAA;EACA,2BAAA;EACA,eAAA;ACIZ;ADDI;EACI,aAAA;EACA,kBAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iCAAA;EACA,gBAAA;EACA,+BAAA;ACGR;ADFQ;EACI,aAAA;EACA,sBAAA;EACA,WAAA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACC,kBAAA;ACIb;ADDQ;EACI,kBAAA;EACA,iBAAA;EACA,YAAA;ACGZ;ADFY;EACI,UAAA;ACIhB;ADFY;EACI,6BAAA;EACA,0BAAA;ACIhB;ADFY;EACI,gBAAA;EACA,kBAAA;ACIhB;ADAY;EACI,WAAA;EACA,cAAA;EACA,aAAA;EACA,eAAA;EACA,6BAAA;EACA,gBAAA;ACEhB;ADDgB;EACI,sBAAA;ACGpB;ADDgB;EACI,yBAAA;EACA,WAAA;EACA,4BAAA;ACGpB;;ADKA;EACI;IACI,UAAA;ECFN;EDIE;IACI,UAAA;ECFN;AACF;ADKA;EACI;IACI,0BAAA;IACA,uCAAA;ECHN;EDKE;IACI,4BAAA;ECHN;EDKE;IACI,0BAAA;IACA,mCAAA;ECHN;AACF","file":"select3.css"} \ No newline at end of file diff --git a/wms/chengyanUI/select3.php b/wms/chengyanUI/select3.php new file mode 100644 index 00000000..e1be0a39 --- /dev/null +++ b/wms/chengyanUI/select3.php @@ -0,0 +1,88 @@ + + + +
+
+ 請選擇 + +
+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/wms/chengyanUI/select3.scss b/wms/chengyanUI/select3.scss new file mode 100644 index 00000000..d4edf46b --- /dev/null +++ b/wms/chengyanUI/select3.scss @@ -0,0 +1,110 @@ +body{ + background-color: #aaa; + padding: 150px; +} +*{ + margin:0; + padding: 0; + box-sizing: border-box !important; +} +.select3{ + position: relative; + >.input { + width: 250px; + padding: 12px 15px; + border-radius: 10px; + background-color: #fff; + + font-size: 13px; + cursor: pointer; + position: relative; + >i{ + position: absolute; + top: 50%; + right:8px; + transform: translateY(-50%); + font-size: 12px; + } + } + >.select{ + display: none; + position: absolute; + top: 44px;; + left:0; + width:250px; + padding: 16px 10px; + background-color: #fff; + border-radius: 10px; + box-sizing: border-box !important; + overflow: hidden; + animation: fadein .085s linear; + >input[type='text']{ + outline: none; + border:1px #999 solid; + width: 100%; + border-radius: 4px; + height: 31px; + padding: 12px ; + margin-bottom: 3px; + + } + >.options{ + overflow-y: scroll; + max-height: 205px; + height:auto; + &::-webkit-scrollbar { + width: 7px; + } + &::-webkit-scrollbar-track { + background-color: transparent; + background-size: 10px 10px; + } + &::-webkit-scrollbar-thumb { + background: #aaa; + border-radius: 5px; + } + + + >label{ + width:100%; + display: block; + padding: 10px; + cursor: pointer; + border-bottom: 1px #ccc solid; + transition: .2s; + &:hover{ + transform: scale(1.05); + } + &.check{ + background-color:#5BC0DE; + color:#fff; + animation: check .1s linear; + + } + } + } + + } +} +@keyframes fadein { + 0%{ + opacity: 0; + } + 100%{ + opacity: 1; + } +} + +@keyframes check { + 0%{ + transform: translateX(0px); + background-color:rgba(91, 192, 222,0); + } + 0%{ + transform: translateX(180px); + } + 100%{ + transform: translateX(0px); + background-color:rgba(91, 192, 222,1); + } +} \ No newline at end of file diff --git a/wms/cont/api/getElevatorPrice.php b/wms/cont/api/getElevatorPrice.php index cd3be6b1..b8020fee 100644 --- a/wms/cont/api/getElevatorPrice.php +++ b/wms/cont/api/getElevatorPrice.php @@ -1,42 +1,52 @@ "A", + "MAF100" => "B", + "MAM200" => "D", + "MAH100" => "E", + ""=>"" + ]; + // $elevator_type = match($spec){ + // "MAE100" => "A", + // "MAF100" => "B", + // "MAM200" => "D", + // "MAH100" => "E", + // }; + $elevator_type = $specArr[$spec]; + $sql_str = "SELECT * FROM maintain_standard_option + WHERE elevator_type=:elevator_type AND min_speed<=:speed AND max_speed>=:speed AND min_persons <= :person AND max_persons >= :person AND is_m1_bundle=:m1 + ORDER bY id DESC"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':elevator_type', $elevator_type); + $stmt->bindParam(':person', $person); + $stmt->bindParam(':speed', $speed); + $stmt->bindParam(':m1', $m1); + $stmt->execute(); + $result = $stmt->fetch(PDO::FETCH_ASSOC); + if(!$result){ + echo 0; + exit; + } + $differ = $stop > $result['max_floors'] ? $result['max_floors'] - $result['min_floors'] : ($stop - $result['min_floors']); + $price = $result['base_price'] + $differ * $result['floors_price'] +$result['m1_bundle_fee']; + if($cycle == 2){ + $price += $price * $result['maintenance_fee_coefficient']; + } + if($method == "A"){ + $price += $result['all_inclusive_fee']; + } -$spec = $_GET['spec'] ?? ''; -$person = $_GET['person'] ?? ''; -$stop = $_GET['stop'] ?? ''; -$weight = $_GET['weight'] ?? ''; -$speed = $_GET['speed'] ?? ''; -$m1 = $_GET['m1'] ?? ''; -$method = $_GET['method'] ?? ''; -$cycle = $_GET['cycle'] ?? ''; -$elevator_type = match($spec){ - "MAE100" => "A", - "MAF100" => "B", - "MAM200" => "D", - "MAH100" => "E", -}; -$sql_str = "SELECT * FROM maintain_standard_option -WHERE elevator_type=:elevator_type AND min_speed<=:speed AND max_speed>=:speed AND min_persons <= :person AND max_persons >= :person AND is_m1_bundle=:m1 -ORDER bY id DESC"; -$stmt = $conn->prepare($sql_str); -$stmt->bindParam(':elevator_type', $elevator_type); -$stmt->bindParam(':person', $person); -$stmt->bindParam(':speed', $speed); -$stmt->bindParam(':m1', $m1); -$stmt->execute(); -$result = $stmt->fetch(PDO::FETCH_ASSOC); -if(!$result){ - echo 0; - exit; -} -$differ = $stop > $result['max_floors'] ? $result['max_floors'] - $result['min_floors'] : ($stop - $result['min_floors']); -$price = $result['base_price'] + $differ * $result['floors_price'] +$result['m1_bundle_fee']; -if($cycle == 2){ - $price += $price * $result['maintenance_fee_coefficient']; -} -if($method == "A"){ - $price += $result['all_inclusive_fee']; -} - -echo $price; \ No newline at end of file + echo $price; +}catch(PDOException $e){ + echo $e->getMessage(); +} \ No newline at end of file diff --git a/wms/cont/api/maintaenance_contract_bonus.php b/wms/cont/api/maintaenance_contract_bonus.php new file mode 100644 index 00000000..e54fe820 --- /dev/null +++ b/wms/cont/api/maintaenance_contract_bonus.php @@ -0,0 +1,761 @@ += 3001 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.7; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.8; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.9; + break; + }; + #地區經理經理獎金($region_manager_bonus) + $region_manager_bonus = 170; + #專任契約經理獎金($regular_contract_manger_bonus) + if (($regular_contract_manger_id) != '') { + $regular_contract_manger_bonus = 100; + } + break; + + case "free_to_charge": + switch ($fee_per_st) { + case ($fee_per_st <= 3000): + $sales_bonus = ($fee_per_st) * 0.3; + break; + case ($fee_per_st >= 3001 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.35; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.4; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.5; + break; + }; + #地區經理經理獎金($region_manager_bonus) + $region_manager_bonus = 100; + #專任契約經理獎金($regular_contract_manger_bonus) + if (($regular_contract_manger_id) != '') { + $regular_contract_manger_bonus = 100; + } + break; + + case "renew_priceissue": + switch ($fee_per_st) { + case ($fee_per_st <= 3000): + $sales_bonus = ($fee_per_st) * 0.25; + break; + case ($fee_per_st >= 3001 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.3; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.35; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.4; + break; + }; + #地區經理經理獎金($region_manager_bonus) + $region_manager_bonus = 100; + #專任契約經理獎金($regular_contract_manger_bonus) + if (($regular_contract_manger_id) != '') { + $regular_contract_manger_bonus = 100; + } + break; + }; + + #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) + switch ($discount) { + case ($discount < 0.6): + $sales_bonus = $sales_bonus * 0.7; + break; + case ($discount >= 0.6 and $discount < 0.8): + $sales_bonus = $sales_bonus * 0.8; + break; + case ($discount >= 0.8): + $sales_bonus = $sales_bonus * 1.0; + break; + }; + + #簽約年數($contract_years):1年(1),超過1年(above) + + switch ($contract_years) { + case $contract_years == "one": + #契約員獎金 + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($sales_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #地區經理經理獎金 + array_push($bonus_array, [ + "bonus_type" => "2", #獎金名稱 + "bonus_receiver" => $region_manger_id, #發放人員 + "bonus_amount" => round($region_manager_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #專任契約經理獎金 + if (($regular_contract_manger_id) != '') { + array_push($bonus_array, [ + "bonus_type" => "3", #獎金名稱 + "bonus_receiver" => $regular_contract_manger_id, #發放人員 + "bonus_amount" => round($regular_contract_manger_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + } + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "success", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + break; + + case $contract_years == "above_two": + /*** 以下第1年獎金 ***/ + #契約員獎金 + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($sales_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #地區經理經理獎金 + array_push($bonus_array, [ + "bonus_type" => "2", #獎金名稱 + "bonus_receiver" => $region_manger_id, #發放人員 + "bonus_amount" => round($region_manager_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #專任契約經理獎金 + if (($regular_contract_manger_id) != '') { + array_push($bonus_array, [ + "bonus_type" => "3", #獎金名稱 + "bonus_receiver" => $regular_contract_manger_id, #發放人員 + "bonus_amount" => round($regular_contract_manger_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + } + /*** 以上第1年獎金 ***/ + + /*** 以下第2年獎金 ***/ + #第2年契約員獎金 + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($sales_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #第2年地區經理經理獎金 + array_push($bonus_array, [ + "bonus_type" => "2", #獎金名稱 + "bonus_receiver" => $region_manger_id, #發放人員 + "bonus_amount" => round($region_manager_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + + #第2年專任契約經理獎金 + if (($regular_contract_manger_id) != '') { + array_push($bonus_array, [ + "bonus_type" => "3", #獎金名稱 + "bonus_receiver" => $regular_contract_manger_id, #發放人員 + "bonus_amount" => round($regular_contract_manger_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 + "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 + ]); + } + /*** 以上第2年獎金 ***/ + + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "success", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + break; + } + } else { + array_push($bonus_array, [ + "bonus_type" => "error", #獎金名稱 + "bonus_receiver" => "error", #發放人員 + "bonus_amount" => 0, #金額 + "pay_day_due" => "9999-1-1", #預計發放時間 + "bonus_regulation" => "error" #發放規定 + ]); + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "error", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + } + + return $result_array; +}; + +## 4/1 後套用 2.1 版本 +function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id = '') +{ + // $fee_per_st = round($fee_per_st); + $bonus_array = []; + if ($ver == "2.1") { + $discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2); + // $discount = ($fee_per_st - $commission_fee) / $elevator_list_price; + + #契約總類($contract_type):新簽約(new)、免保轉有費(free_to_charge)、續簽約(原價或僅契約金額異動)(renew_priceissue) + switch ($contract_type) { + case "new": + #契約員獎金($sales_bonus) + #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) + switch ($discount) { + case ($discount >= 0.8): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.6; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.7; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.8; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.9; + break; + }; + break; + case ($discount >= 0.6 and $discount < 0.8): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.48; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.56; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.64; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.72; + break; + }; + break; + case ($discount < 0.6): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.42; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.49; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.56; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.63; + break; + }; + break; + }; + + #地區處長獎金($region_director_bonus) + $region_director_bonus = 170; + #專任契約經理獎金($regular_contract_manger_bonus) + $regular_contract_manger_bonus = 300; + break; + + case "free_to_charge": + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.3; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.35; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.4; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.45; + break; + }; + #地區處長獎金($region_director_bonus) + $region_director_bonus = 170; + #專任契約經理獎金($regular_contract_manger_bonus) + $regular_contract_manger_bonus = 300; + break; + + case "renew_priceissue": + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.25; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 3499): + $sales_bonus = ($fee_per_st) * 0.3; + break; + case ($fee_per_st >= 3500 and $fee_per_st <= 3999): + $sales_bonus = ($fee_per_st) * 0.35; + break; + case ($fee_per_st >= 4000): + $sales_bonus = ($fee_per_st) * 0.4; + break; + }; + #地區處長獎金($region_director_bonus) + $region_director_bonus = 170; + #專任契約經理獎金($regular_contract_manger_bonus) + $regular_contract_manger_bonus = 300; + break; + }; + + #地區處長獎金 + array_push($bonus_array, [ + "bonus_type" => "2", #獎金名稱 + "bonus_receiver" => $region_director_id, #發放人員 + "bonus_amount" => round($region_director_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "第1次款項收回後,次月發放" #發放規定 + ]); + + #專任契約經理獎金 + if ($regular_contract_manger_id != '') { + array_push($bonus_array, [ + "bonus_type" => "3", #獎金名稱 + "bonus_receiver" => $regular_contract_manger_id, #發放人員 + "bonus_amount" => round($regular_contract_manger_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "第1次款項收回後,次月發放" #發放規定 + ]); + } + + #契約員獎金 + switch ($payment_period) { + #年付 + case "annually": + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($sales_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + break; + + #半年付 + case "semiannually": + $payment_ratio_due_array = array(0.5, 0.5); + $payday_due_array = array(1, 7); + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + + #季付 + case "quarterly": + $payment_ratio_due_array = array(0.25, 0.25, 0.25, 0.25); + $payday_due_array = array(1, 4, 7, 10); + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + + #2月1次 + case "bimonthly": + $payment_ratio_due_array = array(); + for ($i = 0; $i < 6; $i++) { + array_push($payment_ratio_due_array, 1 / 6); + } + $payday_due_array = array(1, 3, 5, 7, 9, 11); + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + + #月付 + case "monthly": + $payment_ratio_due_array = array(); + // $payment_ratio_due_array = array(); + for ($i = 0; $i < 12; $i++) { + array_push($payment_ratio_due_array, 1 / 12); + } + + $payday_due_array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + } + + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "success", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + } else { + array_push($bonus_array, [ + "bonus_type" => "error", #獎金名稱 + "bonus_receiver" => "error", #發放人員 + "bonus_amount" => 0, #金額 + "pay_day_due" => "9999-1-1", #預計發放時間 + "bonus_regulation" => "error" #發放規定 + ]); + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "error", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + } + + return $result_array; +}; + + +## 五年以上長約 +function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id = '') +{ + $bonus_array = []; + if ($ver == "2.1") { + $discount = ($fee_per_st - $commission_fee) / $elevator_list_price; + #契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge) + switch ($contract_type) { + case "longcontract_m1_free_charge": + #契約員獎金($sales_bonus) + #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) + switch ($discount) { + case ($discount >= 0.8): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.6; + break; + case ($fee_per_st >= 3000 and $fee_per_st < 4000): + $sales_bonus = ($fee_per_st) * 0.7; + break; + case ($fee_per_st >= 4000 and $fee_per_st < 5000): + $sales_bonus = ($fee_per_st) * 0.8; + break; + case ($fee_per_st >= 5000 and $fee_per_st < 6000): + $sales_bonus = ($fee_per_st) * 0.9; + break; + case ($fee_per_st >= 6000): + $sales_bonus = ($fee_per_st) * 1.0; + break; + }; + break; + case ($discount >= 0.6 and $discount < 0.8): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.42; + break; + case ($fee_per_st >= 3000 and $fee_per_st <= 4000): + $sales_bonus = ($fee_per_st) * 0.49; + break; + case ($fee_per_st >= 4000 and $fee_per_st < 5000): + $sales_bonus = ($fee_per_st) * 0.56; + break; + case ($fee_per_st >= 5000 and $fee_per_st < 6000): + $sales_bonus = ($fee_per_st) * 0.63; + break; + case ($fee_per_st >= 6000): + $sales_bonus = ($fee_per_st) * 0.7; + break; + }; + break; + case ($discount < 0.6): + switch ($fee_per_st) { + case ($fee_per_st < 3000): + $sales_bonus = ($fee_per_st) * 0.3; + break; + case ($fee_per_st >= 3000 and $fee_per_st < 4000): + $sales_bonus = ($fee_per_st) * 0.35; + break; + case ($fee_per_st >= 4000 and $fee_per_st < 5000): + $sales_bonus = ($fee_per_st) * 0.4; + break; + case ($fee_per_st >= 5000 and $fee_per_st < 6000): + $sales_bonus = ($fee_per_st) * 0.45; + break; + case ($fee_per_st >= 6000): + $sales_bonus = ($fee_per_st) * 0.5; + break; + }; + break; + }; + + #地區處長獎金($region_director_bonus) + $region_director_bonus = 170; + #專任契約經理獎金($regular_contract_manger_bonus) + $regular_contract_manger_bonus = 300; + break; + }; + #付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually) + array_push($bonus_array, [ + "bonus_type" => "2", #獎金名稱 + "bonus_receiver" => $region_director_id, #發放人員 + "bonus_amount" => round($region_director_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間 + "bonus_regulation" => "訂金收回後次月發放" #發放規定 + ]); + + #專任契約經理獎金 + if ($regular_contract_manger_id != '') { + array_push($bonus_array, [ + "bonus_type" => "3", #獎金名稱 + "bonus_receiver" => $regular_contract_manger_id, #發放人員 + "bonus_amount" => round($regular_contract_manger_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間 + "bonus_regulation" => "訂金收回後次月發放" #發放規定 + ]); + } + + #地區處長獎金、專任契約經理、契約員獎金 + switch ($payment_period) { + #簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金 + #總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期, + #年繳 + case 'annually': + $payment_ratio_due_array = array(); + $a = $payment_period_amount / 12; + for ($i = 0; $i < $a; $i++) { + array_push($payment_ratio_due_array, 1 / $a); + } + + $payday_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payday_due_array, $i + 1); + } + + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] year")), #預計發放時間 + "bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定 + ]); + } + + break; + #半年繳 + case 'semiannually': + $payment_ratio_due_array = array(); + $a = $payment_period_amount / 6; + for ($i = 0; $i < $a; $i++) { + array_push($payment_ratio_due_array, 1 / $a); + } + + $payday_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payday_due_array, ($i + 1) * 6); + } + + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + #季繳 + case 'quarterly': + $a = $payment_period_amount / 3; + $payment_ratio_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payment_ratio_due_array, 1 / $a); + } + + $payday_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payday_due_array, ($i + 1) * 4); + } + + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + #雙月繳 + case 'bimonthly': + $a = $payment_period_amount / 2; + $payment_ratio_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payment_ratio_due_array, 1 / $a); + } + + $payday_due_array = array(); + for ($i = 0; $i < $a; $i++) { + array_push($payday_due_array, ($i + 1) * 2); + } + + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + break; + #月繳 + case 'monthly': + + #產生契約員每個月的獎金應發比例 + $payment_ratio_due_array = array(); + for ($i = 0; $i < $payment_period_amount; $i++) { + array_push($payment_ratio_due_array, 1 / $payment_period_amount); + } + + $payday_due_array = array(); + for ($i = 0; $i < $payment_period_amount; $i++) { + array_push($payday_due_array, $i + 1); + } + + for ($i = 0; $i < count($payment_ratio_due_array); $i++) { + if ($i < count($payment_ratio_due_array) - 1) { + $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 + } else { + $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 + }; + array_push($bonus_array, [ + "bonus_type" => "1", #獎金名稱 + "bonus_receiver" => $sales_id, #發放人員 + "bonus_amount" => round($current_bonus), #金額 + "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 + "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 + ]); + } + break; + } + + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "success", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + } else { + array_push($bonus_array, [ + "bonus_type" => "error", #獎金名稱 + "bonus_receiver" => "error", #發放人員 + "bonus_amount" => 0, #金額 + "pay_day_due" => "9999-1-1", #預計發放時間 + "bonus_regulation" => "error" #發放規定 + ]); + $result_array = [ + "ver" => $ver, #獎金版本 + "result_status" => "error", #計算結果 + "bonus_array" => $bonus_array #獎金水庫 + ]; + } + + return $result_array; +}; diff --git a/wms/cont/api/postElevatorPricereview.php b/wms/cont/api/postElevatorPricereview.php index 03356932..3fea17ff 100644 --- a/wms/cont/api/postElevatorPricereview.php +++ b/wms/cont/api/postElevatorPricereview.php @@ -26,24 +26,111 @@ $status = $_POST['status']; $elevators = json_decode($_POST['elevators'], true); $otherOptions = json_decode($_POST['otherOptions'], true); $payment_kind = $_POST['pay_method']; -$current_date = date("Y-M-d H:i:s"); +$current_date = date("Y-m-d H:i:s"); $total_price = $_POST['total_price']; $total_sale_price = $_POST['total_sale_price']; -$sql_str = "SELECT status FROM con_maintance_examine_apply WHERE (vol_no, apply_key) = (:vol_no, :apply_key) "; +$attatch1 = !empty($_FILES['attatch1']) ? $_FILES['attatch1'] : null; +$attatch2 = !empty($_FILES['attatch2']) ? $_FILES['attatch2'] : null; +$attatch1_src = null; +$attatch2_src = null; + +$sql_str = "SELECT status, attatch1, attatch2 FROM con_maintance_examine_apply WHERE (vol_no, apply_key) = (:vol_no, :apply_key) "; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':vol_no', $vol_no); $stmt->bindParam(':apply_key', $apply_key); $stmt->execute(); $contract = $stmt->fetch(PDO::FETCH_ASSOC); +if(!empty($attatch1)){ + $file = $attatch1; + $file_name = $file['name']; + $file_type = $file['type']; + $tmp_name = $file['tmp_name']; + $file_size = $file['size']; + $error = $file['error']; + $rand = strval(rand(1000,1000000)); + $now = (string)date('YmdHis'); + $imgsrc = 'm'.$now.$rand.$file_name; + $allow_ext = array('jpeg', 'jpg', 'png', 'gif','JPG','JPEG','PNG','pdf','PDF','docx', 'doc', 'DOCX', 'DOC', 'xlsx', 'xls', 'XLSX', 'XLS'); + //設定上傳位置 + $path = './pricereview-uploads/'; + $attatch1_src = $path.$imgsrc; + if (!file_exists($path)) { mkdir($path); } + if ($error == 0) { + $ext = pathinfo($file_name, PATHINFO_EXTENSION); + if (!in_array($ext, $allow_ext)) { + echo ""; + exit('檔案類型不符合,請選擇 jpg、png、excel、word 、pdf檔案'); + } + $result = move_uploaded_file($tmp_name, '.'.$attatch1_src); + } else { + //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 + switch ($error) { + case 1: echo '上傳檔案超過 upload_max_filesize 容量最大值'; break; + case 2: echo '上傳檔案超過 post_max_size 總容量最大值'; break; + case 3: echo '檔案只有部份被上傳'; break; + case 4: echo '沒有檔案被上傳'; break; + case 6: echo '找不到主機端暫存檔案的目錄位置'; break; + case 7: echo '檔案寫入失敗'; break; + case 8: echo '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; + } + } + +}else{ + if($contract){ + $attatch1_src = $contract['attatch1']; + } +} +if(!empty($attatch2)){ + $file = $attatch2; + $file_name = $file['name']; + $file_type = $file['type']; + $tmp_name = $file['tmp_name']; + $file_size = $file['size']; + $error = $file['error']; + $rand = strval(rand(1000,1000000)); + $now = (string)date('YmdHis'); + $imgsrc = 'm'.$now.$rand.$file_name; + $allow_ext = array('jpeg', 'jpg', 'png', 'gif','JPG','JPEG','PNG','pdf','PDF','docx', 'doc', 'DOCX', 'DOC', 'xlsx', 'xls', 'XLSX', 'XLS'); + //設定上傳位置 + $path = './pricereview-uploads/'; + $attatch2_src = $path.$imgsrc; + if (!file_exists($path)) { mkdir($path); } + + if ($error == 0) { + $ext = pathinfo($file_name, PATHINFO_EXTENSION); + if (!in_array($ext, $allow_ext)) { + echo ""; + exit('檔案類型不符合,請選擇 jpg、png、excel、word 、pdf檔案'); + } + $result = move_uploaded_file($tmp_name, '.'.$attatch2_src); + } else { + //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 + switch ($error) { + case 1: echo '上傳檔案超過 upload_max_filesize 容量最大值'; break; + case 2: echo '上傳檔案超過 post_max_size 總容量最大值'; break; + case 3: echo '檔案只有部份被上傳'; break; + case 4: echo '沒有檔案被上傳'; break; + case 6: echo '找不到主機端暫存檔案的目錄位置'; break; + case 7: echo '檔案寫入失敗'; break; + case 8: echo '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; + } + } + +}else{ + if($contract){ + $attatch2_src = $contract['attatch2']; + } +} + $conn->beginTransaction(); try{ if(!$contract){ - $sql_str = "INSERT INTO con_maintance_examine_apply (apply_key, vol_no, customer, address, case_name ,brand, num, salesman, maintain_kind, contract_begin_date, contract_end_date, contract_kind, payment_kind, progress_remark, service_fee, total_price, total_sale_price, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, creater, create_at) - VALUES (:apply_key, :vol_no, :customer, :address, :case_name ,:brand, :num, :salesman, :maintain_kind, :contract_begin_date, :contract_end_date, :contract_kind, :payment_kind, :progress_remark, :service_fee, :total_price, :total_sale_price, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :creater, :create_at)"; + $sql_str = "INSERT INTO con_maintance_examine_apply (apply_key, vol_no, customer, address, case_name ,brand, num, salesman, maintain_kind, contract_begin_date, contract_end_date, contract_kind, payment_kind, progress_remark, service_fee, total_price, total_sale_price, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, attatch1, attatch2, creater, create_at) + VALUES (:apply_key, :vol_no, :customer, :address, :case_name ,:brand, :num, :salesman, :maintain_kind, :contract_begin_date, :contract_end_date, :contract_kind, :payment_kind, :progress_remark, :service_fee, :total_price, :total_sale_price, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :attatch1, :attatch2, :creater, :create_at)"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':apply_key', $apply_key); $stmt->bindParam(':vol_no', $vol_no); @@ -68,15 +155,17 @@ try{ $stmt->bindParam(':warranty_rate', $warranty_rate); $stmt->bindParam(':memo', $remark); $stmt->bindParam(':status', $status); + $stmt->bindParam(':attatch1', $attatch1_src); + $stmt->bindParam(':attatch2', $attatch2_src); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $current_date); $stmt->execute(); - $sql_str = "INSERT INTO con_maintance_examine_clear (apply_key, item_no, register_code, elevator_brand, elevator_kind, spec, weight, speed, stop, floors, persons, elevator_num, useful_years, last_check_date, speed_governors_check_expense, maintain_times, is_m1_bundle, maintain_months, maintain_period, maintain_method, stand_price, contract_price, sold_price, commission_expense, management_expense, annual_survey_expense, service_expense, cmstatus, updated_at, creater, created_at) - VALUES (:apply_key, :item_no, :register_code, :elevator_brand, :elevator_kind, :spec, :weight, :speed, :stop, :floors, :persons, :elevator_num, :useful_years, :last_check_date, :speed_governors_check_expense, :maintain_times, :is_m1_bundle, :maintain_months, :maintain_period, :maintain_method, :stand_price, :contract_price, :sold_price, :commission_expense, :management_expense, :annual_survey_expense, :service_expense, :cmstatus, :updated_at, :creater, :created_at) "; + $sql_str = "INSERT INTO con_maintance_examine_clear (apply_key, item_no, register_code, elevator_brand, elevator_kind, spec, weight, speed, stop, floors, persons, elevator_num, useful_years, last_check_date, speed_governors_check_expense, maintain_times, is_m1_bundle, maintain_months, maintain_period, maintain_method, stand_price, contract_price, sold_price, commission_expense, management_expense, annual_survey_expense, service_expense, inspection_fee, cmstatus, updated_at, creater, created_at) + VALUES (:apply_key, :item_no, :register_code, :elevator_brand, :elevator_kind, :spec, :weight, :speed, :stop, :floors, :persons, :elevator_num, :useful_years, :last_check_date, :speed_governors_check_expense, :maintain_times, :is_m1_bundle, :maintain_months, :maintain_period, :maintain_method, :stand_price, :contract_price, :sold_price, :commission_expense, :management_expense, :annual_survey_expense, :service_expense, :inspection_fee, :cmstatus, :updated_at, :creater, :created_at) "; foreach($elevators as $elevator){ - if(empty($elevator['permitNumber'])) $register_code = "A"; + $register_code = (empty($elevator['permitNumber'])) ? "A" : $elevator['permitNumber']; if($elevator['spec'] == "MAE100") $elevator_kind = "A"; if($elevator['spec'] == "MAF100") $elevator_kind = "B"; @@ -118,6 +207,7 @@ try{ $stmt->bindParam(':management_expense', $elevator['management_expense']); $stmt->bindParam(':annual_survey_expense', $elevator['yearCheckFee']); $stmt->bindParam(':service_expense', $elevator['service_expense']); + $stmt->bindParam(':inspection_fee', $elevator['inspectionFee']); $stmt->bindParam(':cmstatus', $cmstatus); $stmt->bindParam(':updated_at', $updated_at); $stmt->bindParam(':creater', $creater); @@ -164,6 +254,8 @@ try{ memo=:memo, brand=:brand, status=:status, + attatch1=:attatch1, + attatch2=:attatch2, updated_at=:updated_at, progress_remark=:progress_remark WHERE apply_key=:apply_key AND vol_no=:vol_no"; @@ -188,6 +280,8 @@ try{ $stmt->bindParam(':memo', $remark); $stmt->bindParam(':brand', $brand); $stmt->bindParam(':status', $status); + $stmt->bindParam(':attatch1', $attatch1_src); + $stmt->bindParam(':attatch2', $attatch2_src); $stmt->bindParam(':updated_at', $current_date); $stmt->execute(); @@ -213,8 +307,8 @@ try{ $stmt->execute(); } foreach($onlyInNewIds as $newidx){ - $sql_str = "INSERT INTO con_maintance_examine_clear (apply_key, item_no, register_code, elevator_brand, elevator_kind, spec, weight, speed, stop, floors, persons, elevator_num, useful_years, last_check_date, speed_governors_check_expense, maintain_times, is_m1_bundle, maintain_months, maintain_period, maintain_method, stand_price, contract_price, sold_price, commission_expense, management_expense, annual_survey_expense, service_expense, cmstatus, updated_at, creater, created_at) - VALUES (:apply_key, :item_no, :register_code, :elevator_brand, :elevator_kind, :spec, :weight, :speed, :stop, :floors, :persons, :elevator_num, :useful_years, :last_check_date, :speed_governors_check_expense, :maintain_times, :is_m1_bundle, :maintain_months, :maintain_period, :maintain_method, :stand_price, :contract_price, :sold_price, :commission_expense, :management_expense, :annual_survey_expense, :service_expense, :cmstatus, :updated_at, :creater, :created_at) "; + $sql_str = "INSERT INTO con_maintance_examine_clear (apply_key, item_no, register_code, elevator_brand, elevator_kind, spec, weight, speed, stop, floors, persons, elevator_num, useful_years, last_check_date, speed_governors_check_expense, maintain_times, is_m1_bundle, maintain_months, maintain_period, maintain_method, stand_price, contract_price, sold_price, commission_expense, management_expense, annual_survey_expense, service_expense, inspection_fee, cmstatus, updated_at, creater, created_at) + VALUES (:apply_key, :item_no, :register_code, :elevator_brand, :elevator_kind, :spec, :weight, :speed, :stop, :floors, :persons, :elevator_num, :useful_years, :last_check_date, :speed_governors_check_expense, :maintain_times, :is_m1_bundle, :maintain_months, :maintain_period, :maintain_method, :stand_price, :contract_price, :sold_price, :commission_expense, :management_expense, :annual_survey_expense, :service_expense, :inspection_fee, :cmstatus, :updated_at, :creater, :created_at) "; $elevator = array_values(array_filter($elevators, fn($el)=> $el['id'] == $newidx))[0]; $register_code = empty($elevator['permitNumber']) ? "A" : $elevator['permitNumber']; if($elevator['spec'] == "MAE100") $elevator_kind = "A"; @@ -257,6 +351,7 @@ try{ $stmt->bindParam(':management_expense', $elevator['management_expense']); $stmt->bindParam(':annual_survey_expense', $elevator['yearCheckFee']); $stmt->bindParam(':service_expense', $elevator['service_expense']); + $stmt->bindParam(':inspection_fee', $elevator['inspectionFee']); $stmt->bindParam(':cmstatus', $cmstatus); $stmt->bindParam(':updated_at', $updated_at); $stmt->bindParam(':creater', $creater); @@ -290,6 +385,7 @@ try{ management_expense=:management_expense, annual_survey_expense=:annual_survey_expense, service_expense=:service_expense, + inspection_fee=:inspection_fee, cmstatus=:cmstatus, updated_at=:updated_at WHERE (apply_key, item_no) = (:apply_key, :item_no)"; @@ -336,6 +432,7 @@ try{ $stmt->bindParam(':management_expense', $elevator['management_expense']); $stmt->bindParam(':annual_survey_expense', $elevator['yearCheckFee']); $stmt->bindParam(':service_expense', $elevator['service_expense']); + $stmt->bindParam(':inspection_fee', $elevator['inspectionFee']); $stmt->bindParam(':cmstatus', $cmstatus); $stmt->bindParam(':updated_at', $updated_at); @@ -469,7 +566,7 @@ try{ $permissions = [$manager]; $creater = "system"; $create_at = $current_date; - $url = "cont/pricereviewCheck.php?id=" . $apply_key; + $url = "cont/pricereviewCheck.php?apply_key=" . $apply_key; sendSystemNotice($kind, $related_id, $title, $content, $havaread, $permissions, $creater, $create_at, $url); } echo "success"; diff --git a/wms/cont/api/postFlow.php b/wms/cont/api/postFlow.php index 554974a9..df762a62 100644 --- a/wms/cont/api/postFlow.php +++ b/wms/cont/api/postFlow.php @@ -7,7 +7,8 @@ function createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key=null) $system_id = "prm"; if($ekind == "新梯") $flow_id = "prm01"; if($ekind == "汰改") $flow_id = "prm02"; - if($ekind == "保養") $flow_id = "prm03"; + if($ekind == "修理") $flow_id = "prm03"; + if($ekind == "保養") $flow_id = "prm04"; if($form_key == null){ $sql_str = "SELECT appwms.nextval('form_key') form_key"; diff --git a/wms/cont/api/postPricereviewSign.php b/wms/cont/api/postPricereviewSign.php new file mode 100644 index 00000000..7fc900d1 --- /dev/null +++ b/wms/cont/api/postPricereviewSign.php @@ -0,0 +1,127 @@ +prepare($sql_str); + $stmt->bindParam(':sign', $sign_result); + $stmt->bindParam(':mid', $mid); + $stmt->bindParam(':reviewcomment', $reviewcomment); + $stmt->bindParam(':sign_id', $sign_id); + $stmt->execute(); + + if($sign == 3){ + $sql_str = "UPDATE con_maintance_examine_apply SET status=:status, updated_at=:updated_at WHERE apply_key = :apply_key "; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':status', $result); + $stmt->bindParam(':apply_key', $mid); + $stmt->bindParam(':updated_at', $updated_at); + $stmt->execute(); + }else{ + $sql_str = "UPDATE con_maintance_examine_apply SET status=:status WHERE apply_key = :apply_key "; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':status', $result); + $stmt->bindParam(':apply_key', $mid); + $stmt->execute(); + } + + + include_once "./postSystemNotice.php"; + $sql_str = "SELECT * FROM con_maintance_examine_apply WHERE apply_key = :apply_key ORDER BY create_at DESC LIMIT 1"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':apply_key', $mid); + $stmt->execute(); + $contract = $stmt->fetch(PDO::FETCH_ASSOC); + $ekind = "保養"; + + $sql_str = "SELECT * FROM pricereview_maintain_sign WHERE mid = :mid AND id = :sign_id"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':mid', $mid); + $stmt->bindParam(':sign_id', $sign_id); + $stmt->execute(); + $currentsign = $stmt->fetch(PDO::FETCH_ASSOC); + $permissions = []; + $content = ""; + $url = "cont/pricereviewCheck.php?apply_key=" . $mid; + if($signOff == "YY"){ + if($currentsign['sign1']!=NULL){ $permissions[] = explode(",", $currentsign['sign1'])[0] ; } + if($currentsign['sign2']!=NULL){ $permissions[] = explode(",", $currentsign['sign2'])[0] ; } + if($currentsign['sign3']!=NULL){ $permissions[] = explode(",", $currentsign['sign3'])[0] ; } + if($currentsign['sign4']!=NULL){ $permissions[] = explode(",", $currentsign['sign4'])[0] ; } + $permissions[] = $contract['salesman']; + $title = $ekind . "價審結案通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:結案同意
"; + $current_assigner = "00000"; + }elseif($signOff == "Y"){ + if($sign == 1 || $sign == 2 || $sign == 3){ + $signer = $currentsign['sign'.($sign+1)]; + if($signer == NULL){ + $signer = $currentsign['sign'.($sign+2)]; + } + $permissions[] = explode(",", $signer)[0]; + $current_assigner = explode(",", $signer)[0]; + $title = $ekind . "價審待簽通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:待簽核
"; + } + }elseif($signOff == "N"){ + $signer = $contract['salesman']; + $permissions[] = $signer; + $title = $ekind . "價審退回通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:退回
"; + $url = "cont/pricereviewCreate.php?vol_no=" . $vol_no; + $current_assigner = "00000"; + } + + $kind = 1; + $related_id = $mid; + $content .= "合約號:".$contract['vol_no'] . "
"; + $content .= "客戶名稱:" . $contract['customer'] . "
"; + $content .= "案件名稱:" . $contract['case_name'] . "
"; + $content .= "時間" . date("Y-m-d H:i:s"); + // $content .= "prepare($sql_str); + $stmt->bindParam(':form_id', $mid); + $stmt->execute(); + $form_key = $stmt->fetch(PDO::FETCH_ASSOC)['form_key']; + } + include_once "./postFlow.php"; + if($signOff == "YY") $flow_code = "Z"; + if($signOff == "Y") $flow_code = "B"; + if($signOff == "N") $flow_code = "A"; + if($form_key == null){ + throw new PDOException("form_key 不存在!"); + } + createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key); + echo 1; +}catch(PDOException $e){ + echo $e->getMessage(); +} diff --git a/wms/cont/conn.php b/wms/cont/conn.php new file mode 100644 index 00000000..84d118b9 --- /dev/null +++ b/wms/cont/conn.php @@ -0,0 +1,49 @@ +errorInfo()的形式獲取錯誤資訊 + //PDO::ERRMODE_WARNING: 引發 E_WARNING 錯誤,主動報錯 + //PDO::ERRMODE_EXCEPTION: 主動抛出 exceptions 異常,需要以try{}cath(){}輸出錯誤資訊。 + //設定主動以警告的形式報錯 + $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); + //如果連接錯誤,將抛出一個PDOException異常對象 +} +catch ( PDOException $e ){ + //如果連結資料庫失敗則顯示錯誤訊並停止本頁的工作 + die("ERROR!!!: ". $e->getMessage()); +} + +//$conn = null; //關閉資料庫的連線 \ No newline at end of file diff --git a/wms/cont/js/axios.min.js b/wms/cont/js/axios.min.js new file mode 100644 index 00000000..a9a8d6f0 --- /dev/null +++ b/wms/cont/js/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=t)if("object"!==e(t)&&(t=[t]),p(t))for(r=0,o=t.length;r0;)if(t===(n=r[o]).toLowerCase())return n;return null}var N="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,C=function(e){return!h(e)&&e!==N};var x,P=(x="undefined"!=typeof Uint8Array&&c(Uint8Array),function(e){return x&&e instanceof x}),k=l("HTMLFormElement"),U=function(e){var t=Object.prototype.hasOwnProperty;return function(e,n){return t.call(e,n)}}(),_=l("RegExp"),F=function(e,t){var n=Object.getOwnPropertyDescriptors(e),r={};T(n,(function(n,o){var i;!1!==(i=t(n,o,e))&&(r[o]=i||n)})),Object.defineProperties(e,r)},B="abcdefghijklmnopqrstuvwxyz",L="0123456789",D={DIGIT:L,ALPHA:B,ALPHA_DIGIT:B+B.toUpperCase()+L};var I=l("AsyncFunction"),q={isArray:p,isArrayBuffer:m,isBuffer:function(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&v(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||v(e.append)&&("formdata"===(t=f(e))||"object"===t&&v(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&m(e.buffer)},isString:y,isNumber:b,isBoolean:function(e){return!0===e||!1===e},isObject:g,isPlainObject:w,isUndefined:h,isDate:E,isFile:O,isBlob:S,isRegExp:_,isFunction:v,isStream:function(e){return g(e)&&v(e.pipe)},isURLSearchParams:A,isTypedArray:P,isFileList:R,forEach:T,merge:function e(){for(var t=C(this)&&this||{},n=t.caseless,r={},o=function(t,o){var i=n&&j(r,o)||o;w(r[i])&&w(t)?r[i]=e(r[i],t):w(t)?r[i]=e({},t):p(t)?r[i]=t.slice():r[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=r.allOwnKeys;return T(t,(function(t,r){n&&v(t)?e[r]=a(t,n):e[r]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],r&&!r(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==n&&c(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:f,kindOfTest:l,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(p(e))return e;var t=e.length;if(!b(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},forEachEntry:function(e,t){for(var n,r=(e&&e[Symbol.iterator]).call(e);(n=r.next())&&!n.done;){var o=n.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:k,hasOwnProperty:U,hasOwnProp:U,reduceDescriptors:F,freezeMethods:function(e){F(e,(function(t,n){if(v(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;var r=e[n];v(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:function(e,t){var n={},r=function(e){e.forEach((function(e){n[e]=!0}))};return p(e)?r(e):r(String(e).split(t)),n},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:j,global:N,isContextDefined:C,ALPHABET:D,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:D.ALPHA_DIGIT,n="",r=t.length;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&v(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(n,r){if(g(n)){if(t.indexOf(n)>=0)return;if(!("toJSON"in n)){t[r]=n;var o=p(n)?[]:{};return T(n,(function(t,n){var i=e(t,r+1);!h(i)&&(o[n]=i)})),t[r]=void 0,o}}return n}(e,0)},isAsyncFn:I,isThenable:function(e){return e&&(g(e)||v(e))&&v(e.then)&&v(e.catch)}};function M(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}q.inherits(M,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:q.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var z=M.prototype,H={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){H[e]={value:e}})),Object.defineProperties(M,H),Object.defineProperty(z,"isAxiosError",{value:!0}),M.from=function(e,t,n,r,o,i){var a=Object.create(z);return q.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),M.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function J(e){return q.isPlainObject(e)||q.isArray(e)}function W(e){return q.endsWith(e,"[]")?e.slice(0,-2):e}function K(e,t,n){return e?e.concat(t).map((function(e,t){return e=W(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}var V=q.toFlatObject(q,{},null,(function(e){return/^is[A-Z]/.test(e)}));function G(t,n,r){if(!q.isObject(t))throw new TypeError("target must be an object");n=n||new FormData;var o=(r=q.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!q.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&q.isSpecCompliantForm(n);if(!q.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(q.isDate(e))return e.toISOString();if(!u&&q.isBlob(e))throw new M("Blob is not supported. Use a Buffer instead.");return q.isArrayBuffer(e)||q.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(t,r,i){var u=t;if(t&&!i&&"object"===e(t))if(q.endsWith(r,"{}"))r=o?r:r.slice(0,-2),t=JSON.stringify(t);else if(q.isArray(t)&&function(e){return q.isArray(e)&&!e.some(J)}(t)||(q.isFileList(t)||q.endsWith(r,"[]"))&&(u=q.toArray(t)))return r=W(r),u.forEach((function(e,t){!q.isUndefined(e)&&null!==e&&n.append(!0===s?K([r],t,a):null===s?r:r+"[]",c(e))})),!1;return!!J(t)||(n.append(K(i,r,a),c(t)),!1)}var l=[],d=Object.assign(V,{defaultVisitor:f,convertValue:c,isVisitable:J});if(!q.isObject(t))throw new TypeError("data must be an object");return function e(t,r){if(!q.isUndefined(t)){if(-1!==l.indexOf(t))throw Error("Circular reference detected in "+r.join("."));l.push(t),q.forEach(t,(function(t,o){!0===(!(q.isUndefined(t)||null===t)&&i.call(n,t,q.isString(o)?o.trim():o,r,d))&&e(t,r?r.concat(o):[o])})),l.pop()}}(t),n}function $(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function X(e,t){this._pairs=[],e&&G(e,this,t)}var Q=X.prototype;function Z(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Y(e,t,n){if(!t)return e;var r,o=n&&n.encode||Z,i=n&&n.serialize;if(r=i?i(t,n):q.isURLSearchParams(t)?t.toString():new X(t,n).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}Q.append=function(e,t){this._pairs.push([e,t])},Q.toString=function(e){var t=e?function(t){return e.call(this,t,$)}:$;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var ee,te=function(){function e(){t(this,e),this.handlers=[]}return r(e,[{key:"use",value:function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){q.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),ne={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},re={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:X,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:("undefined"==typeof navigator||"ReactNative"!==(ee=navigator.product)&&"NativeScript"!==ee&&"NS"!==ee)&&"undefined"!=typeof window&&"undefined"!=typeof document,isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};function oe(e){function t(e,n,r,o){var i=e[o++],a=Number.isFinite(+i),s=o>=e.length;return i=!i&&q.isArray(r)?r.length:i,s?(q.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a):(r[i]&&q.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&q.isArray(r[i])&&(r[i]=function(e){var t,n,r={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=q.isObject(e);if(i&&q.isHTMLForm(e)&&(e=new FormData(e)),q.isFormData(e))return o&&o?JSON.stringify(oe(e)):e;if(q.isArrayBuffer(e)||q.isBuffer(e)||q.isStream(e)||q.isFile(e)||q.isBlob(e))return e;if(q.isArrayBufferView(e))return e.buffer;if(q.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return G(e,new re.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return re.isNode&&q.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=q.isFileList(e))||r.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return G(n?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,n){if(q.isString(e))try{return(t||JSON.parse)(e),q.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||ie.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&q.isString(e)&&(n&&!this.responseType||r)){var o=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw M.from(e,M.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:re.classes.FormData,Blob:re.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};q.forEach(["delete","get","head","post","put","patch"],(function(e){ie.headers[e]={}}));var ae=ie,se=q.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ue=Symbol("internals");function ce(e){return e&&String(e).trim().toLowerCase()}function fe(e){return!1===e||null==e?e:q.isArray(e)?e.map(fe):String(e)}function le(e,t,n,r,o){return q.isFunction(r)?r.call(this,t,n):(o&&(t=n),q.isString(t)?q.isString(r)?-1!==t.indexOf(r):q.isRegExp(r)?r.test(t):void 0:void 0)}var de=function(e,n){function i(e){t(this,i),e&&this.set(e)}return r(i,[{key:"set",value:function(e,t,n){var r=this;function o(e,t,n){var o=ce(t);if(!o)throw new Error("header name must be a non-empty string");var i=q.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=fe(e))}var i,a,s,u,c,f=function(e,t){return q.forEach(e,(function(e,n){return o(e,n,t)}))};return q.isPlainObject(e)||e instanceof this.constructor?f(e,t):q.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&se[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,n),this}},{key:"get",value:function(e,t){if(e=ce(e)){var n=q.findKey(this,e);if(n){var r=this[n];if(!t)return r;if(!0===t)return function(e){for(var t,n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=r.exec(e);)n[t[1]]=t[2];return n}(r);if(q.isFunction(t))return t.call(this,r,n);if(q.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=ce(e)){var n=q.findKey(this,e);return!(!n||void 0===this[n]||t&&!le(0,this[n],n,t))}return!1}},{key:"delete",value:function(e,t){var n=this,r=!1;function o(e){if(e=ce(e)){var o=q.findKey(n,e);!o||t&&!le(0,n[o],o,t)||(delete n[o],r=!0)}}return q.isArray(e)?e.forEach(o):o(e),r}},{key:"clear",value:function(e){for(var t=Object.keys(this),n=t.length,r=!1;n--;){var o=t[n];e&&!le(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}},{key:"normalize",value:function(e){var t=this,n={};return q.forEach(this,(function(r,o){var i=q.findKey(n,o);if(i)return t[i]=fe(r),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=fe(r),n[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1?n-1:0),o=1;o0;){var a=o[i],s=n[a];if(s){var u=t[a],c=void 0===u||s(u,a,t);if(!0!==c)throw new M("option "+a+" must be "+c,M.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new M("Unknown option "+a,M.ERR_BAD_OPTION)}},validators:Ne},Pe=xe.validators,ke=function(){function e(n){t(this,e),this.defaults=n,this.interceptors={request:new te,response:new te}}return r(e,[{key:"request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var n=t=Te(this.defaults,t),r=n.transitional,o=n.paramsSerializer,i=n.headers;void 0!==r&&xe.assertOptions(r,{silentJSONParsing:Pe.transitional(Pe.boolean),forcedJSONParsing:Pe.transitional(Pe.boolean),clarifyTimeoutError:Pe.transitional(Pe.boolean)},!1),null!=o&&(q.isFunction(o)?t.paramsSerializer={serialize:o}:xe.assertOptions(o,{encode:Pe.function,serialize:Pe.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&q.merge(i.common,i[t.method]);i&&q.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=pe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,d=0;if(!u){var p=[Re.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);d0;)o._listeners[t](e);o._listeners=null}})),this.promise.then=function(e){var t,n=new Promise((function(e){o.subscribe(e),t=e})).then(e);return n.cancel=function(){o.unsubscribe(t)},n},n((function(e,t,n){o.reason||(o.reason=new ye(e,t,n),r(o.reason))}))}return r(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Fe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Fe).forEach((function(e){var t=o(e,2),n=t[0],r=t[1];Fe[r]=n}));var Be=Fe;var Le=function e(t){var n=new Ue(t),r=a(Ue.prototype.request,n);return q.extend(r,Ue.prototype,n,{allOwnKeys:!0}),q.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Te(t,n))},r}(ae);return Le.Axios=Ue,Le.CanceledError=ye,Le.CancelToken=_e,Le.isCancel=me,Le.VERSION=je,Le.toFormData=G,Le.AxiosError=M,Le.Cancel=Le.CanceledError,Le.all=function(e){return Promise.all(e)},Le.spread=function(e){return function(t){return e.apply(null,t)}},Le.isAxiosError=function(e){return q.isObject(e)&&!0===e.isAxiosError},Le.mergeConfig=Te,Le.AxiosHeaders=pe,Le.formToJSON=function(e){return oe(q.isHTMLForm(e)?new FormData(e):e)},Le.getAdapter=Oe,Le.HttpStatusCode=Be,Le.default=Le,Le})); +//# sourceMappingURL=axios.min.js.map diff --git a/wms/cont/js/pricereviewAlpine.js b/wms/cont/js/pricereviewAlpine.js index 03423d76..e2c2eef9 100644 --- a/wms/cont/js/pricereviewAlpine.js +++ b/wms/cont/js/pricereviewAlpine.js @@ -38,10 +38,11 @@ const pricereviewCreate = ()=>{ method:'', //保養方式 checkYear:'', //竣工檢查年度 lastDate:'', // 上次年檢日期 - yearCheckFee:'', //年檢費用 + yearCheckFee:1260, //年檢費用 price:'', //公司發布價(月) qty:1, //電梯數量 sale_price:'', //契約報價 + inspectionFee:0, //檢驗費 }, otherOptions: otherOptions, modalOtherOptionInfo:{ @@ -61,6 +62,9 @@ const pricereviewCreate = ()=>{ deposit_rate: deposit_rate, keep_rate: keep_rate, warranty_rate: warranty_rate, + attatch1:'', + attatch2:'', + error:[], openCreateElevatorModal(){ this.modalShow.elevator = true; body.style.overflow = 'hidden'; @@ -82,10 +86,11 @@ const pricereviewCreate = ()=>{ method:'', //保養方式 checkYear:'', //竣工檢查年度 lastDate:'', // 上次年檢日期 - yearCheckFee:'', //年檢費用 + yearCheckFee:1260, //年檢費用 price:'', //公司發布價(月) qty:1, //電梯數量 sale_price:'', //契約報價 + inspectionFee:0, }; }, createElevatorFn(){ @@ -96,6 +101,7 @@ const pricereviewCreate = ()=>{ // if(this.modalElevatorInfo.speed == '') return alert("請選擇速度"); // if(this.modalElevatorInfo.brand == '') return alert("請選擇品牌"); // if(this.modalElevatorInfo.months == '') return alert("請輸入保養月數"); + if(this.modalElevatorInfo.m1 == 'Y' && this.modalElevatorInfo.months < 60) return alert('贈送M1保養月數不得小於60!') // if(this.modalElevatorInfo.method == '') return alert("請選擇保養方式"); // if(this.modalElevatorInfo.cycle == '') return alert("請選擇保養週期"); // if(this.modalElevatorInfo.checkYear == '') return alert("請輸入竣工檢查年度"); @@ -120,7 +126,8 @@ const pricereviewCreate = ()=>{ yearCheckFee: this.modalElevatorInfo.yearCheckFee, price: this.modalElevatorInfo.price, qty: this.modalElevatorInfo.qty, - sale_price: this.modalElevatorInfo.sale_price + sale_price: this.modalElevatorInfo.sale_price, + inspectionFee: this.modalElevatorInfo.inspectionFee }) this.hideCreateElevatorModal(); }, @@ -141,6 +148,7 @@ const pricereviewCreate = ()=>{ const price = this.elevators[idx].price; const qty = this.elevators[idx].qty; const sale_price = this.elevators[idx].sale_price; + const inspectionFee = this.elevators[idx].inspectionFee; this.total_spec ++; this.elevators.push({ id: this.total_spec, @@ -160,7 +168,8 @@ const pricereviewCreate = ()=>{ yearCheckFee: yearCheckFee, price: price, qty: qty, - sale_price: sale_price + sale_price: sale_price, + inspectionFee: inspectionFee }) }, removeElevator(id){ @@ -268,6 +277,25 @@ const pricereviewCreate = ()=>{ removeOtherOption(id){ this.otherOptions = this.otherOptions.filter(option=> option.id != id) }, + checkMonths(idx=null){ + if(this.elevators[idx].months < 60 && this.elevators[idx].m1 == 'Y'){ + alert('贈送M1保養月數不得小於60!') + this.elevators[idx].months = 60 + } + }, + changeMonths(idx=null){ + if(idx===null){ + if(this.modalElevatorInfo.m1 == 'N') return; + if(this.modalElevatorInfo.months < 60){ + this.modalElevatorInfo.months = 60 + } + return; + } + if(this.elevators[idx].m1 == 'N') return; + if(this.elevators[idx].months < 60){ + this.elevators[idx].months = 60 + } + }, get totalPrice(){ let total_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.price*el.months), 0); let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0); @@ -275,7 +303,7 @@ const pricereviewCreate = ()=>{ }, get totalSalePrice(){ let total_sale_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.sale_price*el.months), 0); - return total_sale_price + Number(this.serviceFee); + return total_sale_price; }, get totalElevatorsNum(){ let total_num = this.elevators.reduce((accumulator, el) => accumulator + Number(el.qty), 0); @@ -289,6 +317,9 @@ const pricereviewCreate = ()=>{ let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0); return total_other_price; }, + get discountRate(){ + return Math.round((Number(this.totalSalePrice) - Number(this.serviceFee)) / Number(this.totalPrice) * 1000) / 1000 + }, async getModalElevatorPrice(){ const spec = this.modalElevatorInfo.spec const person = this.modalElevatorInfo.person @@ -345,6 +376,8 @@ const pricereviewCreate = ()=>{ form.append('warranty_rate', this.warranty_rate); form.append('remark', this.remark); form.append('creater', user_id); + form.append('attatch1', this.attatch1); + form.append('attatch2', this.attatch2); form.append('pay_method', this.pay_method); form.append('status', 'Y1'); @@ -362,7 +395,53 @@ const pricereviewCreate = ()=>{ } }) }, + validation(){ + this.error = []; + if(this.totalElevatorsNum == 0) this.error.push("請至少輸入一種電梯"); + for(let i=0;i 0){ + let errortext = ''; + this.error.forEach(err=>{ + errortext += err+'\n'; + }) + alert(errortext) + console.log(this.error); + } + + return this.error.length > 0 ? false : true + + }, submit(){ + const validation = this.validation(); + if(!validation) return const form = new FormData(); form.append('vol_no', this.vol_no); form.append('apply_key', this.apply_key); @@ -384,6 +463,8 @@ const pricereviewCreate = ()=>{ form.append('warranty_rate', this.warranty_rate); form.append('remark', this.remark); form.append('creater', user_id); + form.append('attatch1', this.attatch1); + form.append('attatch2', this.attatch2); form.append('pay_method', this.pay_method); form.append('status', 'YS'); @@ -398,7 +479,7 @@ const pricereviewCreate = ()=>{ if(res.data == 'success'){ alert("送審成功!"); // window.location.reload(); - // window.location.href = './pricereview-index.php?' + token; + window.location.href = '../index.php?' + token; } }) }, @@ -407,5 +488,214 @@ const pricereviewCreate = ()=>{ const res = await axios.get('./api/getUsername.php', {params: {user_id: user_id}}) return res.data ; }, + uploadFiles(e, attatch){ + if(attatch == 1){ + this.attatch1 = e.target.files[0] + } + if(attatch == 2){ + this.attatch2 = e.target.files[0] + } + }, + async getBonus(idx){ + let contract_type = ''; + if(this.contract_status == 1){ + contract_type = 'new' + }else if(this.contract_status == 2){ + contract_type = 'free_to_charge' + }else if(this.contract_status == 3){ + contract_type = 'renew_priceissue' + } + const contract_years = this.isDifferenceMoreThanAYear(this.startDate, this.endDate); + const receivable_date_due = this.getNext25thDate(this.startDate); + const res = await axios.get('./api/maintaenance_contract_bonus.php', {params: + { + 'contract_type':contract_type, + 'contract_years': contract_years, + 'discount': this.discountRate, + 'fee_per_st': this.elevators[idx].sale_price, + 'receivable_date_due':receivable_date_due, + 'sales_id': user_id, + 'region_manger_id': 'M0174', + 'regular_contract_manger_id': 'M0174', + }}) + + console.log(res.data); + + }, + isDifferenceMoreThanAYear(startDate, endDate) { + const oneYear = 1000 * 60 * 60 * 24 * 365; // 毫秒數 + const difference = Math.abs(endDate - startDate); + return difference > oneYear ? 'above_two' : 'one'; + }, + getNext25thDate(dateString) { + // 將傳入的日期字串轉換為 Date 物件 + let date = new Date(dateString); + + // 如果日期大於 25,則將月份加一 + if (date.getDate() > 25) { + // 增加一個月 + date.setMonth(date.getMonth() + 1); + } + + // 設定日期為 25 號 + date.setDate(25); + + // 將 Date 物件格式化為 YYYY-MM-DD 字串 + let year = date.getFullYear(); + let month = date.getMonth() + 1; // 月份是從 0 開始的,所以加 1 + month = month < 10 ? '0' + month : month; // 確保月份是兩位數 + + return `${year}-${month}-25`; + } + + } +} + +const pricereviewCheck = ()=>{ + return { + init(){ + console.log(123); + this.elevators = elevators; + this.otherOptions = otherOptions; + this.elevators.forEach(el=>{ + el.otherOptions = [] + el.otherOptionsTotalPrice = 0; + }) + + this.elevators.forEach((elevator, idx)=>{ + if(elevator.maintain_method == 'A'){ + elevator.maintain_method = '全包' + }else if(elevator.maintain_method == 'B'){ + elevator.maintain_method = '半包' + }else if(elevator.maintain_method == 'C'){ + elevator.maintain_method = '清包' + } + if(elevator.maintain_period == 1){ + elevator.maintain_period = '月保' + }else if(elevator.maintain_period == 2){ + elevator.maintain_period = '月保兩次' + }else if(elevator.maintain_period == 3){ + elevator.maintain_period = '雙月保' + }else if(elevator.maintain_period == 4){ + elevator.maintain_period = '季保' + } + this.elevators_total_price += elevator.stand_price*elevator.maintain_months + this.otherOptions.forEach(option=>{ + if(option.option_relate_spec == elevator.item_no){ + elevator.otherOptionsTotalPrice += option.item_unit_price * option.item_qty + this.elevators[idx].otherOptions.push({ + 'id': option.id, + 'item_spec': option.item_spec, + 'item_unit_price': option.item_unit_price, + 'item_qty': option.item_qty, + 'mi': Math.round(option.item_unit_price), + }) + } + }) + }) + console.log(this.elevators); + if(payment_kind == "A40006"){ + this.payment_kind = "年繳"; + }else if(payment_kind == "A40007"){ + this.payment_kind = "季繳"; + }else if(payment_kind == "A40003"){ + this.payment_kind = "月繳"; + }else if(payment_kind == "A40004"){ + this.payment_kind = "雙月繳"; + }else if(payment_kind == "A40005"){ + this.payment_kind = "半年繳"; + } + + this.sign1 = this.getUsername(sign1) + this.sign2 = this.getUsername(sign2) + this.sign3 = this.getUsername(sign3) + this.sign4 = this.getUsername(sign4) + }, + user_id:user_id, + apply_key:apply_key, + contractno: vol_no, + salesman: salesman, + customer: customer, + total_price: total_price, + total_sale_price: Number(total_sale_price), + elevators: [], + otherOptions:[], + elevators_total_price:0, + payment_kind: payment_kind, + memo: memo, + address: address, + case_name: case_name, + maintain_months: maintain_months, + service_fee: service_fee, + penalty: penalty, + deposit_rate: deposit_rate, + keep_rate: keep_rate, + warranty_rate: warranty_rate, + contract_begin_date: contract_begin_date, + contract_end_date: contract_end_date, + sign1:'', + sign2:'', + sign3:'', + sign4:'', + reviewcomment:'', + get single_amount(){ + console.log(this.payment_kind); + let month_amount = Number(this.total_sale_price) / Number(this.maintain_months); + let pay_times = 0; + let amount_times = 0; + if(payment_kind == "A40006"){ + amount_times = Math.round(month_amount*12) + pay_times = this.maintain_months / 12 + } + if(payment_kind == "A40007"){ + amount_times = Math.round(month_amount*3) + pay_times = this.maintain_months / 3 + } + if(payment_kind == "A40003"){ + amount_times = Math.round(month_amount) + pay_times = this.maintain_months / 1 + } + if(payment_kind == "A40004"){ + amount_times = Math.round(month_amount*2) + pay_times = this.maintain_months / 2 + } + if(payment_kind == "A40005"){ + amount_times = Math.round(month_amount*6) + pay_times = this.maintain_months / 6 + } + return { + 'amount_times': amount_times, + 'pay_times': pay_times + } + }, + get otherOptionsTotalPrice(){ + return this.otherOptions.reduce((total, option) => { + return total + (option.item_qty * option.item_unit_price); + }, 0); + }, + async getUsername(user_id){ + if(user_id == '') return '---' + const res = await axios.get('./api/getUsername.php', {params: {user_id: user_id}}) + return res.data ; + }, + check(sign, status, user_id = this.user_id ){ + console.log(sign); + const form = new FormData(); + form.append('sign', sign); + form.append('mid', this.apply_key); + form.append('result', status); + form.append('user_id', user_id); + form.append('reviewcomment', this.reviewcomment); + form.append('currentSignId', currentSignId); + form.append('token', token); + form.append('form_key', form_key); + axios.post('./api/postPricereviewSign.php', form).then(res=>{ + console.log(res.data); + if(res.data == 1){ + alert("簽核成功!"); + window.location.reload() + } + }) + }, } } \ No newline at end of file diff --git a/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg b/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg new file mode 100644 index 00000000..100ba8c7 Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg b/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg new file mode 100644 index 00000000..b3f7bc2a Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121858392743201.png b/wms/cont/pricereview-uploads/m202403121858392743201.png new file mode 100644 index 00000000..f7283401 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121858392743201.png differ diff --git a/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg b/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg new file mode 100644 index 00000000..613fa135 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg b/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg new file mode 100644 index 00000000..a182732c Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg b/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg new file mode 100644 index 00000000..8eb735ee Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg b/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg new file mode 100644 index 00000000..100ba8c7 Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg b/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg new file mode 100644 index 00000000..b3f7bc2a Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg differ diff --git a/wms/cont/pricereviewCheck.php b/wms/cont/pricereviewCheck.php index 2225044c..0c516bde 100644 --- a/wms/cont/pricereviewCheck.php +++ b/wms/cont/pricereviewCheck.php @@ -1,4 +1,678 @@ prepare($sql_str); + $stmt->bindParam(':form_key', $form_key); + $stmt->execute(); + $flow = $stmt->fetch(PDO::FETCH_ASSOC); + $apply_key = $flow['form_id']; + +} +if(!isset($_GET['apply_key']) && !isset($_GET['form_key'])){ + echo "找不到此紀錄。"; + exit; +} + +$sql_str = "SELECT * FROM con_maintance_examine_apply WHERE apply_key = :apply_key ORDER BY create_at DESC LIMIT 1"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$contract = $stmt->fetch(PDO::FETCH_ASSOC); +if(!$contract){ + echo "找不到此紀錄!"; + exit; +} + +$sql_str = "SELECT * FROM con_maintance_examine_clear WHERE (apply_key, cmstatus) = (:apply_key, 'Y') ORDER BY created_at ASC"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$elevators = $stmt->fetchAll(PDO::FETCH_ASSOC); + +$sql_str = "SELECT * FROM pricereview_maintain_item WHERE (mid, item_group) = (:apply_key, 'E') ORDER BY item_no ASC"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$otherOptions = $stmt->fetchAll(PDO::FETCH_ASSOC); + + +$contract_begin_date = new DateTime($contract['contract_begin_date']); +$contract_end_date = new DateTime($contract['contract_end_date']); +// 計算差異 +$interval = $contract_begin_date->diff($contract_end_date); +// 獲取總月數 +$contract_months = $interval->m + 12 * $interval->y + 1; +if($contract_months <= 0){ $contract_months = 1;} + +$sql_str = "SELECT * FROM pricereview_maintain_sign WHERE mid = :apply_key ORDER BY id ASC"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$sign_all = $stmt->fetchAll(PDO::FETCH_ASSOC); +$sign = $sign_all ? $sign_all[count($sign_all)-1] : []; +$currentSigner = ''; +$currentSign = 0; +$currentSignId = $sign['id'] ?? ''; +$historySign = []; +if($sign_all){ + foreach($sign_all as $key=>$sign_item){ + if($key == count($sign_all)-1){ + break; + } + $signer1 = getSignerName(explode(",", $sign_item['sign1'])[0]); + $sign1_result = explode(",", $sign_item['sign1'])[1]; + $sign1_date = explode(",", $sign_item['sign1'])[2]; + $sign1_note = $sign_item['sign1_note']; + if($sign1_result == "Y"){ + $sign1_result = "同意"; + }elseif($sign1_result == "YY"){ + $sign1_result = "結案同意"; + }elseif($sign1_result == "N"){ + $sign1_result = "不同意"; + }else{ + $sign1_result = "---"; + } + if(!empty($sign_item['sign2'])){ + $signer2 = getSignerName(explode(",", $sign_item['sign2'])[0]); + $sign2_result = explode(",", $sign_item['sign2'])[1]; + $sign2_note = $sign_item['sign2_note']; + $sign2_date = explode(",", $sign_item['sign2'])[2]; + if($sign2_result == "Y"){ + $sign2_result = "同意"; + }elseif($sign2_result == "YY"){ + $sign2_result = "結案同意"; + }elseif($sign2_result == "N"){ + $sign2_result = "不同意"; + }else{ + $sign2_result = "---"; + } + }else{ + $signer2 = "---"; + $sign2_result = "---"; + $sign2_note = "---"; + $sign2_date = "---"; + $sign2_result = "---"; + } + + + $signer3 = getSignerName(explode(",", $sign_item['sign3'])[0]); + $sign3_result = explode(",", $sign_item['sign3'])[1]; + $sign3_note = $sign_item['sign3_note']; + $sign3_date = explode(",", $sign_item['sign3'])[2]; + if($sign3_result == "Y"){ + $sign3_result = "同意"; + }elseif($sign3_result == "YY"){ + $sign3_result = "結案同意"; + }elseif($sign3_result == "N"){ + $sign3_result = "不同意"; + }else{ + $sign3_result = "---"; + } + if(!empty($sign_item['sign4'])){ + $signer4 = getSignerName(explode(",", $sign_item['sign4'])[0]); + $sign4_result = explode(",", $sign_item['sign4'])[1]; + $sign4_note = $sign_item['sign4_note']; + $sign4_date = explode(",", $sign_item['sign4'])[2]; + if($sign4_result == "Y"){ + $sign4_result = "同意"; + }elseif($sign4_result == "YY"){ + $sign4_result = "結案同意"; + }elseif($sign4_result == "N"){ + $sign4_result = "不同意"; + }else{ + $sign4_result = "---"; + } + }else{ + $signer4 = "---"; + $sign4_result = "---"; + $sign4_note = "---"; + $sign4_date = "---"; + $sign4_result = "---"; + } + + $historySign[] = [ + 'signer1'=>$signer1, + 'sign1_result'=> $sign1_result, + 'sign1_note'=>$sign1_note, + 'sign1_date'=>$sign1_date, + 'signer2'=>$signer2, + 'sign2_result'=> $sign2_result, + 'sign2_note'=>$sign2_note, + 'sign2_date'=>$sign2_date, + 'signer3'=>$signer3, + 'sign3_result'=> $sign3_result, + 'sign3_note'=>$sign3_note, + 'sign3_date'=>$sign3_date, + 'signer4'=>$signer4, + 'sign4_result'=> $sign4_result, + 'sign4_note'=>$sign4_note, + 'sign4_date'=>$sign4_date, + ]; + } + +} + +if($sign){ + // Y:已同意 N:不同意 W:待簽 + // sign1 => 處長, sign2 => 業務承辦人, sign3 => 協理, sign4 => 總經理 + if($sign['sign1'] == NULL || $sign['sign1'] ==''){ + $sign1 = NULL; + }else{ + if( explode(",", $sign['sign1'])[1] != ''){ + $sign1 = explode(",", $sign['sign1'])[1] == 'Y' ? 'Y' : 'N'; + }else{ + $sign1 = 'W'; + } + } + + if($sign['sign2'] == NULL || $sign['sign2'] ==''){ + $sign2 = NULL; + }else{ + if( explode(",", $sign['sign2'])[1] != ''){ + $sign2 = explode(",", $sign['sign2'])[1] == 'Y' ? 'Y' : 'N'; + }else{ + $sign2 = 'W'; + } + } + + if($sign['sign3'] == NULL || $sign['sign3'] ==''){ + $sign3 = NULL; + }else{ + if( explode(",", $sign['sign3'])[1] != ''){ + // $sign3 = explode(",", $sign['sign3'])[1] == 'Y' ? 'Y' : 'N'; + if(explode(",", $sign['sign3'])[1] == 'YY') $sign3 = 'YY'; + if(explode(",", $sign['sign3'])[1] == 'Y') $sign3 = 'Y'; + if(explode(",", $sign['sign3'])[1] == 'N') $sign3 = 'N'; + }else{ + $sign3 = 'W'; + } + } + if($sign['sign4'] == NULL || $sign['sign4'] ==''){ + $sign4 = NULL; + }else{ + if( explode(",", $sign['sign4'])[1] != ''){ + // $sign4 = explode(",", $sign['sign4'])[1] == 'Y' ? 'Y' : 'N'; + if(explode(",", $sign['sign4'])[1] == 'YY') $sign4 = 'YY'; + if(explode(",", $sign['sign4'])[1] == 'Y') $sign4 = 'Y'; + if(explode(",", $sign['sign4'])[1] == 'N') $sign4 = 'N'; + }else{ + $sign4 = 'W'; + } + } + + if($sign1 == 'W'){ + $currentSigner = explode(",", $sign['sign1'])[0]; + $currentSign = 1; + }elseif($sign2 == 'W'){ + $currentSigner = explode(",", $sign['sign2'])[0]; + $currentSign = 2; + }elseif($sign3 == 'W'){ + $currentSigner = explode(",", $sign['sign3'])[0]; + $currentSign = 3; + }elseif($sign4 == 'W'){ + $currentSigner = explode(",", $sign['sign4'])[0]; + $currentSign = 4; + } +}else{ + $sign1 = NULL; + $sign2 = NULL; + $sign3 = NULL; + $sign4 = NULL; +} + + + + +$permissions = false; +//開啟工務權限 +if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012" || $user_id == "M0007"){ + $permissions = true; +} +function getSignerName($signer){ + if($signer == null || $signer == '') return "---"; + global $conn; + $sql_str = "SELECT name FROM account WHERE accountid = :signer"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':signer', $signer); + $stmt->execute(); + $signer = $stmt->fetch(PDO::FETCH_ASSOC); + return $signer['name']; +} +?> + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + +
價審單號卷號營業員客戶名稱牌價總額(A)售價總額(B)破價總額(B-A)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
整機單價業務部作業區
項次規格單價(月)保養月數總價成本(月)售價(月)利潤(月)利潤率(%)
小計
+ + + + + + + + + + + + + + + + + + + +
除外項目
項次詢價單號名稱單價數量複價所屬電梯項次
+ + + + + + + + + + + + + + + + + +
付款方式金額(次)付款次數總付款金額
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
卷號營業員客戶名稱案件名稱地址
牌價總額(A)售價總額(B)破價總額(B-A)總台數服務費(介紹費)價率%(B/A)
合約開始日合約結束日
罰則訂金保證金(函)%履約保證金(函)%保固保證金(函)%
特記事項
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
審核審核人結果意見時間
區經理 + +
+ +
+ +
總經理 + +
+ + + + + + + + + + + + + +
審核意見批示售價
+ + + +
+
+ + + + + + + + + + + + + + + + + ">下載報價單 + + 下載報價單 + + + + ">下載合約用印申請表 + + 下載合約用印申請表 + +
+
+ + + \ No newline at end of file diff --git a/wms/cont/pricereviewCreate.php b/wms/cont/pricereviewCreate.php index e8eaf216..9a4dbc64 100644 --- a/wms/cont/pricereviewCreate.php +++ b/wms/cont/pricereviewCreate.php @@ -19,13 +19,13 @@ $stmt = $conn->prepare($sql_str); $stmt->bindParam(':vol_no', $vol_no); $stmt->execute(); $apply = $stmt->fetch(PDO::FETCH_ASSOC); -if($apply['status'] == 'D'){ +if($apply && $apply['status'] == 'D'){ echo ""; } -if($apply['status'] == 'YS'){ +if($apply &&$apply['status'] == 'YS'){ echo ""; } -if($apply['status'] == 'YY' || $apply['status'] == 'YN'){ +if($apply &&$apply['status'] == 'YY'){ echo ""; } @@ -76,9 +76,6 @@ $otherOptionKey = 0; foreach($items as $item){ if($item['item_no'] > $otherOptionKey){ $otherOptionKey = (int)$item['item_no']; - } - if($item['option_relate_spec']!= 0 ){ - } $toElevator = $item['option_relate_spec']==0 ? [] : [[ 'id'=>$item['option_relate_spec'], @@ -131,7 +128,7 @@ function getApplyKey($p_yyyymm, $seq_name){ } ?> - +
@@ -265,12 +262,13 @@ function getApplyKey($p_yyyymm, $seq_name){ 項次 - + + - 電梯 + 電梯 + 請選擇電梯機型 載重(KG) + 請輸入電梯載重 + 載重需大於0 停數 + 請輸入電梯停數 + 停數不得小於2 速度(m/min) @@ -303,6 +306,7 @@ function getApplyKey($p_yyyymm, $seq_name){ + 請選擇電梯速度 人乘 @@ -320,13 +324,20 @@ function getApplyKey($p_yyyymm, $seq_name){ + 請選擇電梯人乘 電梯許可證號碼 - + + 檢測費用 + + + 請輸入檢測費用 + 檢測費用不得小於0 + 品牌 + 請選擇電梯品牌 竣工檢查年度(民國) + 請輸入竣檢年度 上次年檢日期 + 請輸入年檢日期 年檢費用(元) + 請輸入年檢費用 + 年檢費用不得小於0 電梯數量 @@ -384,6 +400,7 @@ function getApplyKey($p_yyyymm, $seq_name){ + 請輸入保養週期 保養方式 @@ -393,10 +410,11 @@ function getApplyKey($p_yyyymm, $seq_name){ + 請輸入保養方式 贈送M1 - @@ -406,11 +424,13 @@ function getApplyKey($p_yyyymm, $seq_name){ 公司發布價(月) - 公司無提供此規格牌價 + 公司無提供此規格牌價 保養月數 - + + 請輸入保養月數 + 保養月數不得低於1 公司發布價(總價) @@ -419,6 +439,8 @@ function getApplyKey($p_yyyymm, $seq_name){ 契約報價(月) + 請輸入契約報價 + 契約報價不得小於0 契約報價(總價) @@ -431,7 +453,7 @@ function getApplyKey($p_yyyymm, $seq_name){
-

除外項目

+

附加項目

@@ -502,7 +524,7 @@ function getApplyKey($p_yyyymm, $seq_name){ @@ -547,11 +569,11 @@ function getApplyKey($p_yyyymm, $seq_name){ "; + echo ""; } elseif ($key == 'brand') { echo ""; } else { diff --git a/wms/cont/window-modal/modalElevaotr.php b/wms/cont/window-modal/modalElevaotr.php index 602e7c86..54c7783a 100644 --- a/wms/cont/window-modal/modalElevaotr.php +++ b/wms/cont/window-modal/modalElevaotr.php @@ -99,7 +99,7 @@ - + + - + @@ -134,7 +134,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC); - +
- + " . $row[$key] . " " . $row[$key] . "" . (!empty($row[$key]) ? $elevator_brand_arr[$row[$key]] : "") . " - @@ -107,11 +107,13 @@
電梯許可證號保養方式檢測費保養方式
+
簽約日 - +

未填寫

合約開始時間契約成交價契約成交價(月)

未填寫

@@ -143,8 +143,8 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
發票抬頭 - - + + 統一編號/身分證 @@ -217,7 +217,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC); 保養經理 - diff --git a/wms/contract/contract-renovate-input.php b/wms/contract/contract-renovate-input.php new file mode 100644 index 00000000..f965dc75 --- /dev/null +++ b/wms/contract/contract-renovate-input.php @@ -0,0 +1,471 @@ +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); +?> + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + +
+

汰改合約入力

+
+ + + + + + +
+
+
+ + + \ No newline at end of file diff --git a/wms/contract/js/alpine.js b/wms/contract/js/alpine.js index 815514c9..e78edf69 100644 --- a/wms/contract/js/alpine.js +++ b/wms/contract/js/alpine.js @@ -757,9 +757,9 @@ const contractDownload = () => { this.buydata.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' this.buystandardData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' this.buyonstandardViewData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' - this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' - this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' - this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' + this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' + this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' + this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' let buyAffixHtml = '' for (let i = 0; i < Number(this.buyAffix); i++) { buyAffixHtml += `
${numberToSmallChinese(i + 1)}、附表${numberToSmallChinese(i + 1)}                                                       共 1 張` @@ -789,9 +789,9 @@ const contractDownload = () => { this.buydata.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' this.buystandardData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' this.buyonstandardViewData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。' - this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' - this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' - this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。' + this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' + this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' + this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:
乙方應於接獲甲方圖色確認第 ' + this.buyfill1 + ' 日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。於指定出貨日期,且乙方備妥材料後,如甲方向後延展出貨日期,如延展日期逾三個月,乙方得酌收額外增生之倉儲保管費用。' let buyAffixHtml = '' for (let i = 0; i < Number(this.buyAffix); i++) { buyAffixHtml += `
${numberToSmallChinese(i + 1)}、附表${numberToSmallChinese(i + 1)}                                                       共 1 張` @@ -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 => { + + }) + } + } } \ No newline at end of file diff --git a/wms/mkt/api/postFlow.php b/wms/mkt/api/postFlow.php index 10fbeaf0..736049f5 100644 --- a/wms/mkt/api/postFlow.php +++ b/wms/mkt/api/postFlow.php @@ -7,7 +7,8 @@ function createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key=null) $system_id = "prm"; if($ekind == "新梯") $flow_id = "prm01"; if($ekind == "汰改") $flow_id = "prm02"; - if($ekind == "保養") $flow_id = "prm03"; + if($ekind == "修理") $flow_id = "prm03"; + if($ekind == "保養") $flow_id = "prm04"; if($form_key == null){ $sql_str = "SELECT appwms.nextval('form_key') form_key"; diff --git a/wms/mkt/api/postNewElevatorPricereview.php b/wms/mkt/api/postNewElevatorPricereview.php index 911647f8..1c467f85 100644 --- a/wms/mkt/api/postNewElevatorPricereview.php +++ b/wms/mkt/api/postNewElevatorPricereview.php @@ -695,13 +695,24 @@ try{ $sign3, ]; $sign_total = count(array_filter($signArr, fn($item)=> $item != NULL)); - //是否呈核至總經理(M0006) ,暫時不送至總經理,所以加入false - if((false && $price_rate < 80 || $special_fee > 0)){ - $sign4 = "M0006,,"; - $sign_total += 1; - }else{ - $sign4 = NULL; + if($ekind == "新梯"){ + //是否呈核至總經理(M0006) ,暫時不送至總經理,所以加入false + if((false && $price_rate < 80 || $special_fee > 0)){ + $sign4 = "M0006,,"; + $sign_total += 1; + }else{ + $sign4 = NULL; + } + } + if($ekind == "汰改"){{ + if(($price_rate < 75 || $special_fee > 0)){ + $sign4 = "M0006,,"; + $sign_total += 1; + }else{ + $sign4 = NULL; + } } + $sql_str = "INSERT INTO pricereview_sign (mid, sign1, sign2, sign3, sign4, sign_total) VALUES (:mid, :sign1, :sign2, :sign3, :sign4, :sign_total)"; $stmt = $conn->prepare($sql_str); diff --git a/wms/mkt/assets/js/pricereviewAlpine0311.js b/wms/mkt/assets/js/pricereviewAlpine0311.js index 8208b859..2a2b338c 100644 --- a/wms/mkt/assets/js/pricereviewAlpine0311.js +++ b/wms/mkt/assets/js/pricereviewAlpine0311.js @@ -819,6 +819,7 @@ const pricereviewCreate = ()=>{ error: [], validation(){ this.error = [] + if(this.totalElevatorsNum() == 0) this.error.push("請至少輸入一種電梯"); for(let i=0;i{ return this.error.length > 0 ? false : true }, submit(){ - console.log(this.is_renovation); const validation = this.validation(); if(!validation) return const form = new FormData(); diff --git a/wms/mkt/pricereview-index.php b/wms/mkt/pricereview-index.php index 1026efe8..53364962 100644 --- a/wms/mkt/pricereview-index.php +++ b/wms/mkt/pricereview-index.php @@ -497,6 +497,10 @@ if ($data) : } elseif ($data['status'] == 'YN' && $data['id'] == $maxContractID) { ?> 重填價審 + + 重新提交
- +
diff --git a/wms/mkt/pricereviewCreate.php b/wms/mkt/pricereviewCreate.php index 2860cc2c..9f9efd10 100644 --- a/wms/mkt/pricereviewCreate.php +++ b/wms/mkt/pricereviewCreate.php @@ -34,10 +34,13 @@ if(isset($_GET['id'])){ $main = $stmt->fetch(PDO::FETCH_ASSOC); $vol_no = $main['contractno']; } -if($main && $main['status'] == 'YS'){ - echo ""; - exit; +if($main){ + if((!($main['status'] == 'Y1' || $main['status'] == 'YY' || $main['status'] == 'YN')) ){ + echo ""; + exit; + } } + $hope_status = [ 'A'=>'有望簽約(已報價)', 'B'=>'觀望考慮(等待時機報價)', @@ -274,7 +277,7 @@ if($main){ $stmt->bindParam(':form_id', $id); $stmt->execute(); $flow = $stmt->fetch(PDO::FETCH_ASSOC); - $form_key = $flow['form_key']; + $form_key = $flow['form_key'] ?? null; }else{ //獲取有望客戶電梯規格 $sql_str = "SELECT diff --git a/wms/purchase-api.php b/wms/purchase-api.php new file mode 100644 index 00000000..c3259ef6 --- /dev/null +++ b/wms/purchase-api.php @@ -0,0 +1,49 @@ + prepare($sql_purchaseApply); + $query_purchaseApply -> execute(); + $result = $query_purchaseApply -> fetchAll(); + return $result; +} + + + + +// print_r(get_purchase_apply($validation,$GroupId,"S230300001-14")); +//費用申請單API 不能用 +function get_purchase_apply($validation,$GroupId,$BillNo){ + $apiurl = "http://60.244.87.101:880//twWebAPI/V1/PURFEEAPPLY/GetERPData?pkValue=$BillNo"; + // echo $apiurl . "\n"; + $headerParam = [ + 'CHI_Authorization: ' . $validation, + 'GroupId:'.$GroupId + ]; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $apiurl); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headerParam); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); + + $response = curl_exec($ch); + if ($response === false) { + echo 'Curl error: ' . curl_error($ch); + } else { + $result = json_decode($response, true); + print_r($result); + } + + curl_close($ch); +} \ No newline at end of file diff --git a/wms/purchase-apply-index.php b/wms/purchase-apply-index.php new file mode 100644 index 00000000..331d2a51 --- /dev/null +++ b/wms/purchase-apply-index.php @@ -0,0 +1,36 @@ +'; // print_r($sql_get); @@ -196,6 +196,7 @@ function getPricereviewDataByFormkey($form_key){ text-align: right; } +
卷號
@@ -240,7 +241,7 @@ function getPricereviewDataByFormkey($form_key){
- +
@@ -313,10 +314,18 @@ function getPricereviewDataByFormkey($form_key){
序號
+ \ No newline at end of file +?> +