Phase 5 판매대장/일계표/기간별현황/수불현황 리포트 구현
- SalesReport 컨트롤러 (판매대장, 일계표, 기간별판매, 수불현황) - 판매대장: 일자별/기간별 모드 전환, 판매소별 품목 집계 - 일계표: 당일 판매 + 당월 누계 병렬 표시 - 기간별 판매현황: 품목별 판매/반품/합계 + 총합계 - 봉투 수불현황: 현재재고/입고/판매/불출 4섹션 그리드 레이아웃 - E2E 테스트 6개 전체 통과 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
130
app/Views/admin/sales_report/supply_demand.php
Normal file
130
app/Views/admin/sales_report/supply_demand.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
|
||||
<span class="text-sm font-bold text-gray-700">봉투 수불 현황</span>
|
||||
</section>
|
||||
<section class="p-2 bg-white border-b border-gray-200">
|
||||
<form method="GET" action="<?= base_url('admin/reports/supply-demand') ?>" class="flex flex-wrap items-center gap-2">
|
||||
<label class="text-sm text-gray-600">시작일</label>
|
||||
<input type="date" name="start_date" value="<?= esc($startDate ?? '') ?>" class="border border-gray-300 rounded px-2 py-1 text-sm"/>
|
||||
<label class="text-sm text-gray-600">~</label>
|
||||
<input type="date" name="end_date" value="<?= esc($endDate ?? '') ?>" class="border border-gray-300 rounded px-2 py-1 text-sm"/>
|
||||
<button type="submit" class="bg-btn-search text-white px-4 py-1 rounded-sm text-sm">조회</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4 mt-2">
|
||||
<!-- 현재 재고 -->
|
||||
<div class="border border-gray-300 rounded overflow-auto">
|
||||
<div class="bg-gray-100 border-b border-gray-300 px-3 py-1.5">
|
||||
<span class="text-sm font-bold text-gray-700">현재 재고</span>
|
||||
</div>
|
||||
<table class="w-full data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th>재고수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-right">
|
||||
<?php foreach ($inventory as $row): ?>
|
||||
<tr>
|
||||
<td class="text-center font-mono"><?= esc($row->bi_bag_code) ?></td>
|
||||
<td class="text-left pl-2"><?= esc($row->bi_bag_name) ?></td>
|
||||
<td class="font-bold"><?= number_format((int) $row->bi_qty) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php if (empty($inventory)): ?>
|
||||
<tr><td colspan="3" class="text-center text-gray-400 py-4">데이터가 없습니다.</td></tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 기간 입고 -->
|
||||
<div class="border border-gray-300 rounded overflow-auto">
|
||||
<div class="bg-gray-100 border-b border-gray-300 px-3 py-1.5">
|
||||
<span class="text-sm font-bold text-gray-700">기간 입고</span>
|
||||
</div>
|
||||
<table class="w-full data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th>입고수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-right">
|
||||
<?php foreach ($receiving as $row): ?>
|
||||
<tr>
|
||||
<td class="text-center font-mono"><?= esc($row->br_bag_code) ?></td>
|
||||
<td class="text-left pl-2"><?= esc($row->br_bag_name) ?></td>
|
||||
<td><?= number_format((int) $row->recv_qty) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php if (empty($receiving)): ?>
|
||||
<tr><td colspan="3" class="text-center text-gray-400 py-4">데이터가 없습니다.</td></tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 기간 판매 -->
|
||||
<div class="border border-gray-300 rounded overflow-auto">
|
||||
<div class="bg-gray-100 border-b border-gray-300 px-3 py-1.5">
|
||||
<span class="text-sm font-bold text-gray-700">기간 판매</span>
|
||||
</div>
|
||||
<table class="w-full data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th>판매수량</th>
|
||||
<th>반품수량</th>
|
||||
<th>순판매</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-right">
|
||||
<?php foreach ($sales as $row): ?>
|
||||
<tr>
|
||||
<td class="text-center font-mono"><?= esc($row->bs_bag_code) ?></td>
|
||||
<td class="text-left pl-2"><?= esc($row->bs_bag_name) ?></td>
|
||||
<td><?= number_format((int) $row->sale_qty) ?></td>
|
||||
<td><?= number_format((int) $row->return_qty) ?></td>
|
||||
<td class="font-bold"><?= number_format((int) $row->sale_qty - (int) $row->return_qty) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php if (empty($sales)): ?>
|
||||
<tr><td colspan="5" class="text-center text-gray-400 py-4">데이터가 없습니다.</td></tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 기간 불출 -->
|
||||
<div class="border border-gray-300 rounded overflow-auto">
|
||||
<div class="bg-gray-100 border-b border-gray-300 px-3 py-1.5">
|
||||
<span class="text-sm font-bold text-gray-700">기간 불출</span>
|
||||
</div>
|
||||
<table class="w-full data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th>불출수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-right">
|
||||
<?php foreach ($issues as $row): ?>
|
||||
<tr>
|
||||
<td class="text-center font-mono"><?= esc($row->bi2_bag_code) ?></td>
|
||||
<td class="text-left pl-2"><?= esc($row->bi2_bag_name) ?></td>
|
||||
<td><?= number_format((int) $row->issue_qty) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php if (empty($issues)): ?>
|
||||
<tr><td colspan="3" class="text-center text-gray-400 py-4">데이터가 없습니다.</td></tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user