mirror of
https://gitlab.com/datalifeit/trytond-stock_move_time
synced 2023-12-14 04:42:59 +01:00
Migration to 4.2
This commit is contained in:
parent
b3b971259a
commit
205d0fa75d
|
@ -1,2 +1,3 @@
|
|||
Version 4.2.0 - 2017-07-27
|
||||
Version 4.0.3 - 2016-08-19
|
||||
* Initial release
|
||||
|
|
85
stock.py
85
stock.py
|
@ -15,16 +15,19 @@ class Move:
|
|||
__metaclass__ = PoolMeta
|
||||
|
||||
time_ = fields.Time('Time', format=DATE_FORMAT,
|
||||
states={'readonly': (In(Eval('state'), ['cancel', 'assigned', 'done']))},
|
||||
depends=['state'])
|
||||
states={'readonly': In(Eval('state'), ['cancel', 'assigned', 'done'])},
|
||||
depends=['state'])
|
||||
start_date = fields.Function(
|
||||
fields.DateTime('Start date', format=DATE_FORMAT,
|
||||
states={'readonly': (In(Eval('state'), ['cancel', 'assigned', 'done']))},
|
||||
depends=['state', 'planned_date', 'effective_date', 'time_']),
|
||||
'on_change_with_start_date', setter='set_start_date', searcher='search_start_date')
|
||||
states={'readonly': In(Eval('state'),
|
||||
['cancel', 'assigned', 'done'])},
|
||||
depends=['state', 'planned_date', 'effective_date', 'time_']),
|
||||
'on_change_with_start_date',
|
||||
setter='set_start_date', searcher='search_start_date')
|
||||
end_date = fields.DateTime('End date', format=DATE_FORMAT,
|
||||
states={'readonly': (In(Eval('state'), ['cancel', 'assigned', 'done']))},
|
||||
depends=['state'])
|
||||
states={'readonly': In(Eval('state'),
|
||||
['cancel', 'assigned', 'done'])},
|
||||
depends=['state'])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -40,10 +43,12 @@ class Move:
|
|||
for values in vlist:
|
||||
if not values.get('time_'):
|
||||
values.setdefault('time_', datetime.datetime.min.time())
|
||||
if not values.get('end_date') and (values.get('effective_date') or values.get('planned_date')):
|
||||
if not values.get('end_date') and (
|
||||
values.get('effective_date') or
|
||||
values.get('planned_date')):
|
||||
values.setdefault('end_date', datetime.datetime.combine(
|
||||
values.get('effective_date') or values.get('planned_date'),
|
||||
values.get('time_'))
|
||||
values.get('effective_date') or values.get('planned_date'),
|
||||
values.get('time_'))
|
||||
)
|
||||
return super(Move, cls).create(vlist)
|
||||
|
||||
|
@ -54,13 +59,16 @@ class Move:
|
|||
actions = iter(args)
|
||||
for records, values in zip(actions, actions):
|
||||
for record in records:
|
||||
if record.start_date and (not record.end_date or record.end_date < record.start_date):
|
||||
if record.start_date and (
|
||||
not record.end_date or
|
||||
record.end_date < record.start_date):
|
||||
cls.write([record], {'end_date': record.start_date})
|
||||
|
||||
@fields.depends('effective_date', 'planned_date', 'time_')
|
||||
def on_change_with_start_date(self, name=None):
|
||||
if self.effective_date or self.planned_date:
|
||||
_date = datetime.datetime.combine(self.effective_date or self.planned_date,
|
||||
self.time_ or datetime.datetime.min.time())
|
||||
_date = datetime.datetime.combine(self.effective_date or
|
||||
self.planned_date, self.time_ or datetime.datetime.min.time())
|
||||
_date = _date.replace(microsecond=0)
|
||||
return _date
|
||||
return None
|
||||
|
@ -85,7 +93,8 @@ class Move:
|
|||
@classmethod
|
||||
def search_start_date(cls, name, clause):
|
||||
if clause[1] not in ('>', '<', '=', '>=', '<='):
|
||||
raise NotImplementedError('Date time filter operand not implemented.')
|
||||
raise NotImplementedError(
|
||||
'Date time filter operand not implemented.')
|
||||
if not clause[2]:
|
||||
raise NotImplementedError('Filter must be a date.')
|
||||
date_op = {'>': '>=',
|
||||
|
@ -102,25 +111,27 @@ class ShipmentOut:
|
|||
__metaclass__ = PoolMeta
|
||||
|
||||
start_time = fields.Time('Start time', format=DATE_FORMAT,
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state'])
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state'])
|
||||
start_date = fields.Function(
|
||||
fields.DateTime('Start date', format=DATE_FORMAT,
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state']),
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state']),
|
||||
'on_change_with_start_date', setter='set_start_date')
|
||||
interval = fields.TimeDelta('Interval')
|
||||
end_date = fields.Function(
|
||||
fields.DateTime('End date', format=DATE_FORMAT,
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting', 'assigned'])},
|
||||
depends=['state', 'start_date', 'start_time']),
|
||||
states={'readonly': ~Eval('state').in_(
|
||||
['draft', 'waiting', 'assigned'])},
|
||||
depends=['state', 'start_date', 'start_time']),
|
||||
'on_change_with_end_date', setter='set_end_date')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(ShipmentOut, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'end_date': 'End date in shipment "%s" must be greater than start date.'})
|
||||
'end_date': 'End date in shipment "%s" must be greater '
|
||||
'than start date.'})
|
||||
|
||||
@staticmethod
|
||||
def default_start_date():
|
||||
|
@ -130,10 +141,12 @@ class ShipmentOut:
|
|||
def default_end_date():
|
||||
return datetime.datetime.now()
|
||||
|
||||
@fields.depends('effective_date', 'planned_date', 'start_time')
|
||||
def on_change_with_start_date(self, name=None):
|
||||
if self.effective_date or self.planned_date:
|
||||
return datetime.datetime.combine(self.effective_date or self.planned_date,
|
||||
self.start_time or datetime.datetime.min.time())
|
||||
return datetime.datetime.combine(
|
||||
self.effective_date or self.planned_date,
|
||||
self.start_time or datetime.datetime.min.time())
|
||||
return None
|
||||
|
||||
@fields.depends('start_date')
|
||||
|
@ -155,6 +168,7 @@ class ShipmentOut:
|
|||
_interval = self.end_date - self.start_date
|
||||
self.interval = self._format_interval(_interval)
|
||||
|
||||
@fields.depends('start_date', 'interval')
|
||||
def on_change_with_end_date(self, name=None):
|
||||
if self.start_date:
|
||||
if self.interval:
|
||||
|
@ -203,13 +217,12 @@ class ShipmentOut:
|
|||
for shipment in shipments:
|
||||
outgoing_time, inventory_time = shipment._move_time()
|
||||
Move.write([x for x in shipment.outgoing_moves
|
||||
if (x.state not in ('assigned', 'done', 'cancel')
|
||||
and x.time_ != outgoing_time)], {
|
||||
'time_': outgoing_time,
|
||||
})
|
||||
if (x.state not in ('assigned', 'done', 'cancel') and
|
||||
x.time_ != outgoing_time)],
|
||||
{'time_': outgoing_time})
|
||||
Move.write([x for x in shipment.inventory_moves
|
||||
if (x.state not in ('assigned', 'done', 'cancel')
|
||||
and x.time_ != inventory_time)], {
|
||||
if (x.state not in ('assigned', 'done', 'cancel') and
|
||||
x.time_ != inventory_time)], {
|
||||
'time_': inventory_time,
|
||||
})
|
||||
|
||||
|
@ -226,8 +239,8 @@ class ShipmentInternal:
|
|||
__metaclass__ = PoolMeta
|
||||
|
||||
time_ = fields.Time('Time', format=DATE_FORMAT,
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state'])
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state'])
|
||||
date_time_ = fields.Function(
|
||||
fields.DateTime('Effective date'),
|
||||
'on_change_with_date_time_', setter='set_date_time_')
|
||||
|
@ -243,11 +256,13 @@ class ShipmentInternal:
|
|||
@fields.depends('planned_date', 'effective_date', 'time_')
|
||||
def on_change_with_date_time_(self, name=None):
|
||||
if self.effective_date or self.planned_date:
|
||||
return datetime.datetime.combine(self.effective_date or self.planned_date,
|
||||
self.time_ or datetime.datetime.min.time())
|
||||
return datetime.datetime.combine(
|
||||
self.effective_date or self.planned_date,
|
||||
self.time_ or datetime.datetime.min.time())
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def set_date_time_(cls, records, name, value):
|
||||
cls.write(records, {'effective_date': value.date(),
|
||||
'time_': value.time().strftime(DATE_FORMAT)})
|
||||
cls.write(records, {
|
||||
'effective_date': value.date(),
|
||||
'time_': value.time().strftime(DATE_FORMAT)})
|
||||
|
|
|
@ -5,6 +5,7 @@ Stock Shipment Out Scenario
|
|||
Imports::
|
||||
|
||||
>>> import datetime
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
>>> from dateutil.relativedelta import relativedelta
|
||||
>>> from decimal import Decimal
|
||||
>>> from proteus import config, Model, Wizard
|
||||
|
@ -21,10 +22,7 @@ Create database::
|
|||
|
||||
Install stock Module::
|
||||
|
||||
>>> Module = Model.get('ir.module')
|
||||
>>> module, = Module.find([('name', '=', 'stock_move_time')])
|
||||
>>> module.click('install')
|
||||
>>> Wizard('ir.module.install_upgrade').execute('upgrade')
|
||||
>>> config = activate_modules('stock_move_time')
|
||||
|
||||
Create company::
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[tryton]
|
||||
version=4.0.3
|
||||
version=4.2.0
|
||||
depends:
|
||||
ir
|
||||
res
|
||||
|
|
|
@ -6,4 +6,4 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<label name="time_"/>
|
||||
<field name="time_"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</data>
|
||||
|
|
|
@ -7,4 +7,4 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<label name="end_date"/>
|
||||
<field name="end_date"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</data>
|
||||
|
|
|
@ -8,4 +8,4 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<label name="end_date"/>
|
||||
<field name="end_date"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</data>
|
||||
|
|
|
@ -11,4 +11,4 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<field name="end_date" widget="date" />
|
||||
<field name="end_date" widget="time" string="End time" />
|
||||
</xpath>
|
||||
</data>
|
||||
</data>
|
||||
|
|
Loading…
Reference in a new issue