Files
tryton/modules/purchase_history/purchase.py
T
Cédric Krier 5310b00496 Remove grouped_slice per IN_MAX
The usage of ``grouped_slice`` without size is deprecated since `=
ANY(ARRAY[%s])` is used for PostgreSQL and SQLite is used only for tests.

The ``Database.IN_MAX`` is replaced by ``backend.MAX_QUERY_PARAMS`` which is a
more accurate limit of the backend.
The SQLite limits is indeed SQLITE_MAX_EXPR_DEPTH so we use a empirical value.
2026-03-22 21:05:26 +01:00

64 lines
1.8 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 trytond.model import ModelView, Workflow, fields
from trytond.pool import PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Purchase(metaclass=PoolMeta):
__name__ = 'purchase.purchase'
_history = True
revision = fields.Integer(
"Revision", required=True, readonly=True,
states={
'invisible': Eval('revision', 0) == 0,
})
@classmethod
def default_revision(cls):
return 0
@property
def full_number(self):
number = super().full_number
if number is not None and self.revision:
number += '/%d' % self.revision
return number
@classmethod
def copy(cls, purchases, default=None):
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('revision', cls.default_revision())
return super().copy(purchases, default=default)
@classmethod
@ModelView.button
@Workflow.transition('draft')
def draft(cls, purchases):
cursor = Transaction().connection.cursor()
table = cls.__table__()
# Use SQL and before super to avoid two history entries
cursor.execute(*table.update(
[table.revision],
[table.revision + 1],
where=fields.SQL_OPERATORS['in'](
table.id, map(int, purchases))))
super().draft(purchases)
class Line(metaclass=PoolMeta):
__name__ = 'purchase.line'
_history = True
class LineTax(metaclass=PoolMeta):
__name__ = 'purchase.line-account.tax'
_history = True