49f08f001d
P5-W2 원천세·부가세 분기신고 미커밋분 + P5-W3 메뉴/권한 보강(V74) + P5-W3 본론(V75~V78)을 일괄 정리. - V75 accounting_close / account_balance_snapshot (회계 결산) - V76 retention_anomaly_alert / forecast_kpi_monthly (이상치·예측 KPI) - V77 year_end_statement (연말 지급명세서) - V78 P5-W3 본론 메뉴 4 + 권한 + 공통코드 7그룹 + 테스트데이터 - api: AccountingClose/YearEndStatement/ForecastKpi/RetentionAnomaly Service+Controller - batch: BatchConfig Step 11/12 (원천세·부가세 분기) 연결 - frontend: 4화면(AccountingClose/YearEndStatement/RetentionAnomaly/ForecastKpi) + API 모듈 4 + 라우트 - frontend: usePermission/PermissionButton EXECUTE 권한 누락 보강 - fix: YearEndStatementMapper.xml 미존재 컬럼 a.agent_code 참조 제거 통합검증: Flyway V74~V78 운영DB 적용(v78), 4모듈 compileJava + 프론트 build PASS, 스모크 GET 8/8 + 쓰기 4/4 PASS, verify_v74.py 20/20 PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import api, { unwrap } from './request';
|
|
|
|
export interface YearEndStatementResp extends Record<string, unknown> {
|
|
statementId: number;
|
|
agentId: number;
|
|
agentName?: string;
|
|
agentCode?: string;
|
|
businessNo?: string;
|
|
orgName?: string;
|
|
statementYear: number;
|
|
statementType?: string;
|
|
statementTypeName?: string;
|
|
totalIncome: number;
|
|
totalWithheld: number;
|
|
totalLocalTax: number;
|
|
filePath?: string;
|
|
fileFormat?: string;
|
|
fileStatus?: string;
|
|
fileStatusName?: string;
|
|
generatedAt?: string;
|
|
sentAt?: string;
|
|
sentTo?: string;
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface YearEndStatementSearchParam {
|
|
statementYear?: number;
|
|
agentId?: number;
|
|
orgId?: number;
|
|
fileStatus?: string;
|
|
fileFormat?: string;
|
|
pageNum?: number;
|
|
pageSize?: number;
|
|
}
|
|
|
|
export interface YearEndStatementRegenerateReq {
|
|
statementYear: number;
|
|
agentIds?: number[];
|
|
statementType?: string;
|
|
}
|
|
|
|
export interface YearEndStatementSendReq {
|
|
ids: number[];
|
|
sentTo: string;
|
|
}
|
|
|
|
export const yearEndStatementApi = {
|
|
list: (params?: YearEndStatementSearchParam) =>
|
|
unwrap<{ list: YearEndStatementResp[]; total: number }>(
|
|
api.get('/api/year-end-statements', { params })
|
|
),
|
|
detail: (id: number) =>
|
|
unwrap<YearEndStatementResp>(api.get(`/api/year-end-statements/${id}`)),
|
|
regenerate: (req: YearEndStatementRegenerateReq) =>
|
|
unwrap<number>(api.post('/api/year-end-statements/regenerate', req)),
|
|
generate: (id: number, fileFormat?: string) =>
|
|
unwrap<void>(api.post(`/api/year-end-statements/${id}/generate`, { fileFormat })),
|
|
send: (req: YearEndStatementSendReq) =>
|
|
unwrap<void>(api.put('/api/year-end-statements/send', req)),
|
|
};
|