package com.brilliance.isc.common.bop.cfa.cfabop.service;

import com.brilliance.isc.bo.model.Cfabop;

/**
 * 资本报送试算+存盘组件
 */
public interface CfaReportService {

    /**
     * 业务交易下资本项目数据存储
     */
    void cfaBopSaveData(Cfabop cfabop);

    /**
     * 设定cfa类型
     */
    void setCfaType(String cfaType);

    /**
     * 资本外债报送数据试算
     * @param cfabop
     * @return
     */
    Cfabop cfaMappingData(Cfabop cfabop);


    /**
     * 读取前手交易报送数据 原 CFAGetDataFromXXX
     * @param cfabop
     * @param ownref 业务编号
     * @return
     */
    Cfabop cfaGetPreData(Cfabop cfabop,String ownref);


    /**
     * 资本外债报送数据回退删除数据库数据
     */
    void cfabopRePair(String trninr);

    /**
     *存CFA报送信息 合并了 CFAMAP.CFAStoreContractV 和 EBLMOD.CFAStoreContract
     */
    void storeContract(Cfabop cfabop);

    /**
     * 生成申报号码 原 CFAP.GetReference
     */
    void getReference(Cfabop cfabop);

    /**
     * 校验申报号码 原 CFAP.validReference
     */
    boolean validReference(Cfabop cfabop);

    /**
     * 构建报送需要的业务要素
     */
    // void registerCfabopBizInfo(Cfabop cfabop);

    /**
     * 试算前处理，组件初始化，一些 init 和 default
     * @param cfabop
     */
    void initCfabop(Cfabop cfabop);

}