first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
# 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 functools import wraps
from trytond.i18n import gettext
from trytond.model.exceptions import AccessError
from trytond.pool import Pool, PoolMeta
from trytond.transaction import without_check_access
def process_opportunity(func):
@wraps(func)
def wrapper(cls, sales):
pool = Pool()
Opportunity = pool.get('sale.opportunity')
with without_check_access():
opportunities = Opportunity.browse(
set(s.origin for s in cls.browse(sales)
if isinstance(s.origin, Opportunity)))
result = func(cls, sales)
with without_check_access():
Opportunity.process(opportunities)
return result
return wrapper
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
@classmethod
def _get_origin(cls):
return super()._get_origin() + ['sale.opportunity']
@classmethod
def check_modification(cls, mode, sales, values=None, external=False):
pool = Pool()
Opportunity = pool.get('sale.opportunity')
super().check_modification(
mode, sales, values=values, external=external)
if mode == 'write' and 'origin' in values:
origin = values['origin']
if origin and not isinstance(origin, str):
origin = '%s,%s' % tuple(origin)
for sale in sales:
if (isinstance(sale.origin, Opportunity)
and str(sale.origin) != origin):
raise AccessError(gettext(
'sale_opportunity'
'.msg_modify_origin_opportunity',
sale=sale.rec_name))
@classmethod
@process_opportunity
def cancel(cls, sales):
super().cancel(sales)
@classmethod
@process_opportunity
def quote(cls, sales):
super().quote(sales)
@classmethod
@process_opportunity
def confirm(cls, sales):
super().confirm(sales)
@classmethod
@process_opportunity
def proceed(cls, sales):
super().proceed(sales)
@classmethod
@process_opportunity
def do(cls, sales):
super().do(sales)