package cn.superdesk.uniorder.service.thirdpart.szhtxx.paperInvoice;

import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.invoice.customer.InvoiceApply;
import cn.superdesk.uniorder.dao.entity.sys.notify.SysNotify;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.becomeInvalid.SzhtxxInvoiceFptxxOpBecomeInvalidForm;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.redBitchLlq.SzhtxxInvoiceFptxxOpRedLowerWorkLlqForm;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.singleBilling.SzhtxxInvoiceFptxxOpSingleBillingForm;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.taxDeviceInfo.SzhtxxPaperInvoiceOpTaxDeviceInfoForm;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.taxInfo.SzhtxxPaperInvoiceOpTaxInfoForm;
import cn.superdesk.uniorder.dto.vo.thirdpart.szhtxx.electronicInvoice.SzhtxxElectronicInvoiceFptxxListItemVo;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID121TaxInfo.SID121TaxInfoRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID1SingleBilling.SID1SingleBillingRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID20BitchLlq.SID20BitchLlqRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID25TaxDeviceInfo.SID25TaxDeviceInfoRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID4ToInvalid.SID4ToInvalidRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID5SelectBillInfo.SID5SelectBillInfoRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.response.SID25TaxDeviceInfo.SID25TaxDeviceInfoResponseBody;


/**
 * @Description:
 * @Author: linjinyu
 * @Email linjinyu@avic-s.com
 * @CreateDate: 2022-01-24 11:50:43
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022-01-24 11:50:43
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface SzhtxxPaperInvoiceFptxxService {




    /**************************************** 发票申请管理-发起-op发起开票(纸质专用发票)(深圳航信纸质票) start ****************************************/

    /*
     * {@link InvoiceApplyCustomerFieldMakeInvoiceStatusOpOngoingSzhtxxPaperInvoiceServiceImpl}
     */

    /**************************************** 发票申请管理-发起-op发起开票(纸质专用发票)(深圳航信纸质票)   end ****************************************/


    /**************************************** 金税盘页面-发起-op红冲发票(纸质专用发票)(深圳航信纸质票) start ****************************************/

    /**
     * op发起红冲
     *
     * @param form
     * @param fptxxListItemVo
     * @param entity
     * @param loginSysUser
     * @return
     */
    SID1SingleBillingRequestBody opRedWriteRequest(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**
     * op确认红冲 -- 目前逻辑在这 -- // -- 对映 -- SysNotify opRedWrite(SzhtxxInvoiceFptxxOpSingleBillingForm form, SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo, InvoiceApply invoiceApplyEntity, LoginSysUser loginSysUser);
     *
     * @param form
     * @param fptxxListItemVo
     * @param invoiceApplyEntity
     * @param loginSysUser
     * @return
     */
    SysNotify opRedWriteResponse(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply invoiceApplyEntity,
            LoginSysUser loginSysUser);


    /**************************************** 金税盘页面-发起-op红冲发票(纸质专用发票)(深圳航信纸质票) start ****************************************/


    /**************************************** 金税盘页面-发起-op作废发票(纸质专用发票)(深圳航信纸质票) start ****************************************/

    SID4ToInvalidRequestBody opBecomeInvalidRequest(
            SzhtxxInvoiceFptxxOpBecomeInvalidForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    SysNotify opBecomeInvalidResponse(
            SzhtxxInvoiceFptxxOpBecomeInvalidForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**************************************** 金税盘页面-发起-op作废发票(纸质专用发票)(深圳航信纸质票) start ****************************************/


    /**************************************** 金税盘页面-发起-op发票作废状态修复(纸质专用发票)(深圳航信纸质票) start ****************************************/

    SID5SelectBillInfoRequestBody opBecomeInvalidFakeRequest(
            SzhtxxInvoiceFptxxOpBecomeInvalidForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    SysNotify opBecomeInvalidFakeResponse(
            SzhtxxInvoiceFptxxOpBecomeInvalidForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**************************************** 金税盘页面-发起-op发票作废状态修复(纸质专用发票)(深圳航信纸质票)   end ****************************************/


    /**************************************** 金税盘页面-op申请红字信息表编号-op确认申请(纸质专用发票)(深圳航信纸质票) start ****************************************/

    SID20BitchLlqRequestBody opRedBitchLlqRequest(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    SysNotify opRedBitchLlqResponse(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**************************************** 金税盘页面-op申请红字信息表编号-op确认申请(纸质专用发票)(深圳航信纸质票)   end ****************************************/

    /**************************************** 金税盘页面-op下载红字信息表编号-op确认下载(纸质专用发票)(深圳航信纸质票) start ****************************************/

    SID20BitchLlqRequestBody opRedLowerWorkLlqRequest(
            SzhtxxInvoiceFptxxOpRedLowerWorkLlqForm form,
            LoginSysUser loginSysUser);

    SysNotify opRedLowerWorkLlqResponse(
            SzhtxxInvoiceFptxxOpRedLowerWorkLlqForm form,
            LoginSysUser loginSysUser);

    /**************************************** 金税盘页面-op下载红字信息表编号-op确认下载(纸质专用发票)(深圳航信纸质票)   end ****************************************/


    /**************************************** 10. 获取金税盘状态接口 SID=121 start ****************************************/

    SID121TaxInfoRequestBody opCallTaxInfoApiRequest(SzhtxxPaperInvoiceOpTaxInfoForm form, LoginSysUser loginSysUser);

    SysNotify opCallTaxInfoApiResponse(SzhtxxPaperInvoiceOpTaxInfoForm form, LoginSysUser loginSysUser);

    /**************************************** 10. 获取金税盘状态接口 SID=121   end ****************************************/

    /**************************************** 17. 金税设备查询 SID=25 start ****************************************/

    SID25TaxDeviceInfoRequestBody opCallTaxDeviceInfoApiRequest(SzhtxxPaperInvoiceOpTaxDeviceInfoForm form, LoginSysUser loginSysUser);

    SID25TaxDeviceInfoResponseBody opCallTaxDeviceInfoApiResponse(SzhtxxPaperInvoiceOpTaxDeviceInfoForm form, LoginSysUser loginSysUser);

    /**************************************** 17. 金税设备查询 SID=25   end ****************************************/


}
