diff --git a/wms/account-receivable-new-index.php b/wms/account-receivable-new-index.php index b5c07277..e4cd3eb7 100644 --- a/wms/account-receivable-new-index.php +++ b/wms/account-receivable-new-index.php @@ -60,39 +60,48 @@ function get_ratio($facilityno, $contractno, $arrayData) } // 查WMS 員工與對應主管 -$sql_manager = "SELECT A.accountid, A.name, A.manager, B.name AS manager_name FROM account AS A -LEFT JOIN account AS B ON A.manager = B.accountid "; -$managers = mysqli_query($link, $sql_manager); -// $find_manager['員工工號'] = array('員工姓名', '主管工號', '主管姓名'); -$find_manager = array(); -if (is_iterable($managers)) { - foreach ($managers as $manager) { - $find_manager[$manager['accountid']] = $manager; - } -} +// $sql_manager = "SELECT A.accountid, A.name, A.manager, B.name AS manager_name FROM account AS A +// LEFT JOIN account AS B ON A.manager = B.accountid "; +// $managers = mysqli_query($link, $sql_manager); +// // $find_manager['員工工號'] = array('員工姓名', '主管工號', '主管姓名'); +// $find_manager = array(); +// if (is_iterable($managers)) { +// foreach ($managers as $manager) { +// $find_manager[$manager['accountid']] = $manager; +// } +// } $follower = find_follow($user_id); // T8所有合約號 -$sql_all_contract = "SELECT MainAll.* , -Person.PersonName, -Dept.DeptName FROM - (SELECT -Main.BillNo, -Main.BillDate, -Main.BizPartnerId, -Biz.ShortName, -Biz.BizPartnerName, -Biz.ContactAddress, -Main.OAmountWithTax, -Main.PersonId, -Main.DeptId, -Main.ModeId, -Main.CurrentState - FROM salSalesOrder AS Main - LEFT JOIN comBusinessPartner AS Biz ON Biz.BizPartnerId = Main.BizPartnerId) AS MainAll - LEFT JOIN comGroupPerson AS Person ON MainAll.PersonId= Person.PersonId - LEFT JOIN comDepartment AS Dept ON MainAll.DeptId= Dept.DeptId - WHERE MainAll.ModeId = 'M' AND (MainAll.CurrentState=2 OR MainAll.CurrentState=4) "; +$sql_all_contract = "SELECT +MainAll.*, +Person.PersonName, +Dept.DeptName, +Dept.LeaderId, +Leader.PersonName AS LeaderName +FROM +( + SELECT + Main.BillNo, + Main.BillDate, + Main.BizPartnerId, + Biz.ShortName, + Biz.BizPartnerName, + Biz.ContactAddress, + Main.OAmountWithTax, + Main.PersonId, + Main.DeptId, + Main.ModeId, + Main.CurrentState + FROM + salSalesOrder AS Main + LEFT JOIN comBusinessPartner AS Biz ON Biz.BizPartnerId = Main.BizPartnerId +) AS MainAll +LEFT JOIN comGroupPerson AS Person ON MainAll.PersonId = Person.PersonId +LEFT JOIN comDepartment AS Dept ON MainAll.DeptId = Dept.DeptId +LEFT JOIN comGroupPerson AS Leader ON Dept.LeaderId = Leader.PersonId +WHERE +MainAll.ModeId = 'M' AND (MainAll.CurrentState = 2 OR MainAll.CurrentState = 4) "; if (!is_null($start_date)) { $start_date = (int)date('Ymd', strtotime($start_date)); $sql_all_contract .= " AND MainAll.BillDate >= $start_date "; @@ -130,8 +139,8 @@ if (is_iterable($query_all_contract)) { $arrayData[$contract_numbers['BillNo']]['PersonName'] = isset($contract_numbers['PersonName']) ? $contract_numbers['PersonName'] : '--'; $arrayData[$contract_numbers['BillNo']]['DeptName'] = isset($contract_numbers['DeptName']) ? $contract_numbers['DeptName'] : '--'; $arrayData[$contract_numbers['BillNo']]['ShortName'] = isset($contract_numbers['ShortName']) ? $contract_numbers['ShortName'] : '--'; - $arrayData[$contract_numbers['BillNo']]['ManagerId'] = !empty($find_manager[$contract_numbers['PersonId']]['manager']) ? $find_manager[$contract_numbers['PersonId']]['manager'] : '--'; - $arrayData[$contract_numbers['BillNo']]['ManagerName'] = !empty($find_manager[$contract_numbers['PersonId']]['manager_name']) ? $find_manager[$contract_numbers['PersonId']]['manager_name'] : '--'; + $arrayData[$contract_numbers['BillNo']]['ManagerId'] = isset($contract_numbers['LeaderId']) ? $contract_numbers['LeaderId'] : '--'; + $arrayData[$contract_numbers['BillNo']]['ManagerName'] = isset($contract_numbers['LeaderName']) ? $contract_numbers['LeaderName'] : '--'; $arrayData[$contract_numbers['BillNo']]['invoice_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['received_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['receivable_budget'] = 0; @@ -142,6 +151,7 @@ if (is_iterable($query_all_contract)) { $arrayData[$contract_numbers['BillNo']]['facility'] = array(); $arrayData[$contract_numbers['BillNo']]['total_budget'] = $contract_numbers['OAmountWithTax']; $sum_total_budget += $contract_numbers['OAmountWithTax']; + $sum_contract +=1; } } $str_numbers .= "('" . implode("','", $contractNumbers) . "')"; @@ -166,7 +176,18 @@ foreach ($query_contract_budget as $contract_budget) { $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['total_budget'] = $contract_budget['OAmountWithTax']; $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']][$contract_budget['MaterialId']] = $contract_budget['OAmountWithTax']; $arrayData[$contract_budget['BillNo']]['facility'][$contract_budget['CU_MaterialId']]['status'] = ""; + $sum_facility +=1; } + switch($contract_budget['CU_MaterialId']){ + case "A40001": + $sum_A40001 += $contract_budget['OAmountWithTax']; + break; + case "A40008": + $sum_A40008 += $contract_budget['OAmountWithTax']; + break; + + } + } } @@ -205,6 +226,7 @@ foreach ($query_PayStage as $PayStage) { } else { $PayStage_array[$PayStage['BillNo']] = $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage']; } + $arrayData[$PayStage['BillNo']]['facility'][$key]['PayStage'] = array(); } } } @@ -264,25 +286,25 @@ foreach ($query_wip as $wip) { if (isset($arrayData[$wip['contractno']]) && isset($arrayData[$wip['contractno']]['facility'][$wip['facilityno']])) { if ($wip['delivery_date'] != NULL && $wip['delivery_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['delivery_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['delivery_date'] . "已移交"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) ; "; } elseif ($wip['official_check_date'] != NULL && $wip['official_check_date'] != '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['official_check_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['official_check_date'] . "官檢完畢"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) ; "; } elseif ($wip['tryrun_end_date'] != NULL && $wip['tryrun_end_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['tryrun_end_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['tryrun_end_date'] . "試車完畢"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) ; "; } elseif ($wip['install_end_date'] != NULL && $wip['install_end_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['install_end_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['install_end_date'] . "安裝完畢"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) ; "; } elseif ($wip['real_arrival_date'] != NULL && $wip['real_arrival_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['real_arrival_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_arrival_date'] . "貨抵工地"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) ; "; } elseif ($wip['real_contract_arrival_date'] != NULL && $wip['real_contract_arrival_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['real_contract_arrival_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['real_contract_arrival_date'] . "預計出貨"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['real_contract_arrival_date'] . "預計出貨) ; "; } elseif ($wip['estimated_shipping_date'] != NULL && $wip['estimated_shipping_date'] !== '1970-01-01' && $wip['delivery_date'] !== '1970-01-11' && !empty($wip['estimated_shipping_date'])) { $arrayData[$wip['contractno']]['facility'][$wip['facilityno']]['status'] = $wip['estimated_shipping_date'] . "預計出港"; - $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港) "; + $arrayData[$wip['contractno']]['facility_status'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出港) ; "; } } } @@ -294,7 +316,6 @@ $sign0 = array('簽約', '簽訂', '合約簽訂', '訂金'); $arrival = array('貨抵工地', '貨底工地', '工地動工'); $final6 = array('核可函取得後6個月', '得合格函後6個月'); - foreach ($PayStage_array as $key => &$value) { foreach ($value as $paykey => &$payvalue) { if (isset($wip_array[$payvalue['facilityno']])) { @@ -375,7 +396,7 @@ foreach ($PayStage_array as $key => &$value) { $payvalue['PlanPayDate'] = NULL; } break; - case (stristr($payvalue['PayStage'], '出貨前30') || stristr($payvalue['PayStage'], '簽約(出貨前30天)')): + case (stristr($payvalue['PayStage'], '出貨前30') || stristr($payvalue['PayStage'], '簽約(出貨前30天)') ||stristr($payvalue['PayStage'], '建照核發時')): $payvalue['stage'] = '二次款'; if ($wip_array[$payvalue['facilityno']]['real_arrival_date'] !== null && strtotime($wip_array[$payvalue['facilityno']]['real_arrival_date']) > 975686400 && !empty($wip_array[$payvalue['facilityno']]['real_arrival_date'])) { $estimate_time = strtotime($wip['real_arrival_date']); @@ -431,6 +452,12 @@ foreach ($PayStage_array as $key => &$value) { $payvalue['PlanPayDate'] = NULL; } break; + case "簽定30天內": + $payvalue['stage'] = '二次款'; + $estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']); + $signtime = $estimate_time + (30 * 86400); + $payvalue['PlanPayDate'] = date('Y-m-d', $signtime); + break; case (in_array($payvalue['PayStage'], $sign60)): $payvalue['stage'] = '二次款'; $estimate_time = strtotime($arrayData[$key]['PayStage'][1]['PlanPayDate']); @@ -513,6 +540,9 @@ foreach ($PayStage_array as $key => &$value) { if (strtotime($payvalue['PlanPayDate']) < 975686400) { $payvalue['PlanPayDate'] = NULL; } + } else { + $payvalue['PlanPayDate'] = NULL; + $payvalue['stage'] = "大日程無作番"; } } } @@ -560,8 +590,8 @@ CheckAll.FromSalSalesOrder AS BillNo $query_invoice = $conn->query($sql_invoice); //發票資訊回填到arrayData -foreach($query_invoice as $invoice) { - if(isset($arrayData[$invoice['BillNo']])) { +foreach ($query_invoice as $invoice) { + if (isset($arrayData[$invoice['BillNo']])) { $arrayData[$invoice['BillNo']]['invoice_budget'] += $invoice['LAmountWithTax']; } } @@ -590,8 +620,8 @@ WHERE CheckDetail.ModeId = 'M'"; $query_received = $conn->query($sql_received); // 核銷資訊回填到arrayData -foreach($query_received as $received) { - if(isset($arrayData[$received['OrderBillNo']])) { +foreach ($query_received as $received) { + if (isset($arrayData[$received['OrderBillNo']])) { $arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount']; } } @@ -601,64 +631,91 @@ $today = strtotime(date('Y-m-t')); foreach ($final_paystage as $key => &$value) { $tmpinvoice = $arrayData[$key]['invoice_budget']; $tmpreceived = $arrayData[$key]['received_budget']; - for($sequenceNumber = 1; $sequenceNumber <= count($value); $sequenceNumber++) { - if(isset($value[$sequenceNumber]['PlanPayDate'])) { + for ($sequenceNumber = 1; $sequenceNumber <= count($value); $sequenceNumber++) { + if (isset($value[$sequenceNumber]['PlanPayDate'])) { $collect_month = collect_month(strtotime($value[$sequenceNumber]['PlanPayDate'])); - if($today > strtotime($value[$sequenceNumber]['PlanPayDate'])){ + if ($today > strtotime($value[$sequenceNumber]['PlanPayDate'])) { $value[$sequenceNumber]['hadtopay'] = 'V'; - }else{ + $arrayData[$key]['receivable_budget'] += $value[$sequenceNumber]['PlanPayAmt']; + } else { $value[$sequenceNumber]['hadtopay'] = '--'; } - }else{ + } else { $collect_month = 0; $value[$sequenceNumber]['hadtopay'] = '--'; } - if($tmpinvoice >= $value[$sequenceNumber]['PlanPayAmt']){ + if ($tmpinvoice >= $value[$sequenceNumber]['PlanPayAmt']) { $value[$sequenceNumber]['invoice_budget'] = $value[$sequenceNumber]['PlanPayAmt']; $tmpinvoice -= $value[$sequenceNumber]['invoice_budget']; - }else{ + } elseif ($tmpinvoice > 0) { $value[$sequenceNumber]['invoice_budget'] = $tmpinvoice; $tmpinvoice = 0; + } else { + $value[$sequenceNumber]['invoice_budget'] = 0; } - if($tmpreceived > $value[$sequenceNumber]['PlanPayAmt']){ + if ($tmpreceived > $value[$sequenceNumber]['PlanPayAmt']) { $value[$sequenceNumber]['received_budget'] = $value[$sequenceNumber]['PlanPayAmt']; $tmpinvoice -= $value[$sequenceNumber]['received_budget']; - }else{ + } elseif ($tmpreceived > 0) { $value[$sequenceNumber]['received_budget'] = $tmpreceived; $tmpreceived = 0; + } else { + $value[$sequenceNumber]['received_budget'] = 0; } - if($collect_month >0 && $value[$sequenceNumber]['PlanPayAmt']> $value[$sequenceNumber]['received_budget']){ + if ($collect_month > 0 && $value[$sequenceNumber]['PlanPayAmt'] > $value[$sequenceNumber]['received_budget']) { $value[$sequenceNumber]['collect_month'] = $collect_month; - }else{ + } else { $value[$sequenceNumber]['collect_month'] = 0; } - } } -// foreach ($final_paystage as $key => $value) { -// echo $key." =>
"; + +// foreach($final_paystage as $key => $value) { +// echo $key."
"; +// echo "---------------------
"; // foreach($value as $key2 => $value2) { // echo $key2."
"; // print_r($value2); // echo "
"; // } -// echo "
-------------------------------
"; +// echo "
==================
"; // } // exit(); +foreach ($final_paystage as $key => $value) { + for ($sequence = 1; $sequence <= count($value); $sequence++) { + if (isset($arrayData[$key]) && isset($arrayData[$key]['facility']) && isset($arrayData[$key]['facility'][$value[$sequence]['facilityno']]) && isset($arrayData[$key]['facility'][$value[$sequence]['facilityno']]['PayStage'])) { + array_push($arrayData[$key]['facility'][$value[$sequence]['facilityno']]['PayStage'], $value[$sequence]); + foreach ($arrayData[$key]['PayStage'] as $arkey => &$arvalue) { + if ($arvalue['PayStage'] == $value[$sequence]['PayStage']) { + if (isset($arvalue['receivable_budget']) && isset($arvalue['received_budget']) && isset($arvalue['invoice_budget'])) { + $arvalue['receivable_budget'] += $value[$sequence]['PlanPayAmt']; + $arvalue['received_budget'] += $value[$sequence]['received_budget']; + $arvalue['invoice_budget'] += $value[$sequence]['invoice_budget']; + if ($arvalue['collect_month'] < $value[$sequence]['collect_month']) { + $arvalue['collect_month'] = $value[$sequence]['collect_month']; + } + } else { + $arvalue['stage'] = $value[$sequence]['stage']; + $arvalue['receivable_budget'] = $value[$sequence]['PlanPayAmt']; + $arvalue['received_budget'] = $value[$sequence]['received_budget']; + $arvalue['invoice_budget'] = $value[$sequence]['invoice_budget']; + $arvalue['collect_month'] = $value[$sequence]['collect_month']; + } + } + } + } + } +} // 存進excel_array -// $excel_array = array(); -// $today = strtotime(date('Ymt')); -foreach($arrayData as $key => $value) { - echo $key."
"; - foreach($value['facility'] as $key2 => $value2) { - echo $key2."
"; - foreach($value2 as $key3 => $value3){ - echo $key3."
"; - print_r($value3); - echo "
*********************
"; - } - echo "
==================
"; - } +$excel_array = array(); +foreach ($arrayData as $key => $value) { + echo $key . "
********************
"; + print_r($value); + // foreach($value['facility'] as $key2 => $value2) { + // echo $key2."
"; + // print_r($value2['PayStage']); + // echo "
"; + // } echo "
-------------------------------
"; -} \ No newline at end of file +}