package com.ga.core.vo.settle;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 세금계산서 발행 이력 VO (tax_invoice 테이블 1:1)
 * INSERT/UPDATE 전용.
 */
@Data
public class TaxInvoiceVO {
    private Long invoiceId;
    private String invoiceNo;              // 발행 번호 (국세청 승인번호)
    private String invoiceType;            // SUPPLY / PURCHASE
    private LocalDate issueDate;           // 발행일
    private BigDecimal supplyAmount;       // 공급가액
    private BigDecimal taxAmount;          // 세액 (공급가 × 10%)
    private BigDecimal totalAmount;        // 합계액 (공급가 + 세액)

    // 거래 상대방
    private String counterpartName;        // 거래 상대방 상호
    private String counterpartBizNo;       // 거래 상대방 사업자번호
    private String counterpartRep;         // 대표자명
    private String counterpartAddr;        // 주소

    // 내부 참조
    private Long agentId;                  // 관련 설계사 (선택)
    private String settleMonth;            // YYYYMM (선택)
    private Long settleId;

    // 발행 메타
    private String description;            // 품목/비고
    private LocalDate cancelDate;          // 취소일 (NULL=유효)
    private String cancelReason;
    private Long issuedBy;                 // 발행 처리자

    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}
