package com.jianshui.invoice.service;


import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.common.exception.jianshui.JianshuiParamErrorException;
import com.jianshui.invoice.domain.BillInfo;
import com.jianshui.invoice.domain.Invoice;
import com.jianshui.invoice.domain.Redinfo;
import com.jianshui.invoice.domain.dto.HXResponse;

/**
 * 出口报文服务类
 */
public interface IInvoiceResponseService {

    /**
     * 通用返回
     *
     * @param result
     * @param companyservice
     * @param src
     * @return
     */
    public Object response(HXResponse result, Companyservice companyservice, String src);


    /**
     * 异常返回
     *
     * @param result
     * @param companyservice
     * @return
     */
    public Object response(JianshuiParamErrorException result, Companyservice companyservice);

    /**
     * 回调处理接口
     *
     * @param billInfo
     * @param invoice
     * @param companyservice
     * @param src            操作来源，add 发票开具，
     * @return 当需要重新投入队列回调的时候，code错误码为501
     */
    public AjaxResult callback(BillInfo billInfo, Invoice invoice, Redinfo redinfo, Companyservice companyservice, String src);

}
