1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Joël Grand-Guillaume, Matthieu Dietrich
# Copyright 2008-2015 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, orm
class wizard_product_obsolescence(orm.TransientModel):
_name = "wizard.product.obsolescence"
def _location_default_get(self, cr, uid, context):
# get the company location id
mod_obj = self.pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'stock', 'stock_location_company')
stock_location_id = mod_obj.read(cr, uid,
[result],
['res_id'],
context=context)[0]['res_id']
return stock_location_id
_columns = {
'location': fields.many2one('stock.location',
'From location',
required=True),
'to_date': fields.date('Obsolescence to date',
required=True),
}
_defaults = {
'location': lambda self, cr, uid, context:
self._location_default_get(cr, uid, context=context),
'to_date': lambda *a: fields.datetime.now(),
}
def button_open(self, cr, uid, ids, context=None):
# get view
mod_obj = self.pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'stock_obsolete',
'product_product_obsolet_tree_view')
tree_view_id = mod_obj.read(cr, uid,
[result], ['res_id'],
context=context)[0]['res_id']
# take only stockable product type
wizard = self.browse(cr, uid, ids, context=context)[0]
value = {
'domain': "[('type','=','product')]",
'name': 'Product obsolescence',
'view_type': 'tree',
'view_mode': 'tree',
'res_model': 'product.product',
'view_id': [tree_view_id],
'type': 'ir.actions.act_window',
'limit': 4000,
'context': "{'ref_date':'%s','location':%s}"
% (wizard['to_date'], wizard['location'].id)
}
return value
def button_report(self, cr, uid, ids, context=None):
data = {}
data['ids'] = context.get('active_ids', [])
data['model'] = context.get('active_model', 'ir.ui.menu')
data['form'] = self.read(cr, uid, ids, ['location', 'to_date'])[0]
return {
'type': 'ir.actions.report.xml',
'report_name': 'product.obsolete',
'datas': data,
}