= $start_date "; } if (!is_null($end_date)) { $end_date = (int)date('Ymd', strtotime($end_date)); $sql_contractNumber .= " AND MainAll.BillDate <= $end_date "; } if ((in_array($user_id, array('M0008', 'M0012'))) || (in_array(accountidToDepartId($user_id), array('220', '210', '501')))) { } else { $sql_contractNumber .= " AND (MainAll.PersonId = '$user_id'"; if (count($follower) > 0) { $column_str = "('$user_id'" . ",'"; $column_str .= implode("','", $follower); $column_str .= "')"; $sql_contractNumber .= " OR MainAll.PersonId IN $column_str)"; } else { $sql_contractNumber .= ")"; }; } $contractNumbers = array(); $query_contract_number = $conn->query($sql_contractNumber); if (is_iterable($query_contract_number)) { foreach ($query_contract_number as $contract_numbers) { array_push($contractNumbers, $contract_numbers['BillNo']); $arrayData[$contract_numbers['BillNo']]['BillNo'] = isset($contract_numbers['BillNo']) ? $contract_numbers['BillNo'] : '--'; $arrayData[$contract_numbers['BillNo']]['BillDate'] = isset($contract_numbers['BillDate']) ? $contract_numbers['BillDate'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerId'] = isset($contract_numbers['BizPartnerId']) ? $contract_numbers['BizPartnerId'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerName'] = isset($contract_numbers['BizPartnerName']) ? $contract_numbers['BizPartnerName'] : '--'; $arrayData[$contract_numbers['BillNo']]['CustomerAddress'] = isset($contract_numbers['ContactAddress']) ? $contract_numbers['ContactAddress'] : '--'; $arrayData[$contract_numbers['BillNo']]['OAmountWithTax'] = isset($contract_numbers['OAmountWithTax']) ? $contract_numbers['OAmountWithTax'] : 0; $arrayData[$contract_numbers['BillNo']]['PersonId'] = isset($contract_numbers['PersonId']) ? $contract_numbers['PersonId'] : '--'; $arrayData[$contract_numbers['BillNo']]['DeptId'] = isset($contract_numbers['DeptId']) ? $contract_numbers['DeptId'] : '--'; $arrayData[$contract_numbers['BillNo']]['PersonName'] = isset($contract_numbers['PersonName']) ? $contract_numbers['PersonName'] : '--'; $arrayData[$contract_numbers['BillNo']]['DeptName'] = isset($contract_numbers['DeptName']) ? $contract_numbers['DeptName'] : '--'; $arrayData[$contract_numbers['BillNo']]['ShortName'] = isset($contract_numbers['ShortName']) ? $contract_numbers['ShortName'] : '--'; $arrayData[$contract_numbers['BillNo']]['ManagerId'] = !empty($find_manager[$contract_numbers['PersonId']]['manager']) ? $find_manager[$contract_numbers['PersonId']]['manager'] : '--'; $arrayData[$contract_numbers['BillNo']]['ManagerName'] = !empty($find_manager[$contract_numbers['PersonId']]['manager_name']) ? $find_manager[$contract_numbers['PersonId']]['manager_name'] : '--'; $arrayData[$contract_numbers['BillNo']]['invoice_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['received_budget'] = 0; $arrayData[$contract_numbers['BillNo']]['receivable_budget'] = 0; $sum_total_budget += $contract_numbers['OAmountWithTax']; } $str_numbers = "('" . implode("','", $contractNumbers) . "')"; } // T8發票 $sql_invoice = "SELECT Detail.BillNo AS InvoiceBillNo, Detail.MaterialId, Detail.LAmountWithTax, Main.InvoiceNo, CheckAll.FromSalSalesOrder AS BillNo FROM arSellInvoiceMaterial AS Detail LEFT JOIN arSellInvoice AS Main ON Detail.BillNo=Main.BillNo LEFT JOIN ( SELECT CheckDetail.BillNo, CheckDetail.FromSalSalesOrder, CheckDetail.RowNo FROM arCheckBillDetail AS CheckDetail ) AS CheckAll ON CheckAll.BillNo= Detail.FromBillNo AND Detail.FromRowCode = CheckAll.RowNo WHERE Detail.ItemType=0 AND Main.InvoiceState!=2"; // T8核銷 $sql_received = "SELECT CheckDetail.OrderBillNo, arWriteOffBillDetail.FromBillNo AS CheckBillNo, arWriteOffBillDetail.FromRowCode AS CheckRowCode, arWriteOffBillDetail.CurrStandOffOAmount FROM arWriteOffBillDetail LEFT JOIN (SELECT arCheckBillDetail.BillNo, arCheckBillDetail.RowCode, arCheckBillDetail.FromSalSalesOrder AS OrderBillNo, salSalesOrder.TypeId FROM arCheckBillDetail LEFT JOIN salSalesOrder ON salSalesOrder.BillNo =arCheckBillDetail.FromSalSalesOrder ) AS CheckDetail ON CheckDetail.BillNo=arWriteOffBillDetail.FromBillNo AND arWriteOffBillDetail.FromRowCode = CheckDetail.RowCode WHERE CheckDetail.TypeId = 'SP'"; //T8 銷售訂單 階段收款計畫 $sql_paystage = "SELECT * from salOrderStagePay"; if (isset($str_numbers)) { $sql_paystage .= " WHERE BillNo IN $str_numbers "; $sql_invoice .= " AND CheckAll.FromSalSalesOrder IN $str_numbers "; } $PayStage = $conn->query($sql_paystage); $received_array = $conn->query($sql_received); $invoice_data = $conn->query($sql_invoice); $allPayStages = array(); foreach ($PayStage as $stage) { $allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayAmt'] = $stage['PlanPayAmt']; $allPayStages[$stage['BillNo']][$stage['PayStage']]['PlanPayDate'] = $stage['PlanPayDate']; $month = collect_month(strtotime($stage['PlanPayDate'])); if (strtotime($stage['PlanPayDate']) > strtotime(date('Y-m-t', strtotime('now')))) { $allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = '--'; } else { $allPayStages[$stage['BillNo']][$stage['PayStage']]['receivable_ornot'] = 'Y'; } $allPayStages[$stage['BillNo']][$stage['PayStage']]['month'] = $month; $allPayStages[$stage['BillNo']][$stage['PayStage']]['received'] = 0; $allPayStages[$stage['BillNo']][$stage['PayStage']]['invoice'] = 0; } foreach ($allPayStages as $paykey => $pay) { uasort($allPayStages[$paykey], 'comparePlanPayDate'); } foreach ($allPayStages as &$payStage) { $sequenceNumber = 1; foreach ($payStage as $tk => &$pstage) { $pstage['sequenceNumber'] = $sequenceNumber; $sequenceNumber += 1; } } // 整理好的收款階段 $final_paystage = array(); foreach ($allPayStages as $key => &$payStage) { if (is_iterable($payStage)) { foreach ($payStage as $key2 => $pstage) { if (isset($arrayData[$key])) { $arrayData[$key]['PayStage'][$pstage['sequenceNumber']] = $pstage; if (isset($pstage['receivable_ornot']) && $pstage['receivable_ornot'] == 'Y') { $arrayData[$key]['receivable_budget'] += $pstage['PlanPayAmt']; } } } } } foreach ($invoice_data as $inv) { if (isset($arrayData[$inv['BillNo']])) { $arrayData[$inv['BillNo']]['invoice_budget'] += $inv['LAmountWithTax']; if (isset($arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']])) { $arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] += $inv['LAmountWithTax']; } else { $arrayData[$inv['BillNo']]['invoice'][$inv['InvoiceNo']] = $inv['LAmountWithTax']; } } } foreach ($received_array as $received) { if (isset($arrayData[$received['OrderBillNo']]) && isset($received['CurrStandOffOAmount']) && $received['CurrStandOffOAmount'] > 0) { $arrayData[$received['OrderBillNo']]['received_budget'] += $received['CurrStandOffOAmount']; } } foreach ($arrayData as $key => &$value) { if (!isset($value['PayStage'])) { $value['receivable_budget'] = $value['OAmountWithTax']; } else { $tmpReceived = $value['received_budget']; $tmpInvoice = $value['invoice_budget']; if (is_iterable($value['PayStage'])) { for ($sequence = 1; $sequence <= count($value['PayStage']); $sequence++) { if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpInvoice) { $value['PayStage'][$sequence]['invoice'] = $tmpInvoice; $tmpInvoice = 0; } else { $value['PayStage'][$sequence]['invoice'] = $value['PayStage'][$sequence]['PlanPayAmt']; $tmpInvoice -= $value['PayStage'][$sequence]['PlanPayAmt']; } if ($value['PayStage'][$sequence]['PlanPayAmt'] > $tmpReceived) { $value['PayStage'][$sequence]['received'] = $tmpReceived; $tmpReceived = 0; } else { $value['PayStage'][$sequence]['received'] = $value['PayStage'][$sequence]['PlanPayAmt']; $tmpReceived -= $value['PayStage'][$sequence]['PlanPayAmt']; } } } $value['received_budget'] = $tmpReceived; } if ($value['receivable_budget'] > 0 && $value['received_budget'] < $value['receivable_budget']) { $value['month'] = collect_month(strtotime($value['BillDate'])); } else { $value['month'] = 0; } } $excel_aray = array(); foreach ($arrayData as $key => $value) { $uninvoice_budget = $value['OAmountWithTax'] - $value['invoice_budget']; $unreceive_budget = $value['receivable_budget'] - $value['received_budget']; $excel_aray[$key] = [ $value['BillNo'], date('Y-m-d', strtotime($value['BillDate'])), $value['CustomerId'], $value['CustomerName'], $value['DeptName'], $value['PersonId'], $value['PersonName'], $value['ManagerId'], $value['ManagerName'], number_format(round($value['OAmountWithTax'])), number_format(round($value['receivable_budget'])), number_format(round($value['invoice_budget'])), number_format(round($uninvoice_budget)), number_format(round($value['received_budget'])), $unreceive_budget, $value['month'] ]; } $total_data = json_encode($excel_aray); ?>
合約號 | 合約日期 | 客戶編號 | 客戶名稱 | 部門 | 主管 | 契約員 | 合約總金額 | 應收金額 | 已開金額 | 未開金額 | 已收金額 | 催收金額 | 催收次數 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
= $row[0]; ?> | = $row[1]; ?> | = $row[2] ?> | = $row[3] ?> | = $row[4] ?> | = $row[7] . " " . $row[8]; ?> |
= $row[5] . " " . $row[6]; ?> |
= $row[9]; ?> | = $row[10]; ?> | = $row[11]; ?> | = $row[12]; ?> | = $row[13]; ?> | = $row[14]; ?> | = $row[15]; ?> |