Class OrderService
Inheritance
Implements
Namespace: DirectScale.Disco.Extension.Services
Assembly: DirectScale.Disco.Extension.Abstractions.dll
Syntax
public class OrderService : Object, IOrderService
Constructors
OrderService(IApiService)
Declaration
public OrderService(IApiService apiService)
Parameters
Type | Name | Description |
---|---|---|
IApiService | apiService |
Methods
CancelOrder(Int32)
Voids orderNumber
.
Declaration
public Task CancelOrder(int orderNumber)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | Order to cancel. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
Exceptions
Type | Condition |
---|---|
System.Exception | If it is too late to cancel this order. |
System.NullReferenceException | If the order is not found. |
FinalizeAcceptedOrder(Order)
Indicates existing order
has completed successfully. It's volume will now count towards commissions and items will now be shipped.
Declaration
public Task FinalizeAcceptedOrder(Order order)
Parameters
Type | Name | Description |
---|---|---|
Order | order | The completed order. OrderNumber must already exist. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
Remarks
This method will never need to be called directly for normal operations. Instead use SubmitOrder(NewOrderDetail, NewPayment[]). If this method is called, FinalizeOrderPaymentStatus(OrderPaymentStatusUpdate) should also be called to mark payments as paid. One case where this method might need to be called, is if an external merchant needs to mark orders as paid and complated.
FinalizeNonAcceptedOrder(Order)
Indiates that an existing order
has completed unsuccessfully. It will now be visible as a declined order.
Declaration
public Task FinalizeNonAcceptedOrder(Order order)
Parameters
Type | Name | Description |
---|---|---|
Order | order | The completed order. OrderNumber must already exist. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
Remarks
This method will never need to be called directly for normal operations. Instead use SubmitOrder(NewOrderDetail, NewPayment[]). If this method is called, FinalizeOrderPaymentStatus(OrderPaymentStatusUpdate) should also be called to set the payment result. One case where this method might need to be called, is if an external merchant needs to mark orders as declined.
FinalizeOrderPaymentStatus(OrderPaymentStatusUpdate)
Updates the result of a specific OrderPaymentId to the values in orderPaymentStatusUpdate
.
Declaration
public Task<PaymentResponse> FinalizeOrderPaymentStatus(OrderPaymentStatusUpdate orderPaymentStatusUpdate)
Parameters
Type | Name | Description |
---|---|---|
OrderPaymentStatusUpdate | orderPaymentStatusUpdate |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<PaymentResponse> | Newly updated payment result. |
Remarks
orderPaymentStatusUpdate
's OrderPaymentId must already exist. Use InsertOrderPayment(PaymentResponse) instead to insert a new payment result.
This method will not normally need to be called directly. Payments will be created when <xref href="DirectScale.Disco.Extension.Services.OrderService.SubmitOrder(DirectScale.Disco.Extension.NewOrderDetail%2cDirectScale.Disco.Extension.NewPayment%5b%5d)" data-throw-if-not-resolved="false"></xref> is called.
GetAssociatesOrdersByModifiedDate(Int32, DateTime, DateTime)
Get all of associateId
's orders which have been updated between begin
and end
dates.
Declaration
public Task<Order[]> GetAssociatesOrdersByModifiedDate(int associateId, DateTime begin, DateTime end)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | associateId | Associate to get orders for. |
System.DateTime | begin | Begin date for of orders. |
System.DateTime | end | End date for of orders. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order[]> | Array of orders found. |
See Also
GetAssociatesOrdersByOrderDate(Int32, DateTime, DateTime)
Get all of associateId
's orders place between begin
and end
dates.
Declaration
public Task<Order[]> GetAssociatesOrdersByOrderDate(int associateId, DateTime begin, DateTime end)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | associateId | Associate to get orders for. |
System.DateTime | begin | Begin date for of orders. |
System.DateTime | end | End date for of orders. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order[]> | Array of orders found. |
See Also
GetOrderByOrderNumber(Int32)
Gets the order details for the requested orderNumber
.
Declaration
public Task<Order> GetOrderByOrderNumber(int orderNumber)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | The order to look up. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order> | The order with |
Remarks
Orders will be sorted by order date from oldest to newest.
See Also
GetOrders(Int32[])
Gets the order details for the requested orderNumbers
.
Declaration
public Task<Order[]> GetOrders(int[] orderNumbers)
Parameters
Type | Name | Description |
---|---|---|
System.Int32[] | orderNumbers | Array of order numbers to look up. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order[]> | Array of orders found. |
Remarks
Orders will be sorted by order date from oldest to newest.
See Also
GetOrdersByAssociateId(Int32, String)
Get all of the orders associateId
made.
Declaration
public Task<Order[]> GetOrdersByAssociateId(int associateId, string filter)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | associateId | Associate to get orders for. |
System.String | filter | Optional. Provide a string to find orders with |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order[]> | Array of orders found. |
Remarks
Does not include Void orders. The other get order methods return void orders.
See Also
GetOrdersWSort(Int32[], String)
Gets the order details for the requested orderNumbers
.
Declaration
public Task<Order[]> GetOrdersWSort(int[] orderNumbers, string sort)
Parameters
Type | Name | Description |
---|---|---|
System.Int32[] | orderNumbers | Array of order numbers to look up. |
System.String | sort | Orders will be sorted by order date, value should be either "ASC" or "DESC". |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<Order[]> | Array of orders found. |
Remarks
The other get order methods sort by "ASC" (oldest to newest).
See Also
GetPackageDetail(Int32)
Read the values for a specific package record.
Declaration
public Task<ShipPackage> GetPackageDetail(int packageId)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | packageId | The package recordnumber. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<ShipPackage> |
GetTotals(LineItem[], Int32, String, Int32, Address, String[], OrderType, Int32)
Prior to creating an order, this method can be called to calculate how much the order will cost. For example, on a checkout page.
Declaration
public Task<OrderTotal[]> GetTotals(LineItem[] lineItems, int associateId, string currencyCode, int shipMethodId, Address shipAddress, string[] couponCodes, OrderType orderType, int warehouseId)
Parameters
Type | Name | Description |
---|---|---|
LineItem[] | lineItems | The items being purchased. |
System.Int32 | associateId | The associate checking out. |
System.String | currencyCode | The currency code. See ICurrencyService for more information. |
System.Int32 | shipMethodId | The shipping method selected. |
Address | shipAddress | The shipping address. |
System.String[] | couponCodes | The coupons applied to cart. |
OrderType | orderType | The type of order being placed. |
System.Int32 | warehouseId | The warehouse that will be used. Optional, will be supplied by |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<OrderTotal[]> | The detailed order totals. Normally this will be a single element array. In some weird cases there will be one OrderTotal for each currency being used. |
GetTotalsWithOverrides(LineItem[], Int32, String, Int32, Address, String[], OrderType, Int32, ShippingTaxOverride)
Same as GetTotals(LineItem[], Int32, String, Int32, Address, String[], OrderType, Int32), but can calculate the totals with manual values set for tax and/or shipping shipTaxOverride
.
Declaration
public Task<OrderTotal[]> GetTotalsWithOverrides(LineItem[] lineItems, int associateId, string currencyCode, int shipMethodId, Address shipAddress, string[] couponCodes, OrderType orderType, int warehouseId, ShippingTaxOverride shipTaxOverride)
Parameters
Type | Name | Description |
---|---|---|
LineItem[] | lineItems | |
System.Int32 | associateId | |
System.String | currencyCode | |
System.Int32 | shipMethodId | |
Address | shipAddress | |
System.String[] | couponCodes | |
OrderType | orderType | |
System.Int32 | warehouseId | |
ShippingTaxOverride | shipTaxOverride | Gives the ab
Used to manually set shipping or tax costs. If the other method is called, shipping is calculated from |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<OrderTotal[]> |
See Also
GetUnshippedPackages(Int32, String)
Find all the packages that still need to be shipped from warehouseId
Declaration
public Task<OrderPackage[]> GetUnshippedPackages(int warehouseId, string search)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | warehouseId | The warehouse shipping packages. |
System.String | search | Optional. Limit packages to only ones containing |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<OrderPackage[]> | Found unshipped packages. |
InsertOrderPayment(PaymentResponse)
Manually insert a new payment for an order.
Declaration
public Task<int> InsertOrderPayment(PaymentResponse paymentResponse)
Parameters
Type | Name | Description |
---|---|---|
PaymentResponse | paymentResponse | The details of the payment. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<System.Int32> | A new OrderPaymentId. |
Remarks
This method will not normally be called directly. Payments will be created when SubmitOrder(NewOrderDetail, NewPayment[]) is called.
IsMoveOrderPermitted(Order)
Indicates if the order
is not locked and can be moved by the current user.
Declaration
public Task<MoveOrderPermission> IsMoveOrderPermitted(Order order)
Parameters
Type | Name | Description |
---|---|---|
Order | order | The order to move. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<MoveOrderPermission> |
Remarks
Currently will always return false, unless MoveOrder hook is hooked.
IsOrderLocked(Int32)
Indicates if orderNumber
is locked for editing.
Declaration
public Task<bool> IsOrderLocked(int orderNumber)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | The order to check. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<System.Boolean> | True if the order is locked and cannot be changed. |
See Also
Log(Int32, String)
Add a log message
to orderNumber
.
Declaration
public Task Log(int orderNumber, string message)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | The order to add notes to. |
System.String | message | The notes to add. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
Remarks
These are visible on the corporate order page.
PayOrder(Int32, Int32, String, NewPayment[])
Attempt to charge the associate for an existing orderNumber
. SubmitOrder(NewOrderDetail, NewPayment[]) for new orders.
Declaration
public Task<PaymentResponse> PayOrder(int orderNumber, int shipMethodId, string languageCode, NewPayment[] payments)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | The order being paid. |
System.Int32 | shipMethodId | Unused. |
System.String | languageCode | Unused. |
NewPayment[] | payments | The payment details, how the associate is paying. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<PaymentResponse> | Charge results. |
Remarks
This will also complete the order by calling FinalizeOrderPaymentStatus(OrderPaymentStatusUpdate) then either FinalizeAcceptedOrder(Order) or FinalizeNonAcceptedOrder(Order) internally.
See Also
RefundPayment(Int32, Refund[])
Give the associate back their money for orderNumber
.
Declaration
public Task RefundPayment(int orderNumber, Refund[] refunds)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | orderNumber | The order to refund. |
Refund[] | refunds | Where to send the money |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
Remarks
If the full amount of the order is refunded, then the commission engine will undo the order. If money has been paid out for this order, then a clawback will be initiated for those funds. If the order is still within an open period, then it's volume will no longer be counted.
SubmitOrder(NewOrderDetail, NewPayment[])
Validates, records, and processes a new order
with payments
.
Declaration
public Task<PaymentResponse> SubmitOrder(NewOrderDetail order, NewPayment[] payments)
Parameters
Type | Name | Description |
---|---|---|
NewOrderDetail | order | The new order submitted. |
NewPayment[] | payments | The associate's payment to charge. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<PaymentResponse> | Order result. |
Remarks
Triggers the full order process. Calls PayOrder(Int32, Int32, String, NewPayment[]) internally.
UpdateOrder(UpdateOrderInfo)
Updates OrderNumber with all the values from order
.
Declaration
public Task UpdateOrder(UpdateOrderInfo order)
Parameters
Type | Name | Description |
---|---|---|
UpdateOrderInfo | order | The order and information to update. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
See Also
UpdateOrders(UpdateOrderInfo[])
Updates multiple OrderNumbers with all the values from orders
.
Declaration
public Task UpdateOrders(UpdateOrderInfo[] order)
Parameters
Type | Name | Description |
---|---|---|
UpdateOrderInfo[] | order | The orders and their update information. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
See Also
UpdateOrderTotal(OrderTotal)
Update the total
record in DB. Id must be an existing OrderTotal record.
Declaration
public Task UpdateOrderTotal(OrderTotal total)
Parameters
Type | Name | Description |
---|---|---|
OrderTotal | total | The OrderTotal record to update. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |
UpdatePackage(Int32, Int32, Int32, Address)
Update the packageId
record in DB. packageId
must be an existing package record.
Declaration
public Task UpdatePackage(int packageId, int warehouseId, int shipMethodId, Address address)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | packageId | The package recordnumber to update. |
System.Int32 | warehouseId | The new warehouseId. |
System.Int32 | shipMethodId | The new ship method id. |
Address | address | The new address, if not null. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task |