~nicolariolini/openobject-italia/save_fiscalcode_data

« back to all changes in this revision

Viewing changes to l10n_it_corrispettivi/account.py

  • Committer: Davide Corio
  • Date: 2013-02-18 19:41:51 UTC
  • mto: This revision was merged to the branch mainline in revision 204.
  • Revision ID: davide.corio@agilebg.com-20130218194151-ej8hs1vjj50ifuls
[ADD] l10n_it_corrispettivi

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- encoding: utf-8 -*-
 
2
##############################################################################
 
3
#    
 
4
#    Copyright (C) 2011 Associazione OpenERP Italia
 
5
#    (<http://www.openerp-italia.org>). 
 
6
#
 
7
#    This program is free software: you can redistribute it and/or modify
 
8
#    it under the terms of the GNU Affero General Public License as published
 
9
#    by the Free Software Foundation, either version 3 of the License, or
 
10
#    (at your option) any later version.
 
11
#
 
12
#    This program is distributed in the hope that it will be useful,
 
13
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
#    GNU General Public License for more details.
 
16
#
 
17
#    You should have received a copy of the GNU Affero General Public License
 
18
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
19
#
 
20
##############################################################################
 
21
 
 
22
from osv import fields, osv
 
23
from tools.translate import _
 
24
 
 
25
class account_invoice(osv.osv):
 
26
    _inherit = 'account.invoice'
 
27
    _columns = {
 
28
        'corrispettivo': fields.boolean('Corrispettivo'),
 
29
        }
 
30
 
 
31
    def onchange_company_id(self, cr, uid, ids, company_id, part_id, type, invoice_line, currency_id, context=None):
 
32
        if not context:
 
33
            context={}
 
34
        journal_obj = self.pool.get('account.journal')
 
35
        res = super(account_invoice, self).onchange_company_id(cr, uid, ids, company_id, part_id, type, invoice_line, currency_id)
 
36
        is_corrispettivo = context.get('corrispettivo', False)
 
37
        corr_journal_ids = journal_obj.search(cr, uid, [('corrispettivi','=', True), ('company_id','=', company_id)])
 
38
 
 
39
        # Se è un corrispettivo e la company ha almeno un sezionale corrispettivi
 
40
        if is_corrispettivo and corr_journal_ids:
 
41
            res['value']['journal_id']  = corr_journal_ids[0]
 
42
 
 
43
        # Se la company ha almeno un sezionale corrispettivi ma l'invoice non è un corrispettivo
 
44
        elif corr_journal_ids and corr_journal_ids[0] in res['domain']['journal_id'][0][2]:
 
45
            # Se l'on_change di invoice ha impostato il journal corrispettivi
 
46
            if corr_journal_ids[0] == res['value']['journal_id'] and len(res['domain']['journal_id'][0][2]) > 1:
 
47
                for j_id in res['domain']['journal_id'][0][2]:
 
48
                    if corr_journal_ids[0] != j_id:
 
49
                        res['value']['journal_id'] = j_id
 
50
                        break
 
51
        return res
 
52
 
 
53
 
 
54
    def _get_account(self, cr, uid, context=None):
 
55
        if context is None:
 
56
            context = {}
 
57
        is_corrispettivo = context.get('corrispettivo', False)
 
58
        res = False
 
59
        if is_corrispettivo:
 
60
            partner_obj = partner_ids = self.pool.get('res.partner')
 
61
            partner_ids=partner_obj.search(cr, uid, [('corrispettivi', '=', True)])
 
62
            if not partner_ids:
 
63
                raise osv.except_osv(_('Error!'), 
 
64
                     _('No partner "corrispettivi" found'))
 
65
            partner = partner_obj.browse(cr, uid, partner_ids[0])
 
66
            res = partner.property_account_receivable.id
 
67
        return res
 
68
 
 
69
    def _get_partner_id(self, cr, uid, context=None):
 
70
        if context is None:
 
71
            context = {}
 
72
        is_corrispettivo = context.get('corrispettivo', False)
 
73
        res = False
 
74
        if is_corrispettivo:
 
75
            partner_obj = partner_ids = self.pool.get('res.partner')
 
76
            partner_ids=partner_obj.search(cr, uid, [('corrispettivi', '=', True)])
 
77
            if not partner_ids:
 
78
                raise osv.except_osv(_('Error!'), 
 
79
                     _('No partner "corrispettivi" found'))
 
80
            res = partner_ids[0]
 
81
        return res
 
82
 
 
83
    def onchange_corrispettivo(self, cr, uid, ids, corrispettivo=False, context=None):
 
84
        res = {}
 
85
        user_obj = self.pool.get('res.users')
 
86
        journal_obj = self.pool.get('account.journal') 
 
87
        company_id = user_obj.browse(cr,uid,uid).company_id.id
 
88
        corr_journal_ids = journal_obj.search(cr, uid, [('corrispettivi','=', True), ('company_id','=', company_id)])
 
89
        if corr_journal_ids and corrispettivo:
 
90
            res = {'value': {'journal_id': corr_journal_ids[0]}}
 
91
        return res
 
92
 
 
93
    _defaults = {
 
94
        'partner_id': _get_partner_id,
 
95
        'account_id': _get_account,
 
96
        }
 
97
 
 
98
account_invoice()
 
99
 
 
100
class account_journal(osv.osv):
 
101
    _inherit = 'account.journal'
 
102
    _columns = {
 
103
        'corrispettivi': fields.boolean('Corrispettivi'),
 
104
        }
 
105
account_journal()
 
106
 
 
107
class res_partner(osv.osv):
 
108
    _inherit = 'res.partner'
 
109
    _columns = {
 
110
        'corrispettivi': fields.boolean('Corrispettivi'),
 
111
        }
 
112
res_partner()