package com.sckw.order.api.dubbo;

import com.sckw.core.web.response.HttpResult;
import com.sckw.order.api.model.*;

/**
 * @desc: 贸易订单信息相关dubbo
 * @author: yzc
 * @date: 2023-07-18 18:18
 */
public interface TradeOrderInfoService {

    /**
     * @desc: 获取订单详情
     * @author: yzc
     * @date: 2023-07-18 18:25
     * @Param tOrderId:
     * @return: com.sckw.order.api.model.OrderDetailRes
     */
    OrderDetailRes getOrderDetailById(Long tOrderId);

    /**
     * @desc: 更新订单状态
     * @author: yzc
     * @date: 2023-07-18 18:31
     * @Param param:
     * @return: void
     */
    void updateOrderStatus(UpdateOrderStatusParam param);

    /**
     * @desc: 生成或撤销物流订单
     * @author: yzc
     * @date: 2023-08-03 10:57
     * @Param param:
     * @return: com.sckw.core.web.response.HttpResult
     */
    HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param);

    /**
     * @desc: 完结物流订单
     * @author: yzc
     * @date: 2023-08-03 11:11
     * @Param param:
     * @return: com.sckw.core.web.response.HttpResult
     */
    HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param);

    /**
     * @desc: 更新订单实际交付量
     * @author: yzc
     * @date: 2023-09-19 15:20
     * @Param param:
     * @return: com.sckw.core.web.response.HttpResult
     */
    HttpResult updateActualAmount(UpdateActualAmountParam param);

    /**
     * @desc: 合同签约完成
     * @author: yzc
     * @date: 2023-07-20 11:42
     * @Param param:
     * @return: void
     */
    void contractSignCompleted(ContractSignCompletedParam param);

    /**
     * @desc: 更新订单是否关联对账单
     * @author: yzc
     * @date: 2023-08-09 14:24
     * @Param param:
     * @return: void
     */
    void updateAssociateStatement(UpdateAssociateStatementParam param);

    /**
     * @desc: 是否关联企业  true是，false否
     * @author: yzc
     * @date: 2023-08-30 9:08
     * @Param firstEntId:
     * @Param secondEntId:
     * @return: java.lang.Boolean
     */
    Boolean associateEnt(Long firstEntId,Long secondEntId);
}
