~unifield-team/unifield-wm/us-826

« back to all changes in this revision

Viewing changes to sale_override/res_partner.py

  • Committer: matthieu.choplin at msf
  • Date: 2012-08-30 07:48:00 UTC
  • mto: This revision was merged to the branch mainline in revision 1118.
  • Revision ID: matthieu.choplin@geneva.msf.org-20120830074800-l442bu42mt0yzutn
[uf-1374]- change the write and create by an _sql_constraint on the financing contract check dates

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- coding: utf-8 -*-
2
 
##############################################################################
3
 
#
4
 
#    Copyright (C) 2011 MSF, TeMPO Consulting
5
 
#
6
 
#    This program is free software: you can redistribute it and/or modify
7
 
#    it under the terms of the GNU Affero General Public License as
8
 
#    published by the Free Software Foundation, either version 3 of the
9
 
#    License, or (at your option) any later version.
10
 
#
11
 
#    This program is distributed in the hope that it will be useful,
12
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
#    GNU Affero General Public License for more details.
15
 
#
16
 
#    You should have received a copy of the GNU Affero General Public License
17
 
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 
#
19
 
##############################################################################
20
 
 
21
 
from osv import osv
22
 
from osv import fields
23
 
from tools.translate import _
24
 
 
25
 
class res_partner(osv.osv):
26
 
    _name = 'res.partner'
27
 
    _inherit = 'res.partner'
28
 
 
29
 
    def _get_fake(self, cr, uid, ids, fields, arg, context=None):
30
 
        """
31
 
        Fake method for 'check_partner_so' field.
32
 
        """
33
 
        if isinstance(ids, (int, long)):
34
 
            ids = [ids]
35
 
        result = {}
36
 
        for id in ids:
37
 
            result[id] = False
38
 
        return result
39
 
 
40
 
    def _check_partner_type_so(self, cr, uid, obj, name, args, context=None):
41
 
        """
42
 
        Create a domain on the field partner_id
43
 
        """
44
 
        if context is None:
45
 
            context = {}
46
 
        if not args:
47
 
            return []
48
 
        newargs = []
49
 
        partner_obj = self.pool.get('res.partner')
50
 
        for arg in args:
51
 
            if arg[0] == 'check_partner_so':
52
 
                if arg[1] != '=' \
53
 
                or arg[2]['order_type'] not in ['regular', 'donation_exp', 'donation_st', 'loan', 'in_kind', 'purchase_list', 'direct']\
54
 
                or not isinstance(arg[2]['partner_id'], (int, long)):
55
 
                    raise osv.except_osv(_('Error'), _('Filter check_partner_so different than (arg[0], =, %s) not implemented.') % arg[2])
56
 
                partner_id = arg[2]['partner_id']
57
 
                order_type = arg[2]['order_type']
58
 
                p_list = []
59
 
                if order_type in ['regular']:
60
 
                    p_list = ['internal', 'intermission', 'external'] # UTP-953: Cannot create an FO regular for Intersection due to the Push Flow sync
61
 
                elif order_type in ['donation_st', 'loan', 'donation_exp']:
62
 
                    p_list = ['internal', 'intermission', 'section', 'external']
63
 
                elif order_type in ['direct', 'in_kind']:
64
 
                    p_list = ['internal', 'intermission', 'section', 'esc', 'external']
65
 
                # show all supplier for non taken cases
66
 
                else:
67
 
                    pass
68
 
                if p_list:
69
 
                    newargs.append(('partner_type', 'in', p_list))
70
 
            else:
71
 
                newargs.append(args)
72
 
        return newargs
73
 
 
74
 
    def _search_partner_not_int(self, cr, uid, obj, name, args, context=None):
75
 
        dom = []
76
 
        for arg in args:
77
 
            if not isinstance(arg[2], dict) or not arg[2].get('ids') or not arg[2].get('ids')[0]:
78
 
                return dom
79
 
            if arg[2]['type'] == 'po':
80
 
                for po in self.pool.get('purchase.order').browse(cr, uid, arg[2]['ids'], context=context):
81
 
                    if po.po_from_fo:
82
 
                        dom.append(('partner_type', 'not in', ['internal','section','intermission']))
83
 
            else:
84
 
                for tender in self.pool.get('tender').browse(cr, uid, arg[2]['ids'], context=context):
85
 
                    if tender.tender_from_fo:
86
 
                        dom.append(('partner_type', 'not in', ['internal','section','intermission']))
87
 
        return dom
88
 
 
89
 
    _columns = {
90
 
        'check_partner_so': fields.function(_get_fake, method=True, type='boolean', string='Check Partner Type On SO', fnct_search=_check_partner_type_so),
91
 
        'partner_not_int': fields.function(_get_fake, method=True, type='boolean', string='Is PO/Tender from FO ?', fnct_search=_search_partner_not_int),
92
 
    }
93
 
 
94
 
res_partner()
95
 
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: