trytond-stock_lot_quantity/location.py

50 lines
1.7 KiB
Python

import datetime
from trytond.model import ModelView, fields
from trytond.wizard import Wizard, StateView, StateAction, Button
from trytond.transaction import Transaction
from trytond.pyson import PYSONEncoder, Date
from trytond.pool import Pool
__all__ = ['LotsByLocationStart', 'LotsByLocation']
class LotsByLocationStart(ModelView):
'Lots by Location'
__name__ = 'stock.lots_by_location.start'
forecast_date = fields.Date(
'At Date', help=('Allow to compute expected '
'stock quantities for this date.\n'
'* An empty value is an infinite date in the future.\n'
'* A date in the past will provide historical values.'))
@staticmethod
def default_forecast_date():
Date_ = Pool().get('ir.date')
return Date_.today()
class LotsByLocation(Wizard):
'Lots by Location'
__name__ = 'stock.lots_by_location'
start = StateView('stock.lots_by_location.start',
'stock_lot_quantity.lots_by_location_start_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Open', 'open', 'tryton-ok', True),
])
open = StateAction('stock_lot_quantity.act_lots_by_location')
def do_open(self, action):
pool = Pool()
Location = pool.get('stock.location')
context = {}
context['locations'] = Transaction().context.get('active_ids')
date = self.start.forecast_date or datetime.date.max
context['stock_date_end'] = Date(date.year, date.month, date.day)
action['pyson_context'] = PYSONEncoder().encode(context)
locations = Location.browse(context['locations'])
action['name'] += ' - (%s) @ %s' % (
','.join(l.name for l in locations), date)
return action, {}