improve_view
[odoo/odoo.git] / addons / warning / warning.py
1 # -*- encoding: utf-8 -*-
2 ##############################################################################
3 #
4 # Copyright (c) 2004-2008 TINY SPRL. (http://tiny.be) All Rights Reserved.
5 #
6 # $Id$
7 #
8 # WARNING: This program as such is intended to be used by professional
9 # programmers who take the whole responsability of assessing all potential
10 # consequences resulting from its eventual inadequacies and bugs
11 # End users who are looking for a ready-to-use solution with commercial
12 # garantees and support are strongly adviced to contract a Free Software
13 # Service Company
14 #
15 # This program is Free Software; you can redistribute it and/or
16 # modify it under the terms of the GNU General Public License
17 # as published by the Free Software Foundation; either version 2
18 # of the License, or (at your option) any later version.
19 #
20 # This program is distributed in the hope that it will be useful,
21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 # GNU General Public License for more details.
24 #
25 # You should have received a copy of the GNU General Public License
26 # along with this program; if not, write to the Free Software
27 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
28 #
29 ##############################################################################
30
31 import time
32 from osv import fields,osv
33
34 class res_partner(osv.osv):
35     _inherit = 'res.partner'
36     _columns = {
37         'sale_warn' : fields.boolean('Sale Order'),
38         'sale_warn_msg' : fields.text('Message for Sale Order'),
39         'purchase_warn' : fields.boolean('Purchase Order'),
40         'purchase_warn_msg' : fields.text('Message for Purchase Order'),
41         'picking_warn' : fields.boolean('Stock Picking'),
42         'picking_warn_msg' : fields.text('Message for Stock Picking'),
43         'invoice_warn' : fields.boolean('Invoice'),
44         'invoice_warn_msg' : fields.text('Message for Invoice'),
45     }
46 res_partner()
47
48
49 class sale_order(osv.osv):
50     _inherit = 'sale.order'
51     def onchange_partner_id(self, cr, uid, ids, part):
52         if not part:
53             return {'value':{'partner_invoice_id': False, 'partner_shipping_id':False, 'partner_order_id':False, 'payment_term' : False}}
54         warning = {}
55         title=False
56         message=False
57         partner = self.pool.get('res.partner').browse(cr, uid, part)
58         if partner.sale_warn:
59             title= "Message",
60             message=partner.sale_warn_msg
61              
62         result =  super(sale_order, self).onchange_partner_id(cr, uid, ids, part)['value']
63         if result.get('warning',False):
64             warning['title']=title and title+' & '+result['warning']['title'] or result['warning']['title']
65             warning['message']=message and message +' '+result['warning']['message'] or result['warning']['message']
66         return {'value': result, 'warning':warning}
67 sale_order()
68
69
70 class purchase_order(osv.osv):
71     _inherit = 'purchase.order'
72     def onchange_partner_id(self, cr, uid, ids, part):
73         if not part:
74             return {'value':{'partner_address_id': False}}
75         warning = {}
76         partner = self.pool.get('res.partner').browse(cr, uid, part)
77         if partner.purchase_warn:
78                 warning={
79                     'title': "Message",
80                     'message': partner.purchase_warn_msg
81                     }
82         result =  super(purchase_order, self).onchange_partner_id(cr, uid, ids, part)['value']
83         return {'value': result, 'warning':warning}
84     
85 purchase_order()
86
87
88 class account_invoice(osv.osv):
89     _inherit = 'account.invoice'
90     def onchange_partner_id(self, cr, uid, ids, type, partner_id,
91             date_invoice=False, payment_term=False, partner_bank_id=False):
92         if not partner_id:
93             return {'value': {
94             'address_contact_id': False ,
95             'address_invoice_id': False,
96             'account_id': False,
97             'payment_term': False,
98             }
99         }
100         warning = {}
101         partner = self.pool.get('res.partner').browse(cr, uid, partner_id)
102         if partner.invoice_warn:
103                 warning={
104                     'title': "Message",
105                     'message': partner.invoice_warn_msg
106                     }
107         result =  super(account_invoice, self).onchange_partner_id(cr, uid, ids, type, partner_id,
108             date_invoice=False, payment_term=False, partner_bank_id=False)['value']
109         return {'value': result, 'warning':warning}
110     
111 account_invoice()
112
113 class stock_picking(osv.osv):
114     _inherit = 'stock.picking'
115     
116     def onchange_partner_in(self, cr, uid, context, partner_id=None):
117         if not partner_id:
118             return {}
119         partner = self.pool.get('res.partner.address').browse(cr, uid, [partner_id])[0].partner_id
120         warning = {}
121         if partner.picking_warn:
122             warning={
123                 'title': "Message",
124                 'message': partner.picking_warn_msg
125             }
126         result =  super(stock_picking, self).onchange_partner_in(cr, uid, context, partner_id)
127         return {'value': result, 'warning':warning}
128     
129 stock_picking()
130
131 class product_product(osv.osv):
132     _inherit = 'product.product'
133     _columns = {
134          'sale_line_warn' : fields.boolean('Sale Order Line'),
135          'sale_line_warn_msg' : fields.text('Message for Sale Order Line'),
136          'purchase_line_warn' : fields.boolean('Purchase Order Line'),
137          'purchase_line_warn_msg' : fields.text('Message for Purchase Order Line'),
138     }
139 product_product()
140
141 class sale_order_line(osv.osv):
142     _inherit = 'sale.order.line'
143     def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
144             uom=False, qty_uos=0, uos=False, name='', partner_id=False,
145             lang=False, update_tax=True, date_order=False, packaging=False):
146         warning = {}
147         if not product:
148             return {'value': {'th_weight' : 0, 'product_packaging': False,
149                 'product_uos_qty': qty}, 'domain': {'product_uom': [],
150                    'product_uos': []}}
151         product_obj = self.pool.get('product.product') 
152         product_info = product_obj.browse(cr, uid, product)
153         title=False
154         message=False
155         if product_info.sale_line_warn:
156             title= "Message",
157             message= product_info.sale_line_warn_msg
158         result =  super(sale_order_line, self).product_id_change( cr, uid, ids, pricelist, product, qty,
159             uom, qty_uos, uos, name, partner_id,
160             lang, update_tax, date_order, packaging)
161         if title and message:
162              warning['title']=title[0]
163              warning['message']=message
164         if result.get('warning',False):
165             warning['title']= title and title[0]+' & '+result['warning']['title'] or result['warning']['title']
166             warning['message']=message and message +'\n\n'+result['warning']['message'] or result['warning']['message']
167         return {'value': result['value'], 'warning':warning}
168     
169 sale_order_line()
170
171 class purchase_order_line(osv.osv):
172     _inherit = 'purchase.order.line'
173     def product_id_change(self,cr, uid, ids, pricelist, product, qty, uom,
174             partner_id, date_order=False):
175         warning = {}
176         if not product:
177             return {'value': {'price_unit': 0.0, 'name':'','notes':'', 'product_uom' : False}, 'domain':{'product_uom':[]}}
178         product_obj = self.pool.get('product.product') 
179         product_info = product_obj.browse(cr, uid, product)
180         title=False
181         message=False
182         if product_info.purchase_line_warn:
183             title =  "Message"
184             message =  product_info.purchase_line_warn_msg
185             
186         result =  super(purchase_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty, uom,
187             partner_id, date_order)
188         if title and message:
189              warning['title']=title[0]
190              warning['message']=message
191         if result.get('warning',False):
192             warning['title']= title and title[0]+' & '+result['warning']['title'] or result['warning']['title']
193             warning['message']=message and message +'\n\n'+result['warning']['message'] or result['warning']['message']
194         return {'value': result['value'], 'warning':warning}
195     
196 purchase_order_line()
197
198
199 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: