@page "/admin/tax-filings" @attribute [Authorize] @using TaxBaik.Web.Services @using TaxBaik.Domain.Entities @inject ITaxFilingBrowserClient FilingClient @inject IClientBrowserClient ClientClient @inject ISnackbar Snackbar 신고 일정 관리
Tax Schedule 신고 일정 고객별 세금 신고 마감일을 관리하고 완료 처리합니다.
일정 추가
@if (showAddForm) { 새 신고 일정 @foreach (var t in TaxFilingService.FilingTypes) { @t } 저장 취소 } @code { private List pending = []; private List filed = []; private List overdue = []; private bool showAddForm; private Domain.Entities.Client? selectedClient; private string newFilingType = ""; private DateTime? newDueDate = DateTime.Today.AddDays(30); private string newMemo = ""; protected override async Task OnInitializedAsync() => await Reload(); private async Task Reload() { try { var all = (await FilingClient.GetUpcomingAsync(365)).ToList(); pending = all.Where(x => x.Status == "pending").ToList(); filed = all.Where(x => x.Status == "filed").ToList(); overdue = all.Where(x => x.Status == "overdue").ToList(); } catch (Exception ex) { Snackbar.Add($"오류: {ex.Message}", Severity.Error); } } private async Task> SearchClients(string value) { try { var (items, _) = await ClientClient.GetPagedAsync(1, 100, search: value); return items; } catch { return []; } } private static string GetClientDisplayName(Client client) => !string.IsNullOrWhiteSpace(client.CompanyName) ? client.CompanyName : !string.IsNullOrWhiteSpace(client.Name) ? client.Name : $"Client #{client.Id}"; private async Task AddFiling() { try { if (selectedClient == null) { Snackbar.Add("고객을 선택하세요.", Severity.Warning); return; } var filing = new TaxFiling { ClientId = selectedClient.Id, FilingType = newFilingType, DueDate = newDueDate?.ToUniversalTime() ?? DateTime.UtcNow, Status = "pending", Memo = string.IsNullOrWhiteSpace(newMemo) ? null : newMemo }; var result = await FilingClient.CreateAsync(filing); if (result != null) { showAddForm = false; Snackbar.Add("신고 일정이 추가되었습니다.", Severity.Success); await Reload(); } else { Snackbar.Add("추가 실패", Severity.Error); } } catch (Exception ex) { Snackbar.Add($"오류: {ex.Message}", Severity.Error); } } }