diff --git a/ga-core/src/main/java/com/ga/core/vo/org/AgentResp.java b/ga-core/src/main/java/com/ga/core/vo/org/AgentResp.java index bf78dd8..137050d 100644 --- a/ga-core/src/main/java/com/ga/core/vo/org/AgentResp.java +++ b/ga-core/src/main/java/com/ga/core/vo/org/AgentResp.java @@ -20,6 +20,11 @@ public class AgentResp { private String gradeName; private LocalDate joinDate; private LocalDate leaveDate; + private String taxType; + private String taxTypeName; + private String businessNo; + private String vatType; + private String vatTypeName; private Integer contractCount; private BigDecimal totalCommission; } diff --git a/ga-core/src/main/java/com/ga/core/vo/org/AgentSaveReq.java b/ga-core/src/main/java/com/ga/core/vo/org/AgentSaveReq.java index 0054bfc..eeeec3d 100644 --- a/ga-core/src/main/java/com/ga/core/vo/org/AgentSaveReq.java +++ b/ga-core/src/main/java/com/ga/core/vo/org/AgentSaveReq.java @@ -26,4 +26,13 @@ public class AgentSaveReq { private String bankCode; private String accountNo; private LocalDate joinDate; + + @NotBlank(message = "소득세 유형은 필수입니다") + private String taxType = "BUSINESS_INCOME"; // TaxType + + @Size(max = 20) + private String businessNo; // 사업소득자 시 입력 + + @NotBlank(message = "부가세 유형은 필수입니다") + private String vatType = "NONE"; // VatType } diff --git a/ga-core/src/main/java/com/ga/core/vo/org/AgentVO.java b/ga-core/src/main/java/com/ga/core/vo/org/AgentVO.java index 8587dc5..110e1d0 100644 --- a/ga-core/src/main/java/com/ga/core/vo/org/AgentVO.java +++ b/ga-core/src/main/java/com/ga/core/vo/org/AgentVO.java @@ -20,6 +20,9 @@ public class AgentVO { private String status; private LocalDate joinDate; private LocalDate leaveDate; + private String taxType; // TaxType: BUSINESS_INCOME / OTHER_INCOME + private String businessNo; // 사업자등록번호 (사업소득자) + private String vatType; // VatType: NONE / EXEMPT / TAXABLE private LocalDateTime createdAt; private LocalDateTime updatedAt; } diff --git a/ga-core/src/main/java/com/ga/core/vo/org/TaxType.java b/ga-core/src/main/java/com/ga/core/vo/org/TaxType.java new file mode 100644 index 0000000..2c75b62 --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/org/TaxType.java @@ -0,0 +1,14 @@ +package com.ga.core.vo.org; + +/** + * 소득세 유형 (common_code_group: TAX_TYPE, V23 기준) + * DB agent.tax_type CHECK: BUSINESS_INCOME / OTHER_INCOME + */ +public enum TaxType { + BUSINESS_INCOME, // 사업소득 — 원천징수 3.3% + OTHER_INCOME; // 기타소득 — 원천징수 8.8% + + public String code() { + return this.name(); + } +} diff --git a/ga-core/src/main/java/com/ga/core/vo/org/VatType.java b/ga-core/src/main/java/com/ga/core/vo/org/VatType.java new file mode 100644 index 0000000..c305a26 --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/org/VatType.java @@ -0,0 +1,15 @@ +package com.ga.core.vo.org; + +/** + * 부가세 유형 (common_code_group: VAT_TYPE, V23 기준) + * DB agent.vat_type CHECK: NONE / EXEMPT / TAXABLE + */ +public enum VatType { + NONE, // 미지정 — 부가세 처리 없음 + EXEMPT, // 면세사업자 — 계산서 발행 + TAXABLE; // 일반과세자 — 세금계산서 10% + + public String code() { + return this.name(); + } +} diff --git a/ga-core/src/main/java/com/ga/core/vo/settle/PaymentVO.java b/ga-core/src/main/java/com/ga/core/vo/settle/PaymentVO.java index f5c34fd..2a780e9 100644 --- a/ga-core/src/main/java/com/ga/core/vo/settle/PaymentVO.java +++ b/ga-core/src/main/java/com/ga/core/vo/settle/PaymentVO.java @@ -18,6 +18,10 @@ public class PaymentVO { private String payStatus; // PENDING / SENT / DONE / FAIL private Long transferFileId; private String failReason; + private BigDecimal incomeTaxAmount; // 원천세 + private BigDecimal localTaxAmount; // 지방소득세 + private BigDecimal vatAmount; // 부가세 + private BigDecimal netAmount; // 실수령액 (payAmount - 세금 합계) private LocalDateTime createdAt; private LocalDateTime updatedAt; } diff --git a/ga-core/src/main/resources/mapper/org/AgentMapper.xml b/ga-core/src/main/resources/mapper/org/AgentMapper.xml index 19ecd5a..eba2cbf 100644 --- a/ga-core/src/main/resources/mapper/org/AgentMapper.xml +++ b/ga-core/src/main/resources/mapper/org/AgentMapper.xml @@ -14,11 +14,14 @@ - - - - - + + + + + + + + @@ -32,7 +35,12 @@ (SELECT cc.code_name FROM common_code cc WHERE cc.group_code='AGENT_STATUS' AND cc.code=a.status) AS status_name, a.org_id, o.org_name, a.grade_id, g.grade_name, - a.join_date, a.leave_date + a.join_date, a.leave_date, + a.tax_type, + (SELECT cc.code_name FROM common_code cc WHERE cc.group_code='TAX_TYPE' AND cc.code=a.tax_type) AS tax_type_name, + a.business_no, + a.vat_type, + (SELECT cc.code_name FROM common_code cc WHERE cc.group_code='VAT_TYPE' AND cc.code=a.vat_type) AS vat_type_name