package com.jsowell.pile.service;

import com.jsowell.pile.domain.OrderInvoiceRecord;
import com.jsowell.pile.dto.GetInvoiceInfoDTO;
import com.jsowell.pile.dto.QueryInvoiceRecordDTO;
import com.jsowell.pile.vo.web.InvoiceRecordVO;
import com.jsowell.pile.vo.web.OrderInvoiceRecordVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 申请开票Service接口
 *
 * @author jsowell
 * @date 2023-04-10
 */
public interface OrderInvoiceRecordService {
	/**
	 * 查询申请开票
	 *
	 * @param id 申请开票主键
	 * @return 申请开票
	 */
	OrderInvoiceRecordVO selectOrderInvoiceRecordById(Integer id);

	InvoiceRecordVO selectInvoiceTitleVO(Integer id);

	/**
	 * 查询申请开票列表
	 *
	 * @param orderInvoiceRecord 申请开票
	 * @return 申请开票集合
	 */
	List<OrderInvoiceRecord> selectOrderInvoiceRecordList(OrderInvoiceRecord orderInvoiceRecord);

	/**
	 *	查询申请开票列表(带权限校验)
	 * @param dto
	 * @return
	 */
	List<OrderInvoiceRecordVO> getInvoiceListWithAuth(GetInvoiceInfoDTO dto);

	List<OrderInvoiceRecord> selectInvoiceRecordList(QueryInvoiceRecordDTO memberId);

	List<OrderInvoiceRecordVO> selectInvoiceVOList(QueryInvoiceRecordDTO memberId);

	List<OrderInvoiceRecord> selectInvoiceRecordList(String memberId, LocalDateTime startTime, LocalDateTime endTime);

	/**
	 * 新增申请开票
	 *
	 * @param orderInvoiceRecord 申请开票
	 * @return 结果
	 */
	public int insertOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord);

	/**
	 * 修改申请开票
	 *
	 * @param orderInvoiceRecord 申请开票
	 * @return 结果
	 */
	public int updateOrderInvoiceRecord(OrderInvoiceRecord orderInvoiceRecord);

	/**
	 * 批量删除申请开票
	 *
	 * @param ids 需要删除的申请开票主键集合
	 * @return 结果
	 */
	public int deleteOrderInvoiceRecordByIds(Integer[] ids);

	/**
	 * 删除申请开票信息
	 *
	 * @param id 申请开票主键
	 * @return 结果
	 */
	public int deleteOrderInvoiceRecordById(Integer id);
}
