10994015 1 year ago
parent
commit
9c47501bf5
  1. 5
      wms/account-receivable-index.php
  2. 598
      wms/account-receivable-new-index.php
  3. 184
      wms/account-receivable-renovate-index.php
  4. 4
      wms/account-receivable-repair-index.php
  5. 113
      wms/account-receivable-test.php

5
wms/account-receivable-index.php

@ -110,7 +110,6 @@ if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepart
$sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId"; $sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId";
} else { } else {
$sql_contract .= "AND (s.PersonId = '$user_id'"; $sql_contract .= "AND (s.PersonId = '$user_id'";
// $sql_received .= " AND (PersonId = '$user_id'";
$sql_opening .= " OR person_id = '$user_id'"; $sql_opening .= " OR person_id = '$user_id'";
$sql .= " WHERE salesid = '$user_id'"; $sql .= " WHERE salesid = '$user_id'";
$sql_contract_budget .= " AND (PersonId = '$user_id'"; $sql_contract_budget .= " AND (PersonId = '$user_id'";
@ -118,14 +117,12 @@ if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepart
$column_str = "('$user_id'" . ",'"; $column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower); $column_str .= implode("','", $follower);
$column_str .= "')"; $column_str .= "')";
$sql_contract .= " OR s.PersonId IN $column_str)"; $sql_contract .= " OR s.PersonId IN $column_str)";;
// $sql_received .= " OR PersonId IN $column_str)";
$sql_opening .= " OR person_id IN $column_str)"; $sql_opening .= " OR person_id IN $column_str)";
$sql .= " OR salesid IN $column_str ORDER BY contractno"; $sql .= " OR salesid IN $column_str ORDER BY contractno";
$sql_contract_budget .= " OR PersonId IN $column_str )ORDER BY BillNo, CU_MaterialId"; $sql_contract_budget .= " OR PersonId IN $column_str )ORDER BY BillNo, CU_MaterialId";
} else { } else {
$sql_contract .= ")"; $sql_contract .= ")";
// $sql_received .= ")";
$sql_opening .= ")"; $sql_opening .= ")";
$sql .= " ORDER BY contractno"; $sql .= " ORDER BY contractno";
$sql_contract_budget .= ")"; $sql_contract_budget .= ")";

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

@ -0,0 +1,598 @@
<?php
include "./header.php";
$start_date = empty($_POST['date_start']) ? null : $_POST['date_start'];
$end_date = empty($_POST['date_end']) ? null : $_POST['date_end'];
$sum_facility = 0;
$sum_contract = 0;
$sum_A40001 = 0;
$sum_A40008 = 0;
$sum_total_budget = 0;
$average_budget = 0;
$average_A40001 = 0;
$average_A40008 = 0;
$sum_invoice_budget = 0;
$sum_received_budget = 0;
$sum_collect_budget = 0;
// 主要array
$arrayData = array();
// 收款階段另存array整理收款順序
$PayStage_array = array();
// 所有的新梯合約號,方便後續SQL查詢
$contractNumbers = array();
/* 比較應收日期
@param $a array
@param $b array
return int */
function comparePlanPayDate($a, $b)
{
// return strtotime($a['PlanPayDate']) - strtotime($b['PlanPayDate']);
$aDate = strtotime($a['PlanPayDate']);
$bDate = strtotime($b['PlanPayDate']);
if ($aDate === false && $bDate === false) {
return 0; // 兩個日期都無效,視為相等
} elseif ($aDate === false) {
return 1; // $aDate 無效,認為 $aDate 較大
} elseif ($bDate === false) {
return -1; // $bDate 無效,認為 $bDate 較大
}
return $aDate - $bDate;
}
/* 計算比例
@param $facilityno string
@param $contractno string
@param $arrayData array
return float */
function get_ratio($facilityno, $contractno, $arrayData)
{
$ratio = 0;
if (isset($arrayData[$contractno])) {
$this_total = $arrayData[$contractno]['total_budget'];
if (isset($arrayData[$contractno]['facility'][$facilityno]['total_budget'])) {
$this_facility = $arrayData[$contractno]['facility'][$facilityno]['total_budget'];
$ratio = $this_facility / $this_total;
}
}
return $ratio;
}
// 查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('員工姓名', '主管工號', '主管姓名');
$find_manager = array();
if (is_iterable($managers)) {
foreach ($managers as $manager) {
$find_manager[$manager['accountid']] = $manager;
}
}
$follower = find_follow($user_id);
// T8所有合約號
$sql_all_contract = "SELECT MainAll.* ,
Person.PersonName,
Dept.DeptName FROM
(SELECT
Main.BillNo,
Main.BillDate,
Main.BizPartnerId,
Biz.ShortName,
Biz.BizPartnerName,
Biz.ContactAddress,
Main.OAmountWithTax,
Main.PersonId,
Main.DeptId,
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
WHERE MainAll.ModeId = 'M' AND (MainAll.CurrentState=2 OR MainAll.CurrentState=4) ";
if (!is_null($start_date)) {
$start_date = (int)date('Ymd', strtotime($start_date));
$sql_all_contract .= " AND MainAll.BillDate >= $start_date ";
}
if (!is_null($end_date)) {
$end_date = (int)date('Ymd', strtotime($end_date));
$sql_all_contract .= " AND MainAll.BillDate <= $end_date ";
}
if ((in_array($user_id, array('M0060', 'M0175'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '321')))) {
} else {
$sql_all_contract .= " AND (MainAll.PersonId = '$user_id'";
if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower);
$column_str .= "')";
$sql_all_contract .= " OR MainAll.PersonId IN $column_str)";
} else {
$sql_all_contract .= ")";
};
}
$str_numbers = "";
$query_all_contract = $conn->query($sql_all_contract);
if (is_iterable($query_all_contract)) {
foreach ($query_all_contract as $contract_numbers) {
if (!in_array($contract_numbers['BillNo'], $contractNumbers)) {
array_push($contractNumbers, $contract_numbers['BillNo']);
$arrayData[$contract_numbers['BillNo']]['BillNo'] = isset($contract_numbers['BillNo']) ? $contract_numbers['BillNo'] : '--';
$arrayData[$contract_numbers['BillNo']]['BillDate'] = isset($contract_numbers['BillDate']) ? $contract_numbers['BillDate'] : '--';
$arrayData[$contract_numbers['BillNo']]['CustomerId'] = isset($contract_numbers['BizPartnerId']) ? $contract_numbers['BizPartnerId'] : '--';
$arrayData[$contract_numbers['BillNo']]['CustomerName'] = isset($contract_numbers['BizPartnerName']) ? $contract_numbers['BizPartnerName'] : '--';
$arrayData[$contract_numbers['BillNo']]['CustomerAddress'] = isset($contract_numbers['ContactAddress']) ? $contract_numbers['ContactAddress'] : '--';
$arrayData[$contract_numbers['BillNo']]['OAmountWithTax'] = isset($contract_numbers['OAmountWithTax']) ? $contract_numbers['OAmountWithTax'] : 0;
$arrayData[$contract_numbers['BillNo']]['PersonId'] = isset($contract_numbers['PersonId']) ? $contract_numbers['PersonId'] : '--';
$arrayData[$contract_numbers['BillNo']]['DeptId'] = isset($contract_numbers['DeptId']) ? $contract_numbers['DeptId'] : '--';
$arrayData[$contract_numbers['BillNo']]['PersonName'] = isset($contract_numbers['PersonName']) ? $contract_numbers['PersonName'] : '--';
$arrayData[$contract_numbers['BillNo']]['DeptName'] = isset($contract_numbers['DeptName']) ? $contract_numbers['DeptName'] : '--';
$arrayData[$contract_numbers['BillNo']]['ShortName'] = isset($contract_numbers['ShortName']) ? $contract_numbers['ShortName'] : '--';
$arrayData[$contract_numbers['BillNo']]['ManagerId'] = !empty($find_manager[$contract_numbers['PersonId']]['manager']) ? $find_manager[$contract_numbers['PersonId']]['manager'] : '--';
$arrayData[$contract_numbers['BillNo']]['ManagerName'] = !empty($find_manager[$contract_numbers['PersonId']]['manager_name']) ? $find_manager[$contract_numbers['PersonId']]['manager_name'] : '--';
$arrayData[$contract_numbers['BillNo']]['invoice_budget'] = 0;
$arrayData[$contract_numbers['BillNo']]['received_budget'] = 0;
$arrayData[$contract_numbers['BillNo']]['receivable_budget'] = 0;
$arrayData[$contract_numbers['BillNo']]['collect_budget'] = 0;
$arrayData[$contract_numbers['BillNo']]['A40001'] = 0;
$arrayData[$contract_numbers['BillNo']]['A40008'] = 0;
$arrayData[$contract_numbers['BillNo']]['facility_status'] = "";
$arrayData[$contract_numbers['BillNo']]['facility'] = array();
$arrayData[$contract_numbers['BillNo']]['total_budget'] = $contract_numbers['OAmountWithTax'];
$sum_total_budget += $contract_numbers['OAmountWithTax'];
}
}
$str_numbers .= "('" . implode("','", $contractNumbers) . "')";
}
// T8 銷售訂單 作番總金額、作番A40001金額、作番A40008金額、合約A40001金額、合約A40008金額
$sql_contract_budget = "SELECT A.BillNo, A.OAmountWithTax,A.CU_MaterialId, A.MaterialId FROM salSalesOrderDetail AS A
LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo
WHERE B.ModeId='M' AND A.ItemType=1 ";
$query_contract_budget = $conn->query($sql_contract_budget);
foreach ($query_contract_budget as $contract_budget) {
if (isset($arrayData[$contract_budget['BillNo']])) {
$arrayData[$contract_budget['BillNo']][$contract_budget['MaterialId']] += $contract_budget['OAmountWithTax'];
if (isset($arrayData[$contract_budget['BillNo']]['facility']) && isset($arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']])) {
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['total_budget'] += $contract_budget['OAmountWithTax'];
if (isset($arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']])) {
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] += $contract_budget['OAmountWithTax'];
} else {
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] = $contract_budget['OAmountWithTax'];
}
} else {
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['total_budget'] = $contract_budget['OAmountWithTax'];
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] = $contract_budget['OAmountWithTax'];
$arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['status'] = "";
}
}
}
//T8 銷售訂單 階段收款計畫
$sql_PayStage = "SELECT
a.RowNo,
a.BillNo,
s.BillDate,
a.PayStage,
a.PlanPayAmt,
a.PlanPayDate,
s.BizPartnerId,
s.PersonId
FROM salOrderStagePay AS a
LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo
WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) ";
if (!empty($str_numbers)) {
$sql_PayStage .= " AND s.BillNo IN " . $str_numbers;
}
$query_PayStage = $conn->query($sql_PayStage);
// 把階段收款計畫放進arrayData內
foreach ($query_PayStage as $PayStage) {
if (isset($arrayData[$PayStage['BillNo']])) {
$arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PayStage'] = $PayStage['PayStage'];
$arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PlanPayAmt'] = $PayStage['PlanPayAmt'];
$arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']]['PlanPayDate'] = $PayStage['PlanPayDate'];
if (isset($arrayData[$PayStage['BillNo']]['facility']) && is_iterable($arrayData[$PayStage['BillNo']]['facility'])) {
foreach ($arrayData[$PayStage['BillNo']]['facility'] as $key => &$value) {
$tmpkey = $key . $PayStage['RowNo'];
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey] = $arrayData[$PayStage['BillNo']]['PayStage'][$PayStage['RowNo']];
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['PlanPayAmt'] = $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['PlanPayAmt'] * get_ratio($key, $PayStage['BillNo'], $arrayData);
$arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'][$tmpkey]['facilityno'] = $key;
if (isset($PayStage_array[$PayStage['BillNo']])) {
$PayStage_array[$PayStage['BillNo']] = array_merge($PayStage_array[$PayStage['BillNo']], $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage']);
} else {
$PayStage_array[$PayStage['BillNo']] = $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'];
}
}
}
}
}
//作番大日程
$sql_wip = "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='A'
)AS tmp2
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d
ON d.department_id = tmp2.department_id ";
// 將作番大日程新梯資料存入array中方便查詢
// 作番號 -> estimated_shipping_date 預計出港日; real_contract_arrival_date 預計出貨日; real_arrival_date 實際出貨日;
// install_end_date 安裝完畢日; tryrun_end_date 試車完畢日; official_check_date 官檢日; delivery_date 移交完畢日
$wip_array = array();
$query_wip = mysqli_query($link, $sql_wip);
foreach ($query_wip as $wip) {
$wip_array[$wip['facilityno']]['estimated_shipping_date'] = $wip['estimated_shipping_date'];
$wip_array[$wip['facilityno']]['real_contract_arrival_date'] = $wip['real_contract_arrival_date'];
$wip_array[$wip['facilityno']]['real_arrival_date'] = $wip['real_arrival_date'];
$wip_array[$wip['facilityno']]['install_end_date'] = $wip['install_end_date'];
$wip_array[$wip['facilityno']]['tryrun_end_date'] = $wip['tryrun_end_date'];
$wip_array[$wip['facilityno']]['official_check_date'] = $wip['official_check_date'];
$wip_array[$wip['facilityno']]['delivery_date'] = $wip['delivery_date'];
if (isset($arrayData[$wip['contractno']]) && isset($arrayData[$wip['contractno']]['facility'][$wip['facilityno']])) {
if ($wip['delivery_date'] != NULL && $wip['delivery_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['delivery_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['delivery_date'] . "已移交";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) ";
} elseif ($wip['official_check_date'] != NULL && $wip['official_check_date'] != '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['official_check_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['official_check_date'] . "官檢完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) ";
} elseif ($wip['tryrun_end_date'] != NULL && $wip['tryrun_end_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['tryrun_end_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['tryrun_end_date'] . "試車完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) ";
} elseif ($wip['install_end_date'] != NULL && $wip['install_end_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['install_end_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['install_end_date'] . "安裝完畢";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) ";
} elseif ($wip['real_arrival_date'] != NULL && $wip['real_arrival_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['real_arrival_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_arrival_date'] . "貨抵工地";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) ";
} elseif ($wip['real_contract_arrival_date'] != NULL && $wip['real_contract_arrival_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['real_contract_arrival_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_contract_arrival_date'] . "預計出貨";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨) ";
} elseif ($wip['estimated_shipping_date'] != NULL && $wip['estimated_shipping_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['estimated_shipping_date'])) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['estimated_shipping_date'] . "預計出港";
$arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港) ";
}
}
}
// 合約收款階段內容分類
$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天');
$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天');
$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天', '合約簽訂後120天');
$sign0 = array('簽約', '簽訂', '合約簽訂', '訂金');
$arrival = array('貨抵工地', '貨底工地', '工地動工');
$final6 = array('核可函取得後6個月', '得合格函後6個月');
foreach ($PayStage_array as $key => &$value) {
foreach ($value as $paykey => &$payvalue) {
if (isset($wip_array[$payvalue['facilityno']])) {
switch ($payvalue['PayStage']) {
case '寶佳出貨前30天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '寶佳出貨後10天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (10 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '貨抵工地後90天':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '安裝試車後90天':
if ($wip_array[$payvalue['facilityno']]['tryrun_end_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['tryrun_end_date'])) {
$estimate_time = strtotime($wip['tryrun_end_date']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '交車後270天':
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$signtime = $estimate_time + (270 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $arrival)):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time + (10 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case '二次款':
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前30') || stristr($payvalue['PayStage'], '簽約(出貨前30天)')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前60')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前90')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '出貨前120')):
if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) {
$estimate_time = strtotime($wip['real_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} elseif ($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_contract_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_contract_arrival_date'])) {
$estimate_time = strtotime($wip['real_contract_arrival_date']);
$signtime = $estimate_time - (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $sign60)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (60 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (in_array($payvalue['PayStage'], $sign90)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (90 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (in_array($payvalue['PayStage'], $sign120)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (120 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (stristr($payvalue['PayStage'], '簽訂後30')):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$signtime = $estimate_time + (30 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $signtime);
break;
case (in_array($payvalue['PayStage'], $sign0)):
$estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
break;
case (stristr($payvalue['PayStage'], '試車')):
if ($wip_array[$payvalue['facilityno']]['tryrun_end_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['tryrun_end_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['tryrun_end_date'])) {
$estimate_time = strtotime($wip['tryrun_end_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '安裝') || stristr($payvalue['PayStage'], '貨抵工地且完工')):
if ($wip_array[$payvalue['facilityno']]['install_end_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['install_end_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['install_end_date'])) {
$estimate_time = strtotime($wip['install_end_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (in_array($payvalue['PayStage'], $final6)):
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$estimate_time = $estimate_time + (180 * 86400);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '合格') || stristr($payvalue['PayStage'], '驗收') || stristr($payvalue['PayStage'], '驗收')):
if ($wip_array[$payvalue['facilityno']]['official_check_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['official_check_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['official_check_date'])) {
$estimate_time = strtotime($wip['official_check_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
case (stristr($payvalue['PayStage'], '交車') || stristr($payvalue['PayStage'], '移交') || stristr($payvalue['PayStage'], '完工') || stristr($payvalue['PayStage'], '許可') || stristr($payvalue['PayStage'], '核可')):
if ($wip_array[$payvalue['facilityno']]['delivery_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['delivery_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['delivery_date'])) {
$estimate_time = strtotime($wip['delivery_date']);
$payvalue['PlanPayDate'] = date('Y-m-d', $estimate_time);
} else {
$payvalue['PlanPayDate'] = NULL;
}
break;
default:
$payvalue['PlanPayDate'] = NULL;
break;
}
if (strtotime($payvalue['PlanPayDate']) < 975686400) {
$payvalue['PlanPayDate'] = NULL;
}
}
}
}
// 在$PayStage_array中排序
foreach ($PayStage_array as $key => $value) {
uasort($PayStage_array[$key], 'comparePlanPayDate');
}
// 加入序號
foreach ($PayStage_array as &$payStage) {
$sequenceNumber = 1;
foreach ($payStage as $tk => &$pstage) {
$pstage['sequenceNumber'] = $sequenceNumber;
$sequenceNumber += 1;
}
}
// 整理好的收款階段放入 $final_paystage
$final_paystage = array();
foreach ($PayStage_array as $key => &$payStage) {
if (is_iterable($payStage)) {
foreach ($payStage as $key2 => $pstage) {
$final_paystage[$key][$pstage['sequenceNumber']] = $pstage;
}
}
}
// 發票資訊
$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 LEN(CheckAll.FromSalSalesOrder)>0";
$query_invoice = $conn->query($sql_invoice);
//發票資訊回填到arrayData
foreach($query_invoice as $invoice) {
if(isset($arrayData[$invoice['BillNo']])) {
$arrayData[$invoice['BillNo']]['invoice_budget'] += $invoice['LAmountWithTax'];
}
}
// 核銷資訊
$sql_received = "SELECT
CheckDetail.OrderBillNo,
arWriteOffBillDetail.FromBillNo AS CheckBillNo,
arWriteOffBillDetail.FromRowCode AS CheckRowCode,
arWriteOffBillDetail.CurrStandOffOAmount,
CheckDetail.TypeId
FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBillDetail.BillNo,
arCheckBillDetail.RowCode,
arCheckBillDetail.FromSalSalesOrder AS OrderBillNo,
salSalesOrder.TypeId,
salSalesOrder.ModeId
FROM arCheckBillDetail
LEFT JOIN salSalesOrder
ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder )
AS CheckDetail
ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode
WHERE CheckDetail.ModeId = 'M'";
$query_received = $conn->query($sql_received);
// 核銷資訊回填到arrayData
foreach($query_received as $received) {
if(isset($arrayData[$received['OrderBillNo']])) {
$arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount'];
}
}
// 將發票與核銷資訊 分別計算作番收款階段金額
foreach ($final_paystage as $key => &$value) {
$tmpinvoice = $arrayData[$key]['invoice_budget'];
$tmpreceived = $arrayData[$key]['received_budget'];
for($sequenceNumber = 1; $sequenceNumber <= count($value); $sequenceNumber++) {
if($tmpinvoice >= $value[$sequenceNumber]['PlanPayAmt']){
$value[$sequenceNumber]['invoice_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpinvoice = $tmpinvoice - $value[$sequenceNumber]['invoice_budget'];
}else{
$value[$sequenceNumber]['invoice_budget'] = $tmpinvoice;
$tmpinvoice = 0;
}
if($tmpreceived > $value[$sequenceNumber]['PlanPayAmt']){
$value[$sequenceNumber]['received_budget'] = $value[$sequenceNumber]['PlanPayAmt'];
$tmpinvoice = $tmpreceived - $value[$sequenceNumber]['received_budget'];
}else{
$value[$sequenceNumber]['received_budget'] = $tmpreceived;
$tmpreceived = 0;
}
}
}

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

@ -82,6 +82,8 @@ Detail.BillNo AS InvoiceBillNo,
Detail.MaterialId, Detail.MaterialId,
Detail.LAmountWithTax, Detail.LAmountWithTax,
Main.InvoiceNo, Main.InvoiceNo,
Main.InvoiceDate,
Main.InvoiceState,
CheckAll.FromSalSalesOrder AS BillNo CheckAll.FromSalSalesOrder AS BillNo
FROM arSellInvoiceMaterial AS Detail FROM arSellInvoiceMaterial AS Detail
LEFT JOIN arSellInvoice AS Main ON Detail.BillNo=Main.BillNo LEFT JOIN arSellInvoice AS Main ON Detail.BillNo=Main.BillNo
@ -89,7 +91,7 @@ CheckAll.FromSalSalesOrder AS BillNo
SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo
FROM arCheckBillDetail AS CheckDetail ) FROM arCheckBillDetail AS CheckDetail )
AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo
WHERE Detail.ItemType=0 AND Main.InvoiceState!=2"; WHERE Main.InvoiceState!=2";
// T8核銷 // T8核銷
$sql_received = "SELECT $sql_received = "SELECT
@ -123,41 +125,41 @@ $contractNumbers = array();
$query_contract_number = $conn->query($sql_contractNumber); $query_contract_number = $conn->query($sql_contractNumber);
foreach ($query_contract_number as $contract_numbers) { foreach ($query_contract_number as $contract_numbers) {
$billNo = $contract_numbers['BillNo']; $billNo = $contract_numbers['BillNo'];
switch ($contract_numbers['BillNo']) { // switch ($contract_numbers['BillNo']) {
case 'SO20230701001': // case 'SO20230701001':
$billNo = 'M220104'; // $billNo = 'M220104';
break; // break;
case 'SO20230701002': // case 'SO20230701002':
$billNo = 'M230098'; // $billNo = 'M230098';
break; // break;
case 'SO20230701003': // case 'SO20230701003':
$billNo = 'M230159'; // $billNo = 'M230159';
break; // break;
case 'SO20230901001': // case 'SO20230901001':
$billNo = 'M230992'; // $billNo = 'M230992';
break; // break;
case 'SO20231110001': // case 'SO20231110001':
$billNo = 'M230492'; // $billNo = 'M230492';
break; // break;
case 'SO20231110002': // case 'SO20231110002':
$billNo = 'M230557'; // $billNo = 'M230557';
break; // break;
case 'SO20231110003': // case 'SO20231110003':
$billNo = 'M230496'; // $billNo = 'M230496';
break; // break;
case 'SP20240108001': // case 'SP20240108001':
$billNo = 'M230683'; // $billNo = 'M230683';
break; // break;
case 'SP20240116004': // case 'SP20240116004':
$billNo = 'B230726'; // $billNo = 'B230726';
break; // break;
case 'T220035': // case 'T220035':
$billNo = 'M220035'; // $billNo = 'M220035';
break; // break;
case 'T230098': // case 'T230098':
$billNo = 'M230098'; // $billNo = 'M230098';
break; // break;
} // }
array_push($contractNumbers, $billNo); array_push($contractNumbers, $billNo);
$str_numbers = "('" . implode("','", $contractNumbers) . "')"; $str_numbers = "('" . implode("','", $contractNumbers) . "')";
} }
@ -203,18 +205,18 @@ $sql_contract = "SELECT a.BillNo,s.BillDate, a.RowNo, a.PayStage, a.PlanPayAmt,
c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a 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 (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 "; LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId ";
if (isset($str_numbers)) { // if (isset($str_numbers)) {
$sql_contract .= "WHERE s.BillNo IN $str_numbers "; // $sql_contract .= "WHERE s.BillNo IN $str_numbers ";
} // }
// T8 銷售訂單 作番金額 // T8 銷售訂單 作番金額
$sql_contract_budget = "SELECT A.BillNo,A.MaterialId, A.OAmountWithTax,A.CU_MaterialId FROM salSalesOrderDetail AS A $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 LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo
WHERE B.ModeId='T' AND A.ItemType=1 "; WHERE B.ModeId='T' AND A.ItemType=1 ";
if (isset($str_numbers)) { // if (isset($str_numbers)) {
$sql_contract_budget .= "AND A.BillNo IN $str_numbers "; // $sql_contract_budget .= "AND A.BillNo IN $str_numbers ";
} // }
$contract = $conn->query($sql_contract); $contract = $conn->query($sql_contract);
$contract_data = array(); $contract_data = array();
$manager_list = array(); $manager_list = array();
@ -370,26 +372,62 @@ $today = strtotime(date('Ymd'));
$wipwhole_array = mysqli_query($link, $sql); $wipwhole_array = mysqli_query($link, $sql);
$wipwhole_status = array(); $wipwhole_status = array();
foreach ($wipwhole_array as $wip) { 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 催收次數 //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
if (isset($arrayData[$wip['contractno']])) { if (isset($arrayData[$billno])) {
// 整理合約資料 // 整理合約資料
// $arrayData[$wip['contractno']][0] = $wip['department_id'];; // $arrayData[$wip['contractno']][0] = $wip['department_id'];;
// $arrayData[$wip['contractno']][1] = $wip['depart_name']; // $arrayData[$wip['contractno']][1] = $wip['depart_name'];
// $arrayData[$wip['contractno']][2] = $wip['manager_name']; // $arrayData[$wip['contractno']][2] = $wip['manager_name'];
// $arrayData[$wip['contractno']][3] = $wip['salesid']; // $arrayData[$wip['contractno']][3] = $wip['salesid'];
// $arrayData[$wip['contractno']][4] = $wip['name']; // $arrayData[$wip['contractno']][4] = $wip['name'];
$arrayData[$wip['contractno']][10] = $wip['contractno']; $arrayData[$billno][10] = $wip['contractno'];
$arrayData[$wip['contractno']]['A40001'] = (isset($contract_budget[$wip['contractno']]['A40001']) && !is_null($contract_budget[$wip['contractno']]['A40001'])) ? $contract_budget[$wip['contractno']]['A40001'] : 0; $arrayData[$billno]['A40001'] = (isset($contract_budget[$billno]['A40001']) && !is_null($contract_budget[$billno]['A40001'])) ? $contract_budget[$billno]['A40001'] : 0;
$arrayData[$wip['contractno']]['A40008'] = (isset($contract_budget[$wip['contractno']]['A40008']) && !is_null($contract_budget[$wip['contractno']]['A40008'])) ? $contract_budget[$wip['contractno']]['A40008'] : 0; $arrayData[$billno]['A40008'] = (isset($contract_budget[$billno]['A40008']) && !is_null($contract_budget[$billno]['A40008'])) ? $contract_budget[$billno]['A40008'] : 0;
// [合約號]['facility'][作番號]['no'] // [合約號]['facility'][作番號]['no']
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno']; $arrayData[$billno]['facility'][$wip['facilityno']]['no'] = $wip['facilityno'];
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = ""; $arrayData[$billno]['facility'][$wip['facilityno']]['status'] = "";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0; $arrayData[$billno]['facility'][$wip['facilityno']]['total_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0; $arrayData[$billno]['facility'][$wip['facilityno']]['receivable_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0; $arrayData[$billno]['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[$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[$wip['contractno']]['facility'][$wip['facilityno']]['A40008'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40008']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40008'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40008'] : 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[$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; $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;
} }
$wipwhole_status[$wip['facilityno']] = $wip; $wipwhole_status[$wip['facilityno']] = $wip;
} }
@ -542,9 +580,9 @@ foreach ($allPayStages as $key => &$payStage) {
// [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號] // [invoice][發票號碼][0 發票日期, 1 發票金額, 2 發票狀態, 3 收款日期, 4 收款金額, 5 手續費, 6 核銷單號]
foreach ($invoice_data as $invoice) { foreach ($invoice_data as $invoice) {
if (isset($invoice['FromSalSalesOrder']) && isset($arrayData[$invoice['FromSalSalesOrder']])) { if (isset($invoice['BillNo']) && isset($arrayData[$invoice['BillNo']])) {
$arrayData[$invoice['FromSalSalesOrder']]['invoice_budget'] += intval($invoice['OAmountWithTax']); $arrayData[$invoice['BillNo']]['invoice_budget'] += intval($invoice['LAmountWithTax']);
$arrayData[$invoice['FromSalSalesOrder']]['invoice'][$invoice['InvoiceNo']] = [date("Ymd", strtotime($invoice['InvoiceTime'])), $invoice['OAmountWithTax'], $invoice['InvoiceState']]; $arrayData[$invoice['BillNo']]['invoice'][$invoice['InvoiceNo']] = [date("Y-m-d", strtotime($invoice['InvoiceDate'])), $invoice['LAmountWithTax'], $invoice['InvoiceState']];
} }
} }
@ -552,10 +590,10 @@ foreach ($invoice_data as $invoice) {
foreach ($received_array as $received) { foreach ($received_array as $received) {
$BillNo = $received['OrderBillNo']; $BillNo = $received['OrderBillNo'];
if (isset($arrayData[$BillNo])) { if (isset($arrayData[$BillNo])) {
if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) { // if (isset($received['InvoiceNo']) && isset($arrayData[$BillNo]['invoice'][$received['InvoiceNo']])) {
$arrayData[$BillNo]['received_budget'] += $received['PayWriteOffOAmount']; $arrayData[$BillNo]['received_budget'] += $received['CurrStandOffOAmount'];
array_push($arrayData[$BillNo]['invoice'][$received['InvoiceNo']], date($received['ReceivedDate']), $received['PayWriteOffOAmount'], $received['Fee'], $received['BillNo']); // 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'] // $final_paystage ['type'] ['PlanPayDate'] ['PayAmount'] ['facilityno'] ['sequenceNumber'] ['name'] ['InvoiceAmount'] ['receivedAmount']
@ -609,12 +647,12 @@ foreach ($arrayData as $key => $value) {
$value[11] = (isset($value[11]) && !empty($value[11])) ? $value[11] : '--'; $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])) : '--'; $value[12] = (isset($value[12]) && !empty($value[12])) ? date('Y/m/d', strtotime($value[12])) : '--';
$thisPayStage = $final_paystage[$key][$sequence]; $thisPayStage = $final_paystage[$key][$sequence];
$keyname = $key . "/" . $final_paystage[$key][$sequence]['facilityno'] . "/" . $value[5]; $keyname = $key . "_" . $final_paystage[$key][$sequence]['facilityno'] . "_" . $sequence;
$havetopay = ($today >= strtotime($thisPayStage['PlanPayDate'])) ? "V" : "--"; $havetopay = ($today >= strtotime($final_paystage[$key][$sequence]['PlanPayDate'])) ? "V" : "--";
switch ($havetopay) { switch ($havetopay) {
case "V": case "V":
$unInvoiceAmount = $thisPayStage['PayAmount'] - $thisPayStage['InvoiceAmount']; $unInvoiceAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['InvoiceAmount'];
$unReceivedAmount = $thisPayStage['PayAmount'] - $thisPayStage['receivedAmount']; $unReceivedAmount = $final_paystage[$key][$sequence]['PayAmount'] - $final_paystage[$key][$sequence]['receivedAmount'];
break; break;
default: default:
$unInvoiceAmount = 0; $unInvoiceAmount = 0;
@ -624,10 +662,10 @@ foreach ($arrayData as $key => $value) {
$excel_aray[$keyname] = [ $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], $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, $thisPayStage['name'], $thisPayStage['PlanPayDate'], $havetopay,
number_format(round($thisPayStage['PayAmount'])), number_format(round($final_paystage[$key][$sequence]['PayAmount'])),
number_format(round($thisPayStage['InvoiceAmount'])), number_format(round($unInvoiceAmount)), number_format(round($final_paystage[$key][$sequence]['InvoiceAmount'])), number_format(round($unInvoiceAmount)),
number_format(round($thisPayStage['receivedAmount'])), number_format(round($unReceivedAmount)), number_format(round($final_paystage[$key][$sequence]['receivedAmount'])), number_format(round($unReceivedAmount)),
number_format(round($thisPayStage['collect_month'])) number_format(round($final_paystage[$key][$sequence]['collect_month']))
]; ];
} }
@ -703,15 +741,16 @@ include "./footer.php";
<table class="table table-striped table-bordered" style="width:100%"> <table class="table table-striped table-bordered" style="width:100%">
<thead> <thead>
<tr> <tr>
<th style='text-align:center;vertical-align: middle;width:120px'>合約號</th> <th style='text-align:center;vertical-align: middle;width:100px'>合約號</th>
<th style='text-align:center;vertical-align: middle;width:120px'>作番號</th> <th style='text-align:center;vertical-align: middle;width:100px'>作番號</th>
<th style='text-align:center;vertical-align: middle;width:110px'>部門</th> <th style='text-align:center;vertical-align: middle;width: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;'>契約員</th> <th style='text-align:center;vertical-align: middle;'>契約員</th>
<th style='text-align:center;vertical-align: middle;width:130px'>客戶名稱</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: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:end;vertical-align: middle;'>未開金額</th>
@ -733,6 +772,7 @@ include "./footer.php";
<td><?= $row[13]; ?></td> <td><?= $row[13]; ?></td>
<td><?= $row[14]; ?></td> <td><?= $row[14]; ?></td>
<td><?= $row[15]; ?></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[16]; ?></td>
<td><?= $row[17]; ?></td> <td><?= $row[17]; ?></td>
<td><?= $row[18]; ?></td> <td><?= $row[18]; ?></td>

4
wms/account-receivable-repair-index.php

@ -363,14 +363,14 @@ $total_data = json_encode($excel_aray);
<input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" oninput="searchFront('manager')"> <input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" oninput="searchFront('manager')">
</div> </div>
</div> </div>
<div class="form-group"> <!-- <div class="form-group">
<div class="col-md-2"> <div class="col-md-2">
<input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" oninput="searchFront('manager')"> <input type="text" id="search_manager" name="search_manager" class="form-control" placeholder="請輸入主管工號/姓名" oninput="searchFront('manager')">
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
<input class="form-control" value="催收次數" disabled> <input class="form-control" value="催收次數" disabled>
</div> </div>
</div> </div> -->
</div> </div>
<?php <?php
include "./footer.php"; include "./footer.php";

113
wms/account-receivable-test.php

@ -45,34 +45,34 @@ include './header.php';
// 找出已工收的作番 但沒在T8銷售訂單上出現的作番 // 找出已工收的作番 但沒在T8銷售訂單上出現的作番
$material_array = "('2MH00028', '3MH00123', '2MH00026', '3MW00067', '3MH00124', '3MH00121', // $material_array = "('2MH00028', '3MH00123', '2MH00026', '3MW00067', '3MH00124', '3MH00121',
'3MH00122', '2MW00027', '3MH00297', '2MW00001', '3MH00111', '3MW00190', // '3MH00122', '2MW00027', '3MH00297', '2MW00001', '3MH00111', '3MW00190',
'3MW00118', '3MH00093', '3MH00002', '3MW00024', '3MH00130', '3MH00196', // '3MW00118', '3MH00093', '3MH00002', '3MW00024', '3MH00130', '3MH00196',
'3MW00119', '3MH00205', '3MH00259', '3MW00159', '3MW00243', '3MH00351', // '3MW00119', '3MH00205', '3MH00259', '3MW00159', '3MW00243', '3MH00351',
'3MH00352', '2MX00015', '3MH00353', '3MH00298', '3MH00113', '3MH00036', // '3MH00352', '2MX00015', '3MH00353', '3MH00298', '3MH00113', '3MH00036',
'3MH00206', '3MH00179', '3MH00180', '3MH00181', '3MW00350', '3MH00053', // '3MH00206', '3MH00179', '3MH00180', '3MH00181', '3MW00350', '3MH00053',
'3MH00054', '3MH00178', '3MH00296', '2MH00047', '3MW00114', '3MH00282', // '3MH00054', '3MH00178', '3MH00296', '2MH00047', '3MW00114', '3MH00282',
'2MH00048', '3MH00609', '3MH00148', '3MH00354', '3MX00021', '3MW00210', // '2MH00048', '3MH00609', '3MH00148', '3MH00354', '3MX00021', '3MW00210',
'3MH00184', '3MH00185', '3MH00283', '3MW00209', '3MH00182', '3MH00183', // '3MH00184', '3MH00185', '3MH00283', '3MW00209', '3MH00182', '3MH00183',
'3MH00189', '3MH00512', '3MH00355', '3MH00286', '3MH00511', '2MX00008', // '3MH00189', '3MH00512', '3MH00355', '3MH00286', '3MH00511', '2MX00008',
'2MX00014', '3MH00244', '3MH00555', '3MH00450', '3MW00211', '3MH00177', // '2MX00014', '3MH00244', '3MH00555', '3MH00450', '3MW00211', '3MH00177',
'2MX00009', '2MX00012', '3MW00139', '3MH00540', '3MH00504', '3MH00360', // '2MX00009', '2MX00012', '3MW00139', '3MH00540', '3MH00504', '3MH00360',
'3MH00301', '3MX00020', '2MX00013')"; // '3MH00301', '3MX00020', '2MX00013')";
$material_array2 = array( // $material_array2 = array(
'2MH00028', '3MH00123', '2MH00026', '3MW00067', '3MH00124', '3MH00121', // '2MH00028', '3MH00123', '2MH00026', '3MW00067', '3MH00124', '3MH00121',
'3MH00122', '2MW00027', '3MH00297', '2MW00001', '3MH00111', '3MW00190', // '3MH00122', '2MW00027', '3MH00297', '2MW00001', '3MH00111', '3MW00190',
'3MW00118', '3MH00093', '3MH00002', '3MW00024', '3MH00130', '3MH00196', // '3MW00118', '3MH00093', '3MH00002', '3MW00024', '3MH00130', '3MH00196',
'3MW00119', '3MH00205', '3MH00259', '3MW00159', '3MW00243', '3MH00351', // '3MW00119', '3MH00205', '3MH00259', '3MW00159', '3MW00243', '3MH00351',
'3MH00352', '2MX00015', '3MH00353', '3MH00298', '3MH00113', '3MH00036', // '3MH00352', '2MX00015', '3MH00353', '3MH00298', '3MH00113', '3MH00036',
'3MH00206', '3MH00179', '3MH00180', '3MH00181', '3MW00350', '3MH00053', // '3MH00206', '3MH00179', '3MH00180', '3MH00181', '3MW00350', '3MH00053',
'3MH00054', '3MH00178', '3MH00296', '2MH00047', '3MW00114', '3MH00282', // '3MH00054', '3MH00178', '3MH00296', '2MH00047', '3MW00114', '3MH00282',
'2MH00048', '3MH00609', '3MH00148', '3MH00354', '3MX00021', '3MW00210', // '2MH00048', '3MH00609', '3MH00148', '3MH00354', '3MX00021', '3MW00210',
'3MH00184', '3MH00185', '3MH00283', '3MW00209', '3MH00182', '3MH00183', // '3MH00184', '3MH00185', '3MH00283', '3MW00209', '3MH00182', '3MH00183',
'3MH00189', '3MH00512', '3MH00355', '3MH00286', '3MH00511', '2MX00008', // '3MH00189', '3MH00512', '3MH00355', '3MH00286', '3MH00511', '2MX00008',
'2MX00014', '3MH00244', '3MH00555', '3MH00450', '3MW00211', '3MH00177', // '2MX00014', '3MH00244', '3MH00555', '3MH00450', '3MW00211', '3MH00177',
'2MX00009', '2MX00012', '3MW00139', '3MH00540', '3MH00504', '3MH00360', // '2MX00009', '2MX00012', '3MW00139', '3MH00540', '3MH00504', '3MH00360',
'3MH00301', '3MX00020', '2MX00013' // '3MH00301', '3MX00020', '2MX00013'
); // );
//找出已工收 在採購單上有的作番 //找出已工收 在採購單上有的作番
@ -414,29 +414,34 @@ $P_all = "
// } // }
// 銷售訂單 沒有ProjectId的資料 // 銷售訂單 沒有ProjectId的資料
$sql = "SELECT Main.*, comBusinessPartner.BizPartnerName, salDispatchListMaster.BillNo AS DispBillNo , salDispatchListMaster.BillDate AS DispBillDate FROM // $sql = "SELECT Main.*, comBusinessPartner.BizPartnerName, salDispatchListMaster.BillNo AS DispBillNo , salDispatchListMaster.BillDate AS DispBillDate FROM
(SELECT DISTINCT salSalesOrder.BillNo,salSalesOrder.BizPartnerId, salSalesOrder.TypeId, salSalesOrder.ModeId, salSalesOrderDetail.ProjectId, salSalesOrderDetail.CU_MaterialId FROM salSalesOrderDetail // (SELECT DISTINCT salSalesOrder.BillNo,salSalesOrder.BizPartnerId, salSalesOrder.TypeId, salSalesOrder.ModeId, salSalesOrderDetail.ProjectId, salSalesOrderDetail.CU_MaterialId FROM salSalesOrderDetail
LEFT JOIN salSalesOrder ON salSalesOrder.BillNo= salSalesOrderDetail.BillNo // LEFT JOIN salSalesOrder ON salSalesOrder.BillNo= salSalesOrderDetail.BillNo
WHERE (LEN(salSalesOrderDetail.ProjectId)=0 AND salSalesOrderDetail.ItemType=0) OR LEN(salSalesOrderDetail.CU_MaterialId)=0 ) AS Main // WHERE (LEN(salSalesOrderDetail.ProjectId)=0 AND salSalesOrderDetail.ItemType=0) OR LEN(salSalesOrderDetail.CU_MaterialId)=0 ) AS Main
LEFT JOIN comBusinessPartner ON comBusinessPartner.BizPartnerId = Main.BizPartnerId // LEFT JOIN comBusinessPartner ON comBusinessPartner.BizPartnerId = Main.BizPartnerId
LEFT JOIN salDispatchListMaster ON salDispatchListMaster.FromBillNo= Main.BillNo // LEFT JOIN salDispatchListMaster ON salDispatchListMaster.FromBillNo= Main.BillNo
WHERE salDispatchListMaster.BillDate >20231031 OR salDispatchListMaster.BillDate IS NULL"; // WHERE salDispatchListMaster.BillDate >20231031 OR salDispatchListMaster.BillDate IS NULL";
$query = $conn->query($sql); // $query = $conn->query($sql);
foreach ($query as $key => $value) { // foreach ($query as $key => $value) {
$mode = ''; // $mode = '';
switch ($value['ModeId']) { // switch ($value['ModeId']) {
case 'B': // case 'B':
$mode = '保養'; // $mode = '保養';
break; // break;
case 'T': // case 'T':
$mode = '汰改'; // $mode = '汰改';
break; // break;
case 'M': // case 'M':
$mode = '新梯'; // $mode = '新梯';
break; // break;
case 'Z': // case 'Z':
$mode = '維修'; // $mode = '維修';
break; // break;
} // }
echo $value['BillNo'] . ";" . $mode . ";" . $value['BizPartnerId'] .";".$value['BizPartnerName'].";".$value['ProjectId']. ";".$value['CU_MaterialId']. ";".$value['DispBillNo'].";" . $value['DispBillDate'] ."<br>"; // echo $value['BillNo'] . ";" . $mode . ";" . $value['BizPartnerId'] .";".$value['BizPartnerName'].";".$value['ProjectId']. ";".$value['CU_MaterialId']. ";".$value['DispBillNo'].";" . $value['DispBillDate'] ."<br>";
} // }
$TIME = strtotime('2000-12-02');
echo $TIME;
Loading…
Cancel
Save