From 75a7bf5a5d279afa0e2404deeef1993cc1c8fff1 Mon Sep 17 00:00:00 2001
From: Cheng
Date: Wed, 13 Dec 2023 11:00:18 +0800
Subject: [PATCH] header
---
wms/IncludeCommon.php | 206 +-
wms/T8_APItest.php | 180 +-
wms/T8_APItest_from_bpm.php | 99 +
wms/T8_Authorization.php | 72 +-
wms/T8_Authorization_from_bpm.php | 43 +
wms/T8_assemble_apply.php | 140 +-
wms/T8_purBillOrder_search.php | 46 +-
wms/T8_purRequestOrder_create.php | 88 +-
wms/account-create.php | 360 +-
wms/account-delete.php | 36 +-
wms/account-edit.php | 346 +-
wms/account-index-submit.php | 170 +-
wms/account-index.php | 371 +-
wms/account-receivable-check.php | 452 +-
wms/account-receivable-contract.php | 76 +-
wms/account-receivable-excel.php | 51 +
wms/account-receivable-index.php | 746 +--
wms/account-receivable-received-create.php | 243 +-
wms/account-receivable-received-edit.php | 261 +-
wms/account-receivable-received-submit.php | 180 +-
wms/account-receivable.xlsx | Bin 0 -> 55801 bytes
wms/account-record-submit.php | 148 +-
wms/account-record-update.php | 130 +-
wms/account-user-input.php | 130 +-
wms/account_auth-create.php | 354 +-
wms/account_auth-edit.php | 364 +-
wms/account_auth-index.php | 209 +-
wms/account_auth-record-update.php | 128 +-
wms/bargain-create.php | 624 +--
wms/bargain-delete.php | 56 +-
wms/bargain-edit.php | 748 +--
wms/bargain-index.php | 286 +-
wms/bargain-record-submit.php | 296 +-
wms/bargain-record-update.php | 286 +-
wms/board-create.php | 129 +-
wms/board-delete.php | 44 +-
wms/board-edit.php | 118 +-
wms/board-file.php | 36 +-
wms/board-index.php | 307 +-
wms/board-record-submit.php | 103 +-
wms/board-record-update.php | 102 +-
wms/change-password-update.php | 94 +-
wms/change-password.php | 152 +-
wms/combo-create.php | 172 +-
wms/combo-delete.php | 22 +-
wms/combo-edit.php | 186 +-
wms/combo-index.php | 278 +-
wms/combo-record-submit.php | 84 +-
wms/combo-record-update.php | 80 +-
wms/combo-user-input.php | 108 +-
wms/contract-create.php | 252 +-
wms/contract-delete.php | 22 +-
wms/contract-edit.php | 284 +-
wms/contract-index.php | 324 +-
wms/contract-record-submit.php | 122 +-
wms/contract-record-update.php | 98 +-
wms/contract-user-input.php | 126 +-
wms/custom-create-contract.php | 452 +-
wms/custom-create-facility.php | 544 +-
wms/custom-create-schedule.php | 460 +-
wms/custom-create.php | 766 +--
wms/data_collection_merge_export_submit.php | 222 +-
wms/database.php | 84 +-
wms/delivery_info-create.php | 184 +-
wms/delivery_info-delete.php | 22 +-
wms/delivery_info-edit.php | 208 +-
wms/delivery_info-index.php | 292 +-
wms/delivery_info-record-submit.php | 98 +-
wms/delivery_info-record-update.php | 86 +-
wms/delivery_info-user-input.php | 116 +-
wms/delivery_log-create.php | 132 +-
wms/delivery_log-delete.php | 22 +-
wms/delivery_log-edit.php | 150 +-
wms/delivery_log-index.php | 272 +-
wms/delivery_log-record-submit.php | 76 +-
wms/delivery_log-record-update.php | 74 +-
wms/delivery_log-user-input.php | 106 +-
wms/demo.dart | 8 +-
wms/ec_purchase_order_submit.php | 376 +-
wms/equipment-create.php | 200 +-
wms/equipment-delete.php | 22 +-
wms/equipment-edit.php | 226 +-
wms/equipment-index.php | 300 +-
wms/equipment-record-submit.php | 244 +-
wms/equipment-record-update.php | 158 +-
wms/equipment-user-input.php | 114 +-
wms/estimated_shipping_date_report.php | 2676 +++++-----
wms/excel-upload.php | 488 +-
wms/expert-create.php | 262 +-
wms/expert-delete.php | 22 +-
wms/expert-edit.php | 252 +-
wms/expert-index.php | 308 +-
wms/expert-record-submit.php | 272 +-
wms/expert-record-update.php | 168 +-
wms/expert-user-input.php | 118 +-
wms/facility-create.php | 252 +-
wms/facility-delete.php | 22 +-
wms/facility-edit.php | 306 +-
wms/facility-excel-upload.php | 230 +-
wms/facility-index.php | 320 +-
wms/facility-record-submit.php | 118 +-
wms/facility-record-update.php | 96 +-
wms/facility-user-input.php | 122 +-
wms/facility_current_status-create.php | 130 +-
wms/facility_current_status-delete.php | 22 +-
wms/facility_current_status-edit.php | 146 +-
wms/facility_current_status-index.php | 270 +-
wms/facility_current_status-record-submit.php | 76 +-
wms/facility_current_status-record-update.php | 74 +-
wms/facility_current_status-user-input.php | 104 +-
wms/facilityapi.php | 112 +-
wms/footer.php | 12 +-
wms/forms-create.php | 90 +-
wms/forms-delete.php | 44 +-
wms/forms-edit.php | 88 +-
wms/forms-file.php | 36 +-
wms/forms-index.php | 208 +-
wms/forms-record-submit.php | 94 +-
wms/forms-record-update.php | 92 +-
wms/fun_global.php | 1175 ++---
wms/gary.php | 184 +-
wms/gary_info.php | 4 +-
wms/header.php | 556 +--
wms/header_nomenu.php | 48 +-
wms/headerapi.php | 48 +-
wms/index.php | 430 +-
wms/login.php | 298 +-
wms/loginapi.php | 148 +-
wms/logout.php | 28 +-
wms/maintenance.php | 152 +-
wms/meeting-create.php | 284 +-
wms/meeting-delete.php | 138 +-
wms/meeting-edit.php | 384 +-
wms/meeting-index.php | 252 +-
wms/meeting-record-submit.php | 156 +-
wms/meeting-record-update.php | 206 +-
wms/menu-create.php | 194 +-
wms/menu-delete.php | 22 +-
wms/menu-edit.php | 395 +-
wms/menu-index.php | 252 +-
wms/menu-record-submit.php | 56 +-
wms/menu-record-update.php | 201 +-
wms/new-elevator-contract-create.php | 140 +-
wms/new-order-contract-excel-upload.php | 356 +-
wms/ngfeedback-create-submit.php | 120 +-
wms/ngfeedback-create.php | 390 +-
wms/ngfeedback-index.php | 936 ++--
wms/ngfeedback-update-reply-submit.php | 88 +-
wms/ngfeedback-update-reply.php | 344 +-
wms/ngfeedback-update-submit.php | 182 +-
wms/ngfeedback-update.php | 470 +-
wms/ngfeedbackapi.php | 46 +-
wms/notice-delete.php | 20 +-
wms/notice-edit.php | 92 +-
wms/notice-index.php | 210 +-
wms/pending_list.php | 238 +-
wms/pre_order-create.php | 264 +-
wms/pre_order-delete.php | 22 +-
wms/pre_order-edit.php | 302 +-
wms/pre_order-index.php | 326 +-
wms/pre_order-record-submit.php | 130 +-
wms/pre_order-record-update.php | 100 +-
wms/pre_order-user-input.php | 126 +-
wms/purchase-create.php | 366 +-
wms/purchase-record-submit.php | 124 +-
wms/ranking-create.php | 534 +-
wms/receivable-create.php | 212 +-
wms/receivable-delete.php | 22 +-
wms/receivable-edit.php | 230 +-
wms/receivable-index.php | 282 +-
wms/receivable-record-submit.php | 96 +-
wms/receivable-record-update.php | 86 +-
wms/receivable-user-input.php | 118 +-
wms/reimburse-import.php | 60 +-
wms/reimburse-import01.php | 60 +-
wms/repair-create.php | 262 +-
wms/repair-delete.php | 22 +-
wms/repair-edit.php | 304 +-
wms/repair-index.php | 334 +-
wms/repair-record-submit.php | 132 +-
wms/repair-record-update.php | 98 +-
wms/repair-user-input.php | 130 +-
wms/rib-feeapply-test.php | 22 +-
wms/rib-test.php | 182 +-
wms/rib-test02.php | 68 +-
wms/rib01-business-check.php | 560 +--
wms/rib01-business-create.php | 438 +-
wms/rib01-business-edit.php | 360 +-
wms/rib01-business-index.php | 482 +-
wms/rib01-business-submit.php | 60 +-
wms/rib01-check.php | 810 +--
wms/rib01-create.php | 20 +-
wms/rib01-delete.php | 140 +-
wms/rib01-edit.php | 662 +--
wms/rib01-index.php | 440 +-
wms/rib01-submit.php | 208 +-
wms/rib02-business-create.php | 890 ++--
wms/rib02-check.php | 588 +--
wms/rib02-create.php | 1408 +++---
wms/rib02-delete.php | 74 +-
wms/rib02-edit.php | 1442 +++---
wms/rib02-invoice.php | 38 +-
wms/rib02-purReceive-submit.php | 176 +-
wms/rib02-purchase-submit.php | 176 +-
wms/rib02-submit.php | 466 +-
wms/rib03-download.php | 188 +-
wms/rib03-submit.php | 796 +--
wms/schedule-create.php | 272 +-
wms/schedule-delete.php | 22 +-
wms/schedule-edit.php | 290 +-
wms/schedule-index.php | 564 +--
wms/schedule-record-submit.php | 138 +-
wms/schedule-record-update.php | 122 +-
wms/schedule-user-input.php | 140 +-
wms/schedule_check-create.php | 376 +-
wms/schedule_check-delete.php | 20 +-
wms/schedule_check-edit.php | 340 +-
wms/schedule_check-facility.php | 128 +-
wms/schedule_check-import.php | 264 +-
wms/schedule_check-index.php | 322 +-
wms/schedule_check-record-submit.php | 84 +-
wms/schedule_check-record-update.php | 76 +-
wms/schedule_star-index.php | 444 +-
wms/scheduleapi.php | 110 +-
wms/wipinstallation-create.php | 154 +-
wms/wipinstallation-delete.php | 22 +-
wms/wipinstallation-edit.php | 172 +-
wms/wipinstallation-index.php | 280 +-
wms/wipinstallation-record-submit.php | 84 +-
wms/wipinstallation-record-update.php | 76 +-
wms/wipinstallation-user-input.php | 108 +-
wms/wipproduction-create.php | 166 +-
wms/wipproduction-delete.php | 22 +-
wms/wipproduction-edit.php | 186 +-
wms/wipproduction-index.php | 302 +-
wms/wipproduction-record-submit.php | 88 +-
wms/wipproduction-record-update.php | 78 +-
wms/wipproduction-user-input.php | 110 +-
wms/wipwhole-change-contractdate-function.php | 1350 ++---
wms/wipwhole-change-contractdate-submit.php | 606 +--
wms/wipwhole-change-contractdate.php | 1043 ++--
...change-planning-customer-name-function.php | 1406 +++---
...e-change-planning-customer-name-submit.php | 462 +-
...wipwhole-change-planning-customer-name.php | 970 ++--
wms/wipwhole-index-export-excel.php | 804 +--
wms/wipwhole-index-first-insert.php | 1288 ++---
wms/wipwhole-index-function.php | 2420 ++++-----
wms/wipwhole-index-table-html.php | 15 +-
wms/wipwhole-index.php | 1082 ++--
wms/wipwhole-rec-invoice-edit-fileupload.php | 140 +-
wms/wipwhole-rec-invoice-edit-submit.php | 2259 +++++----
wms/wipwhole-rec-invoice-edit.php | 4444 +++++++++--------
wms/wipwhole-rec-invoice.php | 1753 +++----
wms/wipwhole-rec-renovate-invoice.php | 1716 +++----
wms/wipwhole-renovate-index-export-excel.php | 828 +--
wms/wipwhole-renovate-index-function.php | 2279 ++++-----
wms/wipwhole-renovate-index-table-html.php | 15 +-
wms/wipwhole-renovate-index.php | 220 +-
wms/wipwhole-renovate-rec-invoice.php | 1847 +++----
wms/wipwholeinstall-index-export-excel.php | 438 +-
wms/wipwholeinstall-index-first-insert.php | 388 +-
wms/wipwholeinstall-index-function.php | 2300 ++++-----
wms/wipwholeinstall-index-table-html.php | 408 +-
wms/wipwholeinstall-index.php | 768 +--
...oleinstall-renovate-index-export-excel.php | 402 +-
...ipwholeinstall-renovate-index-function.php | 2344 ++++-----
...wholeinstall-renovate-index-table-html.php | 491 +-
wms/wipwholeinstall-renovate-index.php | 762 +--
268 files changed, 45944 insertions(+), 44355 deletions(-)
create mode 100644 wms/T8_APItest_from_bpm.php
create mode 100644 wms/T8_Authorization_from_bpm.php
create mode 100644 wms/account-receivable-excel.php
create mode 100644 wms/account-receivable.xlsx
diff --git a/wms/IncludeCommon.php b/wms/IncludeCommon.php
index 1092255d..b11be99b 100644
--- a/wms/IncludeCommon.php
+++ b/wms/IncludeCommon.php
@@ -1,67 +1,65 @@
$explode[3]) {
- $data['user_id'] = '';
- $data['code'] = '401';
- $data['message'] = 'Token已过期,请重新登录';
- return $data;
- }
- if (($true_signature == $explode[4])) {
- $data['user_id'] = $explode[0];
- $data['code'] = '200';
- $data['message'] = 'Token合法';
- return $data;
- } else {
- $data['user_id'] = '';
- $data['code'] = '400';
- $data['message'] = 'Token不合法';
- return $data;
- }
- } else {
- $data['user_id'] = '';
- $data['code'] = '400';
- $data['message'] = 'Token不合法';
- return $data;
- }
- }
- //生成登录记录
- function save_log_response($account, $response_result, $source_flag = 'web')
- {
- # 储存纪录并输出
- #echo date("Y-m-d");
- $file_path = "account_log/" . $account . "-" . date("Y-m-d") . ".ini";
- $data = serialize($response_result) . date("H:i:s") . "\n";
- $fp = fopen($file_path, "a"); # 如果档案不存在择尝试建立再写入
- fwrite($fp, $data);
- fclose($fp);
- if ($source_flag == "web") {
- // header("Location: custom-create.php?function_list=" . serialize($response_result) .
- // "&token=" . $response_result["token"]); #请输入使用者名称密码
- // exit();
- return true;
- } else {
- // echo json_encode($response_result, JSON_UNESCAPED_UNICODE);
- return false;
- }
+ function CheckToken($token) {
+ date_default_timezone_set("Asia/Taipei");
+ $encryption_code = "MASADA!^***";
+ $time = date("Y-m-d H:i:s");
+
+ if (!isset($token) || empty($token)) {
+ $data['code'] = '400';
+ $data['message'] = '非法请求';
+ return $data;
+ }
+ //对比token
+ $explode = explode('.', $token); //以.分割token为数组
+ if (!empty($explode[0]) && !empty($explode[1]) && !empty($explode[2]) && !empty($explode[3]) && !empty($explode[4])) {
+ $info = $explode[0] . '.' . $explode[1] . '.' . $explode[2] . '.' . $explode[3]; //信息部分
+ $true_signature = hash_hmac('md5', $info, $encryption_code); //正确的签名
+ if ($time > $explode[3]) {
+ $data['user_id'] = '';
+ $data['code'] = '401';
+ $data['message'] = 'Token已过期,请重新登录';
+ return $data;
+ }
+ if (($true_signature == $explode[4])) {
+ $data['user_id'] = $explode[0];
+ $data['code'] = '200';
+ $data['message'] = 'Token合法';
+ return $data;
+ } else {
+ $data['user_id'] = '';
+ $data['code'] = '400';
+ $data['message'] = 'Token不合法';
+ return $data;
+ }
+ } else {
+ $data['user_id'] = '';
+ $data['code'] = '400';
+ $data['message'] = 'Token不合法';
+ return $data;
+ }
+ }
+//生成登录记录
+ function save_log_response($source_flag='web', $account, $response_result){
+ # 储存纪录并输出
+ #echo date("Y-m-d");
+ $file_path = "account_log/" . $account . "-" . date("Y-m-d") . ".ini";
+ $data = serialize($response_result). date("H:i:s") . "\n";
+ $fp = fopen($file_path,"a"); # 如果档案不存在择尝试建立再写入
+ fwrite($fp, $data);
+ fclose($fp);
+ if ($source_flag == "web"){
+// header("Location: custom-create.php?function_list=" . serialize($response_result) .
+// "&token=" . $response_result["token"]); #请输入使用者名称密码
+// exit();
+ return true;
+ }else{
+// echo json_encode($response_result, JSON_UNESCAPED_UNICODE);
+ return false;
+ }
- /*
+ /*
if ($source_flag == "app"){
echo json_encode($response_result, JSON_UNESCAPED_UNICODE);
}elseif ($source_flag == "web"){
@@ -70,28 +68,26 @@ class IncludeCommon
exit();
}
*/
- }
-
- //生成token
- function CreateToken($user_id, $user_name)
- {
- date_default_timezone_set("Asia/Taipei");
- $start_time = date("Y-m-d H:i:s");
- $end_time = date('Y-m-d H:i:s', strtotime('+24 hour')); #设定24小时
- $info = $user_id . '.' . base64_encode(urlencode($user_name)) . '.' . $start_time . '.' . $end_time; //设置token过期时间为一天
- $encryption_code = "MASADA!^***";
- //根据以上信息信息生成签名(密钥为 SIGNATURE 自定义全局常量)
- $signature = hash_hmac('md5', $info, $encryption_code);
- //最后将这两部分拼接起来,得到最终的Token字符串
- return $token = $info . '.' . $signature;
- }
- //生成菜单
+ }
+
+//生成token
+ function CreateToken($user_id, $user_name) {
+ date_default_timezone_set("Asia/Taipei");
+ $start_time = date("Y-m-d H:i:s");
+ $end_time = date('Y-m-d H:i:s',strtotime('+24 hour')); #设定24小时
+ $info = $user_id . '.' . base64_encode(urlencode($user_name)) . '.' . $start_time . '.' . $end_time; //设置token过期时间为一天
+ $encryption_code = "MASADA!^***";
+ //根据以上信息信息生成签名(密钥为 SIGNATURE 自定义全局常量)
+ $signature = hash_hmac('md5', $info, $encryption_code);
+ //最后将这两部分拼接起来,得到最终的Token字符串
+ return $token = $info . '.' . $signature;
+ }
+//生成菜单
/**
* 將模擬帳號寫入token
*/
- function FakeToken($fake_user_id, $token)
- {
+ function FakeToken($fake_user_id, $token) {
date_default_timezone_set("Asia/Taipei");
$encryption_code = "MASADA!^***";
$time = date("Y-m-d H:i:s");
@@ -101,32 +97,31 @@ class IncludeCommon
return $token = $info . '.' . $signature;
}
- function menu($type, $from = 'tw')
- {
- $function_type = array(
- "tw" => array(
- # F角色菜单
- "F" => array(
- "language" => "tw",
- "type" => "manage",
- "list" => array(
- array("name" => "批量导入", "path" => "http://192.168.0.12/wms/excel-upload"),
- ),
- "note" => "none",
- "token" => ""
- ),
- )
- );
-
-
- return $function_type[$from][$type];
- }
+ function menu ($from='tw',$type){
+ $function_type = array(
+ "tw" => array(
+ # F角色菜单
+ "F" => array(
+ "language" => "tw",
+ "type" => "manage",
+ "list" => array(
+ array("name" => "批量导入", "path" => "http://192.168.0.12/wms/excel-upload"),
+ ),
+ "note" => "none",
+ "token" => ""
+ ),
+ )
+ );
+
+
+ return $function_type[$from][$type];
+
+ }
/**
* 依帳號類別檢視功能目錄
*/
- function menu_v2($atype = "")
- {
+ function menu_v2($atype="") {
global $link;
if (!$atype) return;
@@ -145,8 +140,7 @@ class IncludeCommon
* 管理者可看到全部選單
* 其餘人員依account_auth決定可檢視的選單
*/
- function menu_v3($accounttype, $aid = "")
- {
+ function menu_v3($aid="", $accounttype) {
global $link;
if (!$aid) return;
@@ -155,7 +149,7 @@ class IncludeCommon
$sql_cmd = ($accounttype == "E") ? "" : "where status = 'Y'";
$sql = "select main_menu, sub_menu, sub_menu_eng, mlink from menu $sql_cmd order by main_menu_seq, sub_menu_seq";
-
+
$res = mysqli_query($link, $sql);
while ($row = mysqli_fetch_assoc($res)) {
$menu_arr[$row["mlink"]]["main_menu"] = $row["main_menu"];
@@ -167,8 +161,8 @@ class IncludeCommon
$sql = "select permission from account_auth where accountid = '$aid'";
$res = mysqli_query($link, $sql);
$row = mysqli_fetch_row($res);
- $permission = empty($row) ? json_encode([]) : $row[0]; // $permission = $row[0]; //P0044 修改于2023/6/13 16:30
-
+ $permission = empty($row)? json_encode([]): $row[0]; // $permission = $row[0]; //P0044 修改于2023/6/13 16:30
+
$permission_arr = json_decode($permission, true);
foreach ($menu_arr as $key => $val) {
if (($accounttype == "E") || !empty($permission_arr[$key])) {
@@ -215,4 +209,4 @@ class IncludeCommon
return $str;
*/
}
-}
+}
\ No newline at end of file
diff --git a/wms/T8_APItest.php b/wms/T8_APItest.php
index d327c6e5..6f89ee68 100644
--- a/wms/T8_APItest.php
+++ b/wms/T8_APItest.php
@@ -1,91 +1,91 @@
-
-
\ No newline at end of file
diff --git a/wms/T8_APItest_from_bpm.php b/wms/T8_APItest_from_bpm.php
new file mode 100644
index 00000000..483b0e22
--- /dev/null
+++ b/wms/T8_APItest_from_bpm.php
@@ -0,0 +1,99 @@
+ "stkAssyMast",
+ "rows" => [
+ [
+ "BillNo" => "TEST06",
+ "OrgId" => "1000",
+ "TypeId" => "CA",
+ "MaterialId" => "3MH00302",
+ "PersonId" => "M0122",
+ "CompId" => "1001",
+ "DeptId" => "220",
+ "SQuantity" => 1,
+ "SUnitId" => "SET",
+ "CurrentState" => 2,
+ "CreatorId" => "M0122"
+ ]
+ ]
+ ],
+ [
+ "name" => "stkAssySubMatInfo",
+ "rows" => [
+ [
+ "BillNo" => "TEST06",
+ "MaterialId" => "3MH00302P",
+ "ComponentBaseQty" => 1,
+ "UnitQty" => 1,
+ "SUnitId" => "SET",
+ "MarkerNo" => "3MH00302",
+ "CU_MaterialId" => "3MH00302"
+ ],
+ [
+ "BillNo" => "TEST06",
+ "MaterialId" => "MX00000001",
+ "ComponentBaseQty" => 1,
+ "UnitQty" => 3,
+ "SUnitId" => "PCS",
+ "MarkerNo" => "3MH00302",
+ "CU_MaterialId" => "3MH00302"
+ ]
+ ]
+ ]
+ ];
+
+ $json = json_encode($body);
+
+ $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, "POST");
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
+
+ $response = curl_exec($ch);
+
+ if ($response === false) {
+ echo 'Curl error: ' . curl_error($ch);
+ } else {
+ $result = json_decode($response, true);
+ echo $result['Status'] . "\n";
+ echo $result['ErrorMsg'] . "\n";
+ print_r($result['Data']);
+ }
+
+ curl_close($ch);
+}
diff --git a/wms/T8_Authorization.php b/wms/T8_Authorization.php
index 0a18e7ed..f383ee47 100644
--- a/wms/T8_Authorization.php
+++ b/wms/T8_Authorization.php
@@ -1,37 +1,37 @@
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/wms/T8_Authorization_from_bpm.php b/wms/T8_Authorization_from_bpm.php
new file mode 100644
index 00000000..c6ad6829
--- /dev/null
+++ b/wms/T8_Authorization_from_bpm.php
@@ -0,0 +1,43 @@
+
-
\ No newline at end of file
diff --git a/wms/T8_purBillOrder_search.php b/wms/T8_purBillOrder_search.php
index e3ff95f4..91ebfa26 100644
--- a/wms/T8_purBillOrder_search.php
+++ b/wms/T8_purBillOrder_search.php
@@ -1,23 +1,23 @@
-query($sql_purBillOrder);
-//每筆採購單資料
-foreach($purMaster as $master){
- //print_r($master);
- $BillNo = $master['BillNo'];
-
- //每筆採購單明細資料
- $sql_purDetail = "
- SELECT * FROM purBillOrderDetail WHERE BillNo = '$BillNo'";
- $purDetail = $conn->query($sql_purDetail);
- foreach($purDetail as $detail){
- print_r($detail);
- }
- echo " ---------------------- ";
-
-}
-
+query($sql_purBillOrder);
+//每筆採購單資料
+foreach($purMaster as $master){
+ //print_r($master);
+ $BillNo = $master['BillNo'];
+
+ //每筆採購單明細資料
+ $sql_purDetail = "
+ SELECT * FROM purBillOrderDetail WHERE BillNo = '$BillNo'";
+ $purDetail = $conn->query($sql_purDetail);
+ foreach($purDetail as $detail){
+ print_r($detail);
+ }
+ echo " ---------------------- ";
+
+}
+
diff --git a/wms/T8_purRequestOrder_create.php b/wms/T8_purRequestOrder_create.php
index 2b441114..4df7938a 100644
--- a/wms/T8_purRequestOrder_create.php
+++ b/wms/T8_purRequestOrder_create.php
@@ -1,45 +1,45 @@
-query($sql);
+query($sql);
$conn ->query($sql_sub);
\ No newline at end of file
diff --git a/wms/account-create.php b/wms/account-create.php
index 89f2715d..73d8f839 100644
--- a/wms/account-create.php
+++ b/wms/account-create.php
@@ -1,180 +1,180 @@
-
-
-
-
- Please fill up the required field!";
- } else {
- echo "
Record has added successfully
";
- }
- }
- */
- ?>
-
-
-
-
-
-
-
+
+
+
+
+ Please fill up the required field!";
+ } else {
+ echo "
Record has added successfully
";
+ }
+ }
+ */
+ ?>
+
+
+
+
+
+
+
diff --git a/wms/account-delete.php b/wms/account-delete.php
index 84654d95..811f23a8 100644
--- a/wms/account-delete.php
+++ b/wms/account-delete.php
@@ -1,19 +1,19 @@
-
\ No newline at end of file
diff --git a/wms/account-edit.php b/wms/account-edit.php
index 1d10b8f7..3892d111 100644
--- a/wms/account-edit.php
+++ b/wms/account-edit.php
@@ -1,173 +1,173 @@
-getMessage(), "\n";
- }
-*/
- foreach($data as $data) :
-?>
-
-
-
-
+getMessage(), "\n";
+ }
+*/
+ foreach($data as $data) :
+?>
+
+
+
+
diff --git a/wms/account-index-submit.php b/wms/account-index-submit.php
index a00176f3..26e75cc4 100644
--- a/wms/account-index-submit.php
+++ b/wms/account-index-submit.php
@@ -1,85 +1,85 @@
-sendx($subject, $em_body, $sendlist, "永佳捷科技", "", $file);
- echo json_encode([1, "信件發送成功"]);
-}
+sendx($subject, $em_body, $sendlist, "永佳捷科技", "", $file);
+ echo json_encode([1, "信件發送成功"]);
+}
diff --git a/wms/account-index.php b/wms/account-index.php
index ed0e9e1d..acba0023 100644
--- a/wms/account-index.php
+++ b/wms/account-index.php
@@ -1,173 +1,198 @@
- "客戶", "B" => "保養人員", "C" => "檢查人員", "D" => "契約人員", "M" => "員工", "E" => "管理員(IT)", "X" => "未分類"]; #A=客戶 B=保養人員 C=檢查人員 D=契約人員 E=管理人員 M=永佳捷員工 X=未分類
-
-// 工務總處、王凱欣可瀏覽全部資料
-$sql = "select department_id from account where accountid = '$user_id'";
-$res = mysqli_query($link, $sql);
-$row = mysqli_fetch_row($res);
-$user_department_id = $row[0];
-mysqli_free_result($res);
-
-// 設置一個空陣列來放資料
-$data = array();
-// sql語法存在變數中
-$sql_cmd = sql_myself($user_id);
-if ($user_department_id == "501" || $user_id == "M0105") $sql_cmd = "";
-$sql = "SELECT * FROM account $sql_cmd ORDER BY id";
-// 用mysqli_query方法執行(sql語法)將結果存在變數中
-$data = mysqli_query($link,$sql);
-?>
-
-
-
-
-
-
-
-
-Please fill up the required field!
";
- } else {
- header("Location:account-index.php");
- }
- }
-
-?>
-
-
-
-
-
-
-
- 項次
- 帳號類型
- 帳號
-
- 姓名
- 電話
- 地址
- 電子郵件
- Line ID
- 微信id
- 遠端協助
- 維修ID
- 直屬主管
- 建檔人
- 建檔時間
-
- 修改
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 連結
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-There is no record!";
-endif;
-
-#代表結束連線
-mysqli_close($link);
-
-include "footer.php";
-
-?>
+ "客戶", "B" => "保養人員", "C" => "檢查人員", "D" => "契約人員", "M" => "員工", "E" => "管理員(IT)", "X" => "未分類"]; #A=客戶 B=保養人員 C=檢查人員 D=契約人員 E=管理人員 M=永佳捷員工 X=未分類
+
+// 工務總處、王凱欣可瀏覽全部資料
+$sql = "select department_id from account where accountid = '$user_id'";
+$res = mysqli_query($link, $sql);
+$row = mysqli_fetch_row($res);
+$user_department_id = $row[0];
+mysqli_free_result($res);
+
+// 設置一個空陣列來放資料
+$data = array();
+// sql語法存在變數中
+$sql_cmd = sql_myself($user_id);
+if ($user_department_id == "501" || $user_id == "M0105") $sql_cmd = "";
+$sql = "SELECT * FROM account $sql_cmd ORDER BY id";
+// 用mysqli_query方法執行(sql語法)將結果存在變數中
+$data = mysqli_query($link, $sql);
+?>
+
+
+
+
+
+
+
+
+Please fill up the required field!";
+ } else {
+ header("Location:account-index.php");
+ }
+ }
+
+?>
+
+
+
+
+
+
+
+ 項次
+ 帳號類型
+ 帳號
+
+ 姓名
+ 電話
+ 地址
+ 電子郵件
+ Line ID
+ 微信id
+ 遠端協助
+ 維修ID
+ 直屬主管
+ 建檔人
+ 建檔時間
+
+ 修改
+ 新人資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 連結
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 寄送
+
+
+
+
+
+
+
+There is no record!";
+endif;
+
+#代表結束連線
+mysqli_close($link);
+
+include "footer.php";
+
+?>
\ No newline at end of file
diff --git a/wms/account-receivable-check.php b/wms/account-receivable-check.php
index 1e373b52..061efc7c 100644
--- a/wms/account-receivable-check.php
+++ b/wms/account-receivable-check.php
@@ -1,199 +1,255 @@
-
-
-
-
-
-
= $Bill[4] ?>
-
-
-
-
-
-
- 目前應收
- 已開發票金額
- 未開發票金額
- 已收金額
- 未收金額
-
-
-
-
-
- = number_format(round($Bill[12])) ?>
- = number_format(round($Bill[19])) ?>
- = number_format(round($Bill[21])) ?>
- = number_format(round($Bill[20])) ?>
- = number_format(round($Bill[22])) ?>
-
-
-
-
-
-
-
-
-
-
-
- 簽約款
- 二次款
- 貨抵工地款
- 安裝款
- 試車款
- 官檢款
- 交車款
-
-
-
-
-
- = number_format(round($Bill[5])) ?>
- = number_format(round($Bill[6])) ?>
- = number_format(round($Bill[7])) ?>
- = number_format(round($Bill[8])) ?>
- = number_format(round($Bill[9])) ?>
- = number_format(round($Bill[10])) ?>
- = number_format(round($Bill[11])) ?>
-
-
-
-
-
-
-
-
-
- 新增收款紀錄
-
-
-
-
-
- 發票日期
- 發票金額
- 收款日期
- 收款金額
- 說明
- 功能
-
-
-
-
-
- = $received['invoice_date'] ?>
- = number_format($received['invoice_amount']) ?>
- = $received['received_date'] ?>
- = number_format($received['received_amount']) ?>
- = $received['remark'] ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/wms/account-receivable-contract.php b/wms/account-receivable-contract.php
index 9eda5895..f37920fb 100644
--- a/wms/account-receivable-contract.php
+++ b/wms/account-receivable-contract.php
@@ -1,39 +1,39 @@
-";
-$sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt,s.BizPartnerId,c.BizPartnerName
-FROM salOrderStagePay AS a
-LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo
-LEFT JOIN comBusinessPartner as c ON s.BizPartnerId=c.BizPartnerId
-WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4)";
-
-$contract = $conn->query($sql_contract);
-foreach ($contract as $cont) {
- if ($cont['BillNo'] == 'SO20230801002') {
- $BillNo = 'M231067';
- }else{
- $BillNo = $cont['BillNo'];
- };
- $PayStage = $cont['PayStage'];
- $PayAmount = $cont['PlanPayAmt'];
- $partnerName = $cont['BizPartnerName'];
- if(isset($arrayData[$BillNo])){
- array_push($arrayData[$BillNo], $PayStage);
- array_push($arrayData[$BillNo], $PayAmount);
-
- }else{
- $arrayData[$BillNo][0] = $BillNo;
- $arrayData[$BillNo][1] = $partnerName;
- array_push($arrayData[$BillNo], $PayStage);
- array_push($arrayData[$BillNo], $PayAmount);
-
- }
-};
-foreach($arrayData as $data){
- foreach($data as $value){
- echo $value.";";
- }
- echo "";
+";
+$sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt,s.BizPartnerId,c.BizPartnerName
+FROM salOrderStagePay AS a
+LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo
+LEFT JOIN comBusinessPartner as c ON s.BizPartnerId=c.BizPartnerId
+WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4)";
+
+$contract = $conn->query($sql_contract);
+foreach ($contract as $cont) {
+ if ($cont['BillNo'] == 'SO20230801002') {
+ $BillNo = 'M231067';
+ }else{
+ $BillNo = $cont['BillNo'];
+ };
+ $PayStage = $cont['PayStage'];
+ $PayAmount = $cont['PlanPayAmt'];
+ $partnerName = $cont['BizPartnerName'];
+ if(isset($arrayData[$BillNo])){
+ array_push($arrayData[$BillNo], $PayStage);
+ array_push($arrayData[$BillNo], $PayAmount);
+
+ }else{
+ $arrayData[$BillNo][0] = $BillNo;
+ $arrayData[$BillNo][1] = $partnerName;
+ array_push($arrayData[$BillNo], $PayStage);
+ array_push($arrayData[$BillNo], $PayAmount);
+
+ }
+};
+foreach($arrayData as $data){
+ foreach($data as $value){
+ echo $value.";";
+ }
+ echo "";
}
\ No newline at end of file
diff --git a/wms/account-receivable-excel.php b/wms/account-receivable-excel.php
new file mode 100644
index 00000000..d9358d2e
--- /dev/null
+++ b/wms/account-receivable-excel.php
@@ -0,0 +1,51 @@
+$value){
+ // for ($i = 0; $i < 17; $i++) {
+ // $value[$i] = (isset($value[$i])) ? $value[$i] : 0;
+ // }
+ $array_data[$key][0] = $key;
+ $array_data[$key][1] = $value[1];
+ $array_data[$key][2] = $value[2];
+ $array_data[$key][3] = $value[4];
+ $array_data[$key][4] = $value[5];
+ $array_data[$key][5] = $value[7];
+ $array_data[$key][6] = $value[8];
+ $array_data[$key][7] = $value[6];
+ $array_data[$key][8] = $value['sign'][1];
+ $array_data[$key][9] = $value['second'][1];
+ $array_data[$key][10] = $value['arrive'][1];
+ $array_data[$key][11] = $value['install'][1];
+ $array_data[$key][12] = $value['tryrun'][1];
+ $array_data[$key][13] = $value['check'][1];
+ $array_data[$key][14] = $value['delivery'][1];
+ $array_data[$key][15] = $value['final'][1];
+ $array_data[$key][16] = $value['receivable_budget'];
+ $array_data[$key][17] = str_replace(' ','; ',$value['facilities']);
+}
+$spreadsheet = new Spreadsheet();
+$sheet = $spreadsheet->getActiveSheet();
+$colomnHeader = ['合約號','部門','經理','營業員','客戶名稱','統一編號','聯絡地址','抬頭','簽約款',
+'二次款','貨抵工地款','安裝款','試車款','官檢款','交車款','尾款','目前應收','作番狀態'];
+$sheet->fromArray($colomnHeader,NULL,'A1');
+$rowIndex = 2;
+foreach($array_data as $key => $value){
+ $sheet->fromArray([$value], NULL, 'A' . $rowIndex);
+ $sheet->getStyle('R' . $rowIndex)->getAlignment()->setWrapText(true);
+ $rowIndex++;
+}
+$writer = new Xlsx($spreadsheet);
+$excelFileName = 'account-receivable.xlsx';
+$writer->save($excelFileName);
+
+?>
+
\ No newline at end of file
diff --git a/wms/account-receivable-index.php b/wms/account-receivable-index.php
index 0cf5e917..7878d34c 100644
--- a/wms/account-receivable-index.php
+++ b/wms/account-receivable-index.php
@@ -1,345 +1,403 @@
- 0) {
- $column_str = "('$user_id'" . ",'";
- $column_str .= implode("','", $follower);
- $column_str .= "')";
- $sql_contract .= " OR s.PersonId IN $column_str)";
- $sql_received .= " OR person_id IN $column_str)";
- } else {
- $sql_contract .= ")";
- };
-}
-
-$contract = $conn->query($sql_contract);
-$received_data = mysqli_query($link, $sql_received);
-foreach ($received_data as $received) {
- if ($received['BillNo'] == 'SO20230801001') {
- $BillNo = 'M230947';
- } elseif ($received['BillNo'] == 'SO20230801002') {
- $BillNo = 'M231067';
- } else {
- $BillNo = $received['BillNo'];
- };
- if (isset($received_array[$BillNo])) {
- $received_array[$BillNo][0] += $received['invoice_amount'];
- $received_array[$BillNo][1] += $received['received_amount'];
- } else {
- $received_array[$BillNo][0] = $received['invoice_amount'];
- $received_array[$BillNo][1] = $received['received_amount'];
- }
-}
-foreach ($contract as $cont) {
- // print_r($cont);
- // echo " ";
- if ($cont['BillNo'] == 'SO20230801001') {
- $BillNo = 'M230947';
- } elseif ($cont['BillNo'] == 'SO20230801002') {
- $BillNo = 'M231067';
- } else {
- $BillNo = $cont['BillNo'];
- };
- $PayStage = $cont['PayStage'];
- $PayAmount = $cont['PlanPayAmt'];
- $partnerName = $cont['BizPartnerName'];
- $EnterpriseName = $cont['EnterpriseName'];
- $TaxNo = $cont['TaxNo'];
- $ContactAddress = $cont['ContactAddress'];
- //4 簽約 5 二次款 6 貨抵工地 7 安裝 8 試車 9官檢 10 交車
- if (isset($arrayData[$BillNo])) {
- if (stristr($PayStage, '二次款') || stristr($PayStage, '出貨前') || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60')) {
- $arrayData[$BillNo][5] = $PayAmount;
- } elseif ($PayStage == '簽約' || stristr($PayStage, '簽定') || stristr($PayStage, '簽訂') || stristr($PayStage, '訂金')) {
- $arrayData[$BillNo][4] = $PayAmount;
- } elseif (stristr($PayStage, '貨抵工地') || stristr($PayStage, '貨底工地')) {
- $arrayData[$BillNo][6] = $PayAmount;
- } elseif (stristr($PayStage, '試車') || stristr($PayStage, '驗收完成')) {
- $arrayData[$BillNo][8] = $PayAmount;
- } elseif (stristr($PayStage, '安裝')) {
- $arrayData[$BillNo][7] = $PayAmount;
- } elseif (stristr($PayStage, '得合格函後6個月') || stristr($PayStage, '核可函取得後6個月') || stristr($PayStage, '交車')) {
- $arrayData[$BillNo][10] = $PayAmount;
- } elseif (stristr($PayStage, '合格') || stristr($PayStage, '驗收') || stristr($PayStage, '許可') || stristr($PayStage, '核可')) {
- $arrayData[$BillNo][9] = $PayAmount;
- } else {
- $arrayData[$BillNo][12] = $PayAmount;
- }
- } else {
- $arrayData[$BillNo] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
- $arrayData[$BillNo][3] = $partnerName;
- $arrayData[$BillNo][13] = $EnterpriseName;
- $arrayData[$BillNo][14] = $TaxNo;
- $arrayData[$BillNo][15] = $ContactAddress;
- if (stristr($PayStage, '二次款') || stristr($PayStage, '出貨前') || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60')) {
- $arrayData[$BillNo][5] = $PayAmount;
- } elseif ($PayStage == '簽約' || stristr($PayStage, '簽定') || stristr($PayStage, '簽訂') || stristr($PayStage, '訂金')) {
- $arrayData[$BillNo][4] = $PayAmount;
- } elseif (stristr($PayStage, '貨抵工地') || stristr($PayStage, '貨底工地')) {
- $arrayData[$BillNo][6] = $PayAmount;
- } elseif (stristr($PayStage, '試車') || stristr($PayStage, '驗收完成')) {
- $arrayData[$BillNo][8] = $PayAmount;
- } elseif (stristr($PayStage, '安裝')) {
- $arrayData[$BillNo][7] = $PayAmount;
- } elseif (stristr($PayStage, '得合格函後6個月') || stristr($PayStage, '核可函取得後6個月') || stristr($PayStage, '交車')) {
- $arrayData[$BillNo][10] = $PayAmount;
- } elseif (stristr($PayStage, '合格') || stristr($PayStage, '驗收') || stristr($PayStage, '許可') || stristr($PayStage, '核可')) {
- $arrayData[$BillNo][9] = $PayAmount;
- } else {
- $arrayData[$BillNo][12] = $PayAmount;
- }
- }
-}
-
-foreach ($arrayData as $key => $value) {
- $sql = "SELECT
-tmp2.*,
-d.name AS depart_name
-FROM(
-SELECT
- a.manager,
- a2.name as manager_name,
- a.name,
- a.department_id,
- w.salesid,
- w.contractno,
- w.facilityno,
- w.estimated_shipping_date,
-w.actual_tofactory_date,
- w.real_arrival_date,
- w.install_end_date,
- w.tryrun_end_date,
- w.official_check_date,
- w.delivery_date
-from wipwholestatus AS w
-left join account AS a
-ON w.salesid = a.accountid
-left join account AS a2
-ON a2.accountid = a.manager
-where w.status = '1' AND w.contractno='" . $key . "'" . "
-
-)AS tmp2
-left join (
-SELECT DISTINCT
- department_id,
- name
-FROM department
-
-) AS d
-ON d.department_id = tmp2.department_id";
- $facitities = "";
- $total_facility_num = 0;
- $arrive_num = 0;
- $tryrun_num = 0;
- $delivery_num = 0;
- $official_num = 0;
- $wipwhole_array = mysqli_query($link, $sql);
- foreach ($wipwhole_array as $wip) {
- $value[0] = $wip['depart_name'];
- $value[1] = $wip['manager_name'];
- $value[2] = $wip['name'];
- $value[16] = isset($wip['department_id']) ? $wip['department_id'] : '';
- $value[17] = isset($wip['salesid']) ? $wip['salesid'] : '';
- if ($wip['delivery_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) ";
- $total_facility_num += 1;
- $arrive_num += 1;
- $tryrun_num += 1;
- $official_num += 1;
- $delivery_num += 1;
- } elseif ($wip['official_check_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) ";
- $total_facility_num += 1;
- $arrive_num += 1;
- $tryrun_num += 1;
- $official_num += 1;
- } elseif ($wip['tryrun_end_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) ";
- $total_facility_num += 1;
- $arrive_num += 1;
- $tryrun_num += 1;
- } elseif ($wip['install_end_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) ";
- $total_facility_num += 1;
- $arrive_num += 1;
- } elseif ($wip['real_arrival_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) ";
- $total_facility_num += 1;
- $arrive_num += 1;
- } elseif ($wip['actual_tofactory_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['actual_tofactory_date'] . "實際到觀音日) ";
- $total_facility_num += 1;
- } elseif ($wip['estimated_shipping_date'] != NULL) {
- $facitities .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計到港) ";
- $total_facility_num += 1;
- } else {
- $facitities .= $wip['facilityno'] . " (預計到港日待確認) ";
- $total_facility_num += 1;
- }
- }
- $receivable_budget = 0;
- //這是錢 4 簽約 5 二次款 6 貨抵工地 7 安裝 8 試車 9官檢 10 交車
- //這是數量 arrive_num 貨抵工地 tryrun_num 試車安裝完畢 official_num 官檢完畢 delivery_num 移交
- if ($total_facility_num > 0) {
- $receivable_budget = $value[4] + ($value[5] + $value[6]) * ($arrive_num / $total_facility_num) +
- ($value[7] + $value[8]) * ($tryrun_num / $total_facility_num) + ($value[9]) * ($official_num / $total_facility_num)
- + ($value[10]) * ($delivery_num / $total_facility_num);
- $uninvoice_budget = $receivable_budget;
- $unreceived_budget = $receivable_budget;
- $received_invoice = 0;
- $received_budget = 0;
- if (isset($received_array[$key][0])) {
- $uninvoice_budget = $receivable_budget - $received_array[$key][0];
- $received_invoice = $received_array[$key][0];
- }else{
- $uninvoice_budget = $receivable_budget;
- }
- if (isset($received_array[$key][1])) {
- $unreceived_budget = $receivable_budget - $received_array[$key][1];
- $received_budget = $received_array[$key][1];
- }else{
- $unreceived_budget = $receivable_budget;
- }
- }
- if (isset($value[0]) && ($value[0] != 0)) {
- $receivable_array[$key] = [$key, $value[0], $value[1], $value[2], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8], $value[9],
- $value[10], $receivable_budget, $facitities, $value[13], $value[14], $value[15], $value[16], $value[17], $received_invoice, $received_budget,
- $uninvoice_budget, $unreceived_budget];
- }
-}
-$data = json_encode($receivable_array);
-
-// echo "合約號;部門;經理;營業員;客戶名稱;簽約款;二次款;貨抵工地款;安裝款;試車款;官檢款;交車款;目前應收;總作番數;貨抵;安裝試車;官檢;移交數;狀態";
-?>
-
-
-
-
-
- 合約號
- 部門
- 經理
- 營業員
- 客戶名稱
-
- 目前應收
- 未開發票金額
- 未收金額
- 狀態
- 操作
-
-
-
-
-
- = $contract[0] ?>
- = $contract[1] ?>
- = $contract[2] ?>
- = $contract[3] ?>
- = $contract[4] ?>
-
- = number_format(round($contract[12])) ?>
- = number_format(round($contract[21])) ?>
- = number_format(round($contract[22])) ?>
- = $contract[13] ?>
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/wms/account-receivable-received-create.php b/wms/account-receivable-received-create.php
index ad50abd2..87a627a6 100644
--- a/wms/account-receivable-received-create.php
+++ b/wms/account-receivable-received-create.php
@@ -1,121 +1,124 @@
-
-
-
-
-
= $BillData[4] ?>
- 新增收款資訊
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/wms/account-receivable-received-edit.php b/wms/account-receivable-received-edit.php
index bfbb7ea2..1898a961 100644
--- a/wms/account-receivable-received-edit.php
+++ b/wms/account-receivable-received-edit.php
@@ -1,121 +1,142 @@
-";
-// print_r($BillData);
-$sql_pay = "SELECT * from account_received where pay_id = '$pay_id'";
-$pay = mysqli_query($link, $sql_pay);
-$pay = mysqli_fetch_assoc($pay);
-
-?>
-
-
-
-
= $BillData[4] ?>
- 編輯收款資訊
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/wms/account-receivable-received-submit.php b/wms/account-receivable-received-submit.php
index 4685bc05..8f04f0c1 100644
--- a/wms/account-receivable-received-submit.php
+++ b/wms/account-receivable-received-submit.php
@@ -1,84 +1,96 @@
-alert("新增/更新 成功")';
- echo $sql;
-} else {
- echo '';
-}
+
+
\ No newline at end of file
diff --git a/wms/account-receivable.xlsx b/wms/account-receivable.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..8edcb4bd69991dee789a4bd343a32076ab147675
GIT binary patch
literal 55801
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