using Nop.Core.Domain.Customers; using Nop.Core.Domain.Orders; using Nop.Core.Domain.Shipping; using Nop.Services.Payments; namespace Nop.Services.Orders; /// /// Order processing service interface /// public partial interface IOrderProcessingService { /// /// Checks order status /// /// Order /// A task that represents the asynchronous operation Task CheckOrderStatusAsync(Order order); /// /// Places an order /// /// Process payment request /// /// A task that represents the asynchronous operation /// The task result contains the place order result /// Task PlaceOrderAsync(ProcessPaymentRequest processPaymentRequest); /// /// Update order totals /// /// Parameters for the updating order /// A task that represents the asynchronous operation Task UpdateOrderTotalsAsync(UpdateOrderParameters updateOrderParameters); /// /// Deletes an order /// /// The order /// A task that represents the asynchronous operation Task DeleteOrderAsync(Order order); /// /// Process next recurring payment /// /// Recurring payment /// Process payment result (info about last payment for automatic recurring payments) /// /// A task that represents the asynchronous operation /// The task result contains the collection of errors /// Task> ProcessNextRecurringPaymentAsync(RecurringPayment recurringPayment, ProcessPaymentResult paymentResult = null); /// /// Cancels a recurring payment /// /// Recurring payment /// A task that represents the asynchronous operation Task> CancelRecurringPaymentAsync(RecurringPayment recurringPayment); /// /// Gets a value indicating whether a customer can cancel recurring payment /// /// Customer /// Recurring Payment /// /// A task that represents the asynchronous operation /// The task result contains the value indicating whether a customer can cancel recurring payment /// Task CanCancelRecurringPaymentAsync(Customer customerToValidate, RecurringPayment recurringPayment); /// /// Gets a value indicating whether a customer can retry last failed recurring payment /// /// Customer /// Recurring Payment /// /// A task that represents the asynchronous operation /// The task result contains true if a customer can retry payment; otherwise false /// Task CanRetryLastRecurringPaymentAsync(Customer customer, RecurringPayment recurringPayment); /// /// Send a shipment /// /// Shipment /// True to notify customer /// A task that represents the asynchronous operation Task ShipAsync(Shipment shipment, bool notifyCustomer); /// /// Marks a shipment as ready for pickup /// /// Shipment /// True to notify customer /// A task that represents the asynchronous operation Task ReadyForPickupAsync(Shipment shipment, bool notifyCustomer); /// /// Marks a shipment as delivered /// /// Shipment /// True to notify customer /// A task that represents the asynchronous operation Task DeliverAsync(Shipment shipment, bool notifyCustomer); /// /// Gets a value indicating whether cancel is allowed /// /// Order /// A value indicating whether cancel is allowed bool CanCancelOrder(Order order); /// /// Cancels order /// /// Order /// True to notify customer /// A task that represents the asynchronous operation Task CancelOrderAsync(Order order, bool notifyCustomer); /// /// Gets a value indicating whether order can be marked as authorized /// /// Order /// A value indicating whether order can be marked as authorized bool CanMarkOrderAsAuthorized(Order order); /// /// Marks order as authorized /// /// Order /// A task that represents the asynchronous operation Task MarkAsAuthorizedAsync(Order order); /// /// Gets a value indicating whether capture from admin panel is allowed /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains a value indicating whether capture from admin panel is allowed /// Task CanCaptureAsync(Order order); /// /// Capture an order (from admin panel) /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains a list of errors; empty list if no errors /// Task> CaptureAsync(Order order); /// /// Gets a value indicating whether order can be marked as paid /// /// Order /// A value indicating whether order can be marked as paid bool CanMarkOrderAsPaid(Order order); /// /// Marks order as paid /// /// Order /// A task that represents the asynchronous operation Task MarkOrderAsPaidAsync(Order order); /// /// Gets a value indicating whether refund from admin panel is allowed /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains a value indicating whether refund from admin panel is allowed /// Task CanRefundAsync(Order order); /// /// Refunds an order (from admin panel) /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains a list of errors; empty list if no errors /// Task> RefundAsync(Order order); /// /// Gets a value indicating whether order can be marked as refunded /// /// Order /// A value indicating whether order can be marked as refunded bool CanRefundOffline(Order order); /// /// Refunds an order (offline) /// /// Order /// A task that represents the asynchronous operation Task RefundOfflineAsync(Order order); /// /// Gets a value indicating whether partial refund from admin panel is allowed /// /// Order /// Amount to refund /// /// A task that represents the asynchronous operation /// The task result contains a value indicating whether refund from admin panel is allowed /// Task CanPartiallyRefundAsync(Order order, decimal amountToRefund); /// /// Partially refunds an order (from admin panel) /// /// Order /// Amount to refund /// /// A task that represents the asynchronous operation /// The task result contains a list of errors; empty list if no errors /// Task> PartiallyRefundAsync(Order order, decimal amountToRefund); /// /// Gets a value indicating whether order can be marked as partially refunded /// /// Order /// Amount to refund /// A value indicating whether order can be marked as partially refunded bool CanPartiallyRefundOffline(Order order, decimal amountToRefund); /// /// Partially refunds an order (offline) /// /// Order /// Amount to refund /// A task that represents the asynchronous operation Task PartiallyRefundOfflineAsync(Order order, decimal amountToRefund); /// /// Gets a value indicating whether Task from admin panel is allowed /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains a value indicating whether Task from admin panel is allowed /// Task CanVoidAsync(Order order); /// /// Voids order (from admin panel) /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains the voided order /// Task> VoidAsync(Order order); /// /// Gets a value indicating whether order can be marked as voided /// /// Order /// A value indicating whether order can be marked as voided bool CanVoidOffline(Order order); /// /// Voids order (offline) /// /// Order /// A task that represents the asynchronous operation Task VoidOfflineAsync(Order order); /// /// Place order items in current user shopping cart. /// /// The order /// /// A task that represents the asynchronous operation /// The task result contains the warnings /// Task> ReOrderAsync(Order order); /// /// Check whether return request is allowed /// /// Order /// /// A task that represents the asynchronous operation /// The task result contains the result /// Task IsReturnRequestAllowedAsync(Order order); /// /// Validate minimum order sub-total amount /// /// Shopping cart /// /// A task that represents the asynchronous operation /// The task result contains true - OK; false - minimum order sub-total amount is not reached /// Task ValidateMinOrderSubtotalAmountAsync(IList cart); /// /// Validate minimum order total amount /// /// Shopping cart /// /// A task that represents the asynchronous operation /// The task result contains true - OK; false - minimum order total amount is not reached /// Task ValidateMinOrderTotalAmountAsync(IList cart); /// /// Gets a value indicating whether payment workflow is required /// /// Shopping cart /// A value indicating reward points should be used; null to detect current choice of the customer /// /// A task that represents the asynchronous operation /// The task result contains the value indicating whether payment workflow is required /// Task IsPaymentWorkflowRequiredAsync(IList cart, bool? useRewardPoints = null); /// /// Gets the next payment date /// /// Recurring payment /// A task that represents the asynchronous operation Task GetNextPaymentDateAsync(RecurringPayment recurringPayment); /// /// Gets the cycles remaining /// /// Recurring payment /// A task that represents the asynchronous operation Task GetCyclesRemainingAsync(RecurringPayment recurringPayment); }