Files
tradon/modules/commission/stock_reporting_margin.py
2026-03-14 09:42:12 +00:00

37 lines
1.1 KiB
Python

# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from sql.aggregate import Sum
from sql.conditionals import Coalesce
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
class AbstractCommissionMixin:
__slots__ = ()
@classmethod
def _column_cost(cls, tables, withs, sign):
pool = Pool()
Move = pool.get('stock.move')
move = tables['move']
cost = super()._column_cost(tables, withs, sign)
if (Transaction().context.get('include_commission')
and 'commission_price' in Move._fields):
cost -= Sum(
sign * cls.cost.sql_cast(move.internal_quantity)
* Coalesce(move.commission_price, 0))
return cost
class Context(metaclass=PoolMeta):
__name__ = 'stock.reporting.margin.context'
include_commission = fields.Boolean("Include Commission")
@classmethod
def default_include_commission(cls):
return Transaction().context.get('include_commission', False)