package cn.superdesk.uniorder.service.invoice.customer.state;

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.singleBilling.SzhtxxInvoiceFptxxOpSingleBillingForm;
import cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.common.singleSelect.SzhtxxInvoiceFptxxOpSingleSelectForm;
import cn.superdesk.uniorder.dto.vo.thirdpart.szhtxx.electronicInvoice.SzhtxxElectronicInvoiceFptxxListItemVo;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID17SingleSelect.SID17SingleSelectRequestBody;
import cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID1SingleBilling.SID1SingleBillingRequestBody;

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 2022/4/26 10:11 上午
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022/4/26 10:11 上午
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface InvoiceApplyCustomerFieldMakeInvoiceStatusOpOngoingSzhtxxPaperInvoiceService {

    SysNotify submitAndRecord(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**************************************** 纸质专用发票-深圳航信纸质发票 start ****************************************/

    /**
     * #积分结算->发票申请管理->发起开票#
     * op发起开票 确认发起(程序不在此) 产生能给前端直接请求的数据
     *
     * @param form
     * @param entity
     * @param loginSysUser
     * @return
     */
    SID1SingleBillingRequestBody opOngoingInvoiceTypeEq2InvoiceModeEqSzhtxxPaperInvoiceRequest(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            InvoiceApply entity,
            LoginSysUser loginSysUser);


    /**
     * #积分结算->金税盘发票->红冲发票#
     * op红冲发票 确认发起(程序不在此)
     *
     * @param form
     * @param fptxxListItemVo
     * @param entity
     * @param loginSysUser
     * @return
     */
    SID1SingleBillingRequestBody opOngoingInvoiceTypeEq2InvoiceModeEqSzhtxxPaperInvoiceRedWriteRequest(
            SzhtxxInvoiceFptxxOpSingleBillingForm form,
            SzhtxxElectronicInvoiceFptxxListItemVo fptxxListItemVo,
            InvoiceApply entity,
            LoginSysUser loginSysUser);


    /**
     * #积分结算->发票申请管理->确认开票#
     * 产生能给前端直接请求的数据
     *
     * @param form
     * @param entity
     * @param loginSysUser
     * @return
     */
    SID17SingleSelectRequestBody opCompleteInvoiceTypeEq2InvoiceModeEqSzhtxxPaperInvoiceRequest(
            SzhtxxInvoiceFptxxOpSingleSelectForm form,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**
     * #积分结算->发票申请管理->确认开票#
     *
     * @param form
     * @param entity
     * @param loginSysUser
     * @return
     */
    SysNotify opCompleteInvoiceTypeEq2InvoiceModeEqSzhtxxPaperInvoiceResponse(
            SzhtxxInvoiceFptxxOpSingleSelectForm form,
            InvoiceApply entity,
            LoginSysUser loginSysUser);

    /**************************************** 纸质专用发票-深圳航信纸质发票   end ****************************************/
}
