# Stock Service

The stock service includes actions for creating, updating, and deleting product stocks. To perform these actions, it relies on the integrations of OmnitronIntegration and ChannelIntegration.

### *class* StokService *(object)*

#### Update Product Stocks

*(self, is\_sync=True, is\_success\_log=True, add\_product\_objects=False, add\_price=False)*

This function first connects to Akinon Omnitron and retrieves the stock information of products that can be updated to the sales channel. It then sends this information to the sales channel via the `send_updated_stocks` command. The value of the `is_sync` parameter determines whether the communication with the sales channel will be synchronous or asynchronous. If it is asynchronous, the necessary records are created through `batch_service`. If an error occurs, an `error_report` is created in the Sales Channel Logs.

#### Insert Product Stocks

*(self, is\_sync=True, is\_success\_log=True, add\_product\_objects=False, add\_price=False)*

This function first connects to Akinon Omnitron and retrieves the stock information of products that can be added to the sales channel. It then sends this information to the sales channel via the `send_inserted_stocks` command. The value of the `is_sync` parameter determines whether the communication with the sales channel will be synchronous or asynchronous. If it is asynchronous, the necessary records are created through `batch_service`. If an error occurs, an `error_report` is created in the Sales Channel Logs.

#### Insert Product Stocks from Extra Stock List

*(self, is\_sync=True, is\_success\_log=True, add\_product\_objects=False, add\_price=False)*

This function first connects to Akinon Omnitron and retrieves the additional stock information of products that can be added to the sales channel. It then sends this information to the sales channel via the `send_insert_stocks` command. The value of the `is_sync` parameter determines whether the communication with the sales channel will be synchronous or asynchronous. If it is asynchronous, the necessary records are created through `batch_service`. If an error occurs, an `error_report` is created in the Sales Channel Logs.

#### Update Product Stocks from Extra Stock List

*(self, is\_sync=True, is\_success\_log=True, add\_product\_objects=False, add\_price=False)*

This function first connects to Akinon Omnitron and retrieves the additional stock information of products that can be updated to the sales channel. It then sends this information to the sales channel via the `send_updated_stocks` command. The value of the `is_sync` parameter determines whether the communication with the sales channel will be synchronous or asynchronous. If it is asynchronous, the necessary records are created through `batch_service`. If an error occurs, an `error_report` is created in the Sales Channel Logs.

#### Get Warehouse Mappings

*(self)*

This function serves as a helper. It reads `WAREHOUSE_CODES` from the configuration found on OmnitronIntegration, formats them, and returns the result. It is used to map product stock lists.

#### Get Stock Batch Requests

*(self, is\_success\_log=True)*

This function first connects to Akinon Omnitron and retrieves the `batch_requests` that have been sent to create/update products in the sales channel and are currently in progress. It then queries the sales channel using the `check_products` command. If an error occurs, an `error_report` is created in the Sales Channel Logs. Finally, it completes the flow by forwarding the response from the sales channel back to Akinon Omnitron.
