| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- @page "{id:int}"
- @model Admin.Pages.Store.Settlement.DetailModel
- @using Domain.Entities.Store.ValueObject
- @{
- ViewData["Title"] = "정산 상세";
- }
- <div class="container-fluid">
- <h3>@ViewData["Title"]</h3>
- <hr />
- <partial name="_StatusMessage" />
- @if (Model.Data is null)
- {
- <div class="alert alert-danger">정산 정보를 불러올 수 없습니다.</div>
- }
- else
- {
- var d = Model.Data;
- var platformRate = 100m - d.GameCommissionRate;
- <div class="card mb-3">
- <div class="card-header"><strong>정산 기본 정보</strong></div>
- <div class="card-body">
- <dl class="row mb-0">
- <dt class="col-sm-2">게임</dt>
- <dd class="col-sm-4"><strong>@d.GameName</strong> <small class="text-muted">(@d.GamePublisher)</small></dd>
- <dt class="col-sm-2">정산월</dt>
- <dd class="col-sm-4">@d.Year.@(d.Month.ToString("00"))</dd>
- <dt class="col-sm-2">매출(게임사 몫)</dt>
- <dd class="col-sm-4"><strong>@d.TotalRevenueAmount.ToString("N0") P</strong></dd>
- <dt class="col-sm-2">주문 건수</dt>
- <dd class="col-sm-4">@d.OrderCount.ToString("N0")건</dd>
- <dt class="col-sm-2">수익률(게임사/antooza)</dt>
- <dd class="col-sm-4">
- @d.GameCommissionRate.ToString("0.##")% / @platformRate.ToString("0.##")%
- <br /><small class="text-muted">* 채널 보상률은 주문별 채널 선택에 따라 다름 (Channel.StoreCommissionRate)</small>
- </dd>
- <dt class="col-sm-2">상태</dt>
- <dd class="col-sm-4">
- @if (d.Status == GameSettlementStatus.Pending)
- {
- <span class="badge bg-warning text-dark">@Admin.Pages.Store.Settlement.IndexModel.StatusToText(d.Status)</span>
- }
- else
- {
- <span class="badge bg-success">@Admin.Pages.Store.Settlement.IndexModel.StatusToText(d.Status)</span>
- }
- </dd>
- <dt class="col-sm-2">등록 일시</dt>
- <dd class="col-sm-4">@d.CreatedAt.ToString("yyyy-MM-dd HH:mm")</dd>
- <dt class="col-sm-2">처리 일시</dt>
- <dd class="col-sm-4">@(d.SettledAt?.ToString("yyyy-MM-dd HH:mm") ?? "-")</dd>
- <dt class="col-sm-2">처리 관리자</dt>
- <dd class="col-sm-10">@(d.SettledByAdminEmail ?? "-")</dd>
- </dl>
- </div>
- </div>
- @if (d.Status == GameSettlementStatus.Pending)
- {
- <div class="card mb-3">
- <div class="card-header"><strong>정산 완료 처리</strong></div>
- <div class="card-body">
- <div class="alert alert-info">
- 해당 게임사에 위 금액(<strong>@d.TotalRevenueAmount.ToString("N0") P</strong>)을 송금한 후 [정산 완료로 표시] 버튼을 눌러주세요.
- 한 번 완료 처리하면 되돌릴 수 없습니다.
- </div>
- <form method="post" asp-page-handler="MarkSettled" asp-route-id="@d.ID" accept-charset="utf-8">
- @Html.AntiForgeryToken()
- <div class="row mb-2">
- <label asp-for="Input.AdminMemo" class="col-sm-2 col-form-label">관리자 메모</label>
- <div class="col-sm-10">
- <textarea asp-for="Input.AdminMemo" class="form-control" rows="3" maxlength="500" placeholder="송금 일시, 송금 계좌, 영수증 번호 등 (최대 500자)"></textarea>
- <span asp-validation-for="Input.AdminMemo" class="text-danger"></span>
- </div>
- </div>
- <div class="text-end">
- <button type="submit" class="btn btn-success" onclick="return confirm('정산 완료로 처리하시겠습니까? 한 번 처리하면 되돌릴 수 없습니다.');">
- 정산 완료로 표시
- </button>
- </div>
- </form>
- </div>
- </div>
- }
- else
- {
- <div class="card mb-3">
- <div class="card-header"><strong>관리자 메모</strong></div>
- <div class="card-body">
- <pre class="mb-0">@(string.IsNullOrWhiteSpace(d.AdminMemo) ? "-" : d.AdminMemo)</pre>
- </div>
- </div>
- }
- <div class="d-flex justify-content-end gap-2">
- <a class="btn btn-secondary" asp-page="/Store/Settlement/Index">목록</a>
- </div>
- }
- </div>
|