diff --git a/wms/rib02-purReceive-submit.php b/wms/T8-purReceive-submit.php
similarity index 96%
rename from wms/rib02-purReceive-submit.php
rename to wms/T8-purReceive-submit.php
index ba87bc27..aa917201 100644
--- a/wms/rib02-purReceive-submit.php
+++ b/wms/T8-purReceive-submit.php
@@ -1,89 +1,89 @@
-
-
\ No newline at end of file
diff --git a/wms/rib02-purchase-submit.php b/wms/T8-purchase-submit.php
similarity index 97%
rename from wms/rib02-purchase-submit.php
rename to wms/T8-purchase-submit.php
index 13f042fa..216b4906 100644
--- a/wms/rib02-purchase-submit.php
+++ b/wms/T8-purchase-submit.php
@@ -1,89 +1,89 @@
-
-
\ No newline at end of file
diff --git a/wms/T8_Authorization.php b/wms/T8_Authorization.php
index a1a756ce..dce65c91 100644
--- a/wms/T8_Authorization.php
+++ b/wms/T8_Authorization.php
@@ -14,12 +14,13 @@ $sign = hash_hmac('SHA256', $data, 'B2D6395D2883E26C', false);
var validation = "";
// var corsurl = 'http://cors-anywhere.herokuapp.com/';
// var apiurl = 'http://60.244.87.101:880//twWebAPI/GetAuth';
- var apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth'
+ // var apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth'
headerParam = {
UserId: 'M0000',
Pwd: 'M012290493119',
TimestampUTC: = $now ?>,
- Sign: '= $sign ?>'
+ Sign: '= $sign ?>',
+ GroupId: 'TEST',
};
obj = {
type: 'get',
@@ -30,7 +31,7 @@ $sign = hash_hmac('SHA256', $data, 'B2D6395D2883E26C', false);
success: function(res) {
validation = res.Data['CHI_Authorization'];
console.log(validation);
- // console.log(res);
+ console.log(res);
// console.log()
// window.parent.postMessage(validation,'http://localhost:3000');
// window.parent.postMessage(validation,'https://masada.com.tw');
@@ -40,4 +41,5 @@ $sign = hash_hmac('SHA256', $data, 'B2D6395D2883E26C', false);
jQuery.ajax(obj);
// return jQuery.ajax(obj);
}
+ get_Auth();
\ No newline at end of file
diff --git a/wms/T8_Authorization_from_bpm.php b/wms/T8_Authorization_from_bpm.php
index 3e8708b2..7c206023 100644
--- a/wms/T8_Authorization_from_bpm.php
+++ b/wms/T8_Authorization_from_bpm.php
@@ -24,11 +24,13 @@ function get_Auth($user_id = "M0000", $user_password = "M012290493119")
// $apiurl = 'http://10.10.145.2:880//twWebAPI/GetAuth';
// $apiurl = 'https://erp.masada.com.tw:780/twWebAPI/GetAuth';
+ //GroupId : TEST測試區 ; MASADA正式區
$headerParam = [
"UserId: $user_id",
"Pwd: $user_password",
"TimestampUTC: $now",
- "Sign: $sign"
+ "Sign: $sign",
+ "GroupId: TEST"
];
$ch = curl_init();
@@ -51,4 +53,4 @@ function get_Auth($user_id = "M0000", $user_password = "M012290493119")
curl_close($ch);
}
// $data = [];
-// get_Auth();
+get_Auth();
diff --git a/wms/WriteOff.xlsx b/wms/WriteOff.xlsx
index 61407291..6bb1cd82 100644
Binary files a/wms/WriteOff.xlsx and b/wms/WriteOff.xlsx differ
diff --git a/wms/account-receivable-renovate-index-ing.php b/wms/account-receivable-renovate-index-ing.php
new file mode 100644
index 00000000..dc2ba4ae
--- /dev/null
+++ b/wms/account-receivable-renovate-index-ing.php
@@ -0,0 +1,773 @@
+0
+ORDER BY InvoiceTime ASC";
+
+// T8核銷
+$sql_received = "SELECT
+a.BillNo, a.WriteOffBizPartnerId,a.PayWriteOffOAmount,
+b.FromBillDate AS ReceivedDate,b.CurrWOFeeOAmt AS Fee,
+c.OrderBillNo, c.checkBillNo, c.InvoiceNo, c.BillDate AS CheckBillDate
+FROM arWriteOffBill AS a
+LEFT JOIN arWriteOffBillRec AS b ON a.BillNo=b.BillNo
+LEFT JOIN
+ (SELECT temp1.*,arWriteOffBillDetail.* FROM arWriteOffBillDetail
+ LEFT JOIN
+ (SELECT
+ arCheckBill.BillNo AS checkBillNo, arCheckBill.BillDate,arCheckBillInvInfo.InvoiceNo
+ FROM arCheckBill
+ LEFT JOIN arCheckBillInvInfo
+ ON arCheckBill.InvoiceBillNo=arCheckBillInvInfo.InvoiceBillNo) AS temp1
+ ON temp1.checkBillNo = arWriteOffBillDetail.FromBillNo) AS c
+ON a.BillNo=c.BillNo
+WHERE DATALENGTH(c.OrderBillNo) >0";
+
+
+// 期初收款資訊
+$sql_opening = "
+SELECT * FROM account_received ";
+// 設定權限:看到自己的/下屬的,資訊處跟財會處可以看全部的
+if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210')))) {
+} else {
+ $sql_opening .= " OR person_id = '$user_id'";
+ $sql_contractNumber .= " AND (PersonId = '$user_id'";
+ if (count($follower) > 0) {
+ $column_str = "('$user_id'" . ",'";
+ $column_str .= implode("','", $follower);
+ $column_str .= "')";
+ $sql_contractNumber .= " OR PersonId IN $column_str)";
+ $sql_opening .= " OR person_id IN $column_str)";
+ } else {
+ $sql_opening .= ")";
+ $sql_contractNumber .= ")";
+ };
+}
+
+$contractNumbers = array();
+$query_contract_number = $conn->query($sql_contractNumber);
+foreach ($query_contract_number as $contract_numbers) {
+ array_push($contractNumbers, $contract_numbers['BillNo']);
+ $str_numbers = "('" . implode("','", $contractNumbers) . "')";
+}
+//作番大日程
+$sql = "SELECT
+tmp2.*,
+d.name AS depart_name
+FROM(
+SELECT
+ a.manager,
+ a2.name as manager_name,
+ a.name,
+ a.department_id,
+ w.salesid,
+ w.contractno,
+ w.facilityno,
+ w.estimated_shipping_date,
+ w.real_contract_arrival_date,
+w.actual_tofactory_date,
+ w.real_arrival_date,
+ w.install_end_date,
+ w.tryrun_end_date,
+ w.official_check_date,
+ w.delivery_date
+from wipwholestatus AS w
+left join account AS a
+ON w.salesid = a.accountid
+left join account AS a2
+ON a2.accountid = a.manager
+where w.status = '1' AND w.contract_type='B'
+)AS tmp2
+left join (
+SELECT DISTINCT
+ department_id,
+ name
+FROM department
+
+) AS d
+ON d.department_id = tmp2.department_id";
+
+//T8 銷售訂單 階段收款計畫
+$sql_contract = "SELECT a.BillNo,s.BillDate, a.RowNo, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId, s.DeptId, s.DeptName,
+c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a
+LEFT JOIN (SELECT O.*, DE.DeptName FROM salSalesOrder AS O LEFT JOIN comDepartment AS DE ON O.DeptId=DE.DeptId) AS s on a.BillNo = s.BillNo
+LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId ";
+if (isset($str_numbers)) {
+ $sql_contract .= "WHERE s.BillNo IN $str_numbers ";
+}
+
+
+// T8 銷售訂單 作番金額
+$sql_contract_budget = "SELECT A.BillNo,A.MaterialId, A.OAmountWithTax,A.CU_MaterialId FROM salSalesOrderDetail AS A
+LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo
+WHERE B.ModeId='T' AND A.ItemType=1 ";
+if (isset($str_numbers)) {
+ $sql_contract_budget .= "AND A.BillNo IN $str_numbers ";
+}
+$contract = $conn->query($sql_contract);
+$contract_data = array();
+// 將T8合約收款階段資料依據款別分類放進arraData裡
+foreach ($contract as $cont) {
+ $BillNo = $cont['BillNo'];
+ $BillDate = $cont['BillDate'];
+ $PayStage = $cont['PayStage'];
+ $PlanPayDate = $cont['PlanPayDate'];
+ $PayAmount = $cont['PlanPayAmt'];
+ $partnerName = $cont['BizPartnerName'];
+ $EnterpriseName = $cont['EnterpriseName'];
+ $TaxNo = $cont['TaxNo'];
+ $ContactAddress = $cont['ContactAddress'];
+ $RowNo = $cont['RowNo'];
+ $salesId = $cont['PersonId'];
+
+ //['type'] A:比照新梯、B:純分期、C:其他
+ //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份 ['second'] 0 二次款名 1 二次款金額 2 收款日期 ['arrive'] 0 貨抵工地款名稱 1 貨抵工地款金額 2 貨抵工地收款日期 ['install'] 0 安裝款名 1 安裝金額 2 安裝收款日期
+ //['tryrun'] 0 試車款名 1試車金額 2 試車收款日期 ['check'] 0 官檢款名 1 官檢金額 2 官檢收款日期 ['delivery'] 0 交車款名 1 交車金額 2 交車收款日期 ['final'] 0 尾款名 1 尾款金額 2 尾款收款日期
+ //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
+ if (!(isset($arrayData[$BillNo]))) {
+ // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 9 T8單據日期 10 合約號
+ $arrayData[$BillNo] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+ $arrayData[$BillNo][0] = $cont['DeptId'];
+ $arrayData[$BillNo][1] = $cont['DeptName'];
+ $arrayData[$BillNo][3] = $salesId;
+ $arrayData[$BillNo][5] = $partnerName;
+ $arrayData[$BillNo][6] = $EnterpriseName;
+ $arrayData[$BillNo][7] = $TaxNo;
+ $arrayData[$BillNo][8] = $ContactAddress;
+ $arrayData[$BillNo][9] = $BillDate;
+ $arrayData[$BillNo][10] = $BillNo;
+ $arrayData[$BillNo]['total_budget'] = 0;
+ $arrayData[$BillNo]['invoice'] = array();
+ $arrayData[$BillNo]['received_budget'] = 0;
+ $arrayData[$BillNo]['invoice_budget'] = 0;
+ $arrayData[$BillNo]['A40002'] = $arrayData[$BillNo]['A40009'] = $arrayData[$BillNo]['A40010'] = 0;
+ $arrayData[$BillNo]['total_facility_num'] = 0;
+ }
+ $arrayData[$BillNo]['PayStage'][$RowNo]['type'] = 0;
+ $arrayData[$BillNo]['PayStage'][$RowNo]['name'] = $PayStage;
+ $arrayData[$BillNo]['PayStage'][$RowNo]['PlanPayDate'] = $PlanPayDate;
+ $arrayData[$BillNo]['PayStage'][$RowNo]['PayAmount'] = $PayAmount;
+ // 判斷type
+ $wipStage = ['簽約', '訂金', '貨抵工地', '完工', '試車', '安裝', '驗收', '完工', '交車', '尾款', '合約'];
+ foreach ($wipStage as $wipstage) {
+ if (strpos($PayStage, $wipstage) !== false) {
+ $arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "A";
+ }
+ }
+ $haveNumber = (int) filter_var(str_replace('-', '', $PayStage), FILTER_SANITIZE_NUMBER_INT);
+ if ($haveNumber > 0 && $arrayData[$BillNo]['PayStage'][$RowNo]['type'] === 0) {
+ $arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "B";
+ } elseif ($haveNumber > 0 && $arrayData[$BillNo]['PayStage'][$RowNo]['type'] == 'A') {
+ $arrayData[$BillNo]['PayStage'][$RowNo]['type'] = "C";
+ }
+}
+$received_array = $conn->query($sql_received);
+$opening_data = mysqli_query($link, $sql_opening);
+$invoice_data = $conn->query($sql_invoice);
+$contract_budget_data = $conn->query($sql_contract_budget);
+
+// 查WMS 契約員主管
+$sql_manager = "SELECT A.accountid, A.name, A.manager, B.name AS manager_name FROM account AS A
+LEFT JOIN account AS B ON A.manager = B.accountid ";
+$managers = mysqli_query($link, $sql_manager);
+
+$find_manager = array();
+foreach ($managers as $manager) {
+ $find_manager[$manager['accountid']] = $manager;
+}
+// 將T8銷售訂單明細 每個作番金額存入arrayData
+$contract_budget = array();
+foreach ($contract_budget_data as $cont) {
+ $BillNo = $cont['BillNo'];
+ if (isset($arrayData[$BillNo])) {
+ $salesid = $arrayData[$BillNo][3];
+ if (isset($find_manager[$salesid])) {
+ $arrayData[$BillNo][2] = $find_manager[$salesid]['manager_name'];
+ $arrayData[$BillNo][4] = $find_manager[$salesid]['name'];
+ $arrayData[$BillNo][11] = $find_manager[$salesid]['manager'];
+ }
+ $arrayData[$BillNo]['total_budget'] += $cont['OAmountWithTax'];
+ $sum_total_budget += $cont['OAmountWithTax'];
+ $arrayData[$BillNo][$cont['MaterialId']] += $cont['OAmountWithTax'];
+ switch ($cont['MaterialId']) {
+ case "A40002":
+ $sum_A40002 += $cont['OAmountWithTax'];
+ break;
+ case "A40009":
+ $sum_A40009 += $cont['OAmountWithTax'];
+ break;
+ case "A40010":
+ $sum_A40010 += $cont['OAmountWithTax'];
+ break;
+ }
+ if (isset($arrayData[$BillNo]['facility'][$cont['CU_MaterialId']])) {
+ $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['total_budget'] += $cont['OAmountWithTax'];
+ $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']][$cont['MaterialId']] += $cont['OAmountWithTax'];
+ } else {
+ $sum_facility += 1;
+ $arrayData[$BillNo]['total_facility_num'] += 1;
+ $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['total_budget'] = $cont['OAmountWithTax'];
+ $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['A40002'] = $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['A40009'] = $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['A40010'] = 0;
+ $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax'];
+ }
+ }
+ if (isset($contract_budget[$cont['BillNo']])) {
+ $contract_budget[$cont['BillNo']]['total'] += $cont['OAmountWithTax'];
+ } else {
+ $contract_budget[$cont['BillNo']]['total'] = $cont['OAmountWithTax'];
+ }
+ if (isset($contract_budget[$cont['BillNo']][$cont['MaterialId']])) {
+ $contract_budget[$cont['BillNo']][$cont['MaterialId']] += $cont['OAmountWithTax'];
+ } else {
+ $contract_budget[$cont['BillNo']][$cont['MaterialId']] = $cont['OAmountWithTax'];
+ }
+
+ if (isset($contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']])) {
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['total'] += $cont['OAmountWithTax'];
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']][$cont['MaterialId']] += $cont['OAmountWithTax'];
+ } else {
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['total'] = $cont['OAmountWithTax'];
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['A40002'] = 0;
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['A40009'] = 0;
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']]['A40010'] = 0;
+ $contract_budget[$cont['BillNo']]['facility'][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax'];
+ };
+}
+
+/*計算作番佔合約的金額比例
+@param $facility_no string => 作番號
+@param $contract_budget_billno array => $contract_budget[合約號]
+return float */
+function get_contract_ratio($facility_no, $contract_budget_billno)
+{
+ $ratio = 0;
+ if (isset($contract_budget_billno['facility'][$facility_no])) {
+ if (empty($contract_budget_billno['total'])) {
+ } else {
+
+ $ratio += $contract_budget_billno['facility'][$facility_no]['total'] / $contract_budget_billno['total'];
+ }
+ }
+ return $ratio;
+}
+
+/* 比較應收日期
+@param $a array
+@param $b array
+return int */
+function comparePlanPayDate($a, $b)
+{
+ return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']);
+}
+
+//取作番大日程作番與時程 進arrayData
+// real_contract_arrival_date 預計出貨日
+// real_arrival_date 實際出貨日
+$today = strtotime(date('Ymd'));
+$wipwhole_array = mysqli_query($link, $sql);
+$wipwhole_status = array();
+foreach ($wipwhole_array as $wip) {
+ //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
+ if (isset($arrayData[$wip['contractno']])) {
+ // 整理合約資料
+ // $arrayData[$wip['contractno']][0] = $wip['department_id'];;
+ // $arrayData[$wip['contractno']][1] = $wip['depart_name'];
+ // $arrayData[$wip['contractno']][2] = $wip['manager_name'];
+ // $arrayData[$wip['contractno']][3] = $wip['salesid'];
+ // $arrayData[$wip['contractno']][4] = $wip['name'];
+ $arrayData[$wip['contractno']][10] = $wip['contractno'];
+ $arrayData[$wip['contractno']]['A40002'] = (isset($contract_budget[$wip['contractno']]['A40002']) && !is_null($contract_budget[$wip['contractno']]['A40002'])) ? $contract_budget[$wip['contractno']]['A40002'] : 0;
+ $arrayData[$wip['contractno']]['A40009'] = (isset($contract_budget[$wip['contractno']]['A40009']) && !is_null($contract_budget[$wip['contractno']]['A40009'])) ? $contract_budget[$wip['contractno']]['A40009'] : 0;
+
+ // [合約號]['facility'][作番號]['no']
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno'];
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = "";
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0;
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0;
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0;
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40002'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40002']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40002'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40002'] : 0;
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40009'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40009']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40009'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40009'] : 0;
+ $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40010'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40010']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40010'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40010'] : 0;
+ }
+ $wipwhole_status[$wip['facilityno']] = $wip;
+}
+
+// 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage]
+$sign_array = ['訂金', '簽約', '合約'];
+// 將所有facility的paystage放入一個array以便計算順序
+$allPayStages = [];
+foreach ($arrayData as &$value) {
+ if (isset($value['facility']) && is_iterable($value['facility'])) {
+ foreach ($value['facility'] as $fakey => &$facility) {
+ if (isset($contract_budget[$value[10]])) {
+ $ratio = get_contract_ratio($fakey, $contract_budget[$value[10]]);
+ for ($stage = 1; $stage < (count($value['PayStage']) + 1); $stage++) {
+ $facility['PayStage'][$stage] = $value['PayStage'][$stage];
+ $facility['PayStage'][$stage]['facilityno'] = $fakey;
+ //算每個作番的金額
+ $facility['PayStage'][$stage]['PayAmount'] = $value['PayStage'][$stage]['PayAmount'] * $ratio;
+ //算每個作番每個收款階段的收款時間
+ switch ($facility['PayStage'][$stage]['type']) {
+ case "A":
+ switch ($facility['PayStage'][$stage]['name']) {
+ case (stristr($facility['PayStage'][$stage]['name'], '試車')):
+ if (isset($wipwhole_status[$fakey]['tryrun_end_date']) && $wipwhole_status[$fakey]['tryrun_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['tryrun_end_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['tryrun_end_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '完工')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '尾款')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '交車')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '驗收')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['delivery_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '安裝')):
+ if (isset($wipwhole_status[$fakey]['install_end_date']) && $wipwhole_status[$fakey]['install_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['install_end_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['install_end_date']));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '貨抵工地')):
+ if (isset($wipwhole_status[$fakey]['real_arrival_date']) && $wipwhole_status[$fakey]['real_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_arrival_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['real_arrival_date']));
+ } elseif (isset($wipwhole_status[$fakey]['real_contract_arrival_date']) && $wipwhole_status[$fakey]['real_contract_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_contract_arrival_date'])) {
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime($wipwhole_status[$fakey]['real_contract_arrival_date']));
+ }
+ break;
+ default:
+ break;
+ };
+
+ case "B":
+
+ break;
+ case "C":
+ switch ($facility['PayStage'][$stage]['name']) {
+ case (stristr($facility['PayStage'][$stage]['name'], '試車')):
+ if (isset($wipwhole_status[$fakey]['tryrun_end_date']) && $wipwhole_status[$fakey]['tryrun_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['tryrun_end_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['tryrun_end_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '完工')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '尾款')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '交車')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '驗收')):
+ if (isset($wipwhole_status[$fakey]['delivery_date']) && $wipwhole_status[$fakey]['delivery_date'] !== NULL && !empty($wipwhole_status[$fakey]['delivery_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['delivery_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '安裝')):
+ if (isset($wipwhole_status[$fakey]['install_end_date']) && $wipwhole_status[$fakey]['install_end_date'] !== NULL && !empty($wipwhole_status[$fakey]['install_end_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['install_end_date'])));
+ }
+ break;
+ case (stristr($facility['PayStage'][$stage]['name'], '貨抵工地')):
+ if (isset($wipwhole_status[$fakey]['real_arrival_date']) && $wipwhole_status[$fakey]['real_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_arrival_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['real_arrival_date'])));
+ } elseif (isset($wipwhole_status[$fakey]['real_contract_arrival_date']) && $wipwhole_status[$fakey]['real_contract_arrival_date'] !== NULL && !empty($wipwhole_status[$fakey]['real_contract_arrival_date'])) {
+ $haveNumber = ((int) filter_var(str_replace('-', '', $facility['PayStage'][$stage]['name']), FILTER_SANITIZE_NUMBER_INT)) - 1;
+ $facility['PayStage'][$stage]['PlanPayDate'] = date("Ymd", strtotime("+ $haveNumber months", strtotime($wipwhole_status[$fakey]['real_contract_arrival_date'])));
+ }
+ break;
+ default:
+ break;
+ };
+ default:
+ break;
+ }
+ }
+ if (isset($allPayStages[$value[10]])) {
+ $allPayStages[$value[10]] = array_merge($allPayStages[$value[10]], $facility['PayStage']);
+ } else {
+ $allPayStages[$value[10]] = $facility['PayStage'];
+ }
+ }
+ }
+ }
+}
+foreach ($allPayStages as $paykey => $pay) {
+ uasort($allPayStages[$paykey], 'comparePlanPayDate');
+}
+
+foreach ($allPayStages as &$payStage) {
+ $sequenceNumber = 1;
+ foreach ($payStage as $tk => &$pstage) {
+ $pstage['sequenceNumber'] = $sequenceNumber;
+ $sequenceNumber += 1;
+ }
+}
+// 整理好的收款階段
+$final_paystage = array();
+foreach ($allPayStages as $key => &$payStage) {
+ if (is_iterable($payStage)) {
+ foreach ($payStage as $key2 => $pstage) {
+ $final_paystage[$key][$pstage['sequenceNumber']] = $pstage;
+ }
+ }
+}
+
+// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號]
+foreach ($invoice_data as $invoice) {
+ if (isset($arrayData[$invoice['FromSalSalesOrder']])) {
+ $arrayData[$invoice['FromSalSalesOrder']]['invoice_budget'] += intval($invoice['OAmountWithTax']);
+ $arrayData[$invoice['FromSalSalesOrder']]['invoice'][$invoice['InvoiceNo']] = [date("Ymd", strtotime($invoice['InvoiceTime'])), $invoice['OAmountWithTax'], $invoice['InvoiceState']];
+ }
+}
+
+// 把核銷單的內容補到發票資料中
+foreach ($received_array as $received) {
+ $BillNo = $received['OrderBillNo'];
+ if (isset($arrayData[$BillNo])) {
+ if (isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) {
+ $arrayData[$BillNo]['received_budget'] += $received['PayWriteOffOAmount'];
+ array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']);
+ }
+ }
+}
+// $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount']
+foreach ($final_paystage as $key => &$payStage) {
+ if (isset($arrayData[$key]['invoice_budget']) && isset($arrayData[$key]['received_budget'])) {
+ $tmpInvoice = $arrayData[$key]['invoice_budget'];
+ $tmpReceived = $arrayData[$key]['received_budget'];
+ for ($sequence = 1; $sequence <= count($payStage); $sequence++) {
+ $collect_month = collect_month(strtotime($payStage[$sequence]['PlanPayDate']));
+ if ($tmpInvoice > $payStage[$sequence]['PayAmount']) {
+ $payStage[$sequence]['InvoiceAmount'] = $payStage[$sequence]['PayAmount'];
+ $tmpInvoice -= $payStage[$sequence]['PayAmount'];
+ } else {
+ $payStage[$sequence]['InvoiceAmount'] = $tmpInvoice;
+ $tmpInvoice = 0;
+ }
+
+ if ($tmpReceived > $payStage[$sequence]['PayAmount']) {
+
+ $payStage[$sequence]['receivedAmount'] = $payStage[$sequence]['PayAmount'];
+ $tmpReceived -= $payStage[$sequence]['PayAmount'];
+ } else {
+ $payStage[$sequence]['receivedAmount'] = $tmpReceived;
+ $tmpReceived = 0;
+ }
+ if ($collect_month > 0) {
+ // $arrayData[$key]['facility'][$payStage[$sequence]['facilityno']]['receivable_budget']+=$payStage[$sequence]['PayAmount'];
+ }
+ if ($collect_month > 0 && $payStage[$sequence]['PayAmount'] > $payStage[$sequence]['receivedAmount']) {
+ $payStage[$sequence]['collect_month'] = $collect_month;
+ } else {
+ $payStage[$sequence]['collect_month'] = 0;
+ }
+ }
+ }
+}
+
+// 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 9 T8單據日期 10 合約號
+// 0 合約號 1 作番號 2 部門id 3 部門名稱 4 經理名稱 5 營業員id 6 營業員名稱 7 客戶名稱 8 抬頭 9 統編 10 通訊地址
+// 11 收款階段名稱 12 應收日期 13 收款金額 14 已開金額 15 已收金額 16 催收次數
+$excel_aray = array();
+$today = strtotime(date('Ymt'));
+foreach ($arrayData as $key => $value) {
+ if (isset($final_paystage[$key])) {
+ for ($sequence = 1; $sequence <= count($final_paystage[$key]); $sequence++) {
+ $value[4] = (isset($value[4]) && !empty($value[4])) ? $value[4] : '--';
+ $value[5] = (isset($value[5]) && !empty($value[5])) ? $value[5] : '--';
+ $value[6] = (isset($value[6]) && !empty($value[6])) ? $value[6] : '--';
+ $value[7] = (isset($value[7]) && !empty($value[7])) ? $value[7] : '--';
+ $value[8] = (isset($value[8]) && !empty($value[8])) ? $value[8] : '--';
+ $value[11] = (isset($value[11]) && !empty($value[11])) ? $value[11] : '--';
+ $value[12] = (isset($value[12]) && !empty($value[12])) ? date('Y/m/d', strtotime($value[12])) : '--';
+ $thisPayStage = $final_paystage[$key][$sequence];
+ $keyname = $key . "/" . $final_paystage[$key][$sequence]['facilityno'] . "/" . $value[5];
+ $havetopay = ($today >= strtotime($thisPayStage['PlanPayDate'])) ? "V" : "--";
+ switch ($havetopay) {
+ case "V":
+ $unInvoiceAmount = $thisPayStage['PayAmount'] - $thisPayStage['InvoiceAmount'];
+ $unReceivedAmount = $thisPayStage['PayAmount'] - $thisPayStage['receivedAmount'];
+ break;
+ default:
+ $unInvoiceAmount = 0;
+ $unReceivedAmount = 0;
+ break;
+ }
+ $excel_aray[$keyname] = [
+ $value[10], $thisPayStage['facilityno'], $value[0], $value[1], $value[11], $value[2], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8],
+ $thisPayStage['name'], $thisPayStage['PlanPayDate'], $havetopay,
+ number_format(round($thisPayStage['PayAmount'])),
+ number_format(round($thisPayStage['InvoiceAmount'])), number_format(round($unInvoiceAmount)),
+ number_format(round($thisPayStage['receivedAmount'])), number_format(round($unReceivedAmount)),
+ number_format(round($thisPayStage['collect_month']))
+
+ ];
+ }
+ }
+}
+$total_data = json_encode($excel_aray);
+//計算總作番數、金額、A40002、A40009、A40010金額與平均
+$average_budget = round($sum_total_budget / $sum_facility);
+$average_A40002 = round($sum_A40002 / $sum_facility);
+$average_A40009 = round($sum_A40009 / $sum_facility);
+$average_A40010 = round($sum_A40010 / $sum_facility);
+
+foreach($arrayData as $key=> $data){
+ echo $key."
";
+ print_r($data);
+ echo "
-----------------------------
";
+}
+exit();
+?>
+
+
+
合約號 | +作番號 | +部門 | +主管 | +契約員 | +客戶名稱 | +收款階段 | +應收日期 | +是否應收 | +應收金額 | +已開金額 | +未開金額 | +已收金額 | +催收金額 | +催收次數 | +
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
= $row[0]; ?> | += $row[1]; ?> | += $row[2] . " " . $row[3]; ?> |
+ = $row[4] . " " . $row[5]; ?> |
+ = $row[6] . " " . $row[7]; ?> |
+ = $row[8]; ?> | += $row[12]; ?> | += $row[13]; ?> | += $row[14]; ?> | += $row[15]; ?> | += $row[16]; ?> | += $row[17]; ?> | += $row[18]; ?> | += $row[19]; ?> | += $row[20]; ?> | +
= $pay['FeeDate'] ?> | = round($pay['Quantity']) ?> | diff --git a/wms/rib01-edit.php b/wms/rib01-edit.php index e916daaf..cb02acf0 100644 --- a/wms/rib01-edit.php +++ b/wms/rib01-edit.php @@ -159,11 +159,13 @@ if ($pay_data) { @@ -187,12 +189,14 @@ if ($pay_data) { echo "disabled"; } ?>> $value) { + if (is_iterable($member)) { + foreach ($member as $key => $value) { ?> - - + + diff --git a/wms/rib01-index.php b/wms/rib01-index.php index c4dd0f49..517ec992 100644 --- a/wms/rib01-index.php +++ b/wms/rib01-index.php @@ -105,81 +105,87 @@ if ($data) :||||||||||||||||||
- | - | - | - | - | - | - - | - - | - | -
-
-
-
-
-
-
-
-
-
+
+ |
+