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

import com.brilliance.isc.bo.Bopcod;
import com.brilliance.isc.bo.Spt;
import com.brilliance.isc.bo.Trn;
import com.brilliance.isc.common.txfmod.vo.TxfmodVo;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.brilliance.mda.runtime.mda.impl.Argument;

import java.util.List;

public interface TxfmodService {


    void assertTxfmod(TxfmodVo txfmodVo,String transName,String payeecountcode,String trntyp,String pntinr,String stacty,
                      String countrycod,String hndtyp,String szflg,List<PtsptaVo> ptsList);

    /**
     * 提交核验按钮事件
     * @param txfmodVo
     */
    TxfmodVo subtxf(TxfmodVo txfmodVo);


    /**
     * 业务受理按钮事件
     * @param txfmodVo
     */
    TxfmodVo busacp(TxfmodVo txfmodVo);

    /**
     * 付汇取消
     * @param txfmodVo
     */
    void calpay(TxfmodVo txfmodVo);

    String getVerifiedCtryCode(TxfmodVo txfmodVo);

    String getVerifiedPtyinr(TxfmodVo txfmodVo);

    boolean isAmtAvailable(TxfmodVo txfmodVo);

    boolean getCtryCodeByName(String ctryNm, Argument<String> ctryCod);

    // 是否进行税务备案信息核验
    TxfmodVo checkYesOrNo(TxfmodVo txfmodVo);

    // 经办业务时进行新增或更新操作
    void savtxf(TxfmodVo txfmodVo, String trninr, String rptno);

    // 复核业务后进行付汇确认操作（不影响复核业务）
    void updatetxf(Trn trn, String rptno);

    // 经办后退回，在经办夹点击删除按钮，提示“该业务有备案表信息，请后续TAKE交易后，在汇出汇款交易中先进行“付汇取消”操作！”
    void deltxf(Spt spt);

    List<Bopcod> selectBopcod();

}
