5) { sleep(1); header("Location:" . $WebSite . "login/login_form.php"); exit; } include $_SERVER['DOCUMENT_ROOT'] . '/load_header.php'; // 첫 화면 표시 문구 $title_message = '악성 채권추심'; ?>
'; // print_r($initialBalances); // echo ''; // 수금 데이터를 이용해 이월 잔액에서 수금을 차감 foreach ($paymentBeforeData as $row) { $secondordnum = $row['secondordnum']; $total_payment = (float)$row['total_payment']; if (!isset($initialBalances[$secondordnum])) { $initialBalances[$secondordnum] = 0; } $initialBalances[$secondordnum] -= $total_payment; } // echo '
'; // print_r($initialBalances); // echo ''; // 매출이 발생한 거래처 필터링 및 매출액 계산 $salesSql = " SELECT o.secondordnum, COALESCE(e.ET_total, 0) as ET_total FROM {$DB}.output o LEFT JOIN {$DB}.output_extra e ON o.num = e.parent_num WHERE (o.outdate BETWEEN date('$fromdate') AND date('$Transtodate')) AND (o.is_deleted IS NULL OR o.is_deleted = 0 or o.is_deleted ='') "; $salesStmt = $pdo->prepare($salesSql); $salesStmt->execute(); $salesData = $salesStmt->fetchAll(PDO::FETCH_ASSOC); $salesResults = []; foreach ($salesData as $row) { $secondordnum = $row['secondordnum']; $total_sales = (float)$row['ET_total']; if (!isset($salesResults[$secondordnum])) { $salesResults[$secondordnum] = 0; } $salesResults[$secondordnum] += $total_sales; } // echo '
'; // echo '매출발생 시작 fromdate: '; // print_r($fromdate); // echo ''; // echo '
'; // echo '매출발생 종료 Transtodate: '; // print_r($Transtodate); // echo ''; // echo '
'; // echo '이월잔액배열 디오이엔시 추적 initialBalances: '; // print_r($initialBalances['56']); // echo ''; // 모든 거래처 목록을 처리하기 전에 거래처 이름을 저장하는 배열 초기화 $vendorNames = []; // 모든 거래처 목록을 생성 (매출, 기초채권) $allResults = array_unique(array_merge(array_keys($salesResults), array_keys($initialBalances))); // 매출 금액 기준으로 역순으로 정렬 usort($allResults, function($a, $b) use ($salesResults) { $salesA = isset($salesResults[$a]) ? $salesResults[$a] : 0; $salesB = isset($salesResults[$b]) ? $salesResults[$b] : 0; return round($salesA - $salesB); }); // 합계를 저장할 변수들 $totalInitialReceivable = 0; $totalSalesAmount = 0; $totalPaymentAmount = 0; $totalBalanceDue = 0; try { $start_num = 1; foreach ($allResults as $ordnum) { // 이월 잔액 설정 $initialReceivable = isset($initialBalances[$ordnum]) ? $initialBalances[$ordnum] : 0; // 수금 내역 가져오기 $paymentSql = "SELECT SUM(CAST(REPLACE(amount, ',', '') AS SIGNED)) as total_payment FROM ".$DB.".account_juil WHERE secondordnum = '$ordnum' AND registDate BETWEEN '1970-01-01' AND date('$Transtodate') AND (is_deleted IS NULL OR is_deleted = 0 or is_deleted ='' ) AND content = '거래처 수금' AND (dueDate = '0000-00-00' OR dueDate IS NULL OR dueDate = '')"; $paymentStmt = $pdo->prepare($paymentSql); $paymentStmt->execute(); $paymentData = $paymentStmt->fetch(PDO::FETCH_ASSOC); $total_payment = isset($paymentData['total_payment']) ? (int)str_replace(',', '', $paymentData['total_payment']) : 0; $total_sales = isset($salesResults[$ordnum]) ? $salesResults[$ordnum] : 0; // 조건: 기초채권이 있거나 매출이 있는 경우만 표시 if ($initialReceivable != 0 || $total_sales != 0 ) { // 매출이 있는 것을 추출 $sql = "SELECT * FROM $DB.$tablenamephonebook WHERE secondordnum = '$ordnum' AND (is_deleted IS NULL OR is_deleted = 0 or is_deleted ='' ) AND represent='대표코드'"; $stmh = $pdo->query($sql); while ($row = $stmh->fetch(PDO::FETCH_ASSOC)) { include $_SERVER['DOCUMENT_ROOT'] . '/phonebook/_row.php'; if (intval($ordnum) > 0) { $savenum = $ordnum; // 거래처 이름 저장 $vendorNames[$ordnum] =$vendor_name ; } else $savenum = $num; $total_amount = round($total_sales ) ; // 잔액 계산 $balance_due = round($initialReceivable) + $total_amount - round($total_payment); $totalInitialReceivable += $initialReceivable; $totalSalesAmount += $total_amount; $totalPaymentAmount += $total_payment; $totalBalanceDue += $balance_due; } } } } catch (PDOException $Exception) { print "오류: ".$Exception->getMessage(); } // echo '
'; // print_r($vendorNames); // echo ''; // 거래처 이름으로 정렬 usort($allResults, function($a, $b) use ($vendorNames) { // 거래처 이름이 없는 경우 빈 문자열로 처리 $nameA = $vendorNames[$a] ?? ''; $nameB = $vendorNames[$b] ?? ''; return strcmp($nameA, $nameB); }); // echo $sql; // echo '
'; // print_r($allResults); // echo ''; // $search값이 있다면 // 특정 숫자 67만 남기고 필터링 // echo 'searchsecondordnum : ' . $searchsecondordnum; if (!empty($search)) { $allResults = array_filter($allResults, function ($value) use ($searchsecondordnum) { return $value === intval($searchsecondordnum); }); // array_values로 인덱스 재정렬 $allResults = array_values($allResults); } // 중복 제거 $allResults = array_unique($allResults); // 중복 제거 $allResults = array_unique($allResults); // 빈 값 제거 $allResults = array_filter($allResults, function ($value) { return $value !== null && $value !== ''; }); // 배열 키 재정렬 $allResults = array_values($allResults); // echo '
'; // print_r($allResults); // echo ''; ?> getMessage(); } ?>