package cn.iocoder.yudao.module.system.dal.dataobject.biz;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 长者费用记录明细 DO
 *
 * @author 管理员
 */
@TableName("elderly_expense_item")
@KeySequence("elderly_expense_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExpenseItemDO {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 长者费用记录ID
     */
    private Long expenseId;
    /**
     * 收费项ID
     */
    @Schema(description = "收费项ID")
    private Long itemId;

    @Schema(description = "收费项分类ID")
    private Long itemCategoryId;

    @Schema(description = "收费项分类名称")
    private String itemCategoryName;

    /**
     * 收费项名称
     */
    @Schema(description = "收费项名称")
    private String itemName;
    /**
     * 金额
     */
    @Schema(description = "金额(原价)")
    private BigDecimal amount;
    /**
     * 实际金额
     */
    @Schema(description = "实际金额")
    private BigDecimal actualAmount;
    /**
     * 是否折扣
     */
    @Schema(description = "是否折扣,0:否 1：是")
    private Integer isDiscount;
    /**
     * 折扣
     */
    @Schema(description = "折扣")
    private String discount;
    /**
     * 是否是月度费用
     */
    @Schema(description = "是否是月度费用，0:否 1：是")
    private Integer isMonthlyExpense;
    /**
     * 是否是一次性费用
     */
    @Schema(description = "是否是一次性费用，0:否 1：是")
    private Integer isOneTimeFee;
    /**
     * 是否是押金及预备金
     */
    @Schema(description = "是否是押金及预备金，0:否 1：是")
    private Integer isDeposit;
    /**
     * 是否赠送，0：否  1：是
     */
    @Schema(description = "是否赠送，0：否  1：是")
    private Integer isFreeGift;

    @Schema(description = "赠送开始时间")
    private Date freeStartTime;

    @Schema(description = "赠送结束时间")
    private Date freeEndTime;

    @Schema(description = "是否分期付款，0：否  1：是")
    private Integer isHirePurchase;

    @Schema(description = "分期付款期数")
    private Integer hirePurchaseNumber;

    @Schema(description = "分期付款每期金额")
    private BigDecimal hirePurchaseAmount;
    /**
     * 数量
     */
    @Schema(description = "数量")
    private Integer count;


    @Schema(description = "单项总价")
    private BigDecimal totalAmount;

    /***
     * 费用具体类型，1：床位费，2：护理费，3：膳食费，7：服务费等
     */
    @Schema(description = "费用具体类型，1：床位费，2：护理费，3：膳食费，7：服务费等")
    private Integer type;

    @Schema(description = "折扣金额")
    private BigDecimal discountAmount;

    private Long tenantId;


    private LocalDate changeStartDate;

    private LocalDate changeEndDate;

    private Integer changeFlag;

    private Date createTime;

    /**
     * 是否按天计算费用
     */
    @Schema(description = "是否按天计算费用，0：否，1：是")
    private Integer isDayCalculate;

}