first commit
This commit is contained in:
61
modules/sale_supply/purchase.py
Normal file
61
modules/sale_supply/purchase.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# 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 fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.transaction import Transaction, without_check_access
|
||||
|
||||
|
||||
class Request(metaclass=PoolMeta):
|
||||
__name__ = 'purchase.request'
|
||||
|
||||
sale_lines = fields.One2Many(
|
||||
'sale.line', 'purchase_request', "Sale Lines", readonly=True)
|
||||
|
||||
@classmethod
|
||||
def _get_origin(cls):
|
||||
return super()._get_origin() | {'sale.sale'}
|
||||
|
||||
@classmethod
|
||||
def update_state(cls, requests):
|
||||
pool = Pool()
|
||||
Sale = pool.get('sale.sale')
|
||||
transaction = Transaction()
|
||||
context = transaction.context
|
||||
|
||||
super().update_state(requests)
|
||||
|
||||
sales = {r.origin for r in requests if isinstance(r.origin, Sale)}
|
||||
if sales:
|
||||
with transaction.set_context(
|
||||
queue_batch=context.get('queue_batch', True)):
|
||||
Sale.__queue__.process(Sale.browse(sales))
|
||||
|
||||
@classmethod
|
||||
def copy(cls, requests, default=None):
|
||||
default = default.copy() if default is not None else {}
|
||||
default.setdefault('sale_lines')
|
||||
return super().copy(requests, default=default)
|
||||
|
||||
@classmethod
|
||||
def on_delete(cls, requests):
|
||||
pool = Pool()
|
||||
Sale = pool.get('sale.sale')
|
||||
SaleLine = pool.get('sale.line')
|
||||
transaction = Transaction()
|
||||
context = transaction.context
|
||||
|
||||
with without_check_access():
|
||||
reqs = cls.browse(requests)
|
||||
sales = set(r.origin for r in reqs if isinstance(r.origin, Sale))
|
||||
sale_lines = [l for r in reqs for l in r.sale_lines]
|
||||
if sale_lines:
|
||||
SaleLine.write(sale_lines, {
|
||||
'purchase_request': None,
|
||||
})
|
||||
|
||||
if sales:
|
||||
with transaction.set_context(
|
||||
queue_batch=context.get('queue_batch', True)):
|
||||
Sale.__queue__.process(sales)
|
||||
return super().on_delete(requests)
|
||||
Reference in New Issue
Block a user