= $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('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) {
} else {
$sql_contractNumber .= " AND (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 .= ")";
};
}
$contractNumbers = array();
$query_contract_number = $conn->query($sql_contractNumber);
if (is_iterable($query_contract_number)) {
foreach ($query_contract_number as $contract_numbers) {
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']]['detail'] = "";
$sum_total_budget += $contract_numbers['OAmountWithTax'];
}
$str_numbers = "('" . implode("','", $contractNumbers) . "')";
}
// T8發票
$sql_invoice = "SELECT
Detail.BillNo AS InvoiceBillNo,
Detail.MaterialId,
Detail.LAmountWithTax,
Main.InvoiceNo,
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 Detail.ItemType=0 AND Main.InvoiceState!=2";
// T8核銷
$sql_received = "SELECT
CheckDetail.OrderBillNo,
arWriteOffBillDetail.FromBillNo AS CheckBillNo,
arWriteOffBillDetail.FromRowCode AS CheckRowCode,
arWriteOffBillDetail.CurrStandOffOAmount
FROM arWriteOffBillDetail
LEFT JOIN
(SELECT
arCheckBillDetail.BillNo,
arCheckBillDetail.RowCode,
arCheckBillDetail.FromSalSalesOrder AS OrderBillNo,
salSalesOrder.TypeId
FROM arCheckBillDetail
LEFT JOIN salSalesOrder
ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder )
AS CheckDetail
ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode
WHERE CheckDetail.TypeId = 'SP'";
//T8 銷售訂單 階段收款計畫
$sql_paystage = "SELECT * from salOrderStagePay";
if (isset($str_numbers)) {
$sql_paystage .= " WHERE BillNo IN $str_numbers ";
$sql_invoice .= " AND CheckAll.FromSalSalesOrder IN $str_numbers ";
}
// T8 銷售訂單 表身
$sql_detail ="SELECT
A.BillNo,
A.MaterialId,
salSalesOrder.TypeId,
CASE
WHEN A.ItemType = 0 THEN B.MaterialName
WHEN A.ItemType = 1 THEN C.FeeTypeName
ELSE 'Unknown'
END AS ItemName,
E.ProjectId,
E.ProjectName,
D.MaterialId AS CU_MaterialId,
D.MaterialName AS CU_MaterialName
FROM
salSalesOrderDetail A
LEFT JOIN
comMaterialGroup B ON A.MaterialId = B.MaterialId AND A.ItemType = 0
LEFT JOIN
comFeeType C ON A.MaterialId = C.FeeTypeId AND A.ItemType = 1
LEFT JOIN
comProject E ON A.ProjectId = E.ProjectId
LEFT JOIN
comMaterialGroup D ON A.CU_MaterialId = D.MaterialId
LEFT JOIN
salSalesOrder ON A.BillNo = salSalesOrder.BillNo
WHERE salSalesOrder.TypeId = 'SP'";
$PayStage = $conn->query($sql_paystage);
$received_array = $conn->query($sql_received);
$invoice_data = $conn->query($sql_invoice);
$detail_data = $conn->query($sql_detail);
// 將合約表身明細填入arrayData
foreach ($detail_data as $detail) {
if(isset($arrayData[$detail['BillNo']])) {
$memo = $detail['MaterialId'].' '.$detail['ItemName'].' 【'.$detail['ProjectId'].$detail['ProjectName'].'】'.'['.$detail['CU_MaterialId'].' '.$detail['CU_MaterialName'].'] ;
';
$arrayData[$detail['BillNo']]['detail'] .= $memo;
}
}
$allPayStages = array();
foreach ($PayStage as $stage) {
$allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayAmt'] = $stage['PlanPayAmt'];
$allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayDate'] = $stage['PlanPayDate'];
$month = collect_month(strtotime($stage['PlanPayDate']));
if (strtotime($stage['PlanPayDate']) > strtotime(date('Y-m-t', strtotime('now')))) {
$allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = '--';
} else {
$allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = 'Y';
}
$allPayStages[$stage['BillNo']][$stage['PayStage']]['month'] = $month;
$allPayStages[$stage['BillNo']][$stage['PayStage']]['received'] = 0;
$allPayStages[$stage['BillNo']][$stage['PayStage']]['invoice'] = 0;
}
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) {
if (isset($arrayData[$key])) {
$arrayData[$key]['PayStage'][$pstage['sequenceNumber']] = $pstage;
if (isset($pstage['receivable_ornot']) && $pstage['receivable_ornot'] == 'Y') {
$arrayData[$key]['receivable_budget'] += $pstage['PlanPayAmt'];
}
}
}
}
}
foreach ($invoice_data as $inv) {
if (isset($arrayData[$inv['BillNo']])) {
$arrayData[$inv['BillNo']]['invoice_budget'] += $inv['LAmountWithTax'];
if (isset($arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']])) {
$arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] += $inv['LAmountWithTax'];
} else {
$arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] = $inv['LAmountWithTax'];
}
}
}
foreach ($received_array as $received) {
if (isset($arrayData[$received['OrderBillNo']]) && isset($received['CurrStandOffOAmount']) && $received['CurrStandOffOAmount'] > 0) {
$arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount'];
}
}
//未在T8的收款資料
$sql_wms = "SELECT * FROM account_received WHERE type='Z' ";
$query_wms = mysqli_query($link, $sql_wms);
foreach ($query_wms as $wms) {
if (isset($arrayData[$wms['BillNo']]) && isset($wms['invoice_budget']) && isset($wms['invoice_no']) && isset($arrayData[$wms['BillNo']]['invoice_budget'])) {
$arrayData[$wms['BillNo']]['invoice_budget'] += $wms['invoice_budget'];
if (isset($arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']])) {
$arrayData[$wms['BillNo']]['invoice'][$wms['invoice_no']] += $wms['invoice_budget'];
}
}
if (isset($arrayData[$wms['BillNo']]) && isset($wms['received_budget']) && isset($arrayData[$wms['BillNo']]['received_budget'])) {
$arrayData[$wms['BillNo']]['received_budget'] += $wms['received_budget'];
}
}
foreach ($arrayData as $key => &$value) {
if (!isset($value['PayStage'])) {
$value['receivable_budget'] = $value['OAmountWithTax'];
} else {
$tmpReceived = $value['received_budget'];
$tmpInvoice = $value['invoice_budget'];
if (is_iterable($value['PayStage'])) {
for ($sequence = 1; $sequence <= count($value['PayStage']); $sequence++) {
if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpInvoice) {
$value['PayStage'][$sequence]['invoice'] = $tmpInvoice;
$tmpInvoice = 0;
} else {
$value['PayStage'][$sequence]['invoice'] = $value['PayStage'][$sequence]['PlanPayAmt'];
$tmpInvoice -= $value['PayStage'][$sequence]['PlanPayAmt'];
}
if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpReceived) {
$value['PayStage'][$sequence]['received'] = $tmpReceived;
$tmpReceived = 0;
} else {
$value['PayStage'][$sequence]['received'] = $value['PayStage'][$sequence]['PlanPayAmt'];
$tmpReceived -= $value['PayStage'][$sequence]['PlanPayAmt'];
}
}
}
$value['received_budget'] = $tmpReceived;
}
if ($value['receivable_budget'] > 0 && $value['received_budget'] < $value['receivable_budget']) {
$value['month'] = collect_month(strtotime($value['BillDate']));
} else {
$value['month'] = 0;
}
}
$excel_aray = array();
$print_array = array();
foreach ($arrayData as $key => $value) {
$uninvoice_budget = $value['OAmountWithTax'] - $value['invoice_budget'];
$unreceive_budget = $value['receivable_budget'] - $value['received_budget'];
$collect_month = $value['month']==0? '0':$value['month'];
$excel_aray[$key] = [
$value['BillNo'], date('Y-m-d', strtotime($value['BillDate'])), $value['CustomerId'], $value['CustomerName'],
$value['DeptName'], $value['PersonId'], $value['PersonName'],
$value['ManagerId'], $value['ManagerName'],
number_format(round($value['OAmountWithTax'])), number_format(round($value['receivable_budget'])),
number_format(round($value['invoice_budget'])), number_format(round($uninvoice_budget)),
number_format(round($value['received_budget'])), $unreceive_budget, $collect_month, $value['detail']
];
if ($excel_aray[$key][14] > 1) {
$print_array[$key] = [
$value['BillNo'], date('Y-m-d', strtotime($value['BillDate'])), $value['CustomerId'], $value['CustomerName'],
$value['DeptName'], $value['PersonId'], $value['PersonName'],
$value['ManagerId'], $value['ManagerName'],
number_format(round($value['OAmountWithTax'])), number_format(round($value['receivable_budget'])),
number_format(round($value['invoice_budget'])), number_format(round($uninvoice_budget)),
number_format(round($value['received_budget'])), $unreceive_budget, $collect_month, $value['detail']
];
}
}
$total_data = json_encode($print_array);
?>
合約號 | 合約日期 | 部門 | 主管 | 保養員 | 客戶 | 總金額 | 應收金額 | 已收金額 | 催收金額 | 催收次數 | 內容 產品 【專案】[作番號] |
---|---|---|---|---|---|---|---|---|---|---|---|
= $row[0]; ?> | = $row[1]; ?> | = $row[4] ?> | = $row[7] . " " . $row[8]; ?> |
= $row[5] . " " . $row[6]; ?> |
= $row[2] . " ".$row[3] ?> |
= $row[9]; ?> | = $row[10]; ?> | = $row[13]; ?> | = $row[14]; ?> | = $row[15]; ?> | = $row[16]; ?> |