using CashLineERP.Contracts.Sales;

namespace CashLineERP.Application.Sales;

public interface IDispatchOrderService
{
    IReadOnlyCollection<DispatchOrderResponse> GetDispatchOrders();

    DispatchOrderResponse? GetDispatchOrder(long dispatchOrderId);

    DispatchOrderResponse CreateDispatchOrder(CreateDispatchOrderRequest request);

    DispatchOrderResponse PostDispatchOrder(long dispatchOrderId, PostDispatchOrderRequest request);

    DispatchOrderResponse RecordProofOfDelivery(long dispatchOrderId, long actorUserId, RecordProofOfDeliveryRequest request);

    DispatchOrderResponse RecordDeliveryException(long dispatchOrderId, long actorUserId, RecordDeliveryExceptionRequest request);

    DispatchOrderResponse RecoverFailedDelivery(long dispatchOrderId, long actorUserId, RecoverFailedDeliveryRequest request);
}
