package com.jianshui.invoiceall.service;


import com.alibaba.fastjson.JSONObject;
import com.jianshui.common.core.domain.AjaxResult;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.invoiceall.domain.dto.*;
import org.yaml.snakeyaml.extensions.compactnotation.CompactConstructor;

/**
 * 发票认证抽象类
 */
public interface IInvoiceAll {


    /**
     * 用户登记
     *
     * @return
     */
    AjaxResult registration(Companyservice companyservice, InvoiceAllYhdjDTO invoiceAllYhdjDTO);


    /**
     * 通用查询接口
     *
     * @param companyservice
     * @param invoiceAllYhdjDTO
     * @return
     */
    AjaxResult generalQuery(Companyservice companyservice, InvoiceAllQueryDTO invoiceAllYhdjDTO);


    /**
     * 全电发票文件获取
     *
     * @param companyservice
     * @param invoiceAllFileAcquisitionDTO
     * @return
     */
    AjaxResult getFileUrl(Companyservice companyservice, InvoiceAllFileAcquisitionDTO invoiceAllFileAcquisitionDTO);


    /**
     * 蓝字发票开具
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult addInvoice(Companyservice companyservice, JSONObject requestBody);

    /**
     * 获取人脸二维码
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult qrcode(Companyservice companyservice, JSONObject requestBody);

    /**
     * 单张发票查询
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult query(Companyservice companyservice, JSONObject requestBody);

    /**
     * 获取发票打印XML
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult getPrintXML(Companyservice companyservice, JSONObject requestBody);


    /**
     * 红字发票开具
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult addRedInvoice(Companyservice companyservice, JSONObject requestBody);


    /**
     * 蓝字发票统计
     *
     * @param companyservice
     * @param requestBody
     * @return
     */
    AjaxResult invoiceStatic(Companyservice companyservice, JSONObject requestBody);

    /**
     * 快速红冲
     * @param companyservice
     * @param invoiceAllKshcDTO
     * @return
     */
    AjaxResult issueFastRedInvoice(Companyservice companyservice, InvoiceAllKshcDTO invoiceAllKshcDTO);

    /**
     * 申请红字信息表
     * @param companyservice
     * @param invoiceAllKshcDTO
     * @return
     */
    AjaxResult uploadRedInfo(Companyservice companyservice, InvoiceAllSqhzDTO invoiceAllKshcDTO);

    /**
     * 查询红字信息表
     * @param companyservice
     * @param invoiceAllCxhzDTO
     * @return
     */
    AjaxResult queryRedInfo(Companyservice companyservice, InvoiceAllCxhzDTO invoiceAllCxhzDTO);

    /**
     * 审核红字信息表
     * @param companyservice
     * @param invoiceAllShhzDTO
     * @return
     */
    AjaxResult auditRedInfo(Companyservice companyservice, InvoiceAllShhzDTO invoiceAllShhzDTO);


    /**
     * 全电发票文件获取
     * @param companyservice
     * @param invoiceAllFileAcquisitionDTO
     * @return
     */
    AjaxResult getFileAcquisitionOn(Companyservice companyservice, InvoiceAllFileAcquisitionOnDTO invoiceAllFileAcquisitionDTO);


    /**
     * 查询红字信息表明细
     * @param companyservice
     * @param invoiceAllRedInvoiceDetailDTO
     * @return
     */
    AjaxResult queryRedInfoDetail(Companyservice companyservice, InvoiceAllRedInvoiceDetailDTO invoiceAllRedInvoiceDetailDTO);












}
