Optimized export and order queries;
When the "tolko dostupnye k rezervu" (only available for reservation) setting is enabled, warehouses from which OCS does not allow reservation are excluded from stock;
Order reservation is available again: it works via the OCS v2 API (creating, modifying, and canceling reservations, transferring paid orders to an OCS manager); a separate token and test environment are used for orders;
Safe handling of connection errors with the distributor (no crash or queue clearing);
Request timeouts for the API;
Product codes from the API response are inserted into database queries only when escaped;
Products with incomplete data are skipped without interrupting page loading;
Unused class copies and image downloads via link without verification have been removed;
AdPar core version 3.7.71 or higher is required;
The reservation availability flag is recorded for each product;
Distant transit (DT, CBR) is never included in stock under any settings: for sites with transit loading without the "tolko dostupnye k rezervu" setting, stock may decrease;
A product for which there is no exchange rate for its price currency receives a zero stock value (previously, the price in foreign currency was recorded in rubles);
The new product flag is removed after a successful API response for characteristics;
Reservation: after a connection failure with OCS, the task is retried (with AdPar core 3.8.6 and higher); an order line is not reserved twice; reservation numbers do not repeat after restoring the site database from a copy;
A distributor API failure no longer resets stock to zero: zeroing occurs only after a server response;
The mandatory OCS recommended retail price (RRP) (manufacturer requirement) is respected when transferring to the catalog (with AdPar core 3.8.7 and higher); the OCS exchange rate is verified against the site rate; an empty shipping city triggers a noticeable warning;
Journal: in case of an OCS request error, only the response code is written, without the body; in the order refusal text, the API token is hidden, and responses not in JSON format are not written to the journal;
Images: a batch of products skipped due to an error (e.g., OCS request limit) is marked in the journal and will be reloaded by the next run;
Module class auto-loading accepts only module class names; errors on the installation page are escaped;