# Orders

Tasks running under `channel_app_template.app.tasks` related to order integration:

### 1. Fetch Orders

The command located at `channel.commands.orders.orders.GetOrders` is executed to retrieve newly created orders from the sales channel and process them in Akinon. This command reads the orders generated in the sales channel and ensures their creation in Akinon in the desired format.

The process is managed using the `fetch_and_create_order` function within the `OrderService`.

To retrieve orders from the sales channel and convert them to the desired format, this command should be prepared according to the explanations listed below.

### 2. Update Orders

This command retrieves orders that need to be updated from Akinon to the sales channel and sends this data to the command located at `channel.commands.orders.orders.SendUpdatedOrders`. With this command, updated order information is communicated to the sales channel.

Using the command associated with the `update_orders` function within the `OrderService`, updated order information from Akinon can be sent to the sales channel.

{% hint style="warning" %}
Parameters of the update\_orders function within the Order Service:

**is\_sync**: Indicates whether the status is immediately obtained when the update on the order is sent to the sales channel. TIt specifies whether the process is Synchronous or Asynchronous.
{% endhint %}

### 3. Check Orders

This command retrieves the batch requests of order updates that have been asynchronously sent to the sales channel from Akinon and sends this data to the command located at `channel.commands.orders.orders.CheckOrders`. With this command, the current status information of the order, for which an update request has been made from the sales channel, is read.

### 4. Fetch & Create Cancel

Newly created cancellation order records from the sales channel are obtained via the `channel.commands.orders.orders.GetCancelledOrders` command and sent to Akinon. This is used with the `fetch_and_create_cancel` function within the `OrderService`.

The cancellation order data is fetched and formatted according to the parameter values listed below.

### 5. Fetch & Update Order Items

This command is executed to retrieve updated orders from the sales channel and transfer them to Omnitron on an OrderItem basis using the command located at `channel.commands.orders.orders.GetUpdatedOrderItems`, providing data in the desired format (ChannelUpdateOrderItemDto). This command ensures that the updated orders from the sales channel are read and transferred to Omnitron.

The process is managed using the `fetch_and_update_order_items` function within the `OrderService`.

To retrieve updated orders from the sales channel and convert them to the desired format, this command should be prepared according to the explanations listed below.

### 6. Fetch & Create Cancellation Requests

This command is used to obtain cancellation or return requests initiated in the sales channel and transfer them to Omnitron.

For this process to function correctly, the "reason\_mapping" setting must be added as JSON in the `update_channel_conf_schema`. When filling out this value, the key should be the cancellation/return reason from the sales channel, and the value should be the primary key value corresponding to the cancellation/return reason in Akinon. The cancellation and return reasons in Akinon can be accessed from the Omnitron -> Settings menu.

The process is managed using the `fetch_and_create_cancellation_requests` function located within `app.tasks`.

The command located at `channel.commands.orders.orders.GetCancellationRequests` is executed to retrieve cancellation or return requests, providing data in the desired format (CancellationRequestDto).

To retrieve cancellation or return requests from the sales channel and convert them to the desired format, this command should be prepared according to the explanations listed below.

### 7. Update Cancellation Requests

In the case of updating cancellation or return requests previously created by the `fetch_and_create_cancellation_requests` function, this data is retrieved from Omnitron and sent to the sales channel.

For this process to function correctly, the "reason\_mapping" setting must be added as JSON in the `update_channel_conf_schema`. When filling out this value, the key should be the cancellation/return reason from the sales channel, and the value should be the primary key value corresponding to the cancellation/return reason in Akinon. The cancellation and return reasons in Akinon can be accessed from the Omnitron -> Settings menu.

The process is managed using the `update_cancellation_requests` function located within `app.tasks`.

The command located at `channel.commands.orders.orders.UpdateCancellationRequest` is executed, providing data in the desired format to the sales channel.

When cancellation or return requests are updated by the companies, this information is processed in Omnitron. Only records of requests that were previously created with the `fetch_and_create_cancellation_requests` task will trigger this method when updated.

For example, after a return request has been opened, the company may have accepted or rejected it. This method is used to communicate that action to the relevant sales channel.

The `channel.commands.orders.orders.UpdateCancellationRequest` class that needs to be implemented is specified below.
