package com.trade.client.trade.purchaseorder.service;

import com.trade.common.core.page.GridPage;
import com.trade.service.trade.purchaseorder.dto.PurchaseOrderInvoiceSearchDto;
import com.trade.service.trade.purchaseorder.dto.PurchaseOrderLogisticsDto;
import com.trade.service.trade.purchaseorder.dto.PurchaseOrderLogisticsSearchDto;
import com.trade.service.trade.purchaseorder.dto.PurchaseSearchDto;
import com.trade.service.trade.purchaseorder.vo.*;

import javax.servlet.http.HttpServletRequest;

/**
 * @description: 采购订单服务
 * @Author: wanglang
 * @Date: 2024/9/11 9:49
 * @Version: 1.0
 */
public interface CPurchaseOrderService {

    /**
     * 保存订单物流信息
     * 
     * @param purchaseOrderLogisticsDto
     * @param request 文件信息
     * @return true/false
     */
    Boolean saveOrderLogistics(PurchaseOrderLogisticsDto purchaseOrderLogisticsDto, HttpServletRequest request);

    /**
     * 保存订单物流信息
     * 
     * @param purchaseOrderLogisticsDto
     * @return true/false
     */
    Boolean saveOrderLogistics(PurchaseOrderLogisticsDto purchaseOrderLogisticsDto);

    /**
     * 分页查询采购订单列表
     * 
     * @param purchaseSearch
     * @return GridPage<SalesContractVo>
     */
    GridPage<PurchaseOrderVo> queryListByPage(PurchaseSearchDto purchaseSearch);

    /**
     * 根据id查询订单详情
     *
     * @param id 主键
     * @return 订单详情
     */
    PurchaseOrderDetailsVo getDetailsById(Long id);

    /**
     * 分页查询订单物流信息
     *
     * @param orderLogisticsSearch
     * @return GridPage<PurchaseOrderLogisticsPageVo>
     */
    GridPage<PurchaseOrderLogisticsPageVo> queryOrderLogisticsByPage(
            PurchaseOrderLogisticsSearchDto orderLogisticsSearch);

    /**
     * 分页查询采购订单发票列表
     *
     * @param purchaseOrderInvoiceSearchDto
     * @return GridPage<PurchaseOrderInvoiceVo>
     */
    GridPage<PurchaseOrderInvoiceVo> queryInvoiceListByPage(
            PurchaseOrderInvoiceSearchDto purchaseOrderInvoiceSearchDto);

    /**
     * 根据id获取发票详情
     *
     * @param InvoiceId 发票id
     * @return 发票详情
     */
    PurchaseOrderInvoiceDetailsVo getInvoiceDetails(Long InvoiceId);
}
