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

import com.brilliance.isc.bo.Ord;
import com.brilliance.isc.bo.Smh;
import com.brilliance.isc.bo.Spt;
import com.brilliance.isc.bo.Trn;
import com.brilliance.isc.common.liaccv.vo.FcdgrpVo;
import com.brilliance.isc.common.setgll.vo.SetgllVo;
import com.brilliance.isc.common.transaction.vo.BaseTransactionVo;
import com.brilliance.isc.common.transaction.vo.BimdataVo;
import com.brilliance.isc.common.trnmod.vo.TrnmodVo;
import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.common.vo.PtsptaVo;
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;
import java.util.Map;

public interface TrnmodService {

    void sigWrite(String argFlg, Object argObj, String argSigIdx);

    void troLockContractForCBSOnly(FcdgrpVo fcdgrp);

    void trnmodCancel(Trn trn, String argStopText, String argCanTyp);

    void trnStoreFinal(TrnmodVo trnmod);

    void internalTrnmodCancel(Trn trn, String argStopText, String argCanTyp);

    void setTrnTxt(TrnmodVo trnmod);

    void updateChlrpt(Trn trn, Smh smh);

    void troCommit(Trn trn, IStream trorescon);

    void trnQUECreate(Trn trn, Ord ord, String relusr, String objsubid);

    void troStoreInBimForUndo(TrnmodVo trnmod, Object argObj, String argUndoStaOnly);

    void autoRegistration(TrnmodVo trnmod, Object argObj, String argfrm, String argtxt);

    String tcoCreateHeaderAll(String mod, String msgMT, String tags);

    void trnORDSetSPTAUT(TrnmodVo trnmod, Spt sptaut);

    void trnORDBreak(Spt spt, String objName);

    void trnORDBreak(Spt spt, String objName,BaseTransactionVo storeObj);

    void trnORDCreate(TrnmodVo trnmodVo, Spt spt, String objName, BaseTransactionVo storeObj);

    void trnSetFromContract(TrnmodVo trnmodVo);

    /**
     * 从trorescon流中获取objTyp是否是PTE，不是就放到argStm流的第一条
     * @param argStm
     * @param trorescon
     */
    void getStreamOfAllObj(IStream argStm, IStream trorescon);

    void smhUpdate(TrnmodVo trnmodVo);

    void setWfsRelease(TrnmodVo trnmodVo);

    void setWfsAmount(TrnmodVo trnmodVo);

    void setWfsAmount(Trn trn);

    void cbsTrnStoreCur(String cbt, String extid, Date dat, String cur, BigDecimal amt, String nam, Object obj, String trninr);

    void cbsTrnStore(String cbt, String extid, Date dat, String cur, BigDecimal amt, String nam, Object obj, String trninr);

    @Deprecated
    void trnStoreContract(Object rec, Object blk);

    void trnStoreContract(Object objgrp);

    void init200(TrnmodVo trnmod);

    void initTrndocAndTrninr(TrnmodVo trnmod);

    void ordLockForTRN(TrnmodVo trnmod);

    Date calcTargetDate(Date argRefDat, BigDecimal argNbr, String argPer);

    Map<String, String> characterZ(String argField, String resultKey);

    void troAddToLocktable(IStream lcktblstm,Object obj, int argStatusFlag);
	
    boolean isRamSptLoaded(String sptSta,String smhinr);

    void troLockExistingContract(TrnmodVo trnmodVo,Object obj);

    void storeTrndata(TrnmodVo trnmod,Object obj);

    void storeBimdata(TrnmodVo trnmod,Object obj);

    void rollBackByBimdata(Trn trn);

    boolean conCheck();

    void initBimdata();

    BimdataVo getBimdataVo(BimdataVo bimdataVo, String objinr);

    void east7759(BizInfoVo bizInfoVo, List<PtsptaVo> ptsList, List<SetgllVo> setgllVos, Argument<String> oppacc, Argument<String> oppnam, Argument<String> oppbnk);

    void getCommonGroupMt(Argument<String> argMT);

    String checkSWTCode(String value, boolean argCodeMandatory,String argTag,String argMT,boolean argErrFlg,String argCur, int rowLength, int lineLength);
}
