Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,149 @@
========================
РуОду — Комиссии агентам
========================
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
|badge1| |badge2|
Учёт агентских вознаграждений (комиссий) по сделкам. Комиссии
привязываются к строкам заказа продаж по аналогии с налогами: к одной
строке можно привязать несколько комиссий. По подтверждённому заказу
комиссии начисляются одним действием в виде счетов поставщика
(Vendor Bill), сгруппированных по партнёрам-получателям.
**Содержание**
.. contents::
:local:
Возможности
===========
* Справочник видов комиссий (меню *Учёт → Комиссии агентам*):
* расчёт *Процентом* от суммы строки без налогов;
* расчёт *Формулой* — python-код вида ``result = ...`` по аналогии
с правилами модуля зарплаты;
* журнал и счёт расходов для будущих проводок, партнёр-получатель,
опциональный аналитический счёт.
* Привязка нескольких комиссий к строке заказа (``sale.order.line``),
колонка «Комиссии» и расчёт суммы комиссий по строке.
* Строка «ИТОГО КОМИССИЙ» в блоке итогов заказа (не входит в итог
заказа — это забалансовый агентский расход).
* Кнопка «Начислить комиссию» на подтверждённом заказе: формирование
и проведение счетов поставщика по каждому партнёру-получателю со
счетами из настроек комиссии.
* Смарт-кнопка «Комиссии» со связанными счетами поставщика.
* Каскадная отмена счетов комиссий при отмене заказа: отвязка платежей
(штатными средствами), перевод в черновик и удаление.
* Разграничение доступа группами «Видит комиссии» и
«Начисляет комиссии».
Зависимости
===========
* ``sale_management`` — заказы на продажу и строки заказа
* ``account`` — счета поставщика (``account.move``), журналы и счета
Модели
======
* ``commission.commission`` — вид комиссии агенту (способ расчёта,
журнал, счёт расходов, партнёр-получатель, аналитика).
* ``sale.order.line`` (расширение) — поле ``commission_ids`` и
вычисляемое ``commission_amount``.
* ``sale.order`` (расширение) — ``amount_commission`` («ИТОГО КОМИССИЙ»),
начисление и просмотр счетов комиссий, каскадная отмена.
* ``account.move`` (расширение) — служебная ссылка
``commission_sale_order_id`` на исходный заказ.
Группы доступа
==============
* **Видит комиссии** (``group_commission_viewer``) — видит колонку
«Комиссии», итог «ИТОГО КОМИССИЙ» и смарт-кнопку. Продавцы вне этой
группы могут добавлять комиссии в строки, но не видят вывод.
* **Начисляет комиссии** (``group_commission_manager``, включает
«Видит комиссии») — доступна кнопка «Начислить комиссию».
Настройка
=========
#. Откройте *Учёт → Комиссии агентам* и заведите нужные виды комиссий.
#. Для способа «Процент» укажите ставку; для «Формулы» — python-код,
присваивающий результат переменной ``result``.
#. На каждой комиссии задайте журнал (покупки), счёт расходов
(тип «Расходы»), партнёра-получателя и, при необходимости,
аналитический счёт.
#. Выдайте сотрудникам группы «Видит комиссии» и «Начисляет комиссии».
Формула комиссии
================
В режиме «Формула» доступны переменные:
* ``line`` — строка заказа (``sale.order.line``)
* ``order`` — заказ (``sale.order``)
* ``product`` — товар строки (``product.product``)
* ``qty`` — количество
* ``price_unit`` — цена за единицу
* ``price_subtotal`` — сумма строки без налогов
* ``partner`` — контрагент заказа (``res.partner``)
* ``commission`` — текущий вид комиссии
Результат присваивается переменной ``result``, например::
result = price_subtotal * 0.05
Использование
=============
#. В строках заказа выберите нужные комиссии в колонке «Комиссии».
В блоке итогов появится «ИТОГО КОМИССИЙ».
#. Подтвердите заказ и нажмите «Начислить комиссию». Модуль обойдёт
строки и привязанные комиссии, сгруппирует их по партнёру-получателю
и сформирует один или несколько счетов поставщика, затем проведёт их.
#. Нажмите смарт-кнопку «Комиссии», чтобы увидеть связанные счета.
#. При отмене заказа счета комиссий автоматически отменяются, переводятся
в черновик и удаляются; привязанные платежи предварительно
отвязываются штатными средствами (при невозможности — выдаётся
понятное сообщение).
Границы
=======
* Нативная бухгалтерия Odoo не изменяется сверх создания и штатной
обработки счетов поставщика и служебного поля-ссылки.
* Проводки в РСБУ-журнал по счетам комиссий формирует штатный коннектор
РСБУ-слоя по событию проведения (``action_post``) — вне этого модуля.
Тестирование
============
Модуль покрыт тестами ``TransactionCase`` (расчёт процентом и формулой,
несколько комиссий на строке, исключение комиссии из итога заказа,
начисление и группировка счетов по получателям, дедупликация, каскадная
отмена, смарт-кнопка). Запуск::
docker compose run --rm odoo odoo -d <db> -i ruodoo_commission \
--test-enable --test-tags=/ruodoo_commission --stop-after-init
Авторы
======
* MK.Lab, RuOdoo
Модуль сопровождается MK.Lab, RuOdoo.
.. image:: https://ruodoo.ru/logo.png
:alt: MK.Lab, RuOdoo
:target: https://ruodoo.ru
Модуль является частью решения РуОду.