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

import com.brilliance.isc.bo.Cur;
import com.brilliance.isc.bo.Xrt;
import com.brilliance.isc.bo.Zmqxrt;
import com.brilliance.mda.runtime.mda.CodetableItem;
import com.brilliance.mda.runtime.mda.IStream;
import com.brilliance.mda.runtime.mda.impl.Argument;

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

public interface XrtmodService {
    BigDecimal amtRnd(BigDecimal argAmt, String argCur);

    String sysiso();

    BigDecimal basCurEqu(String fromCur, BigDecimal amt, Date value);

    BigDecimal amtRndUnt(BigDecimal argAmt, String argCur);

    BigDecimal amtConvTypesWithCrossrateForFee(String fromCur, BigDecimal amt, String fromTyp, String toCur, String toTyp, Date value, Argument<BigDecimal> crossRate);

    BigDecimal amtConvTypesWithCrossrate(String fromCur, BigDecimal amt, String fromTyp, String toCur, String toTyp, Date value, Argument<BigDecimal> crossRate);

    BigDecimal amtConvTypes(String fromCur, BigDecimal amt, String fromTyp, String toCur, String toTyp, Date value);

    Cur getCurByCode(String argCur);

    BigDecimal sysCurEqu(String fromCur, BigDecimal amt, Date value);

    boolean isCurrentXrtAvailable(IStream argCurStm, Date argDat);

    String basRatCur();

    void getXrt(String argCur, Date value, Cur curRec, Xrt xrtRec);

    void getzmqXrt(String argCur, Date value, Cur curRec, Zmqxrt xrtRec);

    int getXrtratdir();

    String getCurNewCur(String curCod);

    BigDecimal getCurGlbRat(String curCod);

    BigDecimal amtViaSysCnv(BigDecimal amt, BigDecimal fromRat, BigDecimal toRat, String fromCur, String toCur);

    void getratCebTim_ZMQ(String fromcur, String tocur, Date value, Argument<String> rmbrat, Argument<BigDecimal> brate, Argument<BigDecimal> srate, Argument<BigDecimal> mrate);

    void xrtCheckInIn(String cur1, String cur2, Argument<String> newCur1, Argument<String> newCur2, Argument<String> refCur, Argument<Boolean> ininFlg);

    boolean xrtCrossRateDirFlg(String cur1, String cur2, BigDecimal rat1, BigDecimal rat2);

    BigDecimal crossRatebas(String fromCur, String toCur);

    BigDecimal getCurMaxAmt(String curCod);

    String calendar();

    void getratCebTim(String fromcur, String tocur, Date value, Argument<String> rmbrat, Argument<BigDecimal> brate, Argument<BigDecimal> srate, Argument<BigDecimal> mrate);

    BigDecimal amtConvRates(BigDecimal amt, BigDecimal fromRat, BigDecimal toRat, String fromCur, String toCur, Argument<String> refCur, Argument<BigDecimal> refAmt);

    void getRateXrt(String argCur, String basCur, boolean ininFlg, String typ, Date value, Argument<BigDecimal> rat, Argument<BigDecimal> sqrRat);

    void getrat(String fromCur, String toCur, String typ, Date value, Argument<BigDecimal> rat, Argument<BigDecimal> sqrRat);

    public BigDecimal amtcnv(BigDecimal amt, BigDecimal rat, String fromcur, String tocur);

    boolean isCurrencyValid(String inCur);

    void xrtCheckRate(BigDecimal argRate, String argCur, Date argValue);

    List<CodetableItem> validCurrencies();

    void getratForENT(String fromCur, String fromTyp, String toCur, String toTyp, Date value, Argument<BigDecimal> rat, Argument<BigDecimal> sqrRat);

    String validCurrencies(Date value);

    //黑龙江版本比上面的多一个参数
    void getratCebTim(String fromcur, String tocur, Date value, Argument<String> rmbrat, Argument<BigDecimal> brate, Argument<BigDecimal> srate, Argument<BigDecimal> mrate, Argument<BigDecimal> cbrate);

}
