package com.brilliance.isc.common.fecism.service;

import com.brilliance.isc.common.fecism.vo.CalcFeeRequest;
import com.brilliance.isc.common.fecism.vo.CalcFeeResponse;
import com.brilliance.isc.common.irtcal.vo.IrtcalVo;
import com.brilliance.isc.common.setfeg.vo.SetfelVo;
import com.brilliance.isc.common.setmod.vo.SetmodVo;
import com.brilliance.isc.common.vo.FecVo;
import com.brilliance.mda.runtime.mda.IStream;
import com.brilliance.mda.runtime.mda.impl.Argument;

import java.math.BigDecimal;
import java.util.Date;

public interface FecismService {

    BigDecimal getMinimum(BigDecimal val1, BigDecimal val2);

/*WD 不再使用
    void setMoreDetails(IrtcalVo irtcal, IStream stm);
*/

    BigDecimal clcFecIrtcal(SetfelVo line, IrtcalVo irtcal, SetmodVo setmod, String relcur, BigDecimal relamt, String feecur, Date refdat);

    void clcFecAmt(SetfelVo line, SetmodVo setmod, Argument<String> relcur, BigDecimal relamt, String feecur);

    CalcFeeResponse clcFecAmt(CalcFeeRequest request);

    void setIrtcal(SetfelVo line, SetmodVo setmod, IrtcalVo irtcal, String relcur, Date argmindat, Date begdat, Date enddat, boolean wthChgFlg);

    void setIrtcalBasics(SetfelVo line, IrtcalVo irtcal, String relcur, Date argmindat, Date begdat, Date enddat, boolean wthChgFlg);

    BigDecimal clcFec_P(SetfelVo line, String relcur, BigDecimal relamt, String feecur);

    void setDat2FromPerflg(String argPerflg, String argPerTyp, Date argdat1, Argument<Date> argdat2, Date argdat2dft, Date maxdat);

    BigDecimal fecIsmAmtConv(SetfelVo line, String fromCur, BigDecimal amt, String toCur, Date value);

    BigDecimal fecIsmAmtConv(Argument<String> inftxt, String fromCur, BigDecimal amt, String toCur, Date value);

    BigDecimal clcFec_M(SetfelVo line, SetmodVo setmod, String relcur, BigDecimal relamt, String feecur);

    String getfeetxtinf(String feecod, String allcalflg, FecVo fecuse, String feetxt, BigDecimal rat, int unt, Date dat1, Date dat2, IStream detstm);
}
