package com.ecep.contract.util;

import java.time.LocalDate;
import java.time.LocalDateTime;

public class TaxRateUtils {

    /**
     * 13% 一般税率（销售货物）
     */
    public final static int TAX_RATE_GENERAL = 13;
    /**
     * 16% 一般税率（销售货物）,2018 年 5 月 1 日 至 2019 年 4 月 1 日
     */
    public final static int TAX_RATE_GENERAL_OLD = 16;
    /**
     * 17% 一般税率（销售货物）,2018 年 5 月 1 日之前
     */
    public final static int TAX_RATE_GENERAL_OLDEST = 17;
    /**
     * 9% 交通运输服务
     */
    public final static int TAX_RATE_TRANSPORT = 9;
    /**
     * 10% 交通运输服务，2018 年 5 月 1 日 至 2019 年 4 月 1 日
     */
    public final static int TAX_RATE_TRANSPORT_OLD = 10;
    /**
     * 11% 交通运输服务，2018 年 5 月 1 日之前
     */
    public final static int TAX_RATE_TRANSPORT_OLDEST = 11;
    /**
     * 6% 技术服务税率
     */
    public final static int TAX_RATE_TECH = 6;
    /**
     * 3% 小规模纳税人税率
     */
    public final static int TAX_RATE_SMALL_SCALE = 3;


    /**
     * 判断日期是否在税率修改未13%之后
     *
     * @param theDateTime 日期
     * @return 是否在13%之后
     */
    public static boolean isAfterTaxRateChangeTo13(LocalDateTime theDateTime) {
        if (theDateTime == null) {
            return false;
        }
        return isAfterTaxRateChangeTo13(theDateTime.toLocalDate());
    }

    /**
     * 判断日期是否在税率修改未13%之后
     *
     * @param theDate 日期
     * @return 是否在13%之后
     */
    public static boolean isAfterTaxRateChangeTo13(LocalDate theDate) {
        if (theDate == null) {
            return false;
        }
        return theDate.isAfter(LocalDate.of(2019, 4, 1));
    }


    public static double toExclusiveTax(double value, double taxRate) {
        return value / (100 + taxRate) / 100;
    }

    public static double toInclusiveTax(double value, double taxRate) {
        return value * (100 + taxRate) / 100;
    }
}
