~camptocamp/c2c-rd-addons/7.0

« back to all changes in this revision

Viewing changes to purchase_order_webkit/purchase.py

  • Committer: ferdinand
  • Date: 2012-06-19 13:31:49 UTC
  • Revision ID: office@chricar.at-20120619133149-r6mz0vaad2sbnf9r
[ADD] PO with dynamic fields

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
##############################################################################
 
3
#
 
4
#    OpenERP, Open Source Management Solution
 
5
#    Copyright (C) 2004-2011 Tiny SPRL (<http://tiny.be>).
 
6
#    Copyright (C) 2011 Camptocamp Austria (<http://www.camptocamp.com>).
 
7
#
 
8
#    This program is free software: you can redistribute it and/or modify
 
9
#    it under the terms of the GNU Affero General Public License as
 
10
#    published by the Free Software Foundation, either version 3 of the
 
11
#    License, or (at your option) any later version.
 
12
#
 
13
#    This program is distributed in the hope that it will be useful,
 
14
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
#    GNU Affero General Public License for more details.
 
17
#
 
18
#    You should have received a copy of the GNU Affero General Public License
 
19
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
20
#
 
21
##############################################################################
 
22
from osv import fields, osv, orm
 
23
from tools.translate import _
 
24
import one2many_sorted
 
25
 
 
26
class purchase_order(osv.osv):
 
27
    _inherit = "purchase.order"
 
28
 
 
29
    def _print_uom(self, cr, uid, ids, name, args, context=None):
 
30
        res = {}
 
31
        for order in self.browse(cr, uid, ids, context=context):
 
32
          print_uom = False
 
33
          if order.order_line:
 
34
            for line in order.order_line:
 
35
                   print_uom = True
 
36
          res[order.id] =  print_uom
 
37
        return res
 
38
 
 
39
 
 
40
    def _print_ean(self, cr, uid, ids, name, args, context=None):
 
41
        res = {}
 
42
        for order in self.browse(cr, uid, ids, context=context):
 
43
          print_ean = False
 
44
          if order.order_line and order.company_id.print_ean:
 
45
            for line in order.order_line:
 
46
                if line.product_packaging.ean or line.product_id.ean13 :
 
47
                   print_ean = True
 
48
          res[order.id] =  print_ean
 
49
        return res
 
50
 
 
51
    def _print_code(self, cr, uid, ids, name, args, context=None):
 
52
        res = {}
 
53
        for order in self.browse(cr, uid, ids, context=context):
 
54
            print_code = False
 
55
            if order.order_line:
 
56
                for line in order.order_line:
 
57
                    if line.product_id.default_code:
 
58
                        print_code = True
 
59
                        res[order.id] =  print_code
 
60
        return res
 
61
                            
 
62
    def _get_cols(self, cr, uid, ids, name, args, context=None):
 
63
        res = {}
 
64
        for order in self.browse(cr, uid, ids, context=context):
 
65
          cols = 2
 
66
          if order.print_uom:
 
67
             cols += 2
 
68
          if order.print_ean:
 
69
             cols += 1
 
70
          if order.print_code:
 
71
             cols += 1
 
72
           
 
73
          res[order.id] = cols
 
74
 
 
75
        return res
 
76
 
 
77
 
 
78
    _columns = {
 
79
              'print_uom': fields.function(_print_uom, method=True, type='boolean', string='Print UoM if different from UoS',),
 
80
              'print_ean': fields.function(_print_ean, method=True, type='boolean', string='Print EAN if available',),
 
81
              'print_code': fields.function(_print_code, method=True, type='boolean', string='Print code if available',),
 
82
              'cols': fields.function(_get_cols, method=True, type='integer', string='No of columns before totals',),
 
83
              'order_line_sorted' : one2many_sorted.one2many_sorted
 
84
              ( 'purchase.order.line'
 
85
              , 'order_id'
 
86
              , 'Order Lines Sorted'
 
87
              , states={'draft': [('readonly', False)]}
 
88
              , order  = 'product_id.name,name'
 
89
              ),
 
90
#              'order_line' : one2many_sorted.one2many_sorted
 
91
#              ( 'purchase.order.line'
 
92
#              , 'order_id'
 
93
#              , 'Order Lines Sorted'
 
94
#              , states={'draft': [('readonly', False)]}
 
95
#              , order  = 'product_id.name,name'
 
96
#              ),
 
97
              
 
98
    }
 
99
 
 
100
 
 
101
purchase_order()