Browse Source

Merge branch 'main' into gary

gary
gary_chen\gary_chen 1 year ago
parent
commit
bf264625ee
  1. 40
      wms/account-receivable-excel.php
  2. BIN
      wms/account-receivable-facility.xlsx
  3. 685
      wms/account-receivable-index-ing.php
  4. 630
      wms/account-receivable-index.php
  5. 1
      wms/account-receivable-invoice.php
  6. 8
      wms/account-receivable-test.php
  7. BIN
      wms/account-receivable-test.xlsx
  8. 1
      wms/account-receivable.txt
  9. 63628
      wms/account_receivable_sql_file.sql
  10. 2
      wms/contract/insertData.php
  11. BIN
      wms/contract/option/option1.xlsx
  12. BIN
      wms/contract/option/option10.xlsx
  13. BIN
      wms/contract/option/option11.xlsx
  14. BIN
      wms/contract/option/option12.xlsx
  15. 0
      wms/contract/option/option1220/option.xlsx
  16. BIN
      wms/contract/option/option1220/option1.xlsx
  17. BIN
      wms/contract/option/option1220/option10.xlsx
  18. BIN
      wms/contract/option/option1220/option11.xlsx
  19. BIN
      wms/contract/option/option1220/option12.xlsx
  20. BIN
      wms/contract/option/option1220/option13.xlsx
  21. BIN
      wms/contract/option/option1220/option14.xlsx
  22. BIN
      wms/contract/option/option1220/option15.xlsx
  23. 0
      wms/contract/option/option1220/option16.xlsx
  24. BIN
      wms/contract/option/option1220/option2.xlsx
  25. 0
      wms/contract/option/option1220/option20.xlsx
  26. BIN
      wms/contract/option/option1220/option3.xlsx
  27. BIN
      wms/contract/option/option1220/option4.xlsx
  28. BIN
      wms/contract/option/option1220/option5.xlsx
  29. BIN
      wms/contract/option/option1220/option6.xlsx
  30. BIN
      wms/contract/option/option1220/option7.xlsx
  31. BIN
      wms/contract/option/option1220/option8.xlsx
  32. BIN
      wms/contract/option/option1220/option9.xlsx
  33. BIN
      wms/contract/option/option13.xlsx
  34. BIN
      wms/contract/option/option14.xlsx
  35. BIN
      wms/contract/option/option15.xlsx
  36. BIN
      wms/contract/option/option2.xlsx
  37. BIN
      wms/contract/option/option3.xlsx
  38. BIN
      wms/contract/option/option4.xlsx
  39. BIN
      wms/contract/option/option5.xlsx
  40. BIN
      wms/contract/option/option6.xlsx
  41. BIN
      wms/contract/option/option7.xlsx
  42. BIN
      wms/contract/option/option8.xlsx
  43. BIN
      wms/contract/option/option9.xlsx
  44. 1
      wms/frame/pending.php
  45. 1
      wms/fun_global.php
  46. 20
      wms/header.php
  47. 10
      wms/mkt/assets/js/alpine.js
  48. 2
      wms/mkt/price_option-index.php
  49. 8
      wms/mkt/price_option-select.php
  50. 2
      wms/mkt/pricereview_renovate-check.php
  51. 1
      wms/mkt/pricereview_renovate-create.php
  52. 2
      wms/mkt/pricereview_renovate-index.php
  53. 5
      wms/rib02-check.php

40
wms/account-receivable-excel.php

@ -12,10 +12,10 @@ $array_data = array();
$Bill = json_decode(file_get_contents("php://input"), true); $Bill = json_decode(file_get_contents("php://input"), true);
$spreadsheet = new Spreadsheet(); $spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(); $sheet = $spreadsheet->getActiveSheet();
// file_put_contents('account-receivable.txt', json_encode($Bill));
if ($type == 'facility') { if ($type == 'facility') {
$colomnHeader = [ $colomnHeader = [
'作番號','合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭', '作番號', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金名稱', '訂金合約金額', '訂金應收日期', '訂金目前應收金額', '訂金已收金額', '訂金催收金額', '訂金催收次數', '訂金名稱', '訂金合約金額', '訂金應收日期', '訂金目前應收金額', '訂金已收金額', '訂金催收金額', '訂金催收次數',
'二次款名稱', '二次款合約金額', '二次款應收日期', '二次款目前應收金額', '二次款已收金額', '二次款催收金額', '二次款催收次數', '二次款名稱', '二次款合約金額', '二次款應收日期', '二次款目前應收金額', '二次款已收金額', '二次款催收金額', '二次款催收次數',
'貨抵工地款名稱', '貨抵工地款合約金額', '貨抵工地款應收日期', '貨抵工地款目前應收金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數', '貨抵工地款名稱', '貨抵工地款合約金額', '貨抵工地款應收日期', '貨抵工地款目前應收金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款催收次數',
@ -24,17 +24,17 @@ if ($type == 'facility') {
'官檢款名稱', '官檢款合約金額', '官檢款應收日期', '官檢款目前應收金額', '官檢款已收金額', '官檢款催收金額', '官檢款催收次數', '官檢款名稱', '官檢款合約金額', '官檢款應收日期', '官檢款目前應收金額', '官檢款已收金額', '官檢款催收金額', '官檢款催收次數',
'交車款名稱', '交車款合約金額', '交車款應收日期', '交車款目前應收金額', '交車款已收金額', '交車款催收金額', '交車款催收次數', '交車款名稱', '交車款合約金額', '交車款應收日期', '交車款目前應收金額', '交車款已收金額', '交車款催收金額', '交車款催收次數',
'尾款名稱', '尾款金額', '尾款應收日期', '尾款應收金額', '尾款已收金額', '尾款催收金額', '尾款催收次數', '尾款名稱', '尾款金額', '尾款應收日期', '尾款應收金額', '尾款已收金額', '尾款催收金額', '尾款催收次數',
'作番狀態', '作番合約總金額', '作番總應收金額' '作番狀態', '合約-設備金額','合約-安裝金額','作番合約總金額', '作番總應收金額'
]; ];
$sheet->fromArray($colomnHeader, NULL, 'A1'); $sheet->fromArray($colomnHeader, NULL, 'A1');
$rowIndex = 2; $rowIndex = 2;
foreach ($Bill as $key => $value) { foreach ($Bill as $key => $value) {
$sheet->fromArray($value, NULL, 'A' . $rowIndex,true); $sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [ $column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP' 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP','BQ','BR'
]; ];
foreach ($column as $col) { foreach ($column as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true); $sheet->getColumnDimension($col)->setAutoSize(true);
@ -48,15 +48,15 @@ if ($type == 'facility') {
} else { } else {
$colomnHeader = [ $colomnHeader = [
'合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭', '合約號', '部門', '經理', '營業員', '客戶名稱', '統一編號', '聯絡地址', '抬頭',
'訂金', '訂金目前應收', '訂金最大催收次數', '訂金最小催收次數', '訂金', '訂金目前應收', '訂金已開票金額','訂金未開票金額', '訂金已收金額', '訂金催收金額', '訂金最大催收次數', '訂金最小催收次數',
'二次款', '二次款目前應收', '二次款最大催收次數', '二次款最小催收次數', '二次款', '二次款目前應收', '二次款已開票金額','二次款未開票金額', '二次款已收金額', '二次款催收金額', '二次款最大催收次數', '二次款最小催收次數',
'貨抵工地款', '貨抵工地款目前應收', '貨抵工地款最小催收次數', '貨抵工地款最小催收次數', '貨抵工地款', '貨抵工地款目前應收', '貨抵工地款已開票金額','貨抵工地款未開票金額', '貨抵工地款已收金額', '貨抵工地款催收金額', '貨抵工地款最大催收次數', '貨抵工地款最小催收次數',
'安裝款', '安裝款目前應收', '安裝款最大催收次數', '安裝款最小催收次數', '安裝款', '安裝款目前應收', '安裝款已開票金額','安裝款未開票金額', '安裝款已收金額', '安裝款催收金額', '安裝款最大催收次數', '安裝款最小催收次數',
'試車款', '試車款目前應收', '試車款最大催收次數', '試車款最小催收次數', '試車款', '試車款目前應收', '試車款已開票金額','試車款未開票金額', '試車款已收金額', '試車款催收金額', '試車款最大催收次數', '試車款最小催收次數',
'官檢款', '官檢款目前應收', '官檢款最大催收次數', '官檢款最小催收次數', '官檢款', '官檢款目前應收', '官檢款已開票金額','官檢款未開票金額', '官檢款已收金額', '官檢款催收金額', '官檢款最大催收次數', '官檢款最小催收次數',
'交車款', '交車款目前應收', '交車款最大催收次數', '交車款最小催收次數', '交車款', '交車款目前應收', '交車款已開票金額','交車款未開票金額', '交車款已收金額', '交車款催收金額', '交車款最大催收次數', '交車款最小催收次數',
'尾款', '尾款目前應收', '尾款最大催收次數', '尾款最小催收次數', '尾款', '尾款目前應收', '尾款已開票金額','尾款未開票金額', '尾款已收金額', '尾款催收金額', '尾款最大催收次數', '尾款最小催收次數',
'合約總金額', '目前應收', '已開發票金額', '已收金額', '作番總數', '作番狀態' '合約設備金額','合約安裝金額','合約總金額', '目前應收', '已開發票金額', '已收金額', '作番總數', '作番狀態'
]; ];
$sheet->fromArray($colomnHeader, NULL, 'A1'); $sheet->fromArray($colomnHeader, NULL, 'A1');
@ -65,16 +65,20 @@ if ($type == 'facility') {
$sheet->fromArray($value, NULL, 'A' . $rowIndex); $sheet->fromArray($value, NULL, 'A' . $rowIndex);
$column = [ $column = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT' 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',
'CA','CB','CC'
]; ];
foreach ($column as $col) { foreach ($column as $col) {
if ($col == 'AT') { if ($col == 'CB') {
$sheet->getStyle('AT' . $rowIndex)->getAlignment()->setWrapText(true); $sheet->getColumnDimension('CB')->setWidth(40);
$sheet->getStyle('CB')->getAlignment()->setWrapText(true);
} else { } else {
$sheet->getColumnDimension($col)->setAutoSize(true); $sheet->getColumnDimension($col)->setAutoSize(true);
} }
} }
$rowIndex++; $rowIndex++;
} }
$writer = new Xlsx($spreadsheet); $writer = new Xlsx($spreadsheet);

BIN
wms/account-receivable-facility.xlsx

Binary file not shown.

685
wms/account-receivable-index-ing.php

@ -1,6 +1,15 @@
<?php <?php
include "header.php"; include "header.php";
$sum_facility = 0;
$sum_A40001 = 0;
$sum_A40008 = 0;
$sum_total_budget = 0;
$average_budget = 0;
$average_A40001 = 0;
$average_A40008 = 0;
$follower = find_follow($user_id); $follower = find_follow($user_id);
$arrayData = []; $arrayData = [];
$receivable_array = []; $receivable_array = [];
@ -40,7 +49,7 @@ LEFT JOIN comBusinessPartner AS c ON s.BizPartnerId=c.BizPartnerId
WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) ";
// T8 銷售訂單 作番金額 // T8 銷售訂單 作番金額
$sql_contract_budget = "SELECT A.BillNo, A.OAmountWithTax,A.CU_MaterialId FROM salSalesOrderDetail AS A $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 LEFT JOIN salSalesOrder AS B ON A.BillNo=B.BillNo
WHERE B.ModeId='M' AND A.ItemType=1 "; WHERE B.ModeId='M' AND A.ItemType=1 ";
@ -93,7 +102,7 @@ if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
// $sql_received .= " AND (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'";
if (count($follower) > 0) { if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'"; $column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower); $column_str .= implode("','", $follower);
@ -110,7 +119,7 @@ if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
$sql .= " ORDER BY contractno"; $sql .= " ORDER BY contractno";
$sql_contract_budget .= ")"; $sql_contract_budget .= ")";
}; };
}else{ } else {
$sql .= " ORDER BY contractno"; $sql .= " ORDER BY contractno";
$sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId"; $sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId";
} }
@ -123,19 +132,43 @@ $contract_budget_data = $conn->query($sql_contract_budget);
$contract_budget = array(); $contract_budget = array();
foreach ($contract_budget_data as $cont) { foreach ($contract_budget_data as $cont) {
if(isset($contract_budget[$cont['BillNo']])){ if (isset($contract_budget[$cont['BillNo']])) {
$contract_budget[$cont['BillNo']]['total'] += $cont['OAmountWithTax']; $contract_budget[$cont['BillNo']]['total'] += $cont['OAmountWithTax'];
}else{ } else {
$contract_budget[$cont['BillNo']]['total'] = $cont['OAmountWithTax']; $contract_budget[$cont['BillNo']]['total'] = $cont['OAmountWithTax'];
} }
if(isset($contract_budget[$cont['BillNo']][$cont['CU_MaterialId']])){ if (isset($contract_budget[$cont['BillNo']][$cont['CU_MaterialId']])) {
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']] += $cont['OAmountWithTax']; $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['total'] += $cont['OAmountWithTax'];
}else{ } else {
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']] = $cont['OAmountWithTax']; $contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['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'];
}
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax'];
} }
/* 計算比例
@param $facility_list array
@param $contract_no string
@param $contract_budget array
return float */
function get_ratio($facility_list, $contract_no, $contract_budget)
{
$ratio = 0;
if (empty($facility_list)) {
return 0;
} else {
foreach ($facility_list as $every) {
if (isset($contract_budget[$contract_no][$every]['total']) && isset($contract_budget[$contract_no]['total'])) {
$ratio += $contract_budget[$contract_no][$every]['total'] / $contract_budget[$contract_no]['total'];
}
}
return $ratio;
}
}
// 合約收款階段內容分類 // 合約收款階段內容分類
$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); $sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天');
@ -177,7 +210,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['sign']['max'] = $arrayData[$BillNo]['second']['max'] = $arrayData[$BillNo]['arrive']['max'] = $arrayData[$BillNo]['install']['max'] = $arrayData[$BillNo]['tryrun']['max'] = $arrayData[$BillNo]['check']['max'] = $arrayData[$BillNo]['delivery']['max'] = $arrayData[$BillNo]['final']['max'] = array(); $arrayData[$BillNo]['sign']['max'] = $arrayData[$BillNo]['second']['max'] = $arrayData[$BillNo]['arrive']['max'] = $arrayData[$BillNo]['install']['max'] = $arrayData[$BillNo]['tryrun']['max'] = $arrayData[$BillNo]['check']['max'] = $arrayData[$BillNo]['delivery']['max'] = $arrayData[$BillNo]['final']['max'] = array();
$arrayData[$BillNo]['facilities'] = ""; $arrayData[$BillNo]['facilities'] = "";
$arrayData[$BillNo]['total_facility_num'] = $arrayData[$BillNo]['delivery_num'] = $arrayData[$BillNo]['check_num'] = $arrayData[$BillNo]['tryrun_num'] = $arrayData[$BillNo]['install_num'] = $arrayData[$BillNo]['arrive_num'] = $arrayData[$BillNo]['second_num'] = $arrayData[$BillNo]['sign_num'] = $arrayData[$BillNo]['receivable_budget'] = 0; $arrayData[$BillNo]['total_facility_num'] = $arrayData[$BillNo]['delivery_num'] = $arrayData[$BillNo]['check_num'] = $arrayData[$BillNo]['tryrun_num'] = $arrayData[$BillNo]['install_num'] = $arrayData[$BillNo]['arrive_num'] = $arrayData[$BillNo]['second_num'] = $arrayData[$BillNo]['sign_num'] = $arrayData[$BillNo]['receivable_budget'] = 0;
$arrayData[$BillNo]['total_facility_list']= $arrayData[$BillNo]['sign_list'] = $arrayData[$BillNo]['second_list'] = $arrayData[$BillNo]['arrive_list'] = $arrayData[$BillNo]['install_list'] = $arrayData[$BillNo]['tryrun_list'] = $arrayData[$BillNo]['check_list'] = $arrayData[$BillNo]['delivery_list'] = $arrayData[$BillNo]['final_list'] = []; $arrayData[$BillNo]['total_list'] = $arrayData[$BillNo]['sign_list'] = $arrayData[$BillNo]['second_list'] = $arrayData[$BillNo]['arrive_list'] = $arrayData[$BillNo]['install_list'] = $arrayData[$BillNo]['tryrun_list'] = $arrayData[$BillNo]['check_list'] = $arrayData[$BillNo]['delivery_list'] = $arrayData[$BillNo]['final_list'] = [];
} }
if (stristr($PayStage, '二次款') || (stristr($PayStage, '出貨前') && $PayStage != "寶佳出貨前30天") || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60') || stristr($PayStage, '寶佳出貨後10天')) { if (stristr($PayStage, '二次款') || (stristr($PayStage, '出貨前') && $PayStage != "寶佳出貨前30天") || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60') || stristr($PayStage, '寶佳出貨後10天')) {
$arrayData[$BillNo]['second'][0] = $PayStage; $arrayData[$BillNo]['second'][0] = $PayStage;
@ -267,12 +300,16 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']][4] = $wip['name']; $arrayData[$wip['contractno']][4] = $wip['name'];
$arrayData[$wip['contractno']][10] = $wip['contractno']; $arrayData[$wip['contractno']][10] = $wip['contractno'];
$arrayData[$wip['contractno']]['total_facility_num'] += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrayData[$wip['contractno']]['A40001'] = $contract_budget[$wip['contractno']]['A40001'];
$arrayData[$wip['contractno']]['A40008'] = $contract_budget[$wip['contractno']]['A40008'];
// [合約號]['facility'][作番號]['no'] // [合約號]['facility'][作番號]['no']
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno']; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno'];
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = ""; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = "";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40001'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'] : 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;
// [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期] // [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期]
// [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期] // [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期]
@ -364,7 +401,6 @@ foreach ($wipwhole_array as $wip) {
if ($arrayData[$wip['contractno']]['sign'][0] == "寶佳出貨前30天") { if ($arrayData[$wip['contractno']]['sign'][0] == "寶佳出貨前30天") {
$facility_status = ""; $facility_status = "";
array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']); array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']);
//-##############################################################################################################################################
$today = strtotime(date('Ymd')); $today = strtotime(date('Ymd'));
$contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]); $contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]);
$month = collect_month($contractday); $month = collect_month($contractday);
@ -382,6 +418,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month;
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$facility_status = $wip['facilityno'] . " (出貨後10天" . $arrayData[$wip['contractno']]['second'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (出貨後10天" . $arrayData[$wip['contractno']]['second'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
//貨抵工地款 //貨抵工地款
@ -393,6 +430,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['arrive'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (貨抵工地後90天" . $arrayData[$wip['contractno']]['arrive'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (貨抵工地後90天" . $arrayData[$wip['contractno']]['arrive'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -405,6 +443,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['tryrun'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['tryrun'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (試車後90天" . $arrayData[$wip['contractno']]['tryrun'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (試車後90天" . $arrayData[$wip['contractno']]['tryrun'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -417,6 +456,8 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['delivery'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['delivery'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (交車後270天" . $arrayData[$wip['contractno']]['delivery'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (交車後270天" . $arrayData[$wip['contractno']]['delivery'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -434,6 +475,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $facility_status; $arrayData[$wip['contractno']]['facilities'] .= $facility_status;
} else { } else {
$signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]); $signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]);
array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']);
$month = collect_month($signtime); $month = collect_month($signtime);
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = strval(date('Ymd', $signtime)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = strval(date('Ymd', $signtime));
@ -447,10 +489,15 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") { if ($arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") {
$estimate_delivery_time = strtotime($wip['delivery_date']); $estimate_delivery_time = strtotime($wip['delivery_date']);
@ -458,6 +505,8 @@ foreach ($wipwhole_array as $wip) {
$month = collect_month($arrivetime); $month = collect_month($arrivetime);
if ($today > $arrivetime) { if ($today > $arrivetime) {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
} }
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $arrivetime)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $arrivetime));
@ -467,7 +516,10 @@ foreach ($wipwhole_array as $wip) {
array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($arrivetime))); array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($arrivetime)));
} else { } else {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['check_num'] += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['delivery'][2] = strval($wip['delivery_date']); $arrayData[$wip['contractno']]['delivery'][2] = strval($wip['delivery_date']);
$deliverytime = strtotime($wip['delivery_date']); $deliverytime = strtotime($wip['delivery_date']);
$month = collect_month($deliverytime); $month = collect_month($deliverytime);
@ -538,11 +590,17 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$arrayData[$wip['contractno']]['check_num'] += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) { if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) {
array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date']))); array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date'])));
array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date']))); array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date'])));
@ -619,10 +677,15 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) {
array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date']))); array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date'])));
array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date']))); array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date'])));
@ -677,9 +740,13 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) {
$installtime = strtotime($wip['install_end_date']); $installtime = strtotime($wip['install_end_date']);
$month = collect_month($installtime); $month = collect_month($installtime);
@ -726,8 +793,11 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") {
$estimate_delivery_time = strtotime($wip['real_arrival_date']); $estimate_delivery_time = strtotime($wip['real_arrival_date']);
@ -756,9 +826,12 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (已達二次款收款條件) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (已達二次款收款條件) <br>";
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
} else { } else {
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($wip['real_contract_arrival_date'] != NULL) { if ($wip['real_contract_arrival_date'] != NULL) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>";
@ -773,9 +846,29 @@ foreach ($wipwhole_array as $wip) {
} }
} }
} }
print_r($contract_budget['D23070082']); // foreach ($arrayData as $key => $value) {
echo "<br>"; // echo $key."<br>";
exit(); // print_r($value['total_list']);
// echo " / 總 ";
// print_r($value['sign_list']);
// echo " / 訂金 <br>";
// print_r($value['arrive_list']);
// echo " / 貨抵 ";
// print_r($value['install_list']);
// echo " / 安裝 <br>";
// print_r($value['tryrun_list']);
// echo " / 試車 ";
// print_r($value['check_list']);
// echo " / 官檢 <br>";
// print_r($value['delivery_list']);
// echo " / 移交 ";
// print_r($value['final_list']);
// echo " / 結案 <br>";
// echo "---------------------------<br>";
// foreach($value['sign_list'] as $fac){
// echo $fac."=========";
// }
// }
// 計算每個合約的應收款、作番總數 // 計算每個合約的應收款、作番總數
@ -783,27 +876,36 @@ $today_date = new DateTime(date('Y-m-d', strtotime('-1 month', strtotime(date('Y
$contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); $contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final');
foreach ($arrayData as &$value) { foreach ($arrayData as &$value) {
if ($value['total_facility_num'] > 0) { if ($value['total_facility_num'] > 0) {
$value['receivable_budget'] = $value['sign'][1] * ($contract_budget[$value[10]]['total'] / $contract_budget[$value[10]]['total']) + ($value['second'][1] * ($value['second_num'] / $value['total_facility_num'])) + $sign_ratio = get_ratio($value['sign_list'], $value[10], $contract_budget);
($value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num'])) + ($value['install'][1] * ($value['install_num'] / $value['total_facility_num'])) + $value['sign'][3] = $value['sign'][1] * $sign_ratio;
($value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num'])) + ($value['check'][1] * ($value['check_num'] / $value['total_facility_num'])) + $second_ratio = get_ratio($value['second_list'], $value[10], $contract_budget);
(($value['delivery'][1] + $value['final'][1]) * ($value['delivery_num'] / $value['total_facility_num'])); $value['second'][3] = $value['second'][1] * $second_ratio;
$value['sign'][3] = $value['sign'][1] * ($value['sign_num'] / $value['total_facility_num']); $arrive_ratio = get_ratio($value['arrive_list'], $value[10], $contract_budget);
$value['second'][3] = $value['second'][1] * ($value['second_num'] / $value['total_facility_num']); $value['arrive'][3] = $value['arrive'][1] * $arrive_ratio;
$value['arrive'][3] = $value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num']); $install_ratio = get_ratio($value['install_list'], $value[10], $contract_budget);
$value['install'][3] = $value['install'][1] * ($value['install_num'] / $value['total_facility_num']); $value['install'][3] = $value['install'][1] * $install_ratio;
$value['tryrun'][3] = $value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num']); $tryrun_ratio = get_ratio($value['tryrun_list'], $value[10], $contract_budget);
$value['check'][3] = $value['check'][1] * ($value['check_num'] / $value['total_facility_num']); $value['tryrun'][3] = $value['tryrun'][1] * $tryrun_ratio;
$value['delivery'][3] = $value['delivery'][1] * ($value['delivery_num'] / $value['total_facility_num']); $check_ratio = get_ratio($value['check_list'], $value[10], $contract_budget);
$value['final'][3] = $value['final'][1] * ($value['delivery_num'] / $value['total_facility_num']); $value['check'][3] = $value['check'][1] * $check_ratio;
$delivery_ratio = get_ratio($value['delivery_list'], $value[10], $contract_budget);
$value['delivery'][3] = $value['delivery'][1] * $delivery_ratio;
$final_ratio = get_ratio($value['final_list'], $value[10], $contract_budget);
$value['final'][3] = $value['final'][1] * $final_ratio;
$value['receivable_budget'] = $value['sign'][3] + $value['second'][3] + $value['arrive'][3] + $value['install'][3] + $value['tryrun'][3] + $value['check'][3] + $value['delivery'][3] + $value['final'][3];
} }
//['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
// 計算每台作番金額與各階段應收金額 // 計算每台作番金額與各階段應收金額
foreach ($value['facility'] as &$val) { foreach ($value['facility'] as &$val) {
foreach ($contractstage as $stage) { foreach ($contractstage as $stage) {
if (isset($value[$stage][0]) && !empty($value[$stage][0])) { if (isset($value[$stage][0]) && !empty($value[$stage][0])) {
$val[$stage][0] = $value[$stage][0]; $val[$stage][0] = $value[$stage][0];
$val[$stage][1] = $value[$stage][1] / $value['total_facility_num']; if (isset($contract_budget[$value[10]]['total']) && isset($contract_budget[$value[10]][$val['no']]['total'])) {
$ratio = $contract_budget[$value[10]][$val['no']]['total'] / $contract_budget[$value[10]]['total'];
} else {
$ratio = 0;
}
$val[$stage][1] = $value[$stage][1] * $ratio;
$val[$stage][3] = (!(isset($val[$stage][6])) || $val[$stage][6] == 0) ? 0 : $val[$stage][1]; $val[$stage][3] = (!(isset($val[$stage][6])) || $val[$stage][6] == 0) ? 0 : $val[$stage][1];
$val['total_budget'] += $val[$stage][1]; $val['total_budget'] += $val[$stage][1];
$val['receivable_budget'] += $val[$stage][3]; $val['receivable_budget'] += $val[$stage][3];
@ -882,6 +984,284 @@ foreach ($received_array as $received) {
} }
} }
//['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 4 已收金額 5 催收金額 6 已開發票金額 7 未開發票金額 min 最早應收月份 max 最晚應收月份
foreach ($arrayData as $key => &$data) {
$tmp_data = $data['received_budget'];
$tmp_invoice = $data['invoice_budget'];
if ($data['sign'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['sign'][3]) >= 0) {
$data['sign'][4] = $data['sign'][3];
$tmp_data -= $data['sign'][3];
} else {
$data['sign'][4] = $tmp_data;
$tmp_data = 0;
}
$data['sign'][5] = $data['sign'][3] - $data['sign'][4];
} else {
$data['sign'][4] = 0;
$data['sign'][5] = $data['sign'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['sign'][3]) >= 0) {
$data['sign'][6] = $data['sign'][3];
$tmp_invoice -= $data['sign'][3];
} else {
$data['sign'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['sign'][7] = $data['sign'][3] - $data['sign'][6];
} else {
$data['sign'][6] = 0;
$data['sign'][7] = $data['sign'][3];
}
} else {
$data['sign'][4] = 0;
$data['sign'][5] = 0;
$data['sign'][6] = 0;
$data['sign'][7] = 0;
}
if ($data['second'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['second'][3]) >= 0) {
$data['second'][4] = $data['second'][3];
$tmp_data -= $data['second'][3];
} else {
$data['second'][4] = $tmp_data;
$tmp_data = 0;
}
$data['second'][5] = $data['second'][3] - $data['second'][4];
} else {
$data['second'][4] = 0;
$data['second'][5] = $data['second'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['second'][3]) >= 0) {
$data['second'][6] = $data['second'][3];
$tmp_invoice -= $data['second'][3];
} else {
$data['second'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['second'][7] = $data['second'][3] - $data['second'][6];
} else {
$data['second'][6] = 0;
$data['second'][7] = $data['second'][3];
}
} else {
$data['second'][4] = 0;
$data['second'][5] = 0;
$data['second'][6] = 0;
$data['second'][7] = 0;
}
if ($data['arrive'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['arrive'][1]) >= 0) {
$data['arrive'][4] = $data['arrive'][3];
$tmp_data -= $data['arrive'][3];
} else {
$data['arrive'][4] = $tmp_data;
$tmp_data = 0;
}
$data['arrive'][5] = $data['arrive'][3] - $data['arrive'][4];
} else {
$data['arrive'][4] = 0;
$data['arrive'][5] = $data['arrive'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['arrive'][3]) >= 0) {
$data['arrive'][6] = $data['arrive'][3];
$tmp_invoice -= $data['arrive'][3];
} else {
$data['arrive'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['arrive'][7] = $data['arrive'][3] - $data['arrive'][6];
} else {
$data['arrive'][6] = 0;
$data['arrive'][7] = $data['arrive'][3];
}
} else {
$data['arrive'][4] = 0;
$data['arrive'][5] = 0;
$data['arrive'][6] = 0;
$data['arrive'][7] = 0;
}
if ($data['install'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['install'][1]) >= 0) {
$data['install'][4] = $data['install'][3];
$tmp_data -= $data['install'][3];
} else {
$data['install'][4] = $tmp_data;
$tmp_data = 0;
}
$data['install'][5] = $data['install'][3] - $data['install'][4];
} else {
$data['install'][4] = 0;
$data['install'][5] = $data['install'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['install'][3]) >= 0) {
$data['install'][6] = $data['install'][3];
$tmp_invoice -= $data['install'][3];
} else {
$data['install'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['install'][7] = $data['install'][3] - $data['install'][6];
} else {
$data['install'][6] = 0;
$data['install'][7] = $data['install'][3];
}
} else {
$data['install'][4] = 0;
$data['install'][5] = 0;
$data['install'][6] = 0;
$data['install'][7] = 0;
}
if ($data['tryrun'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['tryrun'][1]) >= 0) {
$data['tryrun'][4] = $data['tryrun'][3];
$tmp_data -= $data['tryrun'][3];
} else {
$data['tryrun'][4] = $tmp_data;
$tmp_data = 0;
}
$data['tryrun'][5] = $data['tryrun'][3] - $data['tryrun'][4];
} else {
$data['tryrun'][4] = 0;
$data['tryrun'][5] = $data['tryrun'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['tryrun'][3]) >= 0) {
$data['tryrun'][6] = $data['tryrun'][3];
$tmp_invoice -= $data['tryrun'][3];
} else {
$data['tryrun'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['tryrun'][7] = $data['tryrun'][3] - $data['tryrun'][6];
} else {
$data['tryrun'][6] = 0;
$data['tryrun'][7] = $data['tryrun'][3];
}
} else {
$data['tryrun'][4] = 0;
$data['tryrun'][5] = 0;
$data['tryrun'][6] = 0;
$data['tryrun'][7] = 0;
}
if ($data['check'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['check'][1]) >= 0) {
$data['check'][4] = $data['check'][3];
$tmp_data -= $data['check'][3];
} else {
$data['check'][4] = $tmp_data;
$tmp_data = 0;
}
$data['check'][5] = $data['check'][3] - $data['check'][4];
} else {
$data['check'][4] = 0;
$data['check'][5] = $data['check'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['check'][3]) >= 0) {
$data['check'][6] = $data['check'][3];
$tmp_invoice -= $data['check'][3];
} else {
$data['check'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['check'][7] = $data['check'][3] - $data['check'][6];
} else {
$data['check'][6] = 0;
$data['check'][7] = $data['check'][3];
}
} else {
$data['check'][4] = 0;
$data['check'][5] = 0;
$data['check'][6] = 0;
$data['check'][7] = 0;
}
if ($data['delivery'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['delivery'][1]) >= 0) {
$data['delivery'][4] = $data['delivery'][3];
$tmp_data -= $data['delivery'][3];
} else {
$data['delivery'][4] = $tmp_data;
$tmp_data = 0;
}
$data['delivery'][5] = $data['delivery'][3] - $data['delivery'][4];
} else {
$data['delivery'][4] = 0;
$data['delivery'][5] = $data['delivery'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['delivery'][3]) >= 0) {
$data['delivery'][6] = $data['delivery'][3];
$tmp_invoice -= $data['delivery'][3];
} else {
$data['delivery'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['delivery'][7] = $data['delivery'][3] - $data['delivery'][6];
} else {
$data['delivery'][6] = 0;
$data['delivery'][7] = $data['delivery'][3];
}
} else {
$data['delivery'][4] = 0;
$data['delivery'][5] = 0;
$data['delivery'][6] = 0;
$data['delivery'][7] = 0;
}
if ($data['final'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['final'][1]) >= 0) {
$data['final'][4] = $data['final'][3];
$tmp_data -= $data['final'][3];
} else {
$data['final'][4] = $tmp_data;
$tmp_data = 0;
}
$data['final'][5] = $data['final'][3] - $data['final'][4];
} else {
$data['final'][4] = 0;
$data['final'][5] = $data['final'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['final'][3]) >= 0) {
$data['final'][6] = $data['final'][3];
$tmp_invoice -= $data['final'][3];
} else {
$data['final'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['final'][7] = $data['final'][3] - $data['final'][6];
} else {
$data['final'][6] = 0;
$data['final'][7] = $data['final'][3];
}
} else {
$data['final'][4] = 0;
$data['final'][5] = 0;
$data['final'][6] = 0;
$data['final'][7] = 0;
}
}
//產生excel的array //產生excel的array
$excel_aray = array(); $excel_aray = array();
@ -891,6 +1271,10 @@ $facility_array = array();
$facility_boga_array = array(); $facility_boga_array = array();
$facility_exclude_boga_array = array(); $facility_exclude_boga_array = array();
foreach ($arrayData as $key => $value) { foreach ($arrayData as $key => $value) {
$sum_A40001 += $value['A40001'];
$sum_A40008 += $value['A40008'];
$sum_total_budget += $value['total_budget'];
$sum_facility += $value['total_facility_num'];
$value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0; $value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0;
$value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0; $value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0;
$value['arrive'][3] = (isset($value['arrive'][3])) ? $value['arrive'][3] : 0; $value['arrive'][3] = (isset($value['arrive'][3])) ? $value['arrive'][3] : 0;
@ -903,50 +1287,51 @@ foreach ($arrayData as $key => $value) {
foreach ($contractstage as $i) { foreach ($contractstage as $i) {
$value[$i]['max'] = (empty($value[$i]['max']) || is_null($value[$i]['max'])) ? 0 : $value[$i]['max']; $value[$i]['max'] = (empty($value[$i]['max']) || is_null($value[$i]['max'])) ? 0 : $value[$i]['max'];
$value[$i]['min'] = (empty($value[$i]['min']) || is_null($value[$i]['min'])) ? 0 : $value[$i]['min']; $value[$i]['min'] = (empty($value[$i]['min']) || is_null($value[$i]['min'])) ? 0 : $value[$i]['min'];
$value[$i][4] = (isset($value[$i][4])) ? $value[$i][4] : 0;
$value[$i][5] = (isset($value[$i][5])) ? $value[$i][5] : 0;
}; };
if ($value['sign'][0] == "寶佳出貨前30天") { if ($value['sign'][0] == "寶佳出貨前30天") {
$boga_array[$key] = [ $boga_array[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
} else { } else {
$exclude_boga_array[$key] = [ $exclude_boga_array[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
} }
$excel_aray[$key] = [ $excel_aray[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
//['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份 //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份
//[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
foreach ($value['facility'] as $valkey => $val) { foreach ($value['facility'] as $valkey => $val) {
@ -961,48 +1346,50 @@ foreach ($arrayData as $key => $value) {
} }
$facility_array[$valkey] = [ $facility_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
if ($value['sign'][0] == "寶佳出貨前30天") { if ($value['sign'][0] == "寶佳出貨前30天") {
$facility_boga_array[$valkey] = [ $facility_boga_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
} else { } else {
$facility_exclude_boga_array[$valkey] = [ $facility_exclude_boga_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
} }
} }
} }
$average_A40001 = round($sum_A40001 / $sum_facility, 2);
$average_A40008 = round($sum_A40008 / $sum_facility, 2);
$average_budget = round($sum_total_budget / $sum_facility, 2);
$total_data = json_encode($excel_aray);
$data = json_encode($excel_aray);
$boga_data = json_encode($boga_array); $boga_data = json_encode($boga_array);
$exclude_boga_data = json_encode($exclude_boga_array); $exclude_boga_data = json_encode($exclude_boga_array);
$facility_data = json_encode($facility_array); $facility_data = json_encode($facility_array);
@ -1060,10 +1447,55 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
<button type="button" style="width: 12%;" onclick="downloadFacilityData('AllData')" class="btn btn-success btn-md">作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('AllData')" class="btn btn-success btn-md">作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" style="width: 12%;" onclick="downloadFacilityData('ExcludeData')" class="btn btn-info btn-md">不含寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('ExcludeData')" class="btn btn-info btn-md">不含寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" style="width: 12%;" onclick="downloadFacilityData('BogaData')" class="btn btn-warning btn-md">寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('BogaData')" class="btn btn-warning btn-md">寶佳作番收款明細<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> </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_A40001">合約設備總金額</label>
<input type="text" class="form-control" id="sum_A40001" name="sum_A40001" value="<?= number_format($sum_A40001) ?>" disabled>
</div>
<div class="col-md-3">
<label for="sum_A40008">合約安裝總金額</label>
<input type="text" class="form-control" id="sum_A40008" name="sum_A40008" value="<?= number_format($sum_A40008) ?>" 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>
<div class="form-group">
<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 class="col-md-3">
<label for="average_A40001">設備平均金額</label>
<input type="text" class="form-control" id="average_A40001" name="average_A40001" value="<?= number_format($average_A40001) ?>" disabled>
</div>
<div class="col-md-3">
<label for="average_A40008">安裝平均金額</label>
<input type="text" class="form-control" id="average_A40008" name="average_A40008" value="<?= number_format($average_A40008) ?>" disabled>
</div>
</div>
</form>
</div> </div>
<?php
include "./footer.php";
?>
<div style="width:98%;margin:1% ;overflow-x: auto;"> <div style="width:98%;margin:1% ;overflow-x: auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%;"> <table id="table_index" class="table table-striped table-bordered" style="width:100%;">
<thead> <thead>
@ -1173,7 +1605,6 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
<script> <script>
function showContract(BillNo) { function showContract(BillNo) {
window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200'); window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200');
console.log(BillNo);
} }
function test() { function test() {
@ -1209,13 +1640,8 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
document.body.removeChild(link); document.body.removeChild(link);
} }
} }
// xhr.send(JSON.stringify({
// Bill: <?= $data ?>
// })
// );
xhr.send(JSON.stringify({ xhr.send(JSON.stringify({
Bill: <?= $data ?> Bill: <?= $total_data ?>
})); }));
} }
@ -1249,12 +1675,10 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
if (content == 'AllData') { if (content == 'AllData') {
var BillData = <?= $facility_data ?>; var BillData = <?= $facility_data ?>;
var filename = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} } else if (content == 'ExcludeData') {
else if(content == 'ExcludeData') {
var BillData = <?= $facility_exclude_boga_data ?>; var BillData = <?= $facility_exclude_boga_data ?>;
var filename = "不含寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "不含寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} } else if (content == 'BogaData') {
else if(content == 'BogaData'){
var BillData = <?= $facility_boga_data ?>; var BillData = <?= $facility_boga_data ?>;
var filename = "寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} }
@ -1321,46 +1745,63 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
form.submit(); form.submit();
} }
</script> </script>
<?php
$table = ""; $table = "";
//[stage] 0 款名 1金額 2 應收款日期 //[stage] 0 款名 1金額 2 應收款日期
//['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 //['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
// 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址
// [合約號]['facility'][作番號]['no'] // [合約號]['facility'][作番號]['no']
//['receivable_budget'] / ['total_facility_num'] / ['total_budget'] //['receivable_budget'] / ['total_facility_num'] / ['total_budget']
//('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); //('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final');
foreach ($arrayData as $key => $value) { foreach ($arrayData as $key => $value) {
foreach($value['facility'] as $fakey => $facility) { foreach ($value['facility'] as $fakey => $facility) {
foreach ($contractstage as $stage) { foreach ($contractstage as $stage) {
switch ($stage) { switch ($stage) {
case 'sign':$stageno = 0;break; case 'sign':
case 'second':$stageno=1;break; $stageno = 0;
case 'arrive':$stageno=2;break; break;
case 'install':$stageno=3;break; case 'second':
case 'tryrun':$stageno=4;break; $stageno = 1;
case 'check':$stageno=5;break; break;
case 'delivery':$stageno=6;break; case 'arrive':
case 'final':$stageno=7;break; $stageno = 2;
break;
case 'install':
$stageno = 3;
break;
case 'tryrun':
$stageno = 4;
break;
case 'check':
$stageno = 5;
break;
case 'delivery':
$stageno = 6;
break;
case 'final':
$stageno = 7;
break;
} }
if (isset($value[$stage]) && isset($value[$stage][0]) && !empty($value[$stage][0])) { if (isset($value[$stage]) && isset($value[$stage][0]) && !empty($value[$stage][0])) {
if($value[$stage][3] >0){ if ($value[$stage][3] > 0) {
$stage3 = 1; $stage3 = 1;
}else{ } else {
$stage3 = 0; $stage3 = 0;
} }
$budget = $value[$stage][1]; $budget = $value[$stage][1];
$receivable_date = $value[$stage][2]; $receivable_date = $value[$stage][2];
$table .= "INSERT INTO account_receivable ( $table .= "INSERT INTO account_receivable (
`contract_no`, `contract_no`,
`facility_no`, `facility_no`,
`stage`, `stage`,
`budget`, `budget`,
`receivable_date`, `receivable_date`,
`receivable`) VALUES ('$key','$fakey',$stageno,$budget,$receivable_date,$stage3); \n"; `receivable`) VALUES ('$key','$fakey',$stageno,$budget,$receivable_date,$stage3); \n";
} }
} }
} }
} }
$file_path = 'account_receivable_sql_file.sql'; $file_path = 'account_receivable_sql_file.sql';

630
wms/account-receivable-index.php

@ -1,6 +1,15 @@
<?php <?php
include "header.php"; include "header.php";
$sum_facility = 0;
$sum_A40001 = 0;
$sum_A40008 = 0;
$sum_total_budget = 0;
$average_budget = 0;
$average_A40001 = 0;
$average_A40008 = 0;
$follower = find_follow($user_id); $follower = find_follow($user_id);
$arrayData = []; $arrayData = [];
$receivable_array = []; $receivable_array = [];
@ -39,6 +48,11 @@ LEFT JOIN salSalesOrder 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
WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) "; WHERE s.ModeId = 'M' AND (s.CurrentState=2 OR s.CurrentState=4) ";
// T8 銷售訂單 作番金額
$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 ";
//作番大日程 //作番大日程
$sql = "SELECT $sql = "SELECT
tmp2.*, tmp2.*,
@ -88,6 +102,7 @@ if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
// $sql_received .= " AND (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'";
if (count($follower) > 0) { if (count($follower) > 0) {
$column_str = "('$user_id'" . ",'"; $column_str = "('$user_id'" . ",'";
$column_str .= implode("','", $follower); $column_str .= implode("','", $follower);
@ -96,21 +111,64 @@ if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
// $sql_received .= " OR 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)";
} else { } else {
$sql_contract .= ")"; $sql_contract .= ")";
// $sql_received .= ")"; // $sql_received .= ")";
$sql_opening .= ")"; $sql_opening .= ")";
$sql .= " ORDER BY contractno"; $sql .= " ORDER BY contractno";
$sql_contract_budget .= ")";
}; };
}else{ } else {
$sql .= " ORDER BY contractno"; $sql .= " ORDER BY contractno";
$sql_contract_budget .= "ORDER BY BillNo, CU_MaterialId";
} }
$contract = $conn->query($sql_contract); $contract = $conn->query($sql_contract);
$received_array = $conn->query($sql_received); $received_array = $conn->query($sql_received);
$opening_data = mysqli_query($link, $sql_opening); $opening_data = mysqli_query($link, $sql_opening);
$invoice_data = $conn->query($sql_invoice); $invoice_data = $conn->query($sql_invoice);
$contract_budget_data = $conn->query($sql_contract_budget);
$contract_budget = array();
foreach ($contract_budget_data as $cont) {
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['CU_MaterialId']])) {
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['total'] += $cont['OAmountWithTax'];
} else {
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']]['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'];
}
$contract_budget[$cont['BillNo']][$cont['CU_MaterialId']][$cont['MaterialId']] = $cont['OAmountWithTax'];
}
/* 計算比例
@param $facility_list array
@param $contract_no string
@param $contract_budget array
return float */
function get_ratio($facility_list, $contract_no, $contract_budget)
{
$ratio = 0;
if (empty($facility_list)) {
return 0;
} else {
foreach ($facility_list as $every) {
if (isset($contract_budget[$contract_no][$every]['total']) && isset($contract_budget[$contract_no]['total'])) {
$ratio += $contract_budget[$contract_no][$every]['total'] / $contract_budget[$contract_no]['total'];
}
}
return $ratio;
}
}
// 合約收款階段內容分類 // 合約收款階段內容分類
$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); $sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天');
@ -152,6 +210,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['sign']['max'] = $arrayData[$BillNo]['second']['max'] = $arrayData[$BillNo]['arrive']['max'] = $arrayData[$BillNo]['install']['max'] = $arrayData[$BillNo]['tryrun']['max'] = $arrayData[$BillNo]['check']['max'] = $arrayData[$BillNo]['delivery']['max'] = $arrayData[$BillNo]['final']['max'] = array(); $arrayData[$BillNo]['sign']['max'] = $arrayData[$BillNo]['second']['max'] = $arrayData[$BillNo]['arrive']['max'] = $arrayData[$BillNo]['install']['max'] = $arrayData[$BillNo]['tryrun']['max'] = $arrayData[$BillNo]['check']['max'] = $arrayData[$BillNo]['delivery']['max'] = $arrayData[$BillNo]['final']['max'] = array();
$arrayData[$BillNo]['facilities'] = ""; $arrayData[$BillNo]['facilities'] = "";
$arrayData[$BillNo]['total_facility_num'] = $arrayData[$BillNo]['delivery_num'] = $arrayData[$BillNo]['check_num'] = $arrayData[$BillNo]['tryrun_num'] = $arrayData[$BillNo]['install_num'] = $arrayData[$BillNo]['arrive_num'] = $arrayData[$BillNo]['second_num'] = $arrayData[$BillNo]['sign_num'] = $arrayData[$BillNo]['receivable_budget'] = 0; $arrayData[$BillNo]['total_facility_num'] = $arrayData[$BillNo]['delivery_num'] = $arrayData[$BillNo]['check_num'] = $arrayData[$BillNo]['tryrun_num'] = $arrayData[$BillNo]['install_num'] = $arrayData[$BillNo]['arrive_num'] = $arrayData[$BillNo]['second_num'] = $arrayData[$BillNo]['sign_num'] = $arrayData[$BillNo]['receivable_budget'] = 0;
$arrayData[$BillNo]['total_list'] = $arrayData[$BillNo]['sign_list'] = $arrayData[$BillNo]['second_list'] = $arrayData[$BillNo]['arrive_list'] = $arrayData[$BillNo]['install_list'] = $arrayData[$BillNo]['tryrun_list'] = $arrayData[$BillNo]['check_list'] = $arrayData[$BillNo]['delivery_list'] = $arrayData[$BillNo]['final_list'] = [];
} }
if (stristr($PayStage, '二次款') || (stristr($PayStage, '出貨前') && $PayStage != "寶佳出貨前30天") || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60') || stristr($PayStage, '寶佳出貨後10天')) { if (stristr($PayStage, '二次款') || (stristr($PayStage, '出貨前') && $PayStage != "寶佳出貨前30天") || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60') || stristr($PayStage, '寶佳出貨後10天')) {
$arrayData[$BillNo]['second'][0] = $PayStage; $arrayData[$BillNo]['second'][0] = $PayStage;
@ -241,12 +300,16 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']][4] = $wip['name']; $arrayData[$wip['contractno']][4] = $wip['name'];
$arrayData[$wip['contractno']][10] = $wip['contractno']; $arrayData[$wip['contractno']][10] = $wip['contractno'];
$arrayData[$wip['contractno']]['total_facility_num'] += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrayData[$wip['contractno']]['A40001'] = $contract_budget[$wip['contractno']]['A40001'];
$arrayData[$wip['contractno']]['A40008'] = $contract_budget[$wip['contractno']]['A40008'];
// [合約號]['facility'][作番號]['no'] // [合約號]['facility'][作番號]['no']
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno']; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['no'] = $wip['facilityno'];
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = ""; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = "";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['total_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['receivable_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['collect_budget'] = 0;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['A40001'] = (isset($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001']) && !is_null($contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'])) ? $contract_budget[$wip['contractno']][$wip['facilityno']]['A40001'] : 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;
// [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期] // [合約號][作番號][款別] ['con'] [金額]/[合約預計收款日期]
// [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期] // [合約號][作番號][款別] ['inv'] [金額]/[發票開立日期]
@ -337,7 +400,7 @@ foreach ($wipwhole_array as $wip) {
if ($arrayData[$wip['contractno']]['sign'][0] == "寶佳出貨前30天") { if ($arrayData[$wip['contractno']]['sign'][0] == "寶佳出貨前30天") {
$facility_status = ""; $facility_status = "";
// if ($arrayData[$wip['contractno']]['sign'][2]) array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']);
$today = strtotime(date('Ymd')); $today = strtotime(date('Ymd'));
$contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]); $contractday = strtotime($arrayData[$wip['contractno']]['sign'][2]);
$month = collect_month($contractday); $month = collect_month($contractday);
@ -345,6 +408,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = $arrayData[$wip['contractno']]['sign'][2]; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = $arrayData[$wip['contractno']]['sign'][2];
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
$facility_status = $wip['facilityno'] . " (出貨前30天" . $arrayData[$wip['contractno']]['sign'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (出貨前30天" . $arrayData[$wip['contractno']]['sign'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
//二次款 //二次款
@ -354,6 +418,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['second'][6] = $month;
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$facility_status = $wip['facilityno'] . " (出貨後10天" . $arrayData[$wip['contractno']]['second'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (出貨後10天" . $arrayData[$wip['contractno']]['second'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
//貨抵工地款 //貨抵工地款
@ -365,6 +430,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['arrive'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['arrive'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (貨抵工地後90天" . $arrayData[$wip['contractno']]['arrive'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (貨抵工地後90天" . $arrayData[$wip['contractno']]['arrive'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -377,6 +443,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['tryrun'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['tryrun'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['tryrun'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (試車後90天" . $arrayData[$wip['contractno']]['tryrun'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (試車後90天" . $arrayData[$wip['contractno']]['tryrun'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -389,6 +456,8 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $contractday)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $contractday));
if ($today > $contractday) { if ($today > $contractday) {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['delivery'][2] = strval(date('Y-m-d', $contractday)); $arrayData[$wip['contractno']]['delivery'][2] = strval(date('Y-m-d', $contractday));
$facility_status = $wip['facilityno'] . " (交車後270天" . $arrayData[$wip['contractno']]['delivery'][2] . "已過) <br>"; $facility_status = $wip['facilityno'] . " (交車後270天" . $arrayData[$wip['contractno']]['delivery'][2] . "已過) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $facility_status;
@ -406,6 +475,7 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $facility_status; $arrayData[$wip['contractno']]['facilities'] .= $facility_status;
} else { } else {
$signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]); $signtime = strtotime($arrayData[$wip['contractno']]['sign'][2]);
array_push($arrayData[$wip['contractno']]['total_list'], $wip['facilityno']);
$month = collect_month($signtime); $month = collect_month($signtime);
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][6] = $month;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = strval(date('Ymd', $signtime)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['sign'][2] = strval(date('Ymd', $signtime));
@ -419,10 +489,15 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") { if ($arrayData[$wip['contractno']]['delivery'][0] == "交車後270天") {
$estimate_delivery_time = strtotime($wip['delivery_date']); $estimate_delivery_time = strtotime($wip['delivery_date']);
@ -430,6 +505,8 @@ foreach ($wipwhole_array as $wip) {
$month = collect_month($arrivetime); $month = collect_month($arrivetime);
if ($today > $arrivetime) { if ($today > $arrivetime) {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
} }
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][6] = $month;
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $arrivetime)); $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['delivery'][2] = strval(date('Ymd', $arrivetime));
@ -439,7 +516,10 @@ foreach ($wipwhole_array as $wip) {
array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($arrivetime))); array_push($arrayData[$wip['contractno']]['delivery']['max'], strtotime(strval($arrivetime)));
} else { } else {
$arrayData[$wip['contractno']]['delivery_num'] += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
array_push($arrayData[$wip['contractno']]['delivery_list'], $wip['facilityno']);
array_push($arrayData[$wip['contractno']]['final_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['check_num'] += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['delivery'][2] = strval($wip['delivery_date']); $arrayData[$wip['contractno']]['delivery'][2] = strval($wip['delivery_date']);
$deliverytime = strtotime($wip['delivery_date']); $deliverytime = strtotime($wip['delivery_date']);
$month = collect_month($deliverytime); $month = collect_month($deliverytime);
@ -510,11 +590,17 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$arrayData[$wip['contractno']]['check_num'] += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
array_push($arrayData[$wip['contractno']]['check_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) { if (!empty($wip['official_check_date']) && $wip['official_check_date'] != NULL) {
array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date']))); array_push($arrayData[$wip['contractno']]['check']['min'], strtotime(strval($wip['official_check_date'])));
array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date']))); array_push($arrayData[$wip['contractno']]['check']['max'], strtotime(strval($wip['official_check_date'])));
@ -591,10 +677,15 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$arrayData[$wip['contractno']]['tryrun_num'] += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
array_push($arrayData[$wip['contractno']]['tryrun_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) { if (!empty($wip['tryrun_end_date']) && $wip['tryrun_end_date'] != NULL) {
array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date']))); array_push($arrayData[$wip['contractno']]['tryrun']['min'], strtotime(strval($wip['tryrun_end_date'])));
array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date']))); array_push($arrayData[$wip['contractno']]['tryrun']['max'], strtotime(strval($wip['tryrun_end_date'])));
@ -649,9 +740,13 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$arrayData[$wip['contractno']]['install_num'] += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
array_push($arrayData[$wip['contractno']]['install_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) { if (!empty($wip['install_end_date']) && $wip['install_end_date'] != NULL) {
$installtime = strtotime($wip['install_end_date']); $installtime = strtotime($wip['install_end_date']);
$month = collect_month($installtime); $month = collect_month($installtime);
@ -698,8 +793,11 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$arrayData[$wip['contractno']]['arrive_num'] += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
array_push($arrayData[$wip['contractno']]['arrive_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") { if ($arrayData[$wip['contractno']]['arrive'][0] == "貨抵工地後90天") {
$estimate_delivery_time = strtotime($wip['real_arrival_date']); $estimate_delivery_time = strtotime($wip['real_arrival_date']);
@ -728,9 +826,12 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (已達二次款收款條件) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (已達二次款收款條件) <br>";
$arrayData[$wip['contractno']]['second_num'] += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
array_push($arrayData[$wip['contractno']]['second_list'], $wip['facilityno']);
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
} else { } else {
$arrayData[$wip['contractno']]['sign_num'] += 1; $arrayData[$wip['contractno']]['sign_num'] += 1;
array_push($arrayData[$wip['contractno']]['sign_list'], $wip['facilityno']);
if ($wip['real_contract_arrival_date'] != NULL) { if ($wip['real_contract_arrival_date'] != NULL) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>";
$arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>"; $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨日) <br>";
@ -745,33 +846,66 @@ foreach ($wipwhole_array as $wip) {
} }
} }
} }
// foreach ($arrayData as $key => $value) {
// echo $key."<br>";
// print_r($value['total_list']);
// echo " / 總 ";
// print_r($value['sign_list']);
// echo " / 訂金 <br>";
// print_r($value['arrive_list']);
// echo " / 貨抵 ";
// print_r($value['install_list']);
// echo " / 安裝 <br>";
// print_r($value['tryrun_list']);
// echo " / 試車 ";
// print_r($value['check_list']);
// echo " / 官檢 <br>";
// print_r($value['delivery_list']);
// echo " / 移交 ";
// print_r($value['final_list']);
// echo " / 結案 <br>";
// echo "---------------------------<br>";
// foreach($value['sign_list'] as $fac){
// echo $fac."=========";
// }
// }
// 計算每個合約的應收款、作番總數 // 計算每個合約的應收款、作番總數
$today_date = new DateTime(date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m-d'))))); $today_date = new DateTime(date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m-d')))));
$contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final'); $contractstage = array('sign', 'second', 'arrive', 'install', 'tryrun', 'check', 'delivery', 'final');
foreach ($arrayData as &$value) { foreach ($arrayData as &$value) {
if ($value['total_facility_num'] > 0) { if ($value['total_facility_num'] > 0) {
$value['receivable_budget'] = $value['sign'][1] * ($value['sign_num'] / $value['total_facility_num']) + ($value['second'][1] * ($value['second_num'] / $value['total_facility_num'])) + $sign_ratio = get_ratio($value['sign_list'], $value[10], $contract_budget);
($value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num'])) + ($value['install'][1] * ($value['install_num'] / $value['total_facility_num'])) + $value['sign'][3] = $value['sign'][1] * $sign_ratio;
($value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num'])) + ($value['check'][1] * ($value['check_num'] / $value['total_facility_num'])) + $second_ratio = get_ratio($value['second_list'], $value[10], $contract_budget);
(($value['delivery'][1] + $value['final'][1]) * ($value['delivery_num'] / $value['total_facility_num'])); $value['second'][3] = $value['second'][1] * $second_ratio;
$value['sign'][3] = $value['sign'][1] * ($value['sign_num'] / $value['total_facility_num']); $arrive_ratio = get_ratio($value['arrive_list'], $value[10], $contract_budget);
$value['second'][3] = $value['second'][1] * ($value['second_num'] / $value['total_facility_num']); $value['arrive'][3] = $value['arrive'][1] * $arrive_ratio;
$value['arrive'][3] = $value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num']); $install_ratio = get_ratio($value['install_list'], $value[10], $contract_budget);
$value['install'][3] = $value['install'][1] * ($value['install_num'] / $value['total_facility_num']); $value['install'][3] = $value['install'][1] * $install_ratio;
$value['tryrun'][3] = $value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num']); $tryrun_ratio = get_ratio($value['tryrun_list'], $value[10], $contract_budget);
$value['check'][3] = $value['check'][1] * ($value['check_num'] / $value['total_facility_num']); $value['tryrun'][3] = $value['tryrun'][1] * $tryrun_ratio;
$value['delivery'][3] = $value['delivery'][1] * ($value['delivery_num'] / $value['total_facility_num']); $check_ratio = get_ratio($value['check_list'], $value[10], $contract_budget);
$value['final'][3] = $value['final'][1] * ($value['delivery_num'] / $value['total_facility_num']); $value['check'][3] = $value['check'][1] * $check_ratio;
$delivery_ratio = get_ratio($value['delivery_list'], $value[10], $contract_budget);
$value['delivery'][3] = $value['delivery'][1] * $delivery_ratio;
$final_ratio = get_ratio($value['final_list'], $value[10], $contract_budget);
$value['final'][3] = $value['final'][1] * $final_ratio;
$value['receivable_budget'] = $value['sign'][3] + $value['second'][3] + $value['arrive'][3] + $value['install'][3] + $value['tryrun'][3] + $value['check'][3] + $value['delivery'][3] + $value['final'][3];
} }
//['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
// 計算每台作番金額與各階段應收金額 // 計算每台作番金額與各階段應收金額
foreach ($value['facility'] as &$val) { foreach ($value['facility'] as &$val) {
foreach ($contractstage as $stage) { foreach ($contractstage as $stage) {
if (isset($value[$stage][0]) && !empty($value[$stage][0])) { if (isset($value[$stage][0]) && !empty($value[$stage][0])) {
$val[$stage][0] = $value[$stage][0]; $val[$stage][0] = $value[$stage][0];
$val[$stage][1] = $value[$stage][1] / $value['total_facility_num']; if (isset($contract_budget[$value[10]]['total']) && isset($contract_budget[$value[10]][$val['no']]['total'])) {
$ratio = $contract_budget[$value[10]][$val['no']]['total'] / $contract_budget[$value[10]]['total'];
} else {
$ratio = 0;
}
$val[$stage][1] = $value[$stage][1] * $ratio;
$val[$stage][3] = (!(isset($val[$stage][6])) || $val[$stage][6] == 0) ? 0 : $val[$stage][1]; $val[$stage][3] = (!(isset($val[$stage][6])) || $val[$stage][6] == 0) ? 0 : $val[$stage][1];
$val['total_budget'] += $val[$stage][1]; $val['total_budget'] += $val[$stage][1];
$val['receivable_budget'] += $val[$stage][3]; $val['receivable_budget'] += $val[$stage][3];
@ -850,6 +984,284 @@ foreach ($received_array as $received) {
} }
} }
//['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 4 已收金額 5 催收金額 6 已開發票金額 7 未開發票金額 min 最早應收月份 max 最晚應收月份
foreach ($arrayData as $key => &$data) {
$tmp_data = $data['received_budget'];
$tmp_invoice = $data['invoice_budget'];
if ($data['sign'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['sign'][3]) >= 0) {
$data['sign'][4] = $data['sign'][3];
$tmp_data -= $data['sign'][3];
} else {
$data['sign'][4] = $tmp_data;
$tmp_data = 0;
}
$data['sign'][5] = $data['sign'][3] - $data['sign'][4];
} else {
$data['sign'][4] = 0;
$data['sign'][5] = $data['sign'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['sign'][3]) >= 0) {
$data['sign'][6] = $data['sign'][3];
$tmp_invoice -= $data['sign'][3];
} else {
$data['sign'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['sign'][7] = $data['sign'][3] - $data['sign'][6];
} else {
$data['sign'][6] = 0;
$data['sign'][7] = $data['sign'][3];
}
} else {
$data['sign'][4] = 0;
$data['sign'][5] = 0;
$data['sign'][6] = 0;
$data['sign'][7] = 0;
}
if ($data['second'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['second'][3]) >= 0) {
$data['second'][4] = $data['second'][3];
$tmp_data -= $data['second'][3];
} else {
$data['second'][4] = $tmp_data;
$tmp_data = 0;
}
$data['second'][5] = $data['second'][3] - $data['second'][4];
} else {
$data['second'][4] = 0;
$data['second'][5] = $data['second'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['second'][3]) >= 0) {
$data['second'][6] = $data['second'][3];
$tmp_invoice -= $data['second'][3];
} else {
$data['second'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['second'][7] = $data['second'][3] - $data['second'][6];
} else {
$data['second'][6] = 0;
$data['second'][7] = $data['second'][3];
}
} else {
$data['second'][4] = 0;
$data['second'][5] = 0;
$data['second'][6] = 0;
$data['second'][7] = 0;
}
if ($data['arrive'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['arrive'][1]) >= 0) {
$data['arrive'][4] = $data['arrive'][3];
$tmp_data -= $data['arrive'][3];
} else {
$data['arrive'][4] = $tmp_data;
$tmp_data = 0;
}
$data['arrive'][5] = $data['arrive'][3] - $data['arrive'][4];
} else {
$data['arrive'][4] = 0;
$data['arrive'][5] = $data['arrive'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['arrive'][3]) >= 0) {
$data['arrive'][6] = $data['arrive'][3];
$tmp_invoice -= $data['arrive'][3];
} else {
$data['arrive'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['arrive'][7] = $data['arrive'][3] - $data['arrive'][6];
} else {
$data['arrive'][6] = 0;
$data['arrive'][7] = $data['arrive'][3];
}
} else {
$data['arrive'][4] = 0;
$data['arrive'][5] = 0;
$data['arrive'][6] = 0;
$data['arrive'][7] = 0;
}
if ($data['install'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['install'][1]) >= 0) {
$data['install'][4] = $data['install'][3];
$tmp_data -= $data['install'][3];
} else {
$data['install'][4] = $tmp_data;
$tmp_data = 0;
}
$data['install'][5] = $data['install'][3] - $data['install'][4];
} else {
$data['install'][4] = 0;
$data['install'][5] = $data['install'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['install'][3]) >= 0) {
$data['install'][6] = $data['install'][3];
$tmp_invoice -= $data['install'][3];
} else {
$data['install'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['install'][7] = $data['install'][3] - $data['install'][6];
} else {
$data['install'][6] = 0;
$data['install'][7] = $data['install'][3];
}
} else {
$data['install'][4] = 0;
$data['install'][5] = 0;
$data['install'][6] = 0;
$data['install'][7] = 0;
}
if ($data['tryrun'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['tryrun'][1]) >= 0) {
$data['tryrun'][4] = $data['tryrun'][3];
$tmp_data -= $data['tryrun'][3];
} else {
$data['tryrun'][4] = $tmp_data;
$tmp_data = 0;
}
$data['tryrun'][5] = $data['tryrun'][3] - $data['tryrun'][4];
} else {
$data['tryrun'][4] = 0;
$data['tryrun'][5] = $data['tryrun'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['tryrun'][3]) >= 0) {
$data['tryrun'][6] = $data['tryrun'][3];
$tmp_invoice -= $data['tryrun'][3];
} else {
$data['tryrun'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['tryrun'][7] = $data['tryrun'][3] - $data['tryrun'][6];
} else {
$data['tryrun'][6] = 0;
$data['tryrun'][7] = $data['tryrun'][3];
}
} else {
$data['tryrun'][4] = 0;
$data['tryrun'][5] = 0;
$data['tryrun'][6] = 0;
$data['tryrun'][7] = 0;
}
if ($data['check'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['check'][1]) >= 0) {
$data['check'][4] = $data['check'][3];
$tmp_data -= $data['check'][3];
} else {
$data['check'][4] = $tmp_data;
$tmp_data = 0;
}
$data['check'][5] = $data['check'][3] - $data['check'][4];
} else {
$data['check'][4] = 0;
$data['check'][5] = $data['check'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['check'][3]) >= 0) {
$data['check'][6] = $data['check'][3];
$tmp_invoice -= $data['check'][3];
} else {
$data['check'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['check'][7] = $data['check'][3] - $data['check'][6];
} else {
$data['check'][6] = 0;
$data['check'][7] = $data['check'][3];
}
} else {
$data['check'][4] = 0;
$data['check'][5] = 0;
$data['check'][6] = 0;
$data['check'][7] = 0;
}
if ($data['delivery'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['delivery'][1]) >= 0) {
$data['delivery'][4] = $data['delivery'][3];
$tmp_data -= $data['delivery'][3];
} else {
$data['delivery'][4] = $tmp_data;
$tmp_data = 0;
}
$data['delivery'][5] = $data['delivery'][3] - $data['delivery'][4];
} else {
$data['delivery'][4] = 0;
$data['delivery'][5] = $data['delivery'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['delivery'][3]) >= 0) {
$data['delivery'][6] = $data['delivery'][3];
$tmp_invoice -= $data['delivery'][3];
} else {
$data['delivery'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['delivery'][7] = $data['delivery'][3] - $data['delivery'][6];
} else {
$data['delivery'][6] = 0;
$data['delivery'][7] = $data['delivery'][3];
}
} else {
$data['delivery'][4] = 0;
$data['delivery'][5] = 0;
$data['delivery'][6] = 0;
$data['delivery'][7] = 0;
}
if ($data['final'][3] > 0) {
if ($tmp_data > 0) {
if (($tmp_data - $data['final'][1]) >= 0) {
$data['final'][4] = $data['final'][3];
$tmp_data -= $data['final'][3];
} else {
$data['final'][4] = $tmp_data;
$tmp_data = 0;
}
$data['final'][5] = $data['final'][3] - $data['final'][4];
} else {
$data['final'][4] = 0;
$data['final'][5] = $data['final'][3];
}
if ($tmp_invoice > 0) {
if (($tmp_invoice - $data['final'][3]) >= 0) {
$data['final'][6] = $data['final'][3];
$tmp_invoice -= $data['final'][3];
} else {
$data['final'][6] = $tmp_invoice;
$tmp_invoice = 0;
}
$data['final'][7] = $data['final'][3] - $data['final'][6];
} else {
$data['final'][6] = 0;
$data['final'][7] = $data['final'][3];
}
} else {
$data['final'][4] = 0;
$data['final'][5] = 0;
$data['final'][6] = 0;
$data['final'][7] = 0;
}
}
//產生excel的array //產生excel的array
$excel_aray = array(); $excel_aray = array();
@ -859,6 +1271,10 @@ $facility_array = array();
$facility_boga_array = array(); $facility_boga_array = array();
$facility_exclude_boga_array = array(); $facility_exclude_boga_array = array();
foreach ($arrayData as $key => $value) { foreach ($arrayData as $key => $value) {
$sum_A40001 += $value['A40001'];
$sum_A40008 += $value['A40008'];
$sum_total_budget += $value['total_budget'];
$sum_facility += $value['total_facility_num'];
$value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0; $value['sign'][3] = (isset($value['sign'][3])) ? $value['sign'][3] : 0;
$value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0; $value['second'][3] = (isset($value['second'][3])) ? $value['second'][3] : 0;
$value['arrive'][3] = (isset($value['arrive'][3])) ? $value['arrive'][3] : 0; $value['arrive'][3] = (isset($value['arrive'][3])) ? $value['arrive'][3] : 0;
@ -871,50 +1287,51 @@ foreach ($arrayData as $key => $value) {
foreach ($contractstage as $i) { foreach ($contractstage as $i) {
$value[$i]['max'] = (empty($value[$i]['max']) || is_null($value[$i]['max'])) ? 0 : $value[$i]['max']; $value[$i]['max'] = (empty($value[$i]['max']) || is_null($value[$i]['max'])) ? 0 : $value[$i]['max'];
$value[$i]['min'] = (empty($value[$i]['min']) || is_null($value[$i]['min'])) ? 0 : $value[$i]['min']; $value[$i]['min'] = (empty($value[$i]['min']) || is_null($value[$i]['min'])) ? 0 : $value[$i]['min'];
$value[$i][4] = (isset($value[$i][4])) ? $value[$i][4] : 0;
$value[$i][5] = (isset($value[$i][5])) ? $value[$i][5] : 0;
}; };
if ($value['sign'][0] == "寶佳出貨前30天") { if ($value['sign'][0] == "寶佳出貨前30天") {
$boga_array[$key] = [ $boga_array[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
} else { } else {
$exclude_boga_array[$key] = [ $exclude_boga_array[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
} }
$excel_aray[$key] = [ $excel_aray[$key] = [
$key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$value['sign'][1], $value['sign'][3], $value['sign']['max'], $value['sign']['min'], number_format(round($value['sign'][1])), number_format(round($value['sign'][3])), number_format(round($value['sign'][6])), number_format(round($value['sign'][7])), number_format(round($value['sign'][4])), number_format(round($value['sign'][5])), $value['sign']['max'], $value['sign']['min'],
$value['second'][1], $value['second'][3], $value['second']['max'], $value['second']['min'], number_format(round($value['second'][1])), number_format(round($value['second'][3])), number_format(round($value['second'][6])), number_format(round($value['second'][7])), number_format(round($value['second'][4])), number_format(round($value['second'][5])), $value['second']['max'], $value['second']['min'],
$value['arrive'][1], $value['arrive'][3], $value['arrive']['max'], $value['arrive']['min'], number_format(round($value['arrive'][1])), number_format(round($value['arrive'][3])), number_format(round($value['arrive'][6])), number_format(round($value['arrive'][7])), number_format(round($value['arrive'][4])), number_format(round($value['arrive'][5])), $value['arrive']['max'], $value['arrive']['min'],
$value['install'][1], $value['install'][3], $value['install']['max'], $value['install']['min'], number_format(round($value['install'][1])), number_format(round($value['install'][3])), number_format(round($value['install'][6])), number_format(round($value['install'][7])), number_format(round($value['install'][4])), number_format(round($value['install'][5])), $value['install']['max'], $value['install']['min'],
$value['tryrun'][1], $value['tryrun'][3], $value['tryrun']['max'], $value['tryrun']['min'], number_format(round($value['tryrun'][1])), number_format(round($value['tryrun'][3])), number_format(round($value['tryrun'][6])), number_format(round($value['tryrun'][7])), number_format(round($value['tryrun'][4])), number_format(round($value['tryrun'][5])), $value['tryrun']['max'], $value['tryrun']['min'],
$value['check'][1], $value['check'][3], $value['check']['max'], $value['check']['min'], number_format(round($value['check'][1])), number_format(round($value['check'][3])), number_format(round($value['check'][6])), number_format(round($value['check'][7])), number_format(round($value['check'][4])), number_format(round($value['check'][5])), $value['check']['max'], $value['check']['min'],
$value['delivery'][1], $value['delivery'][3], $value['delivery']['max'], $value['delivery']['min'], number_format(round($value['delivery'][1])), number_format(round($value['delivery'][3])), number_format(round($value['delivery'][6])), number_format(round($value['delivery'][7])), number_format(round($value['delivery'][4])), number_format(round($value['delivery'][5])), $value['delivery']['max'], $value['delivery']['min'],
$value['final'][1], $value['final'][3], $value['final']['max'], $value['final']['min'], number_format(round($value['final'][1])), number_format(round($value['final'][3])), number_format(round($value['final'][6])), number_format(round($value['final'][7])), number_format(round($value['final'][4])), number_format(round($value['final'][5])), $value['final']['max'], $value['final']['min'],
$value['total_budget'], $value['receivable_budget'], $value['invoice_budget'], $value['received_budget'], $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities']) number_format(round($value['A40001'])), number_format(round($value['A40008'])), number_format(round($value['total_budget'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($value['received_budget'])), $value['total_facility_num'], str_replace('<br>', '; ', $value['facilities'])
]; ];
//['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份 //['sign'] 0 款項名稱 1 簽約金額 2 簽約日期 3 應收金額 min 最早應收月份 max 最晚應收月份
//[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數 //[合約號]['facility'] [作番號][款別]0 款項名稱 1 合約金額 2 應收日期 3 應收金額 4 已收金額 5 催收金額 6 催收次數
foreach ($value['facility'] as $valkey => $val) { foreach ($value['facility'] as $valkey => $val) {
@ -929,48 +1346,50 @@ foreach ($arrayData as $key => $value) {
} }
$facility_array[$valkey] = [ $facility_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
if ($value['sign'][0] == "寶佳出貨前30天") { if ($value['sign'][0] == "寶佳出貨前30天") {
$facility_boga_array[$valkey] = [ $facility_boga_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
} else { } else {
$facility_exclude_boga_array[$valkey] = [ $facility_exclude_boga_array[$valkey] = [
$valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6], $valkey, $key, $value[1], $value[2], $value[4], $value[5], $value[7], $value[8], $value[6],
$val['sign'][0], $val['sign'][1], $val['sign'][2], $val['sign'][3], $val['sign'][4], $val['sign'][5], $val['sign'][6], $val['sign'][0], number_format(round($val['sign'][1])), $val['sign'][2], number_format(round($val['sign'][3])), number_format(round($val['sign'][4])), number_format(round($val['sign'][5])), $val['sign'][6],
$val['second'][0], $val['second'][1], $val['second'][2], $val['second'][3], $val['second'][4], $val['second'][5], $val['second'][6], $val['second'][0], number_format(round($val['second'][1])), $val['second'][2], number_format(round($val['second'][3])), number_format(round($val['second'][4])), number_format(round($val['second'][5])), $val['second'][6],
$val['arrive'][0], $val['arrive'][1], $val['arrive'][2], $val['arrive'][3], $val['arrive'][4], $val['arrive'][5], $val['arrive'][6], $val['arrive'][0], number_format(round($val['arrive'][1])), $val['arrive'][2], number_format(round($val['arrive'][3])), number_format(round($val['arrive'][4])), number_format(round($val['arrive'][5])), $val['arrive'][6],
$val['install'][0], $val['install'][1], $val['install'][2], $val['install'][3], $val['install'][4], $val['install'][5], $val['install'][6], $val['install'][0], number_format(round($val['install'][1])), $val['install'][2], number_format(round($val['install'][3])), number_format(round($val['install'][4])), number_format(round($val['install'][5])), $val['install'][6],
$val['tryrun'][0], $val['tryrun'][1], $val['tryrun'][2], $val['tryrun'][3], $val['tryrun'][4], $val['tryrun'][5], $val['tryrun'][6], $val['tryrun'][0], number_format(round($val['tryrun'][1])), $val['tryrun'][2], number_format(round($val['tryrun'][3])), number_format(round($val['tryrun'][4])), number_format(round($val['tryrun'][5])), $val['tryrun'][6],
$val['check'][0], $val['check'][1], $val['check'][2], $val['check'][3], $val['check'][4], $val['check'][5], $val['check'][6], $val['check'][0], number_format(round($val['check'][1])), $val['check'][2], number_format(round($val['check'][3])), number_format(round($val['check'][4])), number_format(round($val['check'][5])), $val['check'][6],
$val['delivery'][0], $val['delivery'][1], $val['delivery'][2], $val['delivery'][3], $val['delivery'][4], $val['delivery'][5], $val['delivery'][6], $val['delivery'][0], number_format(round($val['delivery'][1])), $val['delivery'][2], number_format(round($val['delivery'][3])), number_format(round($val['delivery'][4])), number_format(round($val['delivery'][5])), $val['delivery'][6],
$val['final'][0], $val['final'][1], $val['final'][2], $val['final'][3], $val['final'][4], $val['final'][5], $val['final'][6], $val['final'][0], number_format(round($val['final'][1])), $val['final'][2], number_format(round($val['final'][3])), number_format(round($val['final'][4])), number_format(round($val['final'][5])), $val['final'][6],
str_replace('<br>', '; ', $val['status']), $val['total_budget'], $val['receivable_budget'] str_replace('<br>', '; ', $val['status']), number_format(round($val['A40001'])), number_format(round($val['A40008'])), number_format(round($val['total_budget'])), number_format(round($val['receivable_budget']))
]; ];
} }
} }
} }
$average_A40001 = round($sum_A40001 / $sum_facility, 2);
$average_A40008 = round($sum_A40008 / $sum_facility, 2);
$average_budget = round($sum_total_budget / $sum_facility, 2);
$total_data = json_encode($excel_aray);
$data = json_encode($excel_aray);
$boga_data = json_encode($boga_array); $boga_data = json_encode($boga_array);
$exclude_boga_data = json_encode($exclude_boga_array); $exclude_boga_data = json_encode($exclude_boga_array);
$facility_data = json_encode($facility_array); $facility_data = json_encode($facility_array);
@ -1028,10 +1447,55 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
<button type="button" style="width: 12%;" onclick="downloadFacilityData('AllData')" class="btn btn-success btn-md">作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('AllData')" class="btn btn-success btn-md">作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" style="width: 12%;" onclick="downloadFacilityData('ExcludeData')" class="btn btn-info btn-md">不含寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('ExcludeData')" class="btn btn-info btn-md">不含寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button>
<button type="button" style="width: 12%;" onclick="downloadFacilityData('BogaData')" class="btn btn-warning btn-md">寶佳作番收款明細<span class="glyphicon glyphicon-download-alt"></span></button> <button type="button" style="width: 12%;" onclick="downloadFacilityData('BogaData')" class="btn btn-warning btn-md">寶佳作番收款明細<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> </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_A40001">合約設備總金額</label>
<input type="text" class="form-control" id="sum_A40001" name="sum_A40001" value="<?= number_format($sum_A40001) ?>" disabled>
</div>
<div class="col-md-3">
<label for="sum_A40008">合約安裝總金額</label>
<input type="text" class="form-control" id="sum_A40008" name="sum_A40008" value="<?= number_format($sum_A40008) ?>" 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>
<div class="form-group">
<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 class="col-md-3">
<label for="average_A40001">設備平均金額</label>
<input type="text" class="form-control" id="average_A40001" name="average_A40001" value="<?= number_format($average_A40001) ?>" disabled>
</div>
<div class="col-md-3">
<label for="average_A40008">安裝平均金額</label>
<input type="text" class="form-control" id="average_A40008" name="average_A40008" value="<?= number_format($average_A40008) ?>" disabled>
</div>
</div>
</form>
</div> </div>
<?php
include "./footer.php";
?>
<div style="width:98%;margin:1% ;overflow-x: auto;"> <div style="width:98%;margin:1% ;overflow-x: auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%;"> <table id="table_index" class="table table-striped table-bordered" style="width:100%;">
<thead> <thead>
@ -1141,7 +1605,6 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
<script> <script>
function showContract(BillNo) { function showContract(BillNo) {
window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200'); window.open('account-receivable-contract.php?BillNo=' + BillNo + '&<?= $token_link ?>', '發票範例', config = 'height=600, width=1200');
console.log(BillNo);
} }
function test() { function test() {
@ -1177,13 +1640,8 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
document.body.removeChild(link); document.body.removeChild(link);
} }
} }
// xhr.send(JSON.stringify({
// Bill: <?= $data ?>
// })
// );
xhr.send(JSON.stringify({ xhr.send(JSON.stringify({
Bill: <?= $data ?> Bill: <?= $total_data ?>
})); }));
} }
@ -1217,12 +1675,10 @@ $facility_exclude_boga_data = json_encode($facility_exclude_boga_array);
if (content == 'AllData') { if (content == 'AllData') {
var BillData = <?= $facility_data ?>; var BillData = <?= $facility_data ?>;
var filename = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} } else if (content == 'ExcludeData') {
else if(content == 'ExcludeData') {
var BillData = <?= $facility_exclude_boga_data ?>; var BillData = <?= $facility_exclude_boga_data ?>;
var filename = "不含寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "不含寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} } else if (content == 'BogaData') {
else if(content == 'BogaData'){
var BillData = <?= $facility_boga_data ?>; var BillData = <?= $facility_boga_data ?>;
var filename = "寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx"; var filename = "寶佳作番應收帳款" + "<?= date('Y-m-d-Hm') ?>" + ".xlsx";
} }

1
wms/account-receivable-invoice.php

@ -0,0 +1 @@
<?php

8
wms/account-receivable-test.php

@ -42,3 +42,11 @@ include './header.php';
// echo $row['BillNo']."<br>"; // echo $row['BillNo']."<br>";
// } // }
// } // }
// $sql_purBill = "SELECT * FROM purBillOrderDetail WHERE MaterialId IN ('2MH00028P','3MH00123P','2MH00026P','3MW00067P','3MH00124P','3MH00121P','3MH00122P','2MW00027P','3MH00297P','2MW00001P','3MH00111P','3MW00190P','3MW00118P','3MH00093P','3MH00002P','3MW00024P','3MH00130P','3MH00196P','3MW00119P','3MH00205P','3MH00259P','3MW00159P','3MW00243P','3MH00351P','3MH00352P','2MX00015P','3MH00353P','3MH00298P','3MH00113P','3MH00036P','3MH00206P','3MH00179P','3MH00180P','3MH00181P','3MW00350P','3MH00053P','3MH00054P','3MH00178P','3MH00296P','2MH00047P','3MW00114P','3MH00282P','2MH00048P','3MH00609P','3MH00148P','3MH00354P','3MX00021P','3MW00210P','3MH00184P','3MH00185P','3MH00283P','3MW00209P','3MH00182P','3MH00183P','3MH00189P','3MH00512P','3MH00355P','3MH00286P','3MH00511P','2MX00008P','2MX00014P','3MH00244P','3MH00555P','3MH00450P','3MW00211P','3MH00177P','2MX00009P','2MX00012P','3MW00139P','3MH00540P','3MH00504P','3MH00360P','3MH00301P','3MX00020P','2MX00013P')";
// $purBill = $conn->query($sql_purBill);
//找T8銷售訂單 所有設備跟安裝款的平均價格

BIN
wms/account-receivable-test.xlsx

Binary file not shown.

1
wms/account-receivable.txt

File diff suppressed because one or more lines are too long

63628
wms/account_receivable_sql_file.sql

File diff suppressed because it is too large

2
wms/contract/insertData.php

@ -140,7 +140,7 @@ foreach ($sheet->getRowIterator() as $key => $row) {
$option_price_id = $last_id; $option_price_id = $last_id;
$option_price = $cost; $option_price = $cost;
$quotation_no = 'Q2401001'; $quotation_no = 'Q2401002';
foreach ($open_kind_arr as $kind) { foreach ($open_kind_arr as $kind) {
$min_weight = 1; $min_weight = 1;
$max_weight = 1600; $max_weight = 1600;

BIN
wms/contract/option/option1.xlsx

Binary file not shown.

BIN
wms/contract/option/option10.xlsx

Binary file not shown.

BIN
wms/contract/option/option11.xlsx

Binary file not shown.

BIN
wms/contract/option/option12.xlsx

Binary file not shown.

0
wms/contract/option/option.xlsx → wms/contract/option/option1220/option.xlsx

BIN
wms/contract/option/option1220/option1.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option10.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option11.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option12.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option13.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option14.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option15.xlsx

Binary file not shown.

0
wms/contract/option/option16.xlsx → wms/contract/option/option1220/option16.xlsx

BIN
wms/contract/option/option1220/option2.xlsx

Binary file not shown.

0
wms/contract/option/option20.xlsx → wms/contract/option/option1220/option20.xlsx

BIN
wms/contract/option/option1220/option3.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option4.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option5.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option6.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option7.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option8.xlsx

Binary file not shown.

BIN
wms/contract/option/option1220/option9.xlsx

Binary file not shown.

BIN
wms/contract/option/option13.xlsx

Binary file not shown.

BIN
wms/contract/option/option14.xlsx

Binary file not shown.

BIN
wms/contract/option/option15.xlsx

Binary file not shown.

BIN
wms/contract/option/option2.xlsx

Binary file not shown.

BIN
wms/contract/option/option3.xlsx

Binary file not shown.

BIN
wms/contract/option/option4.xlsx

Binary file not shown.

BIN
wms/contract/option/option5.xlsx

Binary file not shown.

BIN
wms/contract/option/option6.xlsx

Binary file not shown.

BIN
wms/contract/option/option7.xlsx

Binary file not shown.

BIN
wms/contract/option/option8.xlsx

Binary file not shown.

BIN
wms/contract/option/option9.xlsx

Binary file not shown.

1
wms/frame/pending.php

@ -89,6 +89,7 @@ function here() {
url: URL, url: URL,
success: function (msg) { success: function (msg) {
var obj = JSON.parse(msg); var obj = JSON.parse(msg);
console.log(obj);
var myhtml = ''; var myhtml = '';
if (obj.st == 'ok') { if (obj.st == 'ok') {
myhtml += '<ul class="nav nav-pills flex-column">'; myhtml += '<ul class="nav nav-pills flex-column">';

1
wms/fun_global.php

@ -128,6 +128,7 @@ function pricereview_renovate_class($rate, $user_id, $renovate_flag)
$ret[1] = $user_id; $ret[1] = $user_id;
} }
} }
$ret[1] = "M0029";
mysqli_free_result($res); mysqli_free_result($res);
$ret[2] = 'M0012'; $ret[2] = 'M0012';
if ($renovate_flag == "REN") { if ($renovate_flag == "REN") {

20
wms/header.php

@ -1,5 +1,5 @@
<?php <?php
ini_set('display_errors', 'off'); // ini_set('display_errors', 'off');
// 維護專用 // 維護專用
// include "maintenance.php"; // include "maintenance.php";
@ -33,15 +33,15 @@ if (isset($_REQUEST["function_name"])) {
/** /**
* 連線T8 MSSQL * 連線T8 MSSQL
*/ */
try { // try {
$conn = new PDO("sqlsrv:Server=220.130.203.251;Database=T8MASADA", "M0225", "IFFBU1E="); // $conn = new PDO("sqlsrv:Server=220.130.203.251;Database=T8MASADA", "M0225", "IFFBU1E=");
if ($conn) { // if ($conn) {
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} // }
} catch (PDOException $e) { // } catch (PDOException $e) {
//echo "fail"; // //echo "fail";
//echo $e->getMessage(); // //echo $e->getMessage();
} // }

10
wms/mkt/assets/js/alpine.js

@ -11,8 +11,9 @@ const priceOptionIndex = ()=>{
orioptions: options, orioptions: options,
options: options, options: options,
options_arr: { options_arr: {
1:'標', 1:'標配',
2:'選', 2:'選配',
3:'加價'
}, },
btntype:1, btntype:1,
buttons:[], buttons:[],
@ -131,8 +132,9 @@ const priceOptionSelect = ()=>{
orioptions: options, orioptions: options,
options: options, options: options,
options_arr: { options_arr: {
1:'標', 1:'標配',
2:'選', 2:'選配',
3:'加價'
}, },
btntype:1, btntype:1,
buttons:[], buttons:[],

2
wms/mkt/price_option-index.php

@ -93,7 +93,7 @@ $optional_arr = [1 => '標', 2 => '選'];
<td x-text="option.memo"></td> <td x-text="option.memo"></td>
<td x-text="options_arr[option.optional]"></td> <td x-text="options_arr[option.optional]"></td>
<td x-text="option.unit"></td> <td x-text="option.unit"></td>
<td x-html="option.price!=null ? '$'+Number(option.price).toLocaleString() : ''"></td> <td x-html="option.price!=null ? '$'+Number(option.price).toLocaleString() : '$0'"></td>
<?php if ($user_id == 'M0174' || $user_id == 'M0107' || $user_id == "M0225") : ?> <?php if ($user_id == 'M0174' || $user_id == 'M0107' || $user_id == "M0225") : ?>
<td x-html="option.mi!=null ? '$'+Number(option.mi).toLocaleString() : ''"></td> <td x-html="option.mi!=null ? '$'+Number(option.mi).toLocaleString() : ''"></td>
<?php endif; ?> <?php endif; ?>

8
wms/mkt/price_option-select.php

@ -2,11 +2,11 @@
include "../header.php"; include "../header.php";
require_once('./conn.php'); require_once('./conn.php');
$sql_str = "SELECT * FROM option_price WHERE status ='Y'"; $sql_str = "SELECT * FROM option_price WHERE status ='Y'";
$sql_str = "SELECT option_price.*, option_mi.price as mi FROM option_price LEFT JOIN (SELECT option_mi.option_price_id, option_mi.price FROM option_mi GROUP BY option_mi.option_price_id) option_mi ON option_price.id = option_mi.option_price_id WHERE status ='Y'"; $sql_str = "SELECT option_price.*, option_mi.price as mi FROM option_price LEFT JOIN (SELECT option_mi.option_price_id, option_mi.price FROM option_mi GROUP BY option_mi.option_price_id) option_mi ON option_price.id = option_mi.option_price_id WHERE status ='Y' ORDER BY kind ASC";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->execute(); $stmt->execute();
$options = $stmt->fetchAll(PDO::FETCH_ASSOC); $options = $stmt->fetchAll(PDO::FETCH_ASSOC);
$optional_arr = [1 => '標', 2 => '選']; $optional_arr = [1 => '標', 2 => '選配',3=>'加價'];
?> ?>
<link rel="stylesheet" href="./css/style.css"> <link rel="stylesheet" href="./css/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
@ -77,9 +77,9 @@ $optional_arr = [1 => '標', 2 => '選'];
<td x-text="option.memo"></td> <td x-text="option.memo"></td>
<td x-text="options_arr[option.optional]"></td> <td x-text="options_arr[option.optional]"></td>
<td x-text="option.unit"></td> <td x-text="option.unit"></td>
<td x-html="option.price!=null ? '$'+Number(option.price).toLocaleString() : ''"></td> <td x-html="option.price!=null ? '$'+Number(option.price).toLocaleString() : '$0'"></td>
<?php if ($user_id == 'M0174' || $user_id == 'M0107' || $user_id == "M0225") : ?> <?php if ($user_id == 'M0174' || $user_id == 'M0107' || $user_id == "M0225") : ?>
<td x-html="option.mi!=null ? '$'+Number(option.mi).toLocaleString() : ''"></td> <td x-html="option.mi!=null ? '$'+Number(option.mi).toLocaleString() : '$0'"></td>
<?php endif; ?> <?php endif; ?>
</tr> </tr>
</template> </template>

2
wms/mkt/pricereview_renovate-check.php

@ -1089,7 +1089,7 @@ foreach ($res as $data) {
<label>審核人員</label> <label>審核人員</label>
<input type="text" name="checker" id="checker" value="<?= $user_id; ?>" readonly> <input type="text" name="checker" id="checker" value="<?= $user_id; ?>" readonly>
<button type="submit" name="status" id="status_n" value="N" onclick="if (!confirm('確定不同意?')) return false;"><?php echo ($sign_total == $st) ? "結案(不同意)" : "不同意"; ?></button> <button type="submit" name="status" id="status_n" value="N" onclick="if (!confirm('確定不同意?')) return false;"><?php echo ($sign_total == $st) ? "結案(不同意)" : "不同意"; ?></button>
<button type="submit" name="status" id="status_y" value="Y" onclick="if (!confirm('確定同意?')) return false;"><?php echo ($sign_total == $st) ? "結案(同意)" : "同意"; ?></button> <button type="submit" name="status" id="status_y" value="Y" onclick="if (!confirm('確定同意?')) return false;"><?php echo ($sign_total == $st) ? "同意(上呈)" : "同意"; ?></button>
<?php } else { ?> <?php } else { ?>
<button type="button" id="btn_close" class="btn btn-default">回上頁</button> <button type="button" id="btn_close" class="btn btn-default">回上頁</button>
<?php } ?> <?php } ?>

1
wms/mkt/pricereview_renovate-create.php

@ -1319,6 +1319,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
} }
*/ */
?> ?>
<form class="form-inline" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"> <form class="form-inline" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">
<div class="table-responsive"> <div class="table-responsive">

2
wms/mkt/pricereview_renovate-index.php

@ -11,7 +11,7 @@ $data = array();
// sql語法存在變數中 // sql語法存在變數中
$sql_cmd = sql_myself($user_id); $sql_cmd = sql_myself($user_id);
// M0024許伃廷,M0107許紓晴,M0012李盈瑩權限全開 // M0024許伃廷,M0107許紓晴,M0012李盈瑩權限全開
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0012" || $user_id == "M0060" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") { if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0012" || $user_id == "M0060" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04" || $user_id=="M0029") {
$sql_cmd = "where create_at >= '2023-01-01 00:00:00'"; $sql_cmd = "where create_at >= '2023-01-01 00:00:00'";
} }
if ($user_id == "M0008") { if ($user_id == "M0008") {

5
wms/rib02-check.php

@ -1,5 +1,5 @@
<?php <?php
include "./header.php"; include "header.php";
$ribsub_id = $_GET['id']; $ribsub_id = $_GET['id'];
$sql_ribsub = "SELECT * FROM rib_sub WHERE ribsub_id = $ribsub_id"; $sql_ribsub = "SELECT * FROM rib_sub WHERE ribsub_id = $ribsub_id";
@ -8,8 +8,7 @@ $ribsub = mysqli_fetch_assoc($rib_query);
//取得費用項目代碼 //取得費用項目代碼
$sql_feetype = "SELECT FeeTypeId, FeeTypeName FROM comFeeType WHERE (FeeTypeId NOT LIKE 'A%') AND(FeeTypeId NOT LIKE 'Z%')"; $sql_feetype = "SELECT FeeTypeId, FeeTypeName FROM comFeeType WHERE (FeeTypeId NOT LIKE 'A%') AND(FeeTypeId NOT LIKE 'Z%')";
$feetype_query = mysqli_query($link, $sql_feetype); $feetype_query = $conn->query($sql_feetype);
$feetype = mysqli_fetch_all($feetype_query, MYSQLI_ASSOC);
// 找出使用者的部門 // 找出使用者的部門
$mydepart_sql = "SELECT department_id from account Where accountid = '$user_id'"; $mydepart_sql = "SELECT department_id from account Where accountid = '$user_id'";

Loading…
Cancel
Save