You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1222 lines
61 KiB
1222 lines
61 KiB
<?php
|
|
|
|
include "header.php";
|
|
|
|
$sum_facility = 0;
|
|
$sum_facility_A40002 = 0;
|
|
$sum_facility_A40009 = 0;
|
|
$sum_facility_A40010 = 0;
|
|
$sum_facility_A40019 = 0;
|
|
// M1
|
|
$sum_A40002 = 0;
|
|
// 設備
|
|
$sum_A40009 = 0;
|
|
// 安裝
|
|
$sum_A40010 = 0;
|
|
// M4
|
|
$sum_A40019 = 0;
|
|
$sum_total_budget = 0;
|
|
$average_budget = 0;
|
|
$average_A40002 = 0;
|
|
$average_A40009 = 0;
|
|
$average_A40010 = 0;
|
|
$average_A40019 = 0;
|
|
$start_date = empty($_POST['date_start']) ? null : $_POST['date_start'];
|
|
$end_date = empty($_POST['date_end']) ? null : $_POST['date_end'];
|
|
|
|
// 查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();
|
|
if (is_iterable($managers)) {
|
|
foreach ($managers as $manager) {
|
|
$find_manager[$manager['accountid']] = $manager;
|
|
}
|
|
}
|
|
$follower = find_follow($user_id);
|
|
$arrayData = [];
|
|
$receivable_array = [];
|
|
// T8所有合約號
|
|
$sql_contractNumber = "SELECT MainAll.* ,
|
|
Person.PersonName,
|
|
Dept.LeaderId,
|
|
Leader.PersonName AS LeaderName,
|
|
Dept.DeptName FROM
|
|
(SELECT
|
|
Main.BillNo,
|
|
Main.BillDate,
|
|
Main.BizPartnerId,
|
|
Biz.ShortName,
|
|
Biz.BizPartnerName,
|
|
Biz.ContactAddress,
|
|
Main.OAmountWithTax,
|
|
Main.PersonId,
|
|
Main.DeptId,
|
|
Main.TypeId,
|
|
Main.ModeId,
|
|
Main.CurrentState
|
|
FROM salSalesOrder AS Main
|
|
LEFT JOIN comBusinessPartner AS Biz ON Biz.BizPartnerId = Main.BizPartnerId) AS MainAll
|
|
LEFT JOIN comGroupPerson AS Person ON MainAll.PersonId= Person.PersonId
|
|
LEFT JOIN comDepartment AS Dept ON MainAll.DeptId= Dept.DeptId
|
|
LEFT JOIN comGroupPerson AS Leader ON Dept.LeaderId = Leader.PersonId
|
|
WHERE MainAll.ModeId = 'T' AND (MainAll.CurrentState=2 OR MainAll.CurrentState=4) ";
|
|
|
|
if (!is_null($start_date)) {
|
|
$start_date = (int)date('Ymd', strtotime($start_date));
|
|
$sql_contractNumber .= " AND MainAll.BillDate >= $start_date ";
|
|
}
|
|
if (!is_null($end_date)) {
|
|
$end_date = (int)date('Ymd', strtotime($end_date));
|
|
$sql_contractNumber .= " AND MainAll.BillDate <= $end_date ";
|
|
}
|
|
if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) {
|
|
} else {
|
|
$sql_contractNumber .= " AND (Leader.PersonId = '$user_id' OR MainAll.PersonId = '$user_id'";
|
|
if (count($follower) > 0) {
|
|
$column_str = "('$user_id'" . ",'";
|
|
$column_str .= implode("','", $follower);
|
|
$column_str .= "')";
|
|
$sql_contractNumber .= " OR MainAll.PersonId IN $column_str)";
|
|
} else {
|
|
$sql_contractNumber .= ")";
|
|
};
|
|
}
|
|
|
|
|
|
// T8發票 (有專案的發票)
|
|
$sql_invoice = "SELECT
|
|
Detail.BillNo AS InvoiceBillNo,
|
|
Detail.MaterialId,
|
|
Detail.LAmountWithTax,
|
|
Main.InvoiceNo,
|
|
Main.InvoiceDate,
|
|
Main.InvoiceState,
|
|
CheckAll.FromSalSalesOrder AS BillNo
|
|
FROM arSellInvoiceMaterial AS Detail
|
|
LEFT JOIN arSellInvoice AS Main ON Detail.BillNo=Main.BillNo
|
|
LEFT JOIN (
|
|
SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo
|
|
FROM arCheckBillDetail AS CheckDetail )
|
|
AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo
|
|
WHERE Main.InvoiceState!=2 AND Main.InvoiceDate>20240229 ";
|
|
|
|
// T8核銷
|
|
$sql_received = "SELECT Detail.OrderBillNo,
|
|
Detail.CurrWriteOffLAmount,
|
|
Main.BillDate
|
|
FROM arWriteOffBillDetail AS Detail
|
|
LEFT JOIN arWriteOffBill AS Main
|
|
ON Detail.BillNo=Main.BillNo
|
|
WHERE LEN(Detail.OrderBillNo)>0 AND Main.BillDate>20240229 ";
|
|
|
|
|
|
$contractNumbers = array();
|
|
$query_contract_number = $conn->query($sql_contractNumber);
|
|
foreach ($query_contract_number as $contract_numbers) {
|
|
$billNo = $contract_numbers['BillNo'];
|
|
// switch ($contract_numbers['BillNo']) {
|
|
// case 'SO20230701001':
|
|
// $billNo = 'M220104';
|
|
// break;
|
|
// case 'SO20230701002':
|
|
// $billNo = 'M230098';
|
|
// break;
|
|
// case 'SO20230701003':
|
|
// $billNo = 'M230159';
|
|
// break;
|
|
// case 'SO20230901001':
|
|
// $billNo = 'M230992';
|
|
// break;
|
|
// case 'SO20231110001':
|
|
// $billNo = 'M230492';
|
|
// break;
|
|
// case 'SO20231110002':
|
|
// $billNo = 'M230557';
|
|
// break;
|
|
// case 'SO20231110003':
|
|
// $billNo = 'M230496';
|
|
// break;
|
|
// case 'SP20240108001':
|
|
// $billNo = 'M230683';
|
|
// break;
|
|
// case 'SP20240116004':
|
|
// $billNo = 'B230726';
|
|
// break;
|
|
// case 'T220035':
|
|
// $billNo = 'M220035';
|
|
// break;
|
|
// case 'T230098':
|
|
// $billNo = 'M230098';
|
|
// break;
|
|
// }
|
|
array_push($contractNumbers, $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,
|
|
Person.PersonName,
|
|
s.DeptId, s.DeptName, Leader.PersonId AS ManagerId,
|
|
Leader.PersonName AS ManagerName,
|
|
c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a
|
|
LEFT JOIN (SELECT O.*, DE.DeptName, DE.LeaderId 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
|
|
LEFT JOIN comGroupPerson AS Person ON s.PersonId = Person.PersonId
|
|
LEFT JOIN comGroupPerson AS Leader ON s.LeaderId = Leader.PersonId ";
|
|
// 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();
|
|
$manager_list = 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'];
|
|
$managerId = $cont['ManagerId'];
|
|
$managerName = $cont['ManagerName'];
|
|
if (!in_array($salesId, $manager_list)) {
|
|
array_push($manager_list, $salesId);
|
|
}
|
|
|
|
|
|
//['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]['salesName'] = $cont['PersonName'];
|
|
$arrayData[$BillNo]['ManagerId'] = $managerId;
|
|
$arrayData[$BillNo]['ManagerName'] = $managerName;
|
|
$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'] = $arrayData[$BillNo]['A40019'] = 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);
|
|
$received_array = $conn->query($sql_received);
|
|
$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])) {
|
|
$sum_total_budget += $cont['OAmountWithTax'];
|
|
switch ($cont['MaterialId']) {
|
|
case 'A40002':
|
|
$sum_A40002 += $cont['OAmountWithTax'];
|
|
$sum_facility_A40002 += 1;
|
|
break;
|
|
case 'A40009':
|
|
$sum_A40009 += $cont['OAmountWithTax'];
|
|
$sum_facility_A40009 += 1;
|
|
break;
|
|
case 'A40010':
|
|
$sum_A40010 += $cont['OAmountWithTax'];
|
|
$sum_facility_A40010 += 1;
|
|
break;
|
|
case 'A40019':
|
|
$sum_A40019 += $cont['OAmountWithTax'];
|
|
$sum_facility_A40019 += 1;
|
|
break;
|
|
}
|
|
|
|
$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'];
|
|
$arrayData[$BillNo][$cont['MaterialId']] += $cont['OAmountWithTax'];
|
|
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'] = $arrayData[$BillNo]['facility'][$cont['CU_MaterialId']]['A40019'] = 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']]['A40019'] = 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) {
|
|
$billno = $wip['contractno'];
|
|
switch ($wip['contractno']) {
|
|
case 'M220104':
|
|
$billNo = 'SO20230701001';
|
|
break;
|
|
case 'M230098':
|
|
$billNo = 'SO20230701002';
|
|
break;
|
|
case 'M230159':
|
|
$billNo = 'SO20230701003';
|
|
break;
|
|
case 'M230992':
|
|
$billNo = 'SO20230901001';
|
|
break;
|
|
case 'M230492':
|
|
$billNo = 'SO20231110001';
|
|
break;
|
|
case 'M230557':
|
|
$billNo = 'SO20231110002';
|
|
break;
|
|
case 'M230496':
|
|
$billNo = 'SO20231110003';
|
|
break;
|
|
case 'M230683':
|
|
$billNo = 'SP20240108001';
|
|
break;
|
|
case 'B230726':
|
|
$billNo = 'SP20240116004';
|
|
break;
|
|
case 'M220035':
|
|
$billNo = 'T220035';
|
|
break;
|
|
case 'M230098':
|
|
$billNo = 'T230098';
|
|
break;
|
|
}
|
|
//[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
|
|
if (isset($arrayData[$billno])) {
|
|
// 整理合約資料
|
|
// $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[$billno][10] = $wip['contractno'];
|
|
$arrayData[$billno]['A40001'] = (isset($contract_budget[$billno]['A40001']) && !is_null($contract_budget[$billno]['A40001'])) ? $contract_budget[$billno]['A40001'] : 0;
|
|
$arrayData[$billno]['A40008'] = (isset($contract_budget[$billno]['A40008']) && !is_null($contract_budget[$billno]['A40008'])) ? $contract_budget[$billno]['A40008'] : 0;
|
|
// [合約號]['facility'][作番號]['no']
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['no'] = $wip['facilityno'];
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['status'] = "";
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['total_budget'] = 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['receivable_budget'] = 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['collect_budget'] = 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['A40002'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40002']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40002'])) ? $contract_budget[$billno][$wip['facilityno']]['A40002'] : 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['A40008'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40008']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40008'])) ? $contract_budget[$billno][$wip['facilityno']]['A40008'] : 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['A40010'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40010']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40010'])) ? $contract_budget[$billno][$wip['facilityno']]['A40010'] : 0;
|
|
$arrayData[$billno]['facility'][$wip['facilityno']]['A40019'] = (isset($contract_budget[$billno][$wip['facilityno']]['A40019']) && !is_null($contract_budget[$billno][$wip['facilityno']]['A40019'])) ? $contract_budget[$billno][$wip['facilityno']]['A40019'] : 0;
|
|
}
|
|
$wipwhole_status[$wip['facilityno']] = $wip;
|
|
}
|
|
|
|
// 整理arrayData[合約]['PayStage']進 (新增) arrayData[合約]['facility'][作番號][PayStage]
|
|
$sign0 = 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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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']));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
break;
|
|
case (in_array($facility['PayStage'][$stage]['name'], $sign0)):
|
|
break;
|
|
default:
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
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'])));
|
|
} else {
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
}
|
|
break;
|
|
default:
|
|
$facility['PayStage'][$stage]['PlanPayDate'] = NULL;
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 將WMS內期初資料整理進arrayData
|
|
$sql_initial = "SELECT * FROM account_receivable_renovate";
|
|
$result_initial = mysqli_query($link, $sql_initial);
|
|
foreach($result_initial as $value){
|
|
$billno = $value['contract_no'];
|
|
switch ($value['contract_no']) {
|
|
case 'M220104':
|
|
$billNo = 'SO20230701001';
|
|
break;
|
|
case 'M230098':
|
|
$billNo = 'SO20230701002';
|
|
break;
|
|
case 'M230159':
|
|
$billNo = 'SO20230701003';
|
|
break;
|
|
case 'M230992':
|
|
$billNo = 'SO20230901001';
|
|
break;
|
|
case 'M230492':
|
|
$billNo = 'SO20231110001';
|
|
break;
|
|
case 'M230557':
|
|
$billNo = 'SO20231110002';
|
|
break;
|
|
case 'M230496':
|
|
$billNo = 'SO20231110003';
|
|
break;
|
|
case 'M230683':
|
|
$billNo = 'SP20240108001';
|
|
break;
|
|
case 'B230726':
|
|
$billNo = 'SP20240116004';
|
|
break;
|
|
case 'M220035':
|
|
$billNo = 'T220035';
|
|
break;
|
|
case 'M230098':
|
|
$billNo = 'T230098';
|
|
break;
|
|
}
|
|
if(isset($arrayData[$billNo])){
|
|
$arrayData[$billNo]['invoice_budget'] += intval($value['invoice_budget']);
|
|
$arrayData[$billNo]['received_budget'] += intval($value['received_budget']);
|
|
}
|
|
}
|
|
|
|
// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號]
|
|
foreach ($invoice_data as $invoice) {
|
|
if (isset($invoice['BillNo']) && isset($arrayData[$invoice['BillNo']])) {
|
|
$arrayData[$invoice['BillNo']]['invoice_budget'] += intval($invoice['LAmountWithTax']);
|
|
$arrayData[$invoice['BillNo']]['invoice'][$invoice['InvoiceNo']] = [date("Y-m-d", strtotime($invoice['InvoiceDate'])), $invoice['LAmountWithTax'], $invoice['InvoiceState']];
|
|
}
|
|
}
|
|
|
|
// 把核銷單的內容補到發票資料中
|
|
foreach ($received_array as $received) {
|
|
$BillNo = $received['OrderBillNo'];
|
|
if (isset($arrayData[$BillNo])) {
|
|
$arrayData[$BillNo]['received_budget'] += $received['CurrWriteOffLAmount'];
|
|
}
|
|
}
|
|
|
|
// $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount']
|
|
foreach ($final_paystage as $key => &$payStage) {
|
|
if (isset($arrayData[$key]['invoice_budget']) && isset($arrayData[$key]['received_budget'])) {
|
|
$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 催收次數
|
|
|
|
$table = "";
|
|
$excel_aray = array();
|
|
$print_array = array();
|
|
$today = strtotime(date('Ymt'));
|
|
foreach ($arrayData as $key => $value) {
|
|
if (isset($final_paystage[$key])) {
|
|
for ($sequence = 1; $sequence <= count($final_paystage[$key]); $sequence++) {
|
|
if (!is_null($value['ManagerId']) && $value['ManagerId'] !== '') {
|
|
$managerId = $value['ManagerId'];
|
|
} else {
|
|
$managerId = $value[11];
|
|
}
|
|
if (!is_null($value['ManagerName']) && $value['ManagerName'] !== '') {
|
|
$managerName = $value['ManagerName'];
|
|
} else {
|
|
$managerName = $value[2];
|
|
}
|
|
$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'] . "_" . $sequence;
|
|
if (isset($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate']) && $final_paystage[$key][$sequence]['PlanPayDate'] !== NULL) {
|
|
$havetopay = ($today >= strtotime($final_paystage[$key][$sequence]['PlanPayDate'])) ? "V" : "--";
|
|
} else {
|
|
$havetopay = "--";
|
|
}
|
|
|
|
$table_hadtopay = 0;
|
|
switch ($havetopay) {
|
|
case "V":
|
|
$table_hadtopay = 1;
|
|
$unInvoiceAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['InvoiceAmount'];
|
|
$unReceivedAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['receivedAmount'];
|
|
break;
|
|
default:
|
|
$unInvoiceAmount = 0;
|
|
$unReceivedAmount = 0;
|
|
break;
|
|
}
|
|
if (is_null($thisPayStage['PlanPayDate']) || empty($thisPayStage['PlanPayDate'])) {
|
|
$thisplanpaydate = "--";
|
|
} else {
|
|
$thisplanpaydate = $thisPayStage['PlanPayDate'];
|
|
}
|
|
if ($havetopay == "V" && ($unReceivedAmount > 10) && ($final_paystage[$key][$sequence]['collect_month'] >0)) {
|
|
$print_array[$keyname] = [
|
|
$value[10], $thisPayStage['facilityno'], $value[1],$value[4], $value[5],
|
|
$thisPayStage['name'], $thisplanpaydate,
|
|
round($final_paystage[$key][$sequence]['PayAmount']),
|
|
round($final_paystage[$key][$sequence]['receivedAmount']), round($unReceivedAmount),
|
|
round($final_paystage[$key][$sequence]['collect_month'])
|
|
|
|
];
|
|
}
|
|
$table_budget = round($final_paystage[$key][$sequence]['PayAmount']);
|
|
$table_invoice_budget = round($final_paystage[$key][$sequence]['InvoiceAmount']);
|
|
$table_received_budget = round($final_paystage[$key][$sequence]['receivedAmount']);
|
|
$excel_aray[$keyname] = [
|
|
$value[10], $thisPayStage['facilityno'], $value[0], $value[1], $managerId, $managerName, $value[3], $value[4], $value[5], $value[6], $value[7], $value[8],
|
|
$thisPayStage['name'], $thisplanpaydate, $havetopay,
|
|
number_format(round($final_paystage[$key][$sequence]['PayAmount'])),
|
|
number_format(round($final_paystage[$key][$sequence]['InvoiceAmount'])), number_format(round($unInvoiceAmount)),
|
|
number_format(round($final_paystage[$key][$sequence]['receivedAmount'])), number_format(round($unReceivedAmount)),
|
|
number_format(round($final_paystage[$key][$sequence]['collect_month']))
|
|
];
|
|
if ($final_paystage[$key][$sequence]['InvoiceAmount'] > 1) {
|
|
$invoice_state = 1;
|
|
} else {
|
|
$invoice_state = 0;
|
|
}
|
|
// $table1 = "INSERT INTO account_receivable_renovate(
|
|
// `contract_no`,
|
|
// `facility_no`,
|
|
// `stagename`,
|
|
// `budget`,
|
|
// `receivable`,
|
|
// `invoice_state`,
|
|
// `invoice_budget`,
|
|
// `received_budget`
|
|
// ";
|
|
// $table2 = ") VALUES (
|
|
// '$value[10]',
|
|
// '$thisPayStage[facilityno]',
|
|
// '$thisPayStage[name]',
|
|
// $table_budget,
|
|
// $table_hadtopay,
|
|
// $invoice_state,
|
|
// $table_invoice_budget,
|
|
// $table_received_budget
|
|
// ";
|
|
|
|
// if (!is_null($final_paystage[$key][$sequence]['PlanPayDate']) && !empty($final_paystage[$key][$sequence]['PlanPayDate'])) {
|
|
// $table1 .= ",`receivable_date`";
|
|
// $receivable_date = date('Y-m-d', strtotime($final_paystage[$key][$sequence]['PlanPayDate']));
|
|
// $table2 .= ",'$receivable_date' \n";
|
|
// }
|
|
// $table .= $table1 . $table2 . "); \n";
|
|
}
|
|
}
|
|
}
|
|
// $file_path = 'account_receivable_renovate_sql.sql';
|
|
// if (file_put_contents($file_path, $table) !== false) {
|
|
// echo "SQL文件已成功生成:{$file_path}";
|
|
// } else {
|
|
// echo "生成SQL文件时出现错误。";
|
|
// }
|
|
$total_data = json_encode($print_array);
|
|
$average_budget = $sum_total_budget / $sum_facility;
|
|
$average_A40002 = $sum_A40002 / $sum_facility_A40002;
|
|
$average_A40009 = $sum_A40009 / $sum_facility_A40009;
|
|
$average_A40010 = $sum_A40010 / $sum_facility_A40010;
|
|
$average_A40019 = $sum_A40019 / $sum_facility_A40019;
|
|
|
|
?>
|
|
<style>
|
|
table {
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
}
|
|
|
|
td {
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
img {
|
|
width: 125px;
|
|
}
|
|
|
|
.width_style_1 {
|
|
width: 125px;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
}
|
|
|
|
#table_index_filter {
|
|
float: right;
|
|
}
|
|
|
|
#table_index_paginate {
|
|
float: right;
|
|
}
|
|
|
|
label {
|
|
display: inline-flex;
|
|
margin-bottom: .5rem;
|
|
margin-top: .5rem;
|
|
|
|
}
|
|
|
|
.hiddenTable {
|
|
display: none;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
</style>
|
|
|
|
<div style="width: 98%;margin: 1%;">
|
|
<div class="btn-group btn-group-md " style="padding:10 px; width: 100%;">
|
|
<button type="button" style="width: 12%;" onclick="downloadData()" class="btn btn-success">下載 <span class="glyphicon glyphicon-download-alt"></span></button>
|
|
</div>
|
|
</div>
|
|
<div class="container">
|
|
<div class="text-center" style="margin-bottom: 20px;">
|
|
<h3><strong>合約 (汰改)統整資訊</strong></h3>
|
|
</div>
|
|
<form class="form-horizontal">
|
|
<div class="form-group">
|
|
<div class="col-md-3">
|
|
<label for="sum_total_budget">合約總金額</label>
|
|
<input type="text" class="form-control" id="sum_total_budget" name="sum_total_budget" value="<?= number_format($sum_total_budget) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="sum_facility">總台數</label>
|
|
<input type="text" class="form-control" id="sum_facility" name="sum_facility" value="<?= number_format($sum_facility) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="average_budget">作番平均金額 (元/台)</label>
|
|
<input type="text" class="form-control" id="average_budget" name="average_budget" value="<?= number_format($average_budget) ?>" disabled>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
|
|
<div class="col-md-3">
|
|
<label for="sum_A40002">M1總金額</label>
|
|
<input type="text" class="form-control" id="sum_A40002" name="sum_A40002" value="<?= number_format($sum_A40002) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="sum_A40009">設備總金額</label>
|
|
<input type="text" class="form-control" id="sum_A40009" name="sum_A40009" value="<?= number_format($sum_A40009) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="sum_A40010">安裝總金額</label>
|
|
<input type="text" class="form-control" id="sum_A40010" name="sum_A40010" value="<?= number_format($sum_A40010) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="sum_A40019">M4總金額</label>
|
|
<input type="text" class="form-control" id="sum_A40019" name="sum_A40019" value="<?= number_format($sum_A40019) ?>" disabled>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="form-group">
|
|
|
|
<div class="col-md-3">
|
|
<label for="average_A40002">M1平均金額 (元/台)</label>
|
|
<input type="text" class="form-control" id="average_A40002" name="average_A40002" value="<?= number_format($average_A40002) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="average_A40009">設備平均金額 (元/台)</label>
|
|
<input type="text" class="form-control" id="average_A40009" name="average_A40009" value="<?= number_format($average_A40009) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="average_A40010">安裝平均金額 (元/台)</label>
|
|
<input type="text" class="form-control" id="average_A40010" name="average_A40010" value="<?= number_format($average_A40010) ?>" disabled>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label for="average_A40019">M4平均金額 (元/台)</label>
|
|
<input type="text" class="form-control" id="average_A40019" name="average_A40019" value="<?= number_format($average_A40019) ?>" disabled>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<hr>
|
|
<form class="form-horizontal" id='myForm' method='post' action='account-receivable-new-index.php?<?= $token_link ?>'>
|
|
<table class="table table-striped table-bordered" style='width:98%;text-align:center;margin:0 auto'>
|
|
<tbody>
|
|
<tr>
|
|
<th class="text-center" style="vertical-align: middle;">合約日期</th>
|
|
<td colspan="2">
|
|
<input type="date" class='form-control' id='date_start' name='date_start' style='width:40%;display:inline;'>
|
|
~
|
|
<input type="date" class='form-control' id='date_end' name='date_end' style='width:40%;display:inline;'>
|
|
<button type="submit" class="btn btn-primary btn-sm">搜尋</button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-center" style="vertical-align: middle;">催收次數</th>
|
|
<td colspan="2">
|
|
<input type="text" class='form-control' id='search_collectstart' name='collect_time_start' style='width:10%;display:inline;' oninput="searchFront('collectstart')">
|
|
≤ 催收次數 ≤
|
|
<input type="text" class='form-control' id='search_collectend' name='collect_time_end' style='width:10%;display:inline;' oninput="searchFront('collectend')">
|
|
<!-- <button type="submit" class="btn btn-primary btn-sm">搜尋</button> -->
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-center" style="vertical-align: middle;">催收金額</th>
|
|
<td colspan="2">
|
|
<input type="text" class='form-control' id='search_CBudgetstart' name='collect_budget_start' style='width:40%;display:inline;' onblur="searchFront('CBudgetstart')">
|
|
≤ 催收金額 ≤
|
|
<input type="text" class='form-control' id='search_CBudgetend' name='collect_budget_end' style='width:40%;display:inline;' onblur="searchFront('CBudgetend')">
|
|
<!-- <button type="submit" class="btn btn-primary btn-sm">搜尋</button> -->
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</form>
|
|
<hr>
|
|
<div class="form-group">
|
|
<div class="col-md-4">
|
|
<label for="search_contract">查詢合約號</label>
|
|
<input type="text" id="search_contract" name="search_contract" class="form-control" placeholder="請輸入合約號" onblur="searchFront('contract')">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label for="search_dept">查詢部門</label>
|
|
<input type="text" id="search_dept" name="search_dept" class="form-control" placeholder="請輸入部門" onblur="searchFront('dept')">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label for="search_manager">查詢主管</label>
|
|
<input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" onblur="searchFront('manager')">
|
|
</div>
|
|
|
|
</div>
|
|
<div class="form-group">
|
|
|
|
<div class="col-md-4">
|
|
<label for="search_personId">查詢契約員</label>
|
|
<input type="text" id="search_personId" name="search_personId" class="form-control" placeholder="請輸入契約員工號/姓名" onblur="searchFront('personId')">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label for="search_customerid">查詢客戶名稱</label>
|
|
<input type="text" id="search_customerid" name="search_customerid" class="form-control" placeholder="請輸入客戶名稱" onblur="searchFront('customerid')">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label for="search_facility">查詢作番號</label>
|
|
<input type="text" id="search_facility" name="search_facility" class="form-control" placeholder="請輸入作番號" onblur="searchFront('facility')">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
include "./footer.php";
|
|
?>
|
|
<div style="width: 20%;float:right;margin-right:5%; ">
|
|
<label>查詢條件</label>
|
|
<input type="text" id="search" name="search" class="form-control" placeholder="請輸入合約號/作番號/客戶名稱" oninput="searchData()">
|
|
</div>
|
|
<div style="width: 98%; margin:1%;" style="overflow-x:auto;">
|
|
<table class="table table-striped table-bordered" style="width:100%">
|
|
<thead>
|
|
<tr>
|
|
<th style='text-align:center;vertical-align: middle;width:100px'>合約號</th>
|
|
<th style='text-align:center;vertical-align: middle;width:100px'>作番號</th>
|
|
<th style='text-align:center;vertical-align: middle;width:110px'>部門</th>
|
|
<th style='text-align:center;vertical-align: middle;'>主管</th>
|
|
<th style='text-align:center;vertical-align: middle;'>契約員</th>
|
|
<th style='text-align:center;vertical-align: middle;width:120px'>客戶名稱</th>
|
|
<th style='text-align:center;vertical-align: middle;'>收款階段</th>
|
|
<th style='text-align:center;vertical-align: middle;'>應收日期</th>
|
|
<th style='text-align:center;vertical-align: middle;'>是否應收</th>
|
|
<th style='text-align:end;vertical-align: middle;'>合約金額</th>
|
|
<th style='text-align:end;vertical-align: middle;'>應收金額</th>
|
|
<th style='text-align:end;vertical-align: middle;'>已開金額</th>
|
|
<th style='text-align:end;vertical-align: middle;'>未開金額</th>
|
|
<th style='text-align:end;vertical-align: middle;'>已收金額</th>
|
|
<th style='text-align:end;vertical-align: middle;'>催收金額</th>
|
|
<th style='text-align:center;vertical-align: middle;'>催收次數</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($excel_aray as $key => $row) { ?>
|
|
<tr class="data-row" style="display: '';" id="<?= $key; ?>">
|
|
<td class="contract"><?= $row[0]; ?></td>
|
|
<td class="facility"><?= $row[1]; ?></td>
|
|
<td class="dept"><?= $row[2] . "<br>" . $row[3]; ?></td>
|
|
<td class="manager"><?= $row[4] . "<br>" . $row[5]; ?></td>
|
|
<td class="personId"><?= $row[6] . "<br>" . $row[7]; ?></td>
|
|
<td class="customerid"><?= $row[8]; ?></td>
|
|
<td><?= $row[12]; ?></td>
|
|
<td><?= $row[13]; ?></td>
|
|
<td><?= $row[14]; ?></td>
|
|
<td><?= $row[15]; ?></td>
|
|
<td><?php if ($row[14] == 'V' && $row[19] > 0) {
|
|
echo $row[15];
|
|
} else {
|
|
echo '0';
|
|
} ?></td>
|
|
<td><?= $row[16]; ?></td>
|
|
<td><?= $row[17]; ?></td>
|
|
<td><?= $row[18]; ?></td>
|
|
<td class="CBudget"><?= $row[19]; ?></td>
|
|
<td class="collect"><?= $row[20]; ?></td>
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<script>
|
|
function searchData() {
|
|
var searchTerm = document.getElementById('search').value.toLowerCase();
|
|
var rows = document.getElementsByClassName('data-row');
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = rows[i].textContent.toLowerCase();
|
|
// var rowText = rows[i].id.toLowerCase();
|
|
if (rowText.includes(searchTerm)) {
|
|
console.log(rowText);
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
}
|
|
|
|
function downloadData() {
|
|
var xhr = new XMLHttpRequest();
|
|
var url = window.location.origin + "/wms/account-receivable-excel.php?type=renovate&<?= $token_link ?>";
|
|
xhr.open('POST', url, true);
|
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
|
var file_path = xhr.responseText;
|
|
var link = document.createElement('a');
|
|
var name = "汰改應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
|
|
link.setAttribute('href', window.location.origin + "/wms/account-receivable-renovate.xlsx");
|
|
link.setAttribute('download', name);
|
|
link.style.display = 'none';
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
document.body.removeChild(link);
|
|
}
|
|
}
|
|
xhr.send(JSON.stringify({
|
|
Bill: <?= $total_data ?>
|
|
}));
|
|
|
|
}
|
|
|
|
function searchFront(area) {
|
|
var term = 'search_' + area;
|
|
|
|
if (area == 'collectstart') {
|
|
var searchTerm = parseInt(document.getElementById(term).value);
|
|
var searchArea = document.getElementsByClassName('collect');
|
|
var rows = document.getElementsByClassName('data-row');
|
|
var criterion = parseInt(document.getElementById('search_collectend').value);
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = parseInt(searchArea[i].textContent);
|
|
if (rowText >= searchTerm) {
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
if (criterion !== '' && rowText > criterion) {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
} else if (area == 'collectend') {
|
|
var searchTerm = parseInt(document.getElementById(term).value);
|
|
var searchArea = document.getElementsByClassName('collect');
|
|
var rows = document.getElementsByClassName('data-row');
|
|
var criterion = parseInt(document.getElementById('search_collectstart').value);
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = parseInt(searchArea[i].textContent);
|
|
if (rowText <= searchTerm) {
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
if (criterion !== '' && rowText < criterion) {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
} else if (area == 'CBudgetstart') {
|
|
var searchTerm = parseInt(document.getElementById(term).value);
|
|
var searchArea = document.getElementsByClassName('CBudget');
|
|
var rows = document.getElementsByClassName('data-row');
|
|
var criterion = parseInt(document.getElementById('search_CBudgetend').value);
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = parseInt(searchArea[i].textContent.replace(/,/g, ''));
|
|
if (isNaN(searchTerm) || searchTerm == 0) {
|
|
rows[i].style.display = '';
|
|
} else if (rowText >= searchTerm) {
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
if (criterion !== '' && rowText > criterion) {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
} else if (area == 'CBudgetend') {
|
|
var searchTerm = parseInt(document.getElementById(term).value);
|
|
var searchArea = document.getElementsByClassName('CBudget');
|
|
var rows = document.getElementsByClassName('data-row');
|
|
var criterion = parseInt(document.getElementById('search_CBudgetstart').value);
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = parseInt(searchArea[i].textContent.replace(/,/g, ''));
|
|
if (isNaN(searchTerm) || searchTerm == 0) {
|
|
rows[i].style.display = '';
|
|
} else if (rowText <= searchTerm) {
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
if (!isNaN(criterion) && rowText < criterion) {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
} else {
|
|
var searchTerm = document.getElementById(term).value.toLowerCase();
|
|
var searchArea = document.getElementsByClassName(area);
|
|
var rows = document.getElementsByClassName('data-row');
|
|
for (var i = 0; i < rows.length; i++) {
|
|
var rowText = searchArea[i].textContent.toLowerCase();
|
|
if (rowText.includes(searchTerm)) {
|
|
rows[i].style.display = '';
|
|
} else {
|
|
rows[i].style.display = 'none';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function check(searchname) {
|
|
console.log(searchname);
|
|
|
|
}
|
|
</script>
|