first commit
This commit is contained in:
64
modules/stock_supply/location.py
Normal file
64
modules/stock_supply/location.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
|
||||
class Location(metaclass=PoolMeta):
|
||||
__name__ = 'stock.location'
|
||||
|
||||
provisioning_location = fields.Many2One('stock.location',
|
||||
'Provisioning Location',
|
||||
states={
|
||||
'invisible': Eval('type') != 'storage',
|
||||
},
|
||||
domain=[
|
||||
('type', 'in', ['storage', 'view']),
|
||||
],
|
||||
help='Leave empty for no default provisioning.')
|
||||
overflowing_location = fields.Many2One('stock.location',
|
||||
'Overflowing Location',
|
||||
states={
|
||||
'invisible': Eval('type') != 'storage',
|
||||
},
|
||||
domain=[
|
||||
('type', 'in', ['storage', 'view']),
|
||||
],
|
||||
help='Leave empty for no default overflowing.')
|
||||
|
||||
|
||||
class LocationLeadTime(metaclass=PoolMeta):
|
||||
__name__ = 'stock.location.lead_time'
|
||||
|
||||
@classmethod
|
||||
def get_max_lead_time(cls):
|
||||
"""Return the biggest lead time
|
||||
increased by the maximum extra lead times"""
|
||||
lead_time = datetime.timedelta(0)
|
||||
lead_times = cls.search([])
|
||||
if lead_times:
|
||||
lead_time = sum(
|
||||
(r.lead_time for r in lead_times if r.lead_time),
|
||||
datetime.timedelta(0))
|
||||
extra_lead_times = cls._get_extra_lead_times()
|
||||
if extra_lead_times:
|
||||
lead_time += max(extra_lead_times)
|
||||
return lead_time
|
||||
|
||||
@classmethod
|
||||
def _get_extra_lead_times(cls):
|
||||
'Return a list of extra lead time'
|
||||
pool = Pool()
|
||||
ProductSupplier = pool.get('purchase.product_supplier')
|
||||
extra = []
|
||||
|
||||
product_suppliers = ProductSupplier.search(
|
||||
[('lead_time', '!=', None)],
|
||||
order=[('lead_time', 'DESC')], limit=1)
|
||||
if product_suppliers:
|
||||
product_supplier, = product_suppliers
|
||||
extra.append(product_supplier.lead_time)
|
||||
return extra
|
||||
Reference in New Issue
Block a user