1
# -*- encoding: utf-8 -*-
2
##############################################################################
4
# Copyright (C) 2011 Associazione OpenERP Italia
5
# (<http://www.openerp-italia.org>).
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.
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.
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/>.
20
##############################################################################
22
from osv import fields, osv
23
from tools.translate import _
25
class account_invoice(osv.osv):
26
_inherit = 'account.invoice'
28
'corrispettivo': fields.boolean('Corrispettivo'),
31
def onchange_company_id(self, cr, uid, ids, company_id, part_id, type, invoice_line, currency_id, context=None):
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)])
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]
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
54
def _get_account(self, cr, uid, context=None):
57
is_corrispettivo = context.get('corrispettivo', False)
60
partner_obj = partner_ids = self.pool.get('res.partner')
61
partner_ids=partner_obj.search(cr, uid, [('corrispettivi', '=', True)])
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
69
def _get_partner_id(self, cr, uid, context=None):
72
is_corrispettivo = context.get('corrispettivo', False)
75
partner_obj = partner_ids = self.pool.get('res.partner')
76
partner_ids=partner_obj.search(cr, uid, [('corrispettivi', '=', True)])
78
raise osv.except_osv(_('Error!'),
79
_('No partner "corrispettivi" found'))
83
def onchange_corrispettivo(self, cr, uid, ids, corrispettivo=False, context=None):
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]}}
94
'partner_id': _get_partner_id,
95
'account_id': _get_account,
100
class account_journal(osv.osv):
101
_inherit = 'account.journal'
103
'corrispettivi': fields.boolean('Corrispettivi'),
107
class res_partner(osv.osv):
108
_inherit = 'res.partner'
110
'corrispettivi': fields.boolean('Corrispettivi'),