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

« back to all changes in this revision

Viewing changes to account_override/account.py

  • Committer: jf
  • Date: 2014-01-14 07:53:33 UTC
  • mfrom: (1868.1.34 UF_2237)
  • Revision ID: jfb@tempo-consulting.fr-20140114075333-hmnqc97prb57w0rn
UF-2237 [IMP] Restrictions on accounts use in the interface
lp:~unifield-team/unifield-wm/UF_2237

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
from osv import osv
25
25
from osv import fields
 
26
from account_override import ACCOUNT_RESTRICTED_AREA
26
27
from tools.translate import _
27
28
from time import strftime
28
29
import datetime
80
81
        # Some checks
81
82
        if context is None:
82
83
            context = {}
83
 
        # Prepare some values
84
84
        res = {}
85
85
        company_account_active = False
86
86
        company = self.pool.get('res.users').browse(cr, uid, uid).company_id
106
106
        # Checks
107
107
        if context is None:
108
108
            context = {}
109
 
        # Prepare some values
110
109
        arg = []
111
110
        company_account_active = False
112
111
        company = self.pool.get('res.users').browse(cr, uid, uid).company_id
136
135
                raise osv.except_osv(_('Error'), _('Operation not implemented!'))
137
136
        return arg
138
137
 
 
138
    def _get_restricted_area(self, cr, uid, ids, field_name, args, context=None):
 
139
        """
 
140
        FAKE METHOD
 
141
        """
 
142
        # Check
 
143
        if context is None:
 
144
            context = {}
 
145
        res = {}
 
146
        for account_id in ids:
 
147
            res[account_id] = True
 
148
        return res
 
149
 
 
150
    def _search_restricted_area(self, cr, uid, ids, name, args, context=None):
 
151
        """
 
152
        Search the right domain to apply to this account filter.
 
153
        For this, it uses the "ACCOUNT_RESTRICTED_AREA" variable in which we list all well-known cases.
 
154
        The key args is "restricted_area", the param is like "register_lines".
 
155
        In ACCOUNT_RESTRICTED_AREA, we use the param as key. It so return the domain to apply.
 
156
        If no domain, return an empty domain.
 
157
        """
 
158
        # Check
 
159
        if context is None:
 
160
            context = {}
 
161
        arg = []
 
162
        for x in args:
 
163
            if x[0] == 'restricted_area' and x[2]:
 
164
                if x[2] in ACCOUNT_RESTRICTED_AREA:
 
165
                    for subdomain in ACCOUNT_RESTRICTED_AREA[x[2]]:
 
166
                        arg.append(subdomain)
 
167
            elif x[0] != 'restricted_area':
 
168
                arg.append(x)
 
169
            else:
 
170
                raise osv.except_osv(_('Error'), _('Operation not implemented!'))
 
171
        return arg
 
172
 
 
173
    def _get_fake_cash_domain(self, cr, uid, ids, field_name, arg, context=None):
 
174
        """
 
175
        Fake method for domain
 
176
        """
 
177
        if context is None:
 
178
            context = {}
 
179
        res = {}
 
180
        for cd_id in ids:
 
181
            res[cd_id] = True
 
182
        return res
 
183
 
 
184
    def _search_cash_domain(self, cr, uid, ids, field_names, args, context=None):
 
185
        """
 
186
        Return a given domain (defined in ACCOUNT_RESTRICTED_AREA variable)
 
187
        """
 
188
        if context is None:
 
189
            context = {}
 
190
        arg = []
 
191
        for x in args:
 
192
            if x[0] and x[1] == '=' and x[2]:
 
193
                if x[2] in ['cash', 'bank', 'cheque']:
 
194
                    arg.append(('restricted_area', '=', 'journals'))
 
195
            else:
 
196
                raise osv.except_osv(_('Error'), _('Operation not implemented!'))
 
197
        return arg
 
198
 
139
199
    _columns = {
140
200
        'name': fields.char('Name', size=128, required=True, select=True, translate=True),
141
201
        'type_for_register': fields.selection([('none', 'None'), ('transfer', 'Internal Transfer'), ('transfer_same','Internal Transfer (same currency)'), 
147
207
        'shrink_entries_for_hq': fields.boolean("Shrink entries for HQ export", help="Check this attribute if you want to consolidate entries on this account before they are exported to the HQ system."),
148
208
        'filter_active': fields.function(_get_active, fnct_search=_search_filter_active, type="boolean", method=True, store=False, string="Show only active accounts",),
149
209
        'is_analytic_addicted': fields.function(_get_is_analytic_addicted, fnct_search=_search_is_analytic_addicted, method=True, type='boolean', string='Analytic-a-holic?', help="Is this account addicted on analytic distribution?", store=False, readonly=True),
 
210
        'restricted_area': fields.function(_get_restricted_area, fnct_search=_search_restricted_area, type='boolean', method=True, string="Is this account allowed?"),
 
211
        'cash_domain': fields.function(_get_fake_cash_domain, fnct_search=_search_cash_domain, method=True, type='boolean', string="Domain used to search account in journals", help="This is only to change domain in journal's creation."),
150
212
    }
151
213
 
152
214
    _defaults = {