39 lines
1.3 KiB
Python
39 lines
1.3 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 ModelSQL, ModelView, dualmethod, fields
|
|
from trytond.pool import PoolMeta
|
|
from trytond.transaction import Transaction
|
|
|
|
|
|
class Cron(metaclass=PoolMeta):
|
|
__name__ = 'ir.cron'
|
|
warehouses = fields.Many2Many(
|
|
'ir.cron-stock.warehouse', 'cron', 'warehouse',
|
|
"Warehouses",
|
|
domain=[
|
|
('type', '=', 'warehouse'),
|
|
],
|
|
help="Warehouses registered for this cron.")
|
|
|
|
@dualmethod
|
|
@ModelView.button
|
|
def run_once(cls, crons):
|
|
for cron in crons:
|
|
if not cron.warehouses:
|
|
super().run_once([cron])
|
|
else:
|
|
for warehouse in cron.warehouses:
|
|
with Transaction().set_context(warehouse=warehouse.id):
|
|
super().run_once([cron])
|
|
|
|
|
|
class CronWarehouse(ModelSQL):
|
|
__name__ = 'ir.cron-stock.warehouse'
|
|
cron = fields.Many2One(
|
|
'ir.cron', "Cron", ondelete='CASCADE', required=True)
|
|
warehouse = fields.Many2One(
|
|
'stock.location', "Warehouse", ondelete='CASCADE', required=True,
|
|
domain=[
|
|
('type', '=', 'warehouse'),
|
|
])
|