package com.czg.print;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 日结单
 *
 * @author ww
 */
@Data
@Accessors(chain = true)
public class DaySettlePrintDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 店铺名称
     */
    private String shopName;

    /**
     * 操作人
     */
    private String operator;

    /**
     * 统计时间
     */
    private String statisticsTime;

    /**
     * 营业统计
     */
    private BusinessSts turnover;
    /**
     * 收款构成
     */
    private Income income;

    /**
     * 优惠统计
     */
    private DiscountSts discountSta;

    /**
     * 敏感操作记录
     * 退单/退菜/折扣/未结款
     * 退单：仅统计整单退款（订单全额退款）的数据
     * 退菜：仅统计单菜品退款的数据
     * 折扣：使用任一折扣的订单数量和折扣金额
     * 未结款：当天有待支付订单的数量和应付金额
     */
    private List<OperationRecord> operationRecords;

    /**
     * 营业统计
     */
    @Data
    @Accessors(chain = true)
    public static class BusinessSts {
        /**
         * 订单原价总额
         */
        private BigDecimal originAmount;
        /**
         * 营业额
         */
        private BigDecimal turnover;
        /**
         * 优惠金额
         */
        private BigDecimal discountAmount;
        /**
         * 订单总数
         */
        private Long orderCount;
        /**
         * 退款订单数
         */
        private Long refundOrderCount;
        /**
         * 退款金额
         */
        private BigDecimal refundAmount;

        /**
         * 现金收款
         */
        private BigDecimal cash;
        /**
         * 备用金
         */
        private BigDecimal reserve;
        /**
         * 钱箱剩余
         */
        private BigDecimal cashBoxRemaining;
    }


    /**
     * 收入统计类
     */
    @Data
    @Accessors(chain = true)
    public static class Income {
        /**
         * 现金收款
         */
        private BigDecimal cash;
        /**
         * 微信支付金额
         */
        private BigDecimal wechat;
        /**
         * 支付宝支付金额
         */
        private BigDecimal alipay;
        /**
         * 团购
         */
        private BigDecimal group;
    }

    /**
     * 优惠统计 类
     */
    @Data
    @Accessors(chain = true)
    public static class DiscountSts {
        /**
         * 新客立减
         */
        private BigDecimal newConsumerDiscount;

        /**
         * 霸王餐
         */
        private BigDecimal freeCashAmount;

        /**
         * 满减活动
         */
        private BigDecimal fullMinusAmount;

        /**
         * 优惠券
         */
        private BigDecimal couponAmount;

        /**
         * 会员折扣
         */
        private BigDecimal memberDiscount;

        /**
         * 积分抵扣金额
         */
        private BigDecimal pointsDiscountAmount;

        /**
         * 订单改价
         */
        private BigDecimal orderDiscount;
    }

    /**
     * 敏感操作记录
     */
    @Data
    @Accessors(chain = true)
    public static class OperationRecord {

        /**
         * 操作类型
         */
        private String operation;

        /**
         * 数量
         */
        private Long count;

        /**
         * 金额
         */
        private BigDecimal amount;
    }
}
