package com.cool.store.request.close.refund;

import com.cool.store.dto.close.CloseStoreMkUserDTO;
import com.cool.store.entity.CloseStoreRefundInfoDO;
import com.cool.store.entity.StoreDO;
import com.cool.store.enums.master.StoreCloseReasonEnum;
import com.cool.store.request.xgj.XgjReimburseFeeRequest;
import com.cool.store.request.xgj.XgjReimburseRequest;
import com.cool.store.utils.CoolDateUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;

/**
 * <p>
 * 闭店退款更新Request
 * </p>
 *
 * @author wangff
 * @since 2025/10/13
 */
@Data
public class CloseStoreRefundUpdateRequest {
    @ApiModelProperty("退款记录id")
    @NotNull(message = "退款记录id不能为空")
    private Long id;

    @ApiModelProperty("闭店申请id")
    @NotNull(message = "闭店申请id不能为空")
    private Long closeStoreId;

    @ApiModelProperty("公司抬头，字典表close_store_invoice_title")
    @NotBlank(message = "公司抬头")
    private String invoiceTitle;

    @ApiModelProperty("提交人每刻工号")
    private String submitterId;

    @ApiModelProperty("提交人名称")
    private String submitterName;

    @ApiModelProperty("退款事由")
    @NotBlank(message = "退款事由")
    private String refundReason;

    @ApiModelProperty("退款类型，字典表编码close_store_refund_type")
    @NotBlank(message = "退款类型不能为空")
    private String refundType;

    @ApiModelProperty("其他说明")
    private String remark;

    @ApiModelProperty("退款加盟商编码")
    @NotBlank(message = "退款加盟商编码不能为空")
    private String businessCode;

    @ApiModelProperty("退款加盟商名称")
    @NotBlank(message = "退款加盟商名称不能为空")
    private String businessName;

    @ApiModelProperty("费用申请日期")
    @NotNull(message = "费用申请日期不能为空")
    private Date expenseApplyTime;

    @ApiModelProperty("费用类型code，测试环境目前写死'04.006'")
    @NotBlank(message = "费用类型code不能为空")
    private String expenseTypeCode;

    @ApiModelProperty("应退金额")
    @NotNull(message = "应退金额不能为空")
    private BigDecimal expectedAmount;

    @ApiModelProperty("实退金额")
    @NotNull(message = "实退金额不能为空")
    private BigDecimal actualAmount;

    @ApiModelProperty("扣款金额")
    @NotNull(message = "扣款金额不能为空")
    private BigDecimal deductAmount;

    @ApiModelProperty("扣款原因")
    private String deductReason;

    @ApiModelProperty("银行账户")
    @NotBlank(message = "银行账户不能为空")
    private String accountNumber;

    @ApiModelProperty("开户行")
    @NotBlank(message = "开户行不能为空")
    private String bankName;

    @ApiModelProperty("联行号")
    @NotBlank(message = "联行号不能为空")
    private String bankBranchNo;
}
