Browse Source

Merge branch 'kaiyu'

gary
Ellin 1 year ago
parent
commit
69c0c6160f
  1. 94
      wms/account-receivable-check.php
  2. 46
      wms/account-receivable-excel.php
  3. 441
      wms/account-receivable-index.php
  4. BIN
      wms/account-receivable.xlsx

94
wms/account-receivable-check.php

@ -2,33 +2,35 @@
include "./header.php"; include "./header.php";
$Bill = $_POST['Bill']; $Bill = $_POST['Bill'];
$Bill = json_decode($Bill, true); $Bill = json_decode($Bill, true);
$sql_received = "SELECT * from account_received where BillNo = '$Bill[0]' ORDER BY `pay_id` ASC"; print_r($Bill);
$pay_received = mysqli_query($link, $sql_received);
$had_received_amount = intval(0); // $sql_received = "SELECT * from account_received where BillNo = '$Bill[0]' ORDER BY `pay_id` ASC";
$had_invoice_amount=intval(0); // $pay_received = mysqli_query($link, $sql_received);
$status_summary = intval(0); // $had_received_amount = intval(0);
if (mysqli_num_rows($pay_received) > 0) { // $had_invoice_amount=intval(0);
foreach ($pay_received as $received) { // $status_summary = intval(0);
$had_received_amount += intval($received['received_amount']); // if (mysqli_num_rows($pay_received) > 0) {
$had_invoice_amount += intval($received['invoice_amount']); // foreach ($pay_received as $received) {
if(in_array(intval($received['status']),array(0,4,5,99))){ // $had_received_amount += intval($received['received_amount']);
$tem_status = intval(0); // $had_invoice_amount += intval($received['invoice_amount']);
}else{ // if(in_array(intval($received['status']),array(0,4,5,99))){
$tem_status = intval($received['status']); // $tem_status = intval(0);
} // }else{
if($status_summary < $tem_status){ // $tem_status = intval($received['status']);
$status_summary = $tem_status; // }
} // if($status_summary < $tem_status){
} // $status_summary = $tem_status;
} // }
// }
$unreceived_amount = intval($Bill[12]) - intval($had_received_amount); // }
$uninvoice_amount = intval($Bill[12]) - intval($had_invoice_amount);
$Bill[19] =$had_invoice_amount; // $unreceived_amount = intval($Bill[12]) - intval($had_received_amount);
$Bill[20] =$had_received_amount; // $uninvoice_amount = intval($Bill[12]) - intval($had_invoice_amount);
$Bill[21] =$uninvoice_amount; // $Bill[19] =$had_invoice_amount;
$Bill[22] =$unreceived_amount; // $Bill[20] =$had_received_amount;
$Bill[23] =$status_summary; // $Bill[21] =$uninvoice_amount;
// $Bill[22] =$unreceived_amount;
// $Bill[23] =$status_summary;
$data = json_encode($Bill); $data = json_encode($Bill);
?> ?>
<style> <style>
@ -57,7 +59,7 @@ $data = json_encode($Bill);
<div class="form-group"> <div class="form-group">
<div class="col-md-3"> <div class="col-md-3">
<label for="BillNo">合約號</label> <label for="BillNo">合約號</label>
<input type="text" class="form-control" id="BillNo" name="BillNo" value="<?= $Bill[0] ?>" disabled> <input type="text" class="form-control" id="BillNo" name="BillNo" value="<?= $Bill[10] ?>" disabled>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="DeptId">部門</label> <label for="DeptId">部門</label>
@ -69,27 +71,27 @@ $data = json_encode($Bill);
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="PersonName">營業員</label> <label for="PersonName">營業員</label>
<input type="text" class="form-control" id="PersonName" name="PersonName" value="<?= $Bill[3] ?>" disabled> <input type="text" class="form-control" id="PersonName" name="PersonName" value="<?= $Bill[4] ?>" disabled>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-md-3"> <div class="col-md-3">
<label for="EnterpriseName">抬頭</label> <label for="EnterpriseName">抬頭</label>
<input type="text" class="form-control" id="EnterpriseName" name="EnterpriseName" value="<?= $Bill[14] ?>" disabled> <input type="text" class="form-control" id="EnterpriseName" name="EnterpriseName" value="<?= $Bill[6] ?>" disabled>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="TaxNo">統一編號</label> <label for="TaxNo">統一編號</label>
<input type="text" class="form-control" id="TaxNo" name="TaxNo" value="<?= $Bill[15] ?>" disabled> <input type="text" class="form-control" id="TaxNo" name="TaxNo" value="<?= $Bill[7] ?>" disabled>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label for="ContactAddress">聯絡地址</label> <label for="ContactAddress">聯絡地址</label>
<input type="text" class="form-control" id="ContactAddress" name="ContactAddress" value="<?= $Bill[16] ?>" disabled> <input type="text" class="form-control" id="ContactAddress" name="ContactAddress" value="<?= $Bill[8] ?>" disabled>
</div> </div>
</div> </div>
<div> <div>
<label for="detail">狀態</label> <label for="detail">狀態</label>
<textarea class="form-control" style="height: 150px; width: 50%;" name="detail" id="detail" disabled><?= str_replace("<br>", "\n", $Bill[13]) ?></textarea> <textarea class="form-control" style="height: 150px; width: 50%;" name="detail" id="detail" disabled><?= str_replace("<br>", "\n", $Bill['facilities']) ?></textarea>
</div> </div>
</form> </form>
<div style="width: auto; margin-top: 30px;"> <div style="width: auto; margin-top: 30px;">
@ -97,20 +99,20 @@ $data = json_encode($Bill);
<thead> <thead>
<tr> <tr>
<th>目前應收</th> <th>目前應收</th>
<th>已開發票金額</th> <!-- <th>已開發票金額</th>
<th>未開發票金額</th> <th>未開發票金額</th>
<th>已收金額</th> <th>已收金額</th>
<th>未收金額</th> <th>未收金額</th> -->
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><?= number_format(round($Bill[12])) ?></td> <td><?= number_format(round($Bill['receivable_budget'])) ?></td>
<td><?= number_format(round($Bill[19])) ?></td> <!-- <td><?= number_format(round($Bill[19])) ?></td>
<td><?= number_format(round($Bill[21])) ?></td> <td><?= number_format(round($Bill[21])) ?></td>
<td><?= number_format(round($Bill[20])) ?></td> <td><?= number_format(round($Bill[20])) ?></td>
<td><?= number_format(round($Bill[22])) ?></td> <td><?= number_format(round($Bill[22])) ?></td> -->
</tr> </tr>
</tbody> </tbody>
@ -129,18 +131,20 @@ $data = json_encode($Bill);
<th>試車款</th> <th>試車款</th>
<th>官檢款</th> <th>官檢款</th>
<th>交車款</th> <th>交車款</th>
<th>尾款</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td><?= number_format(round($Bill[5])) ?></td> <td><?= number_format(round($Bill['sign'][1])) ?></td>
<td><?= number_format(round($Bill[6])) ?></td> <td><?= number_format(round($Bill['second'][1])) ?></td>
<td><?= number_format(round($Bill[7])) ?></td> <td><?= number_format(round($Bill['arrive'][1])) ?></td>
<td><?= number_format(round($Bill[8])) ?></td> <td><?= number_format(round($Bill['install'][1])) ?></td>
<td><?= number_format(round($Bill[9])) ?></td> <td><?= number_format(round($Bill['tryrun'][1])) ?></td>
<td><?= number_format(round($Bill[10])) ?></td> <td><?= number_format(round($Bill['check'][1])) ?></td>
<td><?= number_format(round($Bill[11])) ?></td> <td><?= number_format(round($Bill['delivery'][1])) ?></td>
<td><?= number_format(round($Bill['final'][1])) ?></td>
</tr> </tr>
</tbody> </tbody>

46
wms/account-receivable-excel.php

@ -6,42 +6,46 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$Bill = $_POST['Bill']; $Bill = $_POST['Bill'];
$array_data = array(); $array_data = array();
$Bill = json_decode($Bill, true); $Bill = json_decode($Bill, true);
foreach($Bill as $key=>$value){ foreach($Bill as $key=>$value){
for ($i = 0; $i < 17; $i++) { // for ($i = 0; $i < 17; $i++) {
$value[$i] = (isset($value[$i])) ? $value[$i] : 0; // $value[$i] = (isset($value[$i])) ? $value[$i] : 0;
} // }
$array_data[$key][0] = $value[0]; $array_data[$key][0] = $key;
$array_data[$key][1] = $value[1]; $array_data[$key][1] = $value[1];
$array_data[$key][2] = $value[2]; $array_data[$key][2] = $value[2];
$array_data[$key][3] = $value[3]; $array_data[$key][3] = $value[4];
$array_data[$key][4] = $value[4]; $array_data[$key][4] = $value[5];
$array_data[$key][5] = $value[15]; $array_data[$key][5] = $value[7];
$array_data[$key][6] = $value[16]; $array_data[$key][6] = $value[8];
$array_data[$key][7] = $value[14]; $array_data[$key][7] = $value[6];
$array_data[$key][8] = $value[5]; $array_data[$key][8] = $value['sign'][1];
$array_data[$key][9] = $value[6]; $array_data[$key][9] = $value['second'][1];
$array_data[$key][10] = $value[7]; $array_data[$key][10] = $value['arrive'][1];
$array_data[$key][11] = $value[8]; $array_data[$key][11] = $value['install'][1];
$array_data[$key][12] = $value[9]; $array_data[$key][12] = $value['tryrun'][1];
$array_data[$key][13] = $value[10]; $array_data[$key][13] = $value['check'][1];
$array_data[$key][14] = $value[11]; $array_data[$key][14] = $value['delivery'][1];
$array_data[$key][15] = $value[12]; $array_data[$key][15] = $value['final'][1];
$array_data[$key][16] = str_replace('<br>','; ',$value[13]); $array_data[$key][16] = $value['receivable_budget'];
$array_data[$key][17] = str_replace('<br>','; ',$value['facilities']);
} }
$spreadsheet = new Spreadsheet(); $spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(); $sheet = $spreadsheet->getActiveSheet();
$colomnHeader = ['合約號','部門','經理','營業員','客戶名稱','統一編號','聯絡地址','抬頭','簽約款', $colomnHeader = ['合約號','部門','經理','營業員','客戶名稱','統一編號','聯絡地址','抬頭','簽約款',
'二次款','貨抵工地款','安裝款','試車款','官檢款','交車款','目前應收','作番狀態']; '二次款','貨抵工地款','安裝款','試車款','官檢款','交車款','尾款','目前應收','作番狀態'];
$sheet->fromArray($colomnHeader,NULL,'A1'); $sheet->fromArray($colomnHeader,NULL,'A1');
$rowIndex = 2; $rowIndex = 2;
foreach($array_data as $key => $value){ foreach($array_data as $key => $value){
$sheet->fromArray([$value], NULL, 'A' . $rowIndex); $sheet->fromArray([$value], NULL, 'A' . $rowIndex);
$sheet->getStyle('Q' . $rowIndex)->getAlignment()->setWrapText(true); $sheet->getStyle('R' . $rowIndex)->getAlignment()->setWrapText(true);
$rowIndex++; $rowIndex++;
} }
$writer = new Xlsx($spreadsheet); $writer = new Xlsx($spreadsheet);
$excelFileName = 'account-receivable.xlsx'; $excelFileName = 'account-receivable.xlsx';
$writer->save($excelFileName); $writer->save($excelFileName);
echo "Excel 文件已生成:{$excelFileName}";
?> ?>
<script>
window.location.href = "account-receivable-index.php?<?= $token_link ?>";
</script>

441
wms/account-receivable-index.php

@ -4,62 +4,59 @@ include "header.php";
$follower = find_follow($user_id); $follower = find_follow($user_id);
$arrayData = []; $arrayData = [];
$receivable_array = []; $receivable_array = [];
$received_array = []; $sql_received = "SELECT * FROM arWriteOffBillDetail WHERE (DATALENGTH(OrderBillNo) >0)";
//4 簽約 5 二次款 6 貨抵工地 7 安裝 8 試車 9官檢 10 交車
//arrive_num 貨抵工地 tryrun_num 試車安裝完畢 official_num 官檢完畢 delivery_num 移交
$sql_received = "SELECT * from account_received";
$sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId, $sql_contract = "SELECT a.BillNo, a.PayStage, a.PlanPayAmt, a.PlanPayDate,s.BizPartnerId,c.BizPartnerName, s.PersonId,
c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a c.EnterpriseName, c.TaxNo, c.ContactAddress FROM salOrderStagePay AS a
LEFT JOIN salSalesOrder AS s on a.BillNo = s.BillNo 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) ";
if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) { if (!(in_array(accountidToDepartId($user_id), array('220', '210')))) {
$sql_contract .= "AND (s.PersonId = '$user_id'"; $sql_contract .= "AND (s.PersonId = '$user_id'";
$sql_received .= " WHERE person_id = '$user_id'"; $sql_received .= " 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);
$column_str .= "')"; $column_str .= "')";
$sql_contract .= " OR s.PersonId IN $column_str)"; $sql_contract .= " OR s.PersonId IN $column_str)";
$sql_received .= " OR person_id IN $column_str)"; $sql_received .= " OR PersonId IN $column_str)";
} else { } else {
$sql_contract .= ")"; $sql_contract .= ")";
$sql_received .= ")";
}; };
} }
$sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天'); $sign60 = array('簽訂後60天', '簽約60日', '簽約後60天', '簽訂後60日內', '訂金支付後60天');
$sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天'); $sign90 = array('簽約後90天', '簽約後90日', '簽訂後90天');
$sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天'); $sign120 = array('簽約後120天', '簽約後120日', '簽訂後120天');
$contract = $conn->query($sql_contract); $contract = $conn->query($sql_contract);
$received_array = $conn->query($sql_received);
// 取收款資料 account_received // 取收款資料 account_received
$received_data = mysqli_query($link, $sql_received); // $received_data = mysqli_query($link, $sql_received);
foreach ($received_data as $received) { // foreach ($received_data as $received) {
if ($received['BillNo'] == 'SO20230801001') { // if ($received['BillNo'] == 'SO20230801001') {
$BillNo = 'M230947'; // $BillNo = 'M230947';
} elseif ($received['BillNo'] == 'SO20230801002') { // } elseif ($received['BillNo'] == 'SO20230801002') {
$BillNo = 'M231067'; // $BillNo = 'M231067';
} else { // } else {
$BillNo = $received['BillNo']; // $BillNo = $received['BillNo'];
}; // };
if (isset($received_array[$BillNo])) { // if (isset($received_array[$BillNo])) {
$received_array[$BillNo][0] += $received['invoice_amount']; // $received_array[$BillNo][0] += $received['invoice_amount'];
$received_array[$BillNo][1] += $received['received_amount']; // $received_array[$BillNo][1] += $received['received_amount'];
$received['status'] = (intval($received['status']) < 4) ? intval($received['status']) : 0; // $received['status'] = (intval($received['status']) < 4) ? intval($received['status']) : 0;
if ($received_array[$BillNo][2] < intval($received['status'])) { // if ($received_array[$BillNo][2] < intval($received['status'])) {
$received_array[$BillNo][2] = intval($received['status']); // $received_array[$BillNo][2] = intval($received['status']);
} // }
} else { // } else {
$received_array[$BillNo][0] = $received['invoice_amount']; // $received_array[$BillNo][0] = $received['invoice_amount'];
$received_array[$BillNo][1] = $received['received_amount']; // $received_array[$BillNo][1] = $received['received_amount'];
$received_array[$BillNo][2] = (intval($received['status']) < 4) ? intval($received['status']) : 0; // $received_array[$BillNo][2] = (intval($received['status']) < 4) ? intval($received['status']) : 0;
} // }
} // }
// 將T8合約收款階段資料依據款別分類放進arraData裡 // 將T8合約收款階段資料依據款別分類放進arraData裡
foreach ($contract as $cont) { foreach ($contract as $cont) {
// print_r($cont);
// echo "<br>";
if ($cont['BillNo'] == 'SO20230801001') { if ($cont['BillNo'] == 'SO20230801001') {
$BillNo = 'M230947'; $BillNo = 'M230947';
} elseif ($cont['BillNo'] == 'SO20230801002') { } elseif ($cont['BillNo'] == 'SO20230801002') {
@ -78,11 +75,15 @@ foreach ($contract as $cont) {
//['tryrun'] 0 試車款名 1試車金額 2 試車收款日期 ['check'] 0 官檢款名 1 官檢金額 2 官檢收款日期 ['delivery'] 0 交車款名 1 交車金額 2 交車收款日期 ['final'] 0 尾款名 1 尾款金額 2 尾款收款日期 //['tryrun'] 0 試車款名 1試車金額 2 試車收款日期 ['check'] 0 官檢款名 1 官檢金額 2 官檢收款日期 ['delivery'] 0 交車款名 1 交車金額 2 交車收款日期 ['final'] 0 尾款名 1 尾款金額 2 尾款收款日期
if (!(isset($arrayData[$BillNo]))) { if (!(isset($arrayData[$BillNo]))) {
// 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址 // 0 部門id 1 部門名稱 2 經理名稱 3 營業員id 4 營業員名稱 5 客戶名稱 6 抬頭 7 統編 8 通訊地址
$arrayData[$BillNo] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; $arrayData[$BillNo] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
$arrayData[$BillNo][5] = $partnerName; $arrayData[$BillNo][5] = $partnerName;
$arrayData[$BillNo][6] = $EnterpriseName; $arrayData[$BillNo][6] = $EnterpriseName;
$arrayData[$BillNo][7] = $TaxNo; $arrayData[$BillNo][7] = $TaxNo;
$arrayData[$BillNo][8] = $ContactAddress; $arrayData[$BillNo][8] = $ContactAddress;
$arrayData[$BillNo]['received']= array();
$arrayData[$BillNo]['sign'][1] = $arrayData[$BillNo]['second'][1] = $arrayData[$BillNo]['arrive'][1] = $arrayData[$BillNo]['install'][1] = $arrayData[$BillNo]['tryrun'][1] = $arrayData[$BillNo]['check'][1] = $arrayData[$BillNo]['delivery'][1] = $arrayData[$BillNo]['final'][1] = 0;
$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]['receivable_budget'] = 0;
} }
if (stristr($PayStage, '二次款') || stristr($PayStage, '出貨前') || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60')) { if (stristr($PayStage, '二次款') || stristr($PayStage, '出貨前') || stristr($PayStage, '簽約後') || stristr($PayStage, '簽訂後') || stristr($PayStage, '建照核發時') || stristr($PayStage, '簽約60')) {
$arrayData[$BillNo]['second'][0] = $PayStage; $arrayData[$BillNo]['second'][0] = $PayStage;
@ -91,19 +92,19 @@ foreach ($contract as $cont) {
if (isset($arrayData[$BillNo]['sign'][2]) && !is_null($arrayData[$BillNo]['sign'][2])) { if (isset($arrayData[$BillNo]['sign'][2]) && !is_null($arrayData[$BillNo]['sign'][2])) {
$signtime = strtotime(strval($arrayData[$BillNo]['sign'][2])); $signtime = strtotime(strval($arrayData[$BillNo]['sign'][2]));
if (in_array($PayStage, $sign60)) { if (in_array($PayStage, $sign60)) {
$secondtime = $signtime - (60 * 86400); $secondtime = $signtime + (60 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$BillNo]['second'][2] = intval($secondtime); $arrayData[$BillNo]['second'][2] = intval($secondtime);
} elseif (in_array($PayStage, $sign90)) { } elseif (in_array($PayStage, $sign90)) {
$secondtime = $signtime - (90 * 86400); $secondtime = $signtime + (90 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$BillNo]['second'][2] = intval($secondtime); $arrayData[$BillNo]['second'][2] = intval($secondtime);
} elseif (in_array($PayStage, $sign120)) { } elseif (in_array($PayStage, $sign120)) {
$secondtime = $signtime - (120 * 86400); $secondtime = $signtime + (120 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$BillNo]['second'][2] = intval($secondtime); $arrayData[$BillNo]['second'][2] = intval($secondtime);
} elseif (stristr($PayStage, '簽訂後30天')) { } elseif (stristr($PayStage, '簽訂後30天')) {
$secondtime = $signtime - (30 * 86400); $secondtime = $signtime + (30 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$BillNo]['second'][2] = intval($secondtime); $arrayData[$BillNo]['second'][2] = intval($secondtime);
} }
@ -112,7 +113,7 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['sign'][0] = $PayStage; $arrayData[$BillNo]['sign'][0] = $PayStage;
$arrayData[$BillNo]['sign'][1] = $PayAmount; $arrayData[$BillNo]['sign'][1] = $PayAmount;
$arrayData[$BillNo]['sign'][2] = $PlanPayDate; $arrayData[$BillNo]['sign'][2] = $PlanPayDate;
} elseif (stristr($PayStage, '試車') || stristr($PayStage, '驗收完成')) { } elseif (stristr($PayStage, '試車')) {
$arrayData[$BillNo]['tryrun'][0] = $PayStage; $arrayData[$BillNo]['tryrun'][0] = $PayStage;
$arrayData[$BillNo]['tryrun'][1] = $PayAmount; $arrayData[$BillNo]['tryrun'][1] = $PayAmount;
$arrayData[$BillNo]['tryrun'][2] = $PlanPayDate; $arrayData[$BillNo]['tryrun'][2] = $PlanPayDate;
@ -132,8 +133,11 @@ foreach ($contract as $cont) {
$arrayData[$BillNo]['check'][0] = $PayStage; $arrayData[$BillNo]['check'][0] = $PayStage;
$arrayData[$BillNo]['check'][1] = $PayAmount; $arrayData[$BillNo]['check'][1] = $PayAmount;
$arrayData[$BillNo]['check'][2] = $PlanPayDate; $arrayData[$BillNo]['check'][2] = $PlanPayDate;
} elseif (stristr($PayStage, '驗收完成')) {
$arrayData[$BillNo]['final'][0] = $PayStage;
$arrayData[$BillNo]['final'][1] = $PayAmount;
$arrayData[$BillNo]['final'][2] = $PlanPayDate;
} else { } else {
$arrayData[$BillNo]['other'][1] = $PayAmount; $arrayData[$BillNo]['other'][1] = $PayAmount;
$arrayData[$BillNo]['other'][2] = $PlanPayDate; $arrayData[$BillNo]['other'][2] = $PlanPayDate;
} }
@ -180,234 +184,97 @@ foreach ($wipwhole_array as $wip) {
$arrayData[$wip['contractno']][2] = $wip['manager_name']; $arrayData[$wip['contractno']][2] = $wip['manager_name'];
$arrayData[$wip['contractno']][3] = $wip['salesid']; $arrayData[$wip['contractno']][3] = $wip['salesid'];
$arrayData[$wip['contractno']][4] = $wip['name']; $arrayData[$wip['contractno']][4] = $wip['name'];
if (isset($arrayData[$wip['contractno']]['second']) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前30天')) { $arrayData[$wip['contractno']][10] = $wip['contractno'];
$estimate_delivery_time = strtotime(strval($arrayData[$wip['contractno']]['second'][2])); if (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前30天')) {
$estimate_delivery_time = strtotime($wip['estimated_shipping_date']);
$secondtime = $estimate_delivery_time - (30 * 86400); $secondtime = $estimate_delivery_time - (30 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$wip['contractno']]['second'][2] = intval($secondtime); $arrayData[$wip['contractno']]['second'][2] = intval($secondtime);
} elseif (isset($arrayData[$wip['contractno']]['second']) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前90天')) { } elseif (isset($arrayData[$wip['contractno']]['second'][0]) && stristr($arrayData[$wip['contractno']]['second'][0], '出貨前90天')) {
$estimate_delivery_time = strtotime(strval($arrayData[$wip['contractno']]['second'][2])); $estimate_delivery_time = strtotime($wip['estimated_shipping_date']);
$secondtime = $estimate_delivery_time - (90 * 86400); $secondtime = $estimate_delivery_time - (90 * 86400);
$secondtime = date('Ymd', $secondtime); $secondtime = date('Ymd', $secondtime);
$arrayData[$wip['contractno']]['second'][2] = intval($secondtime); $arrayData[$wip['contractno']]['second'][2] = intval($secondtime);
} }
$facitities = "";
$total_facility_num = 0;
$arrive_num = 0;
$tryrun_num = 0;
$delivery_num = 0;
$official_num = 0;
if ($wip['delivery_date'] != NULL) { if ($wip['delivery_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrive_num += 1; $arrayData[$wip['contractno']]['delivery_num'] += 1;
$tryrun_num += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
$official_num += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
$delivery_num += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
$arrayData[$wip['contractno']]['arrive_num'] += 1;
$arrayData[$wip['contractno']]['second_num'] += 1;
} elseif ($wip['official_check_date'] != NULL) { } elseif ($wip['official_check_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrive_num += 1; $arrayData[$wip['contractno']]['check_num'] += 1;
$tryrun_num += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
$official_num += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
$arrayData[$wip['contractno']]['arrive_num'] += 1;
$arrayData[$wip['contractno']]['second_num'] += 1;
} elseif ($wip['tryrun_end_date'] != NULL) { } elseif ($wip['tryrun_end_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrive_num += 1; $arrayData[$wip['contractno']]['tryrun_num'] += 1;
$tryrun_num += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
$arrayData[$wip['contractno']]['arrive_num'] += 1;
$arrayData[$wip['contractno']]['second_num'] += 1;
} elseif ($wip['install_end_date'] != NULL) { } elseif ($wip['install_end_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrive_num += 1; $arrayData[$wip['contractno']]['install_num'] += 1;
$arrayData[$wip['contractno']]['arrive_num'] += 1;
$arrayData[$wip['contractno']]['second_num'] += 1;
} elseif ($wip['real_arrival_date'] != NULL) { } elseif ($wip['real_arrival_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrive_num += 1; $arrayData[$wip['contractno']]['arrive_num'] += 1;
} elseif ($wip['actual_tofactory_date'] != NULL) { $arrayData[$wip['contractno']]['second_num'] += 1;
$facitities .= $wip['facilityno'] . " (" . $wip['actual_tofactory_date'] . "實際到觀音日) <br>"; } elseif (($arrayData[$wip['contractno']]['second'] != NULL) && (isset($arrayData[$wip['contractno']]['second'][2])) && ($arrayData[$wip['contractno']]['second'][2] <= date('Ymd'))) {
$total_facility_num += 1; if ($wip['estimated_shipping_date'] != NULL) {
} elseif ($wip['estimated_shipping_date'] != NULL) { $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計出貨日) <br>";
$facitities .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計到港) <br>"; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
$total_facility_num += 1; $arrayData[$wip['contractno']]['second_num'] += 1;
} else { } elseif ($wip['actual_tofactory_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (預計到港日待確認) <br>"; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['actual_tofactory_date'] . "實際到觀音日) <br>";
$total_facility_num += 1; $arrayData[$wip['contractno']]['total_facility_num'] += 1;
} $arrayData[$wip['contractno']]['second_num'] += 1;
if ($total_facility_num > 0) {
$receivable_budget= $arrayData[$wip['contractno']]['sign'][1];
// $receivable_budget = $value[4] + ($value[5] + $value[6]) * ($arrive_num / $total_facility_num) +
// ($value[7] + $value[8]) * ($tryrun_num / $total_facility_num) + ($value[9]) * ($official_num / $total_facility_num)
// + ($value[10]) * ($delivery_num / $total_facility_num);
$uninvoice_budget = $receivable_budget;
$unreceived_budget = $receivable_budget;
$received_invoice = 0;
$received_budget = 0;
if (isset($received_array[$key][0])) {
$uninvoice_budget = $receivable_budget - $received_array[$key][0];
$received_invoice = $received_array[$key][0];
} else {
$uninvoice_budget = $receivable_budget;
}
if (isset($received_array[$key][1])) {
$unreceived_budget = $receivable_budget - $received_array[$key][1];
$received_budget = $received_array[$key][1];
} else {
$unreceived_budget = $receivable_budget;
}
if (isset($received_array[$key][2])) {
$status = $received_array[$key][2];
} else { } else {
$status = 0; $arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (已達二次款收款條件) <br>";
$arrayData[$wip['contractno']]['total_facility_num'] += 1;
$arrayData[$wip['contractno']]['second_num'] += 1;
} }
} elseif ($wip['estimated_shipping_date'] != NULL) {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計到港) <br>";
$arrayData[$wip['contractno']]['total_facility_num'] += 1;
} else {
$arrayData[$wip['contractno']]['facilities'] .= $wip['facilityno'] . " (預計到港日待確認) <br>";
$arrayData[$wip['contractno']]['total_facility_num'] += 1;
} }
} }
} }
exit();
foreach ($arrayData as $key => $value) {
echo $key . "<br>";
print_r($value);
echo "<br><br>";
}
//D23070086
//Array ( [0] => 312 [1] => 桃竹營銷部 [2] => 張莉凱 [3] => M0074 [4] => 章又仁 [5] => 永融營造(大園學八街) [6] => 永融營造工程有限公司 [7] => 13010305 [8] => 桃園市平鎮區環南路184號7樓之2 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [sign] => Array ( [0] => 簽約 [1] => 210000.000000 [2] => 20230825 ) [arrive] => Array ( [0] => 貨抵工地 [1] => 525000.000000 [2] => 20231231 ) [tryrun] => Array ( [0] => 安裝試車 [1] => 210000.000000 [2] => 20240131 ) [delivery] => Array ( [0] => 交車 [1] => 105000.000000 [2] => 20240301 ) )
exit(); foreach ($arrayData as &$value) {
if ($value['total_facility_num'] > 0) {
foreach ($arrayData as $key => $value) { $value['receivable_budget'] = $value['sign'][1] + ($value['second'][1] * ($value['second_num'] / $value['total_facility_num'])) +
if (array_key_exists($key, $arrayData) && isset($arrayData[$key])) { ($value['arrive'][1] * ($value['arrive_num'] / $value['total_facility_num'])) + ($value['install'][1] * ($value['install_num'] / $value['total_facility_num'])) +
$sql = "SELECT ($value['tryrun'][1] * ($value['tryrun_num'] / $value['total_facility_num'])) + ($value['check'][1] * ($value['check_num'] / $value['total_facility_num'])) +
tmp2.*, (($value['delivery'][1] + $value['final'][1]) * ($value['delivery_num'] / $value['total_facility_num']));
d.name AS depart_name }
FROM( }
SELECT // array_push($arrayData[$wip['contractno']]['received'], ['assaaa',123124,'sdrfrqa']);
a.manager,
a2.name as manager_name,
a.name,
a.department_id,
w.salesid,
w.contractno,
w.facilityno,
w.estimated_shipping_date,
w.actual_tofactory_date,
w.real_arrival_date,
w.install_end_date,
w.tryrun_end_date,
w.official_check_date,
w.delivery_date
from wipwholestatus AS w
left join account AS a
ON w.salesid = a.accountid
left join account AS a2
ON a2.accountid = a.manager
where w.status = '1' AND w.contractno='" . $key . "'" . "
)AS tmp2 foreach($received_array as $received){
left join (
SELECT DISTINCT
department_id,
name
FROM department
) AS d if(isset($arrayData[$received['OrderBillNo']])){
ON d.department_id = tmp2.department_id"; array_push($arrayData[$received['OrderBillNo']]['received'], [$received['BillNo'],$received['WriteOffBizPartnerId'],$received['OrderBillNo'],]);
$facitities = "";
$total_facility_num = 0;
$arrive_num = 0;
$tryrun_num = 0;
$delivery_num = 0;
$official_num = 0;
$value[16] = '';
$value[17] = '';
$wipwhole_array = mysqli_query($link, $sql);
foreach ($wipwhole_array as $wip) {
$value[0] = $wip['depart_name'];
$value[1] = $wip['manager_name'];
$value[2] = $wip['name'];
$value[16] = is_null($wip['department_id']) ? '' : $wip['department_id'];
$value[17] = is_null($wip['salesid']) ? '' : $wip['salesid'];
if ($wip['delivery_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['delivery_date'] . "已移交) <br>";
$total_facility_num += 1;
$arrive_num += 1;
$tryrun_num += 1;
$official_num += 1;
$delivery_num += 1;
} elseif ($wip['official_check_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['official_check_date'] . "官檢完畢) <br>";
$total_facility_num += 1;
$arrive_num += 1;
$tryrun_num += 1;
$official_num += 1;
} elseif ($wip['tryrun_end_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['tryrun_end_date'] . "試車完畢) <br>";
$total_facility_num += 1;
$arrive_num += 1;
$tryrun_num += 1;
} elseif ($wip['install_end_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['install_end_date'] . "安裝完畢) <br>";
$total_facility_num += 1;
$arrive_num += 1;
} elseif ($wip['real_arrival_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['real_arrival_date'] . "貨抵工地) <br>";
$total_facility_num += 1;
$arrive_num += 1;
} elseif ($wip['actual_tofactory_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['actual_tofactory_date'] . "實際到觀音日) <br>";
$total_facility_num += 1;
} elseif ($wip['estimated_shipping_date'] != NULL) {
$facitities .= $wip['facilityno'] . " (" . $wip['estimated_shipping_date'] . "預計到港) <br>";
$total_facility_num += 1;
} else {
$facitities .= $wip['facilityno'] . " (預計到港日待確認) <br>";
$total_facility_num += 1;
}
}
$receivable_budget = 0;
//這是錢 4 簽約 5 二次款 6 貨抵工地 7 安裝 8 試車 9官檢 10 交車
//這是數量 arrive_num 貨抵工地 tryrun_num 試車安裝完畢 official_num 官檢完畢 delivery_num 移交
if ($total_facility_num > 0) {
$receivable_budget = $value[4] + ($value[5] + $value[6]) * ($arrive_num / $total_facility_num) +
($value[7] + $value[8]) * ($tryrun_num / $total_facility_num) + ($value[9]) * ($official_num / $total_facility_num)
+ ($value[10]) * ($delivery_num / $total_facility_num);
$uninvoice_budget = $receivable_budget;
$unreceived_budget = $receivable_budget;
$received_invoice = 0;
$received_budget = 0;
if (isset($received_array[$key][0])) {
$uninvoice_budget = $receivable_budget - $received_array[$key][0];
$received_invoice = $received_array[$key][0];
} else {
$uninvoice_budget = $receivable_budget;
}
if (isset($received_array[$key][1])) {
$unreceived_budget = $receivable_budget - $received_array[$key][1];
$received_budget = $received_array[$key][1];
} else {
$unreceived_budget = $receivable_budget;
}
if (isset($received_array[$key][2])) {
$status = $received_array[$key][2];
} else {
$status = 0;
}
}
if (isset($key)) { }
$receivable_array[$key] = [
$key, $value[0], $value[1], $value[2], $value[3], $value[4], $value[5], $value[6], $value[7], $value[8], $value[9],
$value[10], $receivable_budget, $facitities, $value[13], $value[14], $value[15], $value[16], $value[17], $received_invoice, $received_budget,
$uninvoice_budget, $unreceived_budget, $status
];
}
}
} }
$data = json_encode($receivable_array); $data = json_encode($arrayData);
//0 合約號; 1 部門; 2 經理; 3 營業員; 4 客戶名稱; 5 簽約款; 6 二次款; 7 貨底工地款; 8 安裝款; 9 式車款; 10 官檢款;
//11 交車款; 12 目前應收; 13 作番狀態; 14 抬頭; 15 統一編號; 16 聯絡地址; 17 部門id; 18 營業員id; 19 已開發票金額; 20 已收金額;
//21 未開發票金額; 22 未收金額; 23 狀態
?> ?>
<style> <style>
@ -447,6 +314,8 @@ $data = json_encode($receivable_array);
} }
</style> </style>
<button type="button" onclick="downloadData()" class="btn btn-warning btn-lg pull-right"><span class="glyphicon glyphicon-download-alt"></span></button>
<div style="width:98%;margin:1%"> <div style="width:98%;margin:1%">
<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>
@ -462,46 +331,38 @@ $data = json_encode($receivable_array);
<th style="width: 100px;">安裝款</th> <th style="width: 100px;">安裝款</th>
<th style="width: 100px;">試車款</th> <th style="width: 100px;">試車款</th>
<th style="width: 100px;">官檢款</th> <th style="width: 100px;">官檢款</th>
<th style="width: 100px;">交車款</th> --> <th style="width: 100px;">交車款</th>
<th style="width: 100px;">尾款</th> -->
<th style="width: 100px;">目前應收</th> <th style="width: 100px;">目前應收</th>
<th style="width: 150px;">未開發票金額</th> <!-- <th style="width: 150px;">未開發票金額</th>
<th style="width: 100px;">未收金額</th> <th style="width: 100px;">未收金額</th> -->
<th>作番狀態</th> <th>作番狀態</th>
<th style="width: 100px;">收款狀態</th> <!-- <th style="width: 100px;">收款狀態</th> -->
<th style="width: 100px;">操作</th> <th style="width: 100px;">操作</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php <?php
foreach ($receivable_array as $contract) { foreach ($arrayData as $key =>$value) {
?> ?>
<tr> <tr>
<th><?= $contract[0] ?></th> <th><?= $key ?></th>
<td><?= $contract[1] ?></td> <td><?= $value[1] ?></td>
<td><?= $contract[2] ?></td> <td><?= $value[2] ?></td>
<td><?= $contract[3] ?></td> <td><?= $value[4] ?></td>
<td><?= $contract[4] ?></td> <td><?= $value[5] ?></td>
<!-- <td><?= round($contract[5]) ?></td> <!-- <td style="text-align: end;"><?= number_format(round($value['sign'][1])) ?></td>
<td><?= round($contract[6]) ?></td> <td style="text-align: end;"><?= number_format(round($value['second'][1])) ?></td>
<td><?= round($contract[7]) ?></td> <td style="text-align: end;"><?= number_format(round($value['arrive'][1])) ?></td>
<td><?= round($contract[8]) ?></td> <td style="text-align: end;"><?= number_format(round($value['install'][1])) ?></td>
<td><?= round($contract[9]) ?></td> <td style="text-align: end;"><?= number_format(round($value['tryrun'][1])) ?></td>
<td><?= round($contract[10]) ?></td> <td style="text-align: end;"><?= number_format(round($value['check'][1])) ?></td>
<td><?= round($contract[11]) ?></td> --> <td style="text-align: end;"><?= number_format(round($value['delivery'][1])) ?></td>
<td style="text-align: end;"><?= number_format(round($contract[12])) ?></td> <td style="text-align: end;"><?= number_format(round($value['final'][1])) ?></td> -->
<td style="text-align: end;"><?= number_format(round($contract[21])) ?></td> <td style="text-align: end;"><?= number_format(round($value['receivable_budget'])) ?></td>
<td style="text-align: end;"><?= number_format(round($contract[22])) ?></td> <!-- <td style="text-align: end;"><?= number_format(round($value['total_facility_num'])) ?></td> -->
<td style="text-align: start;"><?= $contract[13] ?></td> <td style="text-align: start;"><?= $value['facilities'] ?></td>
<td style="text-align: start;"><?php <td><button type="button" onclick="sendData('<?= $key ?>')" class="btn btn-primary btn-sm"><span class=" glyphicon glyphicon-search"></span></button>
if (in_array($contract[23], array(0, 4, 5))) {
echo "正常";
} elseif ($contract[23] == 1) {
echo "<span style='color:blue'>催收</span>";
} else {
echo "<span style='color:red'>法務件</span>";
}
?></td>
<td><button type="button" onclick="sendData('<?= $contract[0] ?>')" class="btn btn-primary btn-sm"><span class=" glyphicon glyphicon-search"></span></button>
</td> </td>
</tr> </tr>
<?php <?php
@ -511,29 +372,26 @@ $data = json_encode($receivable_array);
</table> </table>
</div> </div>
<script> <script>
// function sendData(BillNo) { function downloadData() {
// console.log(BillNo); var BillData = <?= $data ?>;
// var BillData = <?= $data ?>; var form = document.createElement("form");
// var Bill = BillData[BillNo]; form.method = 'POST';
// var form = document.createElement("form"); form.action = "account-receivable-excel.php?<?= $token_link ?>";
// form.method = 'POST'; var input = document.createElement("input");
// form.action = "account-receivable-excel.php?<?= $token_link ?>"; input.type = "hidden";
// var input = document.createElement("input"); input.name = "Bill";
// input.type = "hidden"; input.value = JSON.stringify(BillData);
// input.name = "Bill"; form.appendChild(input);
// input.value = JSON.stringify(Bill); document.body.appendChild(form);
// form.appendChild(input); form.submit();
// document.body.appendChild(form);
// form.submit();
// } }
function sendData(BillNo) { function sendData(BillNo) {
var BillData = <?= $data ?>; var BillData = <?= $data ?>;
var Bill = BillData; var Bill = BillData[BillNo];
var form = document.createElement("form"); var form = document.createElement("form");
form.method = 'POST'; form.method = 'POST';
form.action = "account-receivable-excel.php?<?= $token_link ?>"; form.action = "account-receivable-check.php?<?= $token_link ?>";
var input = document.createElement("input"); var input = document.createElement("input");
input.type = "hidden"; input.type = "hidden";
input.name = "Bill"; input.name = "Bill";
@ -541,6 +399,5 @@ $data = json_encode($receivable_array);
form.appendChild(input); form.appendChild(input);
document.body.appendChild(form); document.body.appendChild(form);
form.submit(); form.submit();
} }
</script> </script>

BIN
wms/account-receivable.xlsx

Binary file not shown.
Loading…
Cancel
Save