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

import com.brilliance.isc.bo.Fep;
import com.brilliance.isc.common.setfeg.fee.FeeSet;
import com.brilliance.isc.common.setfeg.vo.SetfegVo;
import com.brilliance.isc.common.setfeg.vo.SetfelVo;
import com.brilliance.isc.common.setmod.vo.SetmodVo;
import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.common.vo.PtsptaVo;
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 SetfegService {


    public void recalcSetfegBog(SetmodVo setfegVo);

    public void recalcSetfegEog(SetmodVo settleVo);

    void calcMacbog(SetfegVo setfegVo);

    void calcMaceog(SetfegVo setfegVo);

    void addFeeData(String feetyp, String feeflg, int feeunt, Date from, Date till);

    void addFeeData(String feetyp, String feeflg, int feeunt, Date from, Date till, String addinf);

    void addTrnFee(String id, String feetyp, String feeflg, int feeunt, Date from, Date till, BigDecimal rate, BigDecimal basamt, String cdtoldflg, String addinf);

    void clearFeeSet();

    FeeSet getFeeSet();

    Fep setwrkfep(SetfelVo setfelVo, List<PtsptaVo> ptsList, BizInfoVo rec, String trninr);

    void getrolandptxinr(SetmodVo setmodVo, Argument<String> argRol, Argument<String> ptyinr, Argument<String> ptainr, String chato, String argFeeRol);

    String swiftGetERIfee(SetfegVo setfeg, String rol, String dsp, String fldcur);

    void getCurFeeRolbyDsp(List<SetfelVo> setfelVos, String rol, String dsp, Argument<String> cur, Argument<BigDecimal> amt);

    void setDspPolDft(SetfegVo setfegVo, String argDspPolDft, String argDisableFlag);

    Date getLatestFepDate(String argFeeCod, SetmodVo setmodVo, int idx);

    String setfegAddCbsAmt(String modId, String argRol, String argCur, BigDecimal argAmt, String argExtId, String argCbc, String argObjpath, Date argbegDat);

    void setfegClrCbsAmt(String modId);

    IStream getAvbfeecod(String transName, String etgGrp);

    List<CodetableItem> getAvbfeecod(String transName);

    void remTrnFeeGroup(String key);

    BigDecimal getFeeSum(String argrol, SetfegVo setfegVo);
}
