1
# -*- coding: utf-8 -*-
2
##############################################################################
4
# Copyright (C) 2012 Andrea Cometa.
5
# Email: info@andreacometa.it
6
# Web site: http://www.andreacometa.it
7
# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8
# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9
# Copyright (C) 2012 Associazione OpenERP Italia
10
# (<http://www.openerp-italia.org>).
13
# This program is free software: you can redistribute it and/or modify
14
# it under the terms of the GNU Affero General Public License as published
15
# by the Free Software Foundation, either version 3 of the License, or
16
# (at your option) any later version.
18
# This program is distributed in the hope that it will be useful,
19
# but WITHOUT ANY WARRANTY; without even the implied warranty of
20
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
# GNU Affero General Public License for more details.
23
# You should have received a copy of the GNU Affero General Public License
24
# along with this program. If not, see <http://www.gnu.org/licenses/>.
26
##############################################################################
28
from osv import fields,osv
30
# -------------------------------------------------------
32
# -------------------------------------------------------
33
class emissione_riba(osv.osv_memory):
34
_name = "riba.emissione"
35
_description = "Emissione Ricevute Bancarie"
38
'configurazione' : fields.many2one('riba.configurazione', 'Configurazione', required=True),
41
def crea_distinta(self, cr, uid, ids, context=None):
44
def create_rdl(conta, bank_id, rd_id, date_maturity, partner_id, acceptance_account_id):
49
'due_date' : date_maturity,
50
'partner_id' : partner_id,
52
'acceptance_account_id': acceptance_account_id,
54
return riba_distinta_line.create(cr, uid, rdl, context=context)
57
Qui creiamo la distinta
59
wizard_obj = self.browse(cr,uid,ids)[0]
60
active_ids = context and context.get('active_ids', [])
61
riba_distinta = self.pool.get('riba.distinta')
62
riba_distinta_line = self.pool.get('riba.distinta.line')
63
riba_distinta_move_line = self.pool.get('riba.distinta.move.line')
64
move_line_obj = self.pool.get('account.move.line')
68
'name': self.pool.get('ir.sequence').get(cr, uid, 'seq.riba.distinta'),
69
'config': wizard_obj.configurazione.id,
71
'date_created': fields.date.context_today(cr,uid,context),
73
rd_id = riba_distinta.create(cr, uid, rd)
75
# group by partner and due date
77
move_line_ids = move_line_obj.search(cr, uid, [('id', 'in', active_ids)], context=context)
78
for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
79
if move_line.partner_id.group_riba:
80
if not grouped_lines.get(
81
(move_line.partner_id.id, move_line.date_maturity), False):
82
grouped_lines[(move_line.partner_id.id, move_line.date_maturity)] = []
83
grouped_lines[(move_line.partner_id.id, move_line.date_maturity)].append(
89
for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
90
if move_line.partner_id.bank_ids:
91
bank_id = move_line.partner_id.bank_ids[0]
93
raise osv.except_osv('Attenzione!', 'Il cliente %s non ha la banca!!!' % move_line.partner_id.name)
94
if move_line.partner_id.group_riba:
95
for key in grouped_lines:
96
if key[0] == move_line.partner_id.id and key[1] == move_line.date_maturity:
97
rdl_id = create_rdl(conta, bank_id.id, rd_id, move_line.date_maturity, move_line.partner_id.id, wizard_obj.configurazione.acceptance_account_id.id)
99
invoice_date_group = ''
100
for grouped_line in grouped_lines[key]:
101
riba_distinta_move_line.create(cr, uid, {
102
'riba_line_id': rdl_id,
103
'amount': grouped_line.debit,
104
'move_line_id': grouped_line.id,
106
del grouped_lines[key]
109
rdl_id = create_rdl(conta, bank_id.id, rd_id, move_line.date_maturity, move_line.partner_id.id, wizard_obj.configurazione.acceptance_account_id.id)
110
riba_distinta_move_line.create(cr, uid, {
111
'riba_line_id': rdl_id,
112
'amount': move_line.debit,
113
'move_line_id': move_line.id,
118
# ----- show distinta form
119
mod_obj = self.pool.get('ir.model.data')
120
res = mod_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'view_distinta_riba_form')
121
res_id = res and res[1] or False,
127
'res_model': 'riba.distinta',
128
'type': 'ir.actions.act_window',
131
'res_id': rd_id or False,