Merge lp:~openobject-italia-core-devs/openobject-italia/adding_riba_v7 into lp:~openobject-italia-core-devs/openobject-italia/italian-addons-7.0

Proposed by Davide Corio
Status: Merged
Merged at revision: 235
Proposed branch: lp:~openobject-italia-core-devs/openobject-italia/adding_riba_v7
Merge into: lp:~openobject-italia-core-devs/openobject-italia/italian-addons-7.0
Diff against target: 3284 lines (+3149/-0)
26 files modified
l10n_it_ricevute_bancarie/AUTHORS.txt (+3/-0)
l10n_it_ricevute_bancarie/__init__.py (+32/-0)
l10n_it_ricevute_bancarie/__openerp__.py (+71/-0)
l10n_it_ricevute_bancarie/account/__init__.py (+24/-0)
l10n_it_ricevute_bancarie/account/account.py (+99/-0)
l10n_it_ricevute_bancarie/account/account_view.xml (+149/-0)
l10n_it_ricevute_bancarie/configurazione.py (+86/-0)
l10n_it_ricevute_bancarie/configurazione_view.xml (+50/-0)
l10n_it_ricevute_bancarie/i18n/it.po (+930/-0)
l10n_it_ricevute_bancarie/partner/__init__.py (+24/-0)
l10n_it_ricevute_bancarie/partner/partner.py (+38/-0)
l10n_it_ricevute_bancarie/partner/partner_view.xml (+23/-0)
l10n_it_ricevute_bancarie/riba.py (+405/-0)
l10n_it_ricevute_bancarie/riba_sequence.xml (+17/-0)
l10n_it_ricevute_bancarie/riba_view.xml (+180/-0)
l10n_it_ricevute_bancarie/riba_workflow.xml (+112/-0)
l10n_it_ricevute_bancarie/security/ir.model.access.csv (+15/-0)
l10n_it_ricevute_bancarie/wizard/__init__.py (+30/-0)
l10n_it_ricevute_bancarie/wizard/riba_file_export.py (+244/-0)
l10n_it_ricevute_bancarie/wizard/riba_file_export.xml (+32/-0)
l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py (+139/-0)
l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml (+41/-0)
l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py (+133/-0)
l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml (+50/-0)
l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py (+177/-0)
l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml (+45/-0)
To merge this branch: bzr merge lp:~openobject-italia-core-devs/openobject-italia/adding_riba_v7
Reviewer Review Type Date Requested Status
Andrea Cometa (community) Approve
Lorenzo Battistini Approve
Review via email: mp+194620@code.launchpad.net

Description of the change

porting di l10n_it_ricevute_bancarie a v7 usando la versione originale per 6.1 + fix necessari per v7

To post a comment you must log in.
Revision history for this message
Davide Corio (enlightx-deactivatedaccount) wrote :

Questo MP parte dalla versione 6.1.
Alcune modifiche apportate da Bruno erano effettivamente necessarie per compatibilità a v7.

Ho escluso cambiamenti potenzialmente considerabili migliorie, per il momento.

Revision history for this message
Lorenzo Battistini (elbati) wrote :

Grazie Davide, allego il diff tra 6.1 e 7.0
http://pastie.org/8471619

Revision history for this message
Lorenzo Battistini (elbati) wrote :

Facendo riferimento al diff

l 140: come mai è stato rimosso il campo 'amount_residual'?

l 144: come mai è stato rimosso il campo 'reconcile_id'?

l 159: come mai è stato rimosso il filtro 'Issued'?

l 244: la riga

<field name="domain">['&amp;','|',('riba','=','True'),('unsolved_invoice_ids','!=',False),('account_id.type','=','receivable')]</field>

è sostituita con

<field name="domain">['&amp;','|',('riba','=','True'),('unsolved_invoice_ids','!=',False),('account_id.type','=','receivable'), ('reconcile_id', '=', False)]</field>

L'aggiunta del filtro '('reconcile_id', '=', False)' risolve un baco in particolare?

l 353, 361, 370, 378, 662: come mai viene passato il self alla chiamata del metodo?

Grazie

review: Needs Information
Revision history for this message
Lorenzo Battistini (elbati) wrote :

Come reminder:
in 6.1 è stata aggiunta la seguente fix
https://code.launchpad.net/~a-camilli/openobject-italia/6.1-fix-riba_emission_partner_id_avere/+merge/195509
che quindi dovrebbe essere inclusa anche in 7.0

Davide, eventualmente puoi impostare ~openobject-italia-core-devs come owner di questo branch, così se non avessi tempo di fare modifiche e volesse farle qualcun'altro, può.

228. By Lorenzo Battistini

[FIX] https://code.launchpad.net/~openobject-italia-core-devs/openobject-italia/adding_riba_v7/+merge/194620/comments/449412

229. By Lorenzo Battistini

[FIX] AttributeError: 'cursor' object has no attribute 'pool'
and
valueerror

230. By Lorenzo Battistini

[FIX] ricevute_bancarie - partner_id su accettazione distinta

231. By Lorenzo Battistini

[IMP] PEP8

232. By Lorenzo Battistini

[FIX] osv.osv

233. By Lorenzo Battistini

[IMP] PEP8

234. By Lorenzo Battistini

[IMP] PEP8

235. By Lorenzo Battistini

[REM] reverting PEP8 improvements.
Moving to lp:~agilebg/openobject-italia/riba_v7_style

Revision history for this message
Lorenzo Battistini (elbati) wrote :

Ho sistemato le cose che secondo me mancavano.
Ecco il nuovo diff
http://pastie.org/8556016

236. By Andrea Cometa

[fix] merged l10n_ricevute_bancarie https://code.launchpad.net/~scigghia/openobject-italia/riba_v7_scigghia

Revision history for this message
Lorenzo Battistini (elbati) :
review: Approve
Revision history for this message
Andrea Cometa (scigghia) wrote :

per me il modulo è ok, a parte il bug https://bugs.launchpad.net/openobject-italia/+bug/1285560 aggiungerei la data di registrazione al fine di consentire l'inserimento di distinte anche successivamente alla loro reale emissione e registrazione
però per le prove fatte è utilizzabile

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'l10n_it_ricevute_bancarie'
2=== added file 'l10n_it_ricevute_bancarie/AUTHORS.txt'
3--- l10n_it_ricevute_bancarie/AUTHORS.txt 1970-01-01 00:00:00 +0000
4+++ l10n_it_ricevute_bancarie/AUTHORS.txt 2014-02-20 16:47:57 +0000
5@@ -0,0 +1,3 @@
6+Lorenzo Battistini <lorenzo.battistini@agilebg.com>
7+Andrea Cometa <info@andreacometa.it>
8+Davide Corio <info@davidecorio.com>
9
10=== added file 'l10n_it_ricevute_bancarie/__init__.py'
11--- l10n_it_ricevute_bancarie/__init__.py 1970-01-01 00:00:00 +0000
12+++ l10n_it_ricevute_bancarie/__init__.py 2014-02-20 16:47:57 +0000
13@@ -0,0 +1,32 @@
14+# -*- coding: utf-8 -*-
15+##############################################################################
16+#
17+# Copyright (C) 2012 Andrea Cometa.
18+# Email: info@andreacometa.it
19+# Web site: http://www.andreacometa.it
20+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
21+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
22+# Copyright (C) 2012 Associazione OpenERP Italia
23+# (<http://www.openerp-italia.org>).
24+#
25+# This program is free software: you can redistribute it and/or modify
26+# it under the terms of the GNU Affero General Public License as published
27+# by the Free Software Foundation, either version 3 of the License, or
28+# (at your option) any later version.
29+#
30+# This program is distributed in the hope that it will be useful,
31+# but WITHOUT ANY WARRANTY; without even the implied warranty of
32+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33+# GNU Affero General Public License for more details.
34+#
35+# You should have received a copy of the GNU Affero General Public License
36+# along with this program. If not, see <http://www.gnu.org/licenses/>.
37+#
38+##############################################################################
39+
40+import configurazione
41+import partner
42+import riba
43+import account
44+import wizard
45+
46
47=== added file 'l10n_it_ricevute_bancarie/__openerp__.py'
48--- l10n_it_ricevute_bancarie/__openerp__.py 1970-01-01 00:00:00 +0000
49+++ l10n_it_ricevute_bancarie/__openerp__.py 2014-02-20 16:47:57 +0000
50@@ -0,0 +1,71 @@
51+# -*- coding: utf-8 -*-
52+##############################################################################
53+#
54+# Copyright (C) 2012 Andrea Cometa.
55+# Email: info@andreacometa.it
56+# Web site: http://www.andreacometa.it
57+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
58+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
59+# Copyright (C) 2012 Associazione OpenERP Italia
60+# (<http://www.openerp-italia.org>).
61+#
62+# This program is free software: you can redistribute it and/or modify
63+# it under the terms of the GNU Affero General Public License as published
64+# by the Free Software Foundation, either version 3 of the License, or
65+# (at your option) any later version.
66+#
67+# This program is distributed in the hope that it will be useful,
68+# but WITHOUT ANY WARRANTY; without even the implied warranty of
69+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70+# GNU Affero General Public License for more details.
71+#
72+# You should have received a copy of the GNU Affero General Public License
73+# along with this program. If not, see <http://www.gnu.org/licenses/>.
74+#
75+##############################################################################
76+
77+{
78+ "name": "Ricevute Bancarie",
79+ "version": "1.3",
80+ "author": "OpenERP Italian Community",
81+ "category": "Accounting & Finance",
82+ "website": "http://www.openerp-italia.org",
83+ "description": """
84+Gestione delle Ricevute Bancarie
85+--------------------------------
86+Nella configurazione delle Ri.Ba. è possibile specificare se si tratti di 'salvo buon fine' o 'al dopo incasso'. I due tipi di Ri.Ba. hanno un flusso completamente diverso. In caso di 'al dopo incasso', nessuna registrazione verrà effettuata automaticamente e le fatture risulteranno pagate solo al momento dell'effettivo incasso.
87+
88+E' possibile specificare diverse configurazioni (dal menù configurazioni -> varie -> Ri.Ba.). Per ognuna, in caso di 'salvo buon fine', è necessario specificare almeno il sezionale ed il conto da utilizzare al momento dell'accettazione della distinta da parte della banca.
89+La configurazione relativa alla fase di accredito, verrà usata nel momento in cui la banca accredita l'importo della distinta. Mentre quella relativa all'insoluto verrà utilizzato in caso di mancato pagamento da parte del cliente.
90+
91+Per utilizzare il meccanismo delle Ri.Ba. è necessario configurare un termine di pagamento di tipo 'Ri.Ba.'.
92+
93+Per emettere una distinta bisogna andare su Ri.Ba. -> emetti Ri.Ba. e selezionare i pagamenti per i quali emettere la distinta.
94+Se per il cliente è stato abilitato il raggruppo, i pagamenti dello stesso cliente e con la stessa data di scadenza andranno a costituire un solo elemento della distinta.
95+
96+I possibili stati della distinta sono: bozza, accettata, accreditata, pagata, insoluta, annullata.
97+Ad ogni passaggio di stato sarà possibile generare le relative registrazioni contabili, le quali verranno riepilogate nel tab 'contabilità'. Questo tab è presente sia sulla distinta che sulle sue righe.
98+
99+Qui https://docs.google.com/document/d/1xCqeTcY6CF-Dgk_Avthhy7iwg_aG86WzNv3E_HHQkt4/edit# abbiamo un esempio delle tipiche registrazioni generate da un flusso 'salvo buon fine'.
100+ """,
101+ 'images': [],
102+ 'depends': ['account','account_voucher', 'l10n_it_fiscalcode', 'account_due_list'],
103+ 'init_xml': [],
104+ 'data': [
105+ "partner/partner_view.xml",
106+ "configurazione_view.xml",
107+ "riba_sequence.xml",
108+ "wizard/wizard_accreditation.xml",
109+ "wizard/wizard_unsolved.xml",
110+ "riba_view.xml",
111+ "account/account_view.xml",
112+ "wizard/wizard_emissione_riba.xml",
113+ "wizard/riba_file_export.xml",
114+ "riba_workflow.xml",
115+ "security/ir.model.access.csv",
116+ ],
117+ 'demo_xml': [],
118+ 'test': [],
119+ 'installable': True,
120+ 'active': False,
121+}
122
123=== added directory 'l10n_it_ricevute_bancarie/account'
124=== added file 'l10n_it_ricevute_bancarie/account/__init__.py'
125--- l10n_it_ricevute_bancarie/account/__init__.py 1970-01-01 00:00:00 +0000
126+++ l10n_it_ricevute_bancarie/account/__init__.py 2014-02-20 16:47:57 +0000
127@@ -0,0 +1,24 @@
128+# -*- coding: utf-8 -*-
129+##############################################################################
130+#
131+# Copyright (C) 2012 Andrea Cometa.
132+# Email: info@andreacometa.it
133+# Web site: http://www.andreacometa.it
134+#
135+# This program is free software: you can redistribute it and/or modify
136+# it under the terms of the GNU Affero General Public License as published
137+# by the Free Software Foundation, either version 3 of the License, or
138+# (at your option) any later version.
139+#
140+# This program is distributed in the hope that it will be useful,
141+# but WITHOUT ANY WARRANTY; without even the implied warranty of
142+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
143+# GNU Affero General Public License for more details.
144+#
145+# You should have received a copy of the GNU Affero General Public License
146+# along with this program. If not, see <http://www.gnu.org/licenses/>.
147+#
148+##############################################################################
149+
150+import account
151+
152
153=== added file 'l10n_it_ricevute_bancarie/account/account.py'
154--- l10n_it_ricevute_bancarie/account/account.py 1970-01-01 00:00:00 +0000
155+++ l10n_it_ricevute_bancarie/account/account.py 2014-02-20 16:47:57 +0000
156@@ -0,0 +1,99 @@
157+# -*- coding: utf-8 -*-
158+##############################################################################
159+#
160+# Copyright (C) 2012 Andrea Cometa.
161+# Email: info@andreacometa.it
162+# Web site: http://www.andreacometa.it
163+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
164+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
165+# Copyright (C) 2012 Associazione OpenERP Italia
166+# (<http://www.openerp-italia.org>).
167+#
168+# This program is free software: you can redistribute it and/or modify
169+# it under the terms of the GNU Affero General Public License as published
170+# by the Free Software Foundation, either version 3 of the License, or
171+# (at your option) any later version.
172+#
173+# This program is distributed in the hope that it will be useful,
174+# but WITHOUT ANY WARRANTY; without even the implied warranty of
175+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
176+# GNU Affero General Public License for more details.
177+#
178+# You should have received a copy of the GNU Affero General Public License
179+# along with this program. If not, see <http://www.gnu.org/licenses/>.
180+#
181+##############################################################################
182+
183+from openerp.osv import fields, orm
184+
185+class account_payment_term(orm.Model):
186+ # flag riba utile a distinguere la modalità di pagamento
187+ _inherit = 'account.payment.term'
188+
189+ _columns = {
190+ 'riba' : fields.boolean('Riba'),
191+ }
192+ _defaults = {
193+ 'riba': False,
194+ }
195+
196+
197+class res_bank_add_field(orm.Model):
198+ _inherit = 'res.bank'
199+ _columns = {
200+ 'banca_estera' : fields.boolean('Banca Estera'),
201+ }
202+
203+
204+class res_partner_bank_add(orm.Model):
205+ _inherit = 'res.partner.bank'
206+ _columns = {
207+ 'codice_sia' : fields.char('Codice SIA', size=5, help="Identification Code of the Company in the System Interbank")
208+ }
209+
210+
211+# se distinta_line_ids == None allora non è stata emessa
212+class account_move_line(orm.Model):
213+ _inherit = "account.move.line"
214+
215+ _columns = {
216+ 'distinta_line_ids' : fields.one2many('riba.distinta.move.line', 'move_line_id', "Dettaglio riba"),
217+ 'riba': fields.related('invoice', 'payment_term', 'riba',
218+ type='boolean', string='RiBa', store=False),
219+ 'unsolved_invoice_ids': fields.many2many('account.invoice', 'invoice_unsolved_line_rel', 'line_id', 'invoice_id', 'Unsolved Invoices'),
220+ 'iban' : fields.related('partner_id', 'bank_ids', 'iban', type='char', string='IBAN', store=False),
221+ }
222+ _defaults = {
223+ 'distinta_line_ids' : None,
224+ }
225+
226+ def fields_view_get(
227+ self, cr, uid, view_id=None, view_type='form',
228+ context={}, toolbar=False, submenu=False
229+ ):
230+ # Special view for account.move.line object
231+ # (for ex. tree view contains user defined fields)
232+ result = super(account_move_line, self).fields_view_get(
233+ cr, uid, view_id, view_type, context, toolbar=toolbar,
234+ submenu=submenu)
235+ try:
236+ view_payments_tree_id = self.pool.get(
237+ 'ir.model.data').get_object_reference(
238+ cr, uid, 'l10n_it_ricevute_bancarie',
239+ 'view_riba_da_emettere_tree')
240+ except ValueError:
241+ return result
242+ if view_id == view_payments_tree_id[1]:
243+ # Use RiBa list - grazie a eLBati @ account_due_list
244+ return super(orm.Model, self).fields_view_get(
245+ cr, uid, view_id, view_type, context, toolbar=toolbar,
246+ submenu=submenu)
247+ else:
248+ return result
249+
250+
251+class account_invoice(orm.Model):
252+ _inherit = "account.invoice"
253+ _columns = {
254+ 'unsolved_move_line_ids': fields.many2many('account.move.line', 'invoice_unsolved_line_rel', 'invoice_id', 'line_id', 'Unsolved journal items'),
255+ }
256
257=== added file 'l10n_it_ricevute_bancarie/account/account_view.xml'
258--- l10n_it_ricevute_bancarie/account/account_view.xml 1970-01-01 00:00:00 +0000
259+++ l10n_it_ricevute_bancarie/account/account_view.xml 2014-02-20 16:47:57 +0000
260@@ -0,0 +1,149 @@
261+<?xml version="1.0" encoding="utf-8"?>
262+<openerp>
263+ <data>
264+
265+ <!-- ====================================================== -->
266+ <!-- CAMPI AGGIUNTIVI -->
267+ <!-- ====================================================== -->
268+ <record id="view_riba_add_text_field" model="ir.ui.view">
269+ <field name="name">account.riba.add.text.field</field>
270+ <field name="model">account.payment.term</field>
271+ <field name="inherit_id" ref="account.view_payment_term_form"/>
272+ <field name="arch" type="xml">
273+ <field name="active" position="after">
274+ <field name="riba"/>
275+ </field>
276+ </field>
277+ </record>
278+ <record id="view_res_bank_add_text_field" model="ir.ui.view">
279+ <field name="name">res.bank.add.text.field</field>
280+ <field name="model">res.bank</field>
281+ <field name="inherit_id" ref="base.view_res_bank_form"/>
282+ <field name="arch" type="xml">
283+ <field name="bic" position="after">
284+ <field name="banca_estera"/>
285+ </field>
286+ </field>
287+ </record>
288+ <record id="view_partner_bank_sia_form" model="ir.ui.view">
289+ <field name="name">res.partner.bank.form.sia.inherit</field>
290+ <field name="model">res.partner.bank</field>
291+ <field name="inherit_id" ref="base.view_partner_bank_form"/>
292+ <field name="arch" type="xml">
293+ <field name="acc_number" position="after">
294+ <field name="codice_sia"/>
295+ </field>
296+ </field>
297+ </record>
298+
299+ <!-- Riba da emettere Tree View -->
300+
301+ <record model="ir.ui.view" id="view_riba_da_emettere_tree">
302+ <field name="name">Issue Ri.Ba.</field>
303+ <field name="model">account.move.line</field>
304+ <field name="arch" type="xml">
305+ <tree string="Issue Ri.Ba." colors="red:date_maturity&lt;current_date">
306+ <field name="stored_invoice_id" readonly="1"/>
307+ <field name="invoice_date" readonly="1"/>
308+ <field name="invoice_origin" readonly="1"/>
309+ <field name="partner_id" readonly="1"/>
310+ <field name="iban" readonly="1"/>
311+ <field name="partner_ref" readonly="1"/>
312+ <field name="payment_term_id" readonly="1"/>
313+ <field name="account_id" readonly="1"/>
314+ <field name="debit" readonly="1" sum="Total Debit"/>
315+ <field name="amount_residual" readonly="1" sum="Total Amount" />
316+ <field name="date_maturity"/>
317+ <field name="riba" />
318+ <field name="distinta_line_ids" invisible="1" />
319+ <field name="reconcile_id" invisible="1" />
320+ </tree>
321+ </field>
322+ </record>
323+
324+ <!-- Riba da emettere Filtro -->
325+
326+ <record id="riba_filter" model="ir.ui.view">
327+ <field name="name">Ri.Ba. filter</field>
328+ <field name="model">account.move.line</field>
329+ <field name="arch" type="xml">
330+ <search string="Search Journal Items">
331+ <filter icon="terp-go-today" string="To Issue"
332+ domain="[('distinta_line_ids', '=', False)]" name="da_emettere"/>
333+ <filter icon="terp-go-today" string="Issued"
334+ domain="[('distinta_line_ids', '!=', False)]" name="emesse"/>
335+ <field name="account_id"/>
336+ <field name="partner_id"/>
337+ <field name="invoice"/>
338+ <field name="invoice_origin"/>
339+ <field name="date_maturity"/>
340+ <newline/>
341+ <group expand="0" string="Group by..." colspan="11">
342+ <filter string="Group by customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
343+ <filter string="Group by invoice" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'stored_invoice_id'}"/>
344+ </group>
345+ </search>
346+ </field>
347+ </record>
348+
349+ <!-- Riba da emettere Action -->
350+
351+ <record model="ir.actions.act_window" id="action_riba_da_emettere">
352+ <field name="name">Issue Ri.Ba.</field>
353+ <field name="type">ir.actions.act_window</field>
354+ <field name="res_model">account.move.line</field>
355+ <field name="src_model">account.move.line</field>
356+ <field name="view_type">form</field>
357+ <field name="view_mode">tree,form</field>
358+ <field name="view_id" ref="view_riba_da_emettere_tree" />
359+ <field name="context">{'search_default_da_emettere':1}</field>
360+ <field name="domain">['&amp;','|',('riba','=','True'),('unsolved_invoice_ids','!=',False),('account_id.type','=','receivable'), ('reconcile_id', '=', False)]</field>
361+ <field name="search_view_id" ref="riba_filter"/>
362+ </record>
363+
364+
365+ <menuitem name="Issue Ri.Ba." parent="menu_riba"
366+ id="menu_riba_da_emettere" action="action_riba_da_emettere" />
367+
368+ <!-- Invoice -->
369+
370+ <record id="invoice_form" model="ir.ui.view">
371+ <field name="name">account.invoice.form</field>
372+ <field name="model">account.invoice</field>
373+ <field name="inherit_id" ref="account.invoice_form"></field>
374+ <field name="arch" type="xml">
375+ <field name="payment_ids" position="after">
376+ <separator string="Unsolved Ri.Ba." colspan="4"/>
377+ <field name="unsolved_move_line_ids" colspan="4" nolabel="1"/>
378+ </field>
379+ </field>
380+ </record>
381+
382+ <record id="action_invoice_tree1" model="ir.actions.act_window">
383+ <field name="name">Unsolved Invoices</field>
384+ <field name="res_model">account.invoice</field>
385+ <field name="view_type">form</field>
386+ <field name="view_mode">tree,form,calendar,graph</field>
387+ <field eval="False" name="view_id"/>
388+ <field name="domain">[('type','=','out_invoice'), ('unsolved_move_line_ids', '!=', False)]</field>
389+ <field name="context">{'default_type':'out_invoice', 'type':'out_invoice', 'journal_type': 'sale'}</field>
390+ <field name="search_view_id" ref="account.view_account_invoice_filter"/>
391+ </record>
392+
393+
394+ <record id="action_invoice_tree1_view1" model="ir.actions.act_window.view">
395+ <field eval="1" name="sequence"/>
396+ <field name="view_mode">tree</field>
397+ <field name="act_window_id" ref="action_invoice_tree1"/>
398+ </record>
399+
400+ <record id="action_invoice_tree1_view2" model="ir.actions.act_window.view">
401+ <field eval="2" name="sequence"/>
402+ <field name="view_mode">form</field>
403+ <field name="view_id" ref="account.invoice_form"/>
404+ <field name="act_window_id" ref="action_invoice_tree1"/>
405+ </record>
406+ <menuitem name="Unsolved Invoices" parent="menu_riba"
407+ id="menu_invoices" action="action_invoice_tree1" />
408+ </data>
409+</openerp>
410
411=== added file 'l10n_it_ricevute_bancarie/configurazione.py'
412--- l10n_it_ricevute_bancarie/configurazione.py 1970-01-01 00:00:00 +0000
413+++ l10n_it_ricevute_bancarie/configurazione.py 2014-02-20 16:47:57 +0000
414@@ -0,0 +1,86 @@
415+# -*- coding: utf-8 -*-
416+##############################################################################
417+#
418+# Copyright (C) 2012 Andrea Cometa.
419+# Email: info@andreacometa.it
420+# Web site: http://www.andreacometa.it
421+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
422+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
423+# Copyright (C) 2012 Associazione OpenERP Italia
424+# (<http://www.openerp-italia.org>).
425+#
426+# This program is free software: you can redistribute it and/or modify
427+# it under the terms of the GNU Affero General Public License as published
428+# by the Free Software Foundation, either version 3 of the License, or
429+# (at your option) any later version.
430+#
431+# This program is distributed in the hope that it will be useful,
432+# but WITHOUT ANY WARRANTY; without even the implied warranty of
433+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
434+# GNU Affero General Public License for more details.
435+#
436+# You should have received a copy of the GNU Affero General Public License
437+# along with this program. If not, see <http://www.gnu.org/licenses/>.
438+#
439+##############################################################################
440+
441+from openerp.osv import fields, orm
442+
443+class riba_configurazione(orm.Model):
444+
445+ _name = "riba.configurazione"
446+ _description = "Parametri di configurazione per le Ricevute Bancarie"
447+
448+ _columns = {
449+ 'name' : fields.char("Descrizione", size=64, required=True),
450+ 'tipo' : fields.selection((('sbf', 'Salvo buon fine'),('incasso', 'Al dopo incasso')),
451+ "Modalità Emissione", required=True),
452+ 'bank_id' : fields.many2one('res.partner.bank', "Banca",
453+ required=True, help="Bank account used for Ri.Ba. issuing"),
454+
455+ 'acceptance_journal_id' : fields.many2one('account.journal', "Acceptance journal",
456+ domain=[('type', '=', 'bank')],
457+ help="Journal used when Ri.Ba. is accepted by the bank"),
458+ 'acceptance_account_id' : fields.many2one('account.account', "Acceptance account",
459+ domain=[('type', '=', 'receivable')], help='Account used when Ri.Ba. is accepted by the bank'),
460+
461+ 'company_id': fields.many2one('res.company', 'Company',required=True),
462+
463+ 'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal",
464+ domain=[('type', '=', 'bank')],
465+ help="Journal used when Ri.Ba. amount is accredited by the bank"),
466+ 'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account", help='Account used when Ri.Ba. is accepted by the bank'),
467+ 'bank_account_id' : fields.many2one('account.account', "Bank account",
468+ domain=[('type', '=', 'liquidity')]),
469+ 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
470+
471+ 'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal",
472+ domain=[('type', '=', 'bank')],
473+ help="Journal used when Ri.Ba. is unsolved"),
474+ 'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account",
475+ domain=[('type', '=', 'receivable')]),
476+ 'protest_charge_account_id' : fields.many2one('account.account', "Protest charge account"),
477+ }
478+
479+ _defaults = {
480+ 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.configurazione', context=c),
481+ }
482+
483+ def get_default_value_by_distinta(self, cr, uid, field_name, context=None):
484+ if context is None:
485+ context = {}
486+ if not context.get('active_id', False):
487+ return False
488+ distinta_pool = self.pool.get('riba.distinta')
489+ distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
490+ return distinta.config[field_name] and distinta.config[field_name].id or False
491+
492+ def get_default_value_by_distinta_line(self, cr, uid, field_name, context=None):
493+ if context is None:
494+ context = {}
495+ if not context.get('active_id', False):
496+ return False
497+ distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context)
498+ return distinta_line.distinta_id.config[field_name] and distinta_line.distinta_id.config[field_name].id or False
499+
500+
501
502=== added file 'l10n_it_ricevute_bancarie/configurazione_view.xml'
503--- l10n_it_ricevute_bancarie/configurazione_view.xml 1970-01-01 00:00:00 +0000
504+++ l10n_it_ricevute_bancarie/configurazione_view.xml 2014-02-20 16:47:57 +0000
505@@ -0,0 +1,50 @@
506+<?xml version="1.0"?>
507+<openerp>
508+ <data>
509+ <!-- ====================================================== -->
510+ <!-- CONFIGURAZIONE RIBA FORM -->
511+ <!-- ====================================================== -->
512+ <record model="ir.ui.view" id="view_riba_configurazione_form">
513+ <field name="name">riba.configurazione.form</field>
514+ <field name="model">riba.configurazione</field>
515+ <field name="arch" type="xml">
516+ <form string="Ri.Ba. - Configurazione">
517+ <field name="name" />
518+ <field name="tipo" />
519+ <field name="bank_id" />
520+ <field name="company_id" widget="selection" groups="base.group_multi_company"/>
521+ <group string="Salvo buon fine" attrs="{'invisible': [('tipo','!=','sbf')]}" colspan="4" col="4">
522+ <separator colspan="4" string="Acceptance"/>
523+ <field name="acceptance_journal_id" attrs="{'required':[('tipo','=','sbf')]}"/>
524+ <field name="acceptance_account_id" attrs="{'required':[('tipo','=','sbf')]}"/>
525+ <separator colspan="4" string="Accreditation"/>
526+ <field name="accreditation_journal_id" />
527+ <field name="accreditation_account_id"/>
528+ <field name="bank_account_id" />
529+ <field name="bank_expense_account_id" />
530+ <separator colspan="4" string="Unsolved"/>
531+ <field name="unsolved_journal_id" />
532+ <field name="overdue_effects_account_id" />
533+ <field name="protest_charge_account_id" />
534+ </group>
535+ </form>
536+ </field>
537+ </record>
538+ <!-- ====================================================== -->
539+ <!-- CONFIGURAZIONE RIBA ACTION -->
540+ <!-- ====================================================== -->
541+ <record model="ir.actions.act_window" id="action_riba_configurazione">
542+ <field name="name">Ri.Ba. - Configuration</field>
543+ <field name="type">ir.actions.act_window</field>
544+ <field name="res_model">riba.configurazione</field>
545+ <field name="view_type">form</field>
546+ <field name="view_mode">tree,form</field>
547+ <!--field name="view_id" ref="view_riba_configurazione_form"/-->
548+ </record>
549+ <!-- ====================================================== -->
550+ <!-- CONFIGURAZIONE RIBA MENU -->
551+ <!-- ====================================================== -->
552+ <menuitem action="action_riba_configurazione" id="menu_riba_configurazione" name="Ri.Ba. Configuration" parent="account.menu_configuration_misc"/>
553+
554+ </data>
555+</openerp>
556
557=== added directory 'l10n_it_ricevute_bancarie/i18n'
558=== added file 'l10n_it_ricevute_bancarie/i18n/it.po'
559--- l10n_it_ricevute_bancarie/i18n/it.po 1970-01-01 00:00:00 +0000
560+++ l10n_it_ricevute_bancarie/i18n/it.po 2014-02-20 16:47:57 +0000
561@@ -0,0 +1,930 @@
562+# Translation of OpenERP Server.
563+# This file contains the translation of the following modules:
564+# * l10n_it_ricevute_bancarie
565+#
566+msgid ""
567+msgstr ""
568+"Project-Id-Version: OpenERP Server 6.1\n"
569+"Report-Msgid-Bugs-To: \n"
570+"POT-Creation-Date: 2012-05-21 10:13+0000\n"
571+"PO-Revision-Date: 2012-05-21 10:13+0000\n"
572+"Last-Translator: <>\n"
573+"Language-Team: \n"
574+"MIME-Version: 1.0\n"
575+"Content-Type: text/plain; charset=UTF-8\n"
576+"Content-Transfer-Encoding: \n"
577+"Plural-Forms: \n"
578+
579+#. module: l10n_it_ricevute_bancarie
580+#: help:riba.configurazione,acceptance_account_id:0
581+#: help:riba.configurazione,accreditation_account_id:0
582+msgid "Account used when Ri.Ba. is accepted by the bank"
583+msgstr "Il conto utilizzato quando la Ri.Ba. viene accettata dalla banca"
584+
585+#. module: l10n_it_ricevute_bancarie
586+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:143
587+#, python-format
588+msgid "No IBAN specified"
589+msgstr "Nessun IBAN specificato"
590+
591+#. module: l10n_it_ricevute_bancarie
592+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_configurazione
593+msgid "Ri.Ba. - Configuration"
594+msgstr "Ri.Ba. - Configurazione"
595+
596+#. module: l10n_it_ricevute_bancarie
597+#: help:res.partner.bank,codice_sia:0
598+msgid "Identification Code of the Company in the System Interbank"
599+msgstr "Codice identificativo dell'azienda nel sistema interbancario"
600+
601+#. module: l10n_it_ricevute_bancarie
602+#: field:riba.unsolved,effects_account_id:0
603+msgid "Effects account"
604+msgstr "Conto effetti"
605+
606+#. module: l10n_it_ricevute_bancarie
607+#: field:riba.configurazione,tipo:0
608+msgid "Modalità Emissione"
609+msgstr "Modalità Emissione"
610+
611+#. module: l10n_it_ricevute_bancarie
612+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:103
613+#, python-format
614+msgid "Accreditation Ri.Ba. %s"
615+msgstr "Accredito Ri.Ba. %s"
616+
617+#. module: l10n_it_ricevute_bancarie
618+#: help:riba.configurazione,acceptance_journal_id:0
619+msgid "Journal used when Ri.Ba. is accepted by the bank"
620+msgstr "Sezionale utilizzato quando la Ri.Ba. viene accettata dalla banca"
621+
622+#. module: l10n_it_ricevute_bancarie
623+#: field:riba.accreditation,accreditation_account_id:0
624+#: field:riba.configurazione,accreditation_account_id:0
625+#: field:riba.unsolved,riba_bank_account_id:0
626+msgid "Ri.Ba. bank account"
627+msgstr "Banca conto Ri.Ba."
628+
629+#. module: l10n_it_ricevute_bancarie
630+#: field:riba.distinta.line,bank_id:0
631+msgid "Debitor Bank"
632+msgstr "Banca debitore"
633+
634+#. module: l10n_it_ricevute_bancarie
635+#: help:res.partner,group_riba:0
636+msgid "Group Ri.Ba. by customer while issuing"
637+msgstr "Raggruppa le Ri.Ba. per cliente durante l'emissione"
638+
639+#. module: l10n_it_ricevute_bancarie
640+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:133
641+#, python-format
642+msgid "Overdue Effects"
643+msgstr "Effetti insoluti"
644+
645+#. module: l10n_it_ricevute_bancarie
646+#: field:riba.configurazione,company_id:0
647+#: field:riba.distinta,company_id:0
648+msgid "Company"
649+msgstr "Azienda"
650+
651+#. module: l10n_it_ricevute_bancarie
652+#: field:riba.distinta.line,invoice_date:0
653+msgid "Invoice Date"
654+msgstr "Data fattura"
655+
656+#. module: l10n_it_ricevute_bancarie
657+#: view:riba.distinta:0
658+msgid "Move line"
659+msgstr "Riga contabile"
660+
661+#. module: l10n_it_ricevute_bancarie
662+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:163
663+#, python-format
664+msgid "No VAT or Fiscalcode specified for: "
665+msgstr "P IVA o codice fiscale non specificato per:"
666+
667+#. module: l10n_it_ricevute_bancarie
668+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_wizard_riba_file_export
669+msgid "Export Ri.Ba."
670+msgstr "Esporta Ri.Ba."
671+
672+#. module: l10n_it_ricevute_bancarie
673+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:121
674+#, python-format
675+msgid "Effects"
676+msgstr "Effetti"
677+
678+#. module: l10n_it_ricevute_bancarie
679+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_accreditation_action
680+#: view:riba.accreditation:0
681+msgid "Ri.Ba. Accreditation"
682+msgstr "Accredito Ri.Ba."
683+
684+#. module: l10n_it_ricevute_bancarie
685+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:193
686+#, python-format
687+msgid "No IBAN specified for "
688+msgstr "Nessun IBAN specificato per"
689+
690+#. module: l10n_it_ricevute_bancarie
691+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:182
692+#, python-format
693+msgid "No address specified for "
694+msgstr "Nessun indirizzo specificato per"
695+
696+#. module: l10n_it_ricevute_bancarie
697+#: field:riba.accreditation,accreditation_amount:0
698+msgid "Credit amount"
699+msgstr "Importo credito"
700+
701+#. module: l10n_it_ricevute_bancarie
702+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:148
703+#, python-format
704+msgid "No SIA Code specified for: "
705+msgstr "Nessun codice SIA specificato per:"
706+
707+#. module: l10n_it_ricevute_bancarie
708+#: view:riba.distinta:0
709+msgid "Move lines"
710+msgstr "Righe contabili"
711+
712+#. module: l10n_it_ricevute_bancarie
713+#: field:riba.configurazione,name:0
714+msgid "Descrizione"
715+msgstr "Descrizione"
716+
717+#. module: l10n_it_ricevute_bancarie
718+#: view:account.move.line:0
719+msgid "Total Debit"
720+msgstr "Debito totale"
721+
722+#. module: l10n_it_ricevute_bancarie
723+#: view:riba.distinta:0
724+#: field:riba.distinta.line,amount:0
725+#: field:riba.distinta.move.line,amount:0
726+msgid "Amount"
727+msgstr "Importo"
728+
729+#. module: l10n_it_ricevute_bancarie
730+#: sql_constraint:account.move.line:0
731+msgid "Wrong credit or debit value in accounting entry !"
732+msgstr "Valore di credito o debito errato nella registrazione contabile !"
733+
734+#. module: l10n_it_ricevute_bancarie
735+#: field:res.partner.bank,codice_sia:0
736+msgid "Codice SIA"
737+msgstr "Codice SIA"
738+
739+#. module: l10n_it_ricevute_bancarie
740+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:210
741+#, python-format
742+msgid "No VAT or Fiscal code specified for "
743+msgstr "P IVA o codice fiscale non specificato per"
744+
745+#. module: l10n_it_ricevute_bancarie
746+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_unsolved
747+msgid "riba.unsolved"
748+msgstr "riba.unsolved"
749+
750+#. module: l10n_it_ricevute_bancarie
751+#: help:riba.distinta.line,reconciled:0
752+msgid "It indicates that the line has been paid and the journal entry of the line has been reconciled with one or several journal entries of payment."
753+msgstr "Indica che la riga è stata pagata e la registrazione della riga è stata riconciliata con una o più registrazioni di pagamento"
754+
755+#. module: l10n_it_ricevute_bancarie
756+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_file_export
757+msgid "riba.file.export"
758+msgstr "riba.file.export"
759+
760+#. module: l10n_it_ricevute_bancarie
761+#: view:riba.configurazione:0
762+#: view:riba.distinta:0
763+#: selection:riba.distinta,state:0
764+#: selection:riba.distinta.line,state:0
765+msgid "Unsolved"
766+msgstr "Insoluto"
767+
768+#. module: l10n_it_ricevute_bancarie
769+#: field:riba.distinta,config:0
770+msgid "Configuration"
771+msgstr "Configurazione"
772+
773+#. module: l10n_it_ricevute_bancarie
774+#: field:riba.distinta,name:0
775+msgid "Reference"
776+msgstr "Riferimento"
777+
778+#. module: l10n_it_ricevute_bancarie
779+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:170
780+#: field:riba.distinta.line,unsolved_move_id:0
781+#, python-format
782+msgid "Unsolved Entry"
783+msgstr "Registrazione insoluto"
784+
785+#. module: l10n_it_ricevute_bancarie
786+#: help:riba.distinta,config:0
787+msgid "Riba configuration to be used"
788+msgstr "Configurazione Ri.Ba. da usare"
789+
790+#. module: l10n_it_ricevute_bancarie
791+#: constraint:account.move.line:0
792+msgid "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
793+msgstr "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
794+
795+#. module: l10n_it_ricevute_bancarie
796+#: view:riba.distinta:0
797+msgid "Reset to Draft"
798+msgstr "Reimposta a bozza"
799+
800+#. module: l10n_it_ricevute_bancarie
801+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner
802+msgid "Partner"
803+msgstr "Partner"
804+
805+#. module: l10n_it_ricevute_bancarie
806+#: view:riba.file.export:0
807+msgid "Export Ri.Ba. file"
808+msgstr "Esporta file Ri.Ba."
809+
810+#. module: l10n_it_ricevute_bancarie
811+#: field:res.bank,banca_estera:0
812+msgid "Banca Estera"
813+msgstr "Banca Estera"
814+
815+#. module: l10n_it_ricevute_bancarie
816+#: view:riba.distinta:0
817+#: selection:riba.distinta.line,state:0
818+msgid "Confirmed"
819+msgstr "Confermata"
820+
821+#. module: l10n_it_ricevute_bancarie
822+#: field:riba.distinta,date_paid:0
823+msgid "Paid date"
824+msgstr "Data pagamento"
825+
826+#. module: l10n_it_ricevute_bancarie
827+#: view:riba.configurazione:0
828+msgid "Accreditation"
829+msgstr "Accredito"
830+
831+#. module: l10n_it_ricevute_bancarie
832+#: view:riba.accreditation:0
833+#: view:riba.emissione:0
834+#: view:riba.unsolved:0
835+msgid "Create"
836+msgstr "Crea"
837+
838+#. module: l10n_it_ricevute_bancarie
839+#: field:riba.accreditation,bank_expense_account_id:0
840+#: field:riba.configurazione,bank_expense_account_id:0
841+#: field:riba.unsolved,bank_expense_account_id:0
842+msgid "Bank Expenses account"
843+msgstr "Conto spese bancarie"
844+
845+#. module: l10n_it_ricevute_bancarie
846+#: field:riba.distinta,state:0
847+#: field:riba.distinta.line,state:0
848+msgid "State"
849+msgstr "Stato"
850+
851+#. module: l10n_it_ricevute_bancarie
852+#: view:account.move.line:0
853+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_da_emettere
854+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.emissione_riba_action
855+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_da_emettere
856+#: view:riba.emissione:0
857+msgid "Issue Ri.Ba."
858+msgstr "Emetti Ri.Ba."
859+
860+#. module: l10n_it_ricevute_bancarie
861+#: view:account.invoice:0
862+msgid "Unsolved Ri.Ba."
863+msgstr "Ri.Ba. insolute"
864+
865+#. module: l10n_it_ricevute_bancarie
866+#: field:riba.distinta,type:0
867+#: field:riba.distinta.line,type:0
868+msgid "Type"
869+msgstr "Tipo"
870+
871+#. module: l10n_it_ricevute_bancarie
872+#: help:riba.configurazione,unsolved_journal_id:0
873+msgid "Journal used when Ri.Ba. is unsolved"
874+msgstr "Sezionale utilizzato quando la Ri.Ba. è insoluta"
875+
876+#. module: l10n_it_ricevute_bancarie
877+#: field:riba.distinta.line,reconciled:0
878+msgid "Paid/Reconciled"
879+msgstr "Pagato/Riconciliato"
880+
881+#. module: l10n_it_ricevute_bancarie
882+#: field:riba.emissione,configurazione:0
883+msgid "Configurazione"
884+msgstr "Configurazione"
885+
886+#. module: l10n_it_ricevute_bancarie
887+#: field:riba.unsolved,effects_amount:0
888+msgid "Effects amount"
889+msgstr "Importo effetti"
890+
891+#. module: l10n_it_ricevute_bancarie
892+#: field:riba.accreditation,expense_amount:0
893+#: field:riba.unsolved,expense_amount:0
894+msgid "Expenses amount"
895+msgstr "Importo spese"
896+
897+#. module: l10n_it_ricevute_bancarie
898+#: field:account.move.line,riba:0
899+msgid "RiBa"
900+msgstr "Ri.Ba."
901+
902+#. module: l10n_it_ricevute_bancarie
903+#: selection:riba.file.export,state:0
904+msgid "get"
905+msgstr "get"
906+
907+#. module: l10n_it_ricevute_bancarie
908+#: view:riba.distinta:0
909+#: selection:riba.distinta,state:0
910+msgid "Accepted"
911+msgstr "Accettata"
912+
913+#. module: l10n_it_ricevute_bancarie
914+#: view:account.move.line:0
915+msgid "To Issue"
916+msgstr "Da emettere"
917+
918+#. module: l10n_it_ricevute_bancarie
919+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.distinta_riba_action
920+msgid "Distinta Ri.Ba."
921+msgstr "Distinta Ri.Ba."
922+
923+#. module: l10n_it_ricevute_bancarie
924+#: view:riba.distinta:0
925+#: field:riba.distinta,acceptance_move_ids:0
926+msgid "Acceptance Entries"
927+msgstr "Registrazioni di accettazione"
928+
929+#. module: l10n_it_ricevute_bancarie
930+#: field:riba.distinta,date_unsolved:0
931+msgid "Unsolved date"
932+msgstr "Data insoluto"
933+
934+#. module: l10n_it_ricevute_bancarie
935+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba
936+msgid "Ri.Ba."
937+msgstr "Ri.Ba."
938+
939+#. module: l10n_it_ricevute_bancarie
940+#: field:riba.distinta.move.line,riba_line_id:0
941+msgid "Distinta line"
942+msgstr "Riga distinta"
943+
944+#. module: l10n_it_ricevute_bancarie
945+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:131
946+#: view:riba.distinta:0
947+#: field:riba.distinta,accreditation_move_id:0
948+#, python-format
949+msgid "Accreditation Entry"
950+msgstr "Registrazione accredito"
951+
952+#. module: l10n_it_ricevute_bancarie
953+#: field:riba.configurazione,unsolved_journal_id:0
954+#: field:riba.unsolved,unsolved_journal_id:0
955+msgid "Unsolved journal"
956+msgstr "Sezionale insoluti"
957+
958+#. module: l10n_it_ricevute_bancarie
959+#: field:riba.distinta.line,move_line_ids:0
960+msgid "Credit move lines"
961+msgstr "Righe contabili di credito"
962+
963+#. module: l10n_it_ricevute_bancarie
964+#: field:riba.distinta.line,due_date:0
965+msgid "Due date"
966+msgstr "Data scadenza"
967+
968+#. module: l10n_it_ricevute_bancarie
969+#: field:riba.accreditation,accreditation_journal_id:0
970+#: field:riba.configurazione,accreditation_journal_id:0
971+msgid "Accreditation journal"
972+msgstr "Sezionale di accredito"
973+
974+#. module: l10n_it_ricevute_bancarie
975+#: field:riba.configurazione,protest_charge_account_id:0
976+msgid "Protest charge account"
977+msgstr "Conto spese di protesto"
978+
979+#. module: l10n_it_ricevute_bancarie
980+#: constraint:account.move.line:0
981+msgid "The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal."
982+msgstr "The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal."
983+
984+#. module: l10n_it_ricevute_bancarie
985+#: view:account.move.line:0
986+msgid "Group by..."
987+msgstr "Raggruppa per..."
988+
989+#. module: l10n_it_ricevute_bancarie
990+#: field:riba.distinta,date_accreditation:0
991+msgid "Accreditation date"
992+msgstr "Data accredito"
993+
994+#. module: l10n_it_ricevute_bancarie
995+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:155
996+#, python-format
997+msgid "No address specified for: "
998+msgstr "Nessun indirizzo specificato per:"
999+
1000+#. module: l10n_it_ricevute_bancarie
1001+#: view:account.move.line:0
1002+msgid "Search Journal Items"
1003+msgstr "Cerca scritture"
1004+
1005+#. module: l10n_it_ricevute_bancarie
1006+#: field:riba.configurazione,overdue_effects_account_id:0
1007+#: field:riba.unsolved,overdue_effects_account_id:0
1008+msgid "Overdue Effects account"
1009+msgstr "Conto effetti insoluti"
1010+
1011+#. module: l10n_it_ricevute_bancarie
1012+#: field:riba.unsolved,overdue_effects_amount:0
1013+msgid "Overdue Effects amount"
1014+msgstr "Importo effetti insoluti"
1015+
1016+#. module: l10n_it_ricevute_bancarie
1017+#: view:riba.accreditation:0
1018+msgid "You can also skip this step and set the distinta status to 'accredited' anyway"
1019+msgstr "E' anche possibile saltare questo passo e impostare comunque la distinta dello stato di 'accreditata'"
1020+
1021+#. module: l10n_it_ricevute_bancarie
1022+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:191
1023+#, python-format
1024+msgid "No CAP specified for "
1025+msgstr "Nessun CAP specificato per"
1026+
1027+#. module: l10n_it_ricevute_bancarie
1028+#: view:riba.unsolved:0
1029+msgid "You can also skip this step and set the line status to 'unsolved' anyway"
1030+msgstr "E' anche possibile saltare questo passo e impostare comunque lo stato della riga a 'insoluta'"
1031+
1032+#. module: l10n_it_ricevute_bancarie
1033+#: view:riba.distinta:0
1034+msgid "Detail"
1035+msgstr "Dettaglio"
1036+
1037+#. module: l10n_it_ricevute_bancarie
1038+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_emissione
1039+msgid "Emissione Ricevute Bancarie"
1040+msgstr "Emissione Ricevute Bancarie"
1041+
1042+#. module: l10n_it_ricevute_bancarie
1043+#: view:riba.distinta:0
1044+#: selection:riba.distinta,state:0
1045+#: selection:riba.distinta.line,state:0
1046+msgid "Draft"
1047+msgstr "Bozza"
1048+
1049+#. module: l10n_it_ricevute_bancarie
1050+#: field:riba.file.export,state:0
1051+msgid "unknown"
1052+msgstr "sconosciuto"
1053+
1054+#. module: l10n_it_ricevute_bancarie
1055+#: view:riba.distinta:0
1056+#: selection:riba.distinta,state:0
1057+#: selection:riba.distinta.line,state:0
1058+msgid "Paid"
1059+msgstr "Pagata"
1060+
1061+#. module: l10n_it_ricevute_bancarie
1062+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_accreditation
1063+msgid "Bank accreditation"
1064+msgstr "Accredito banca"
1065+
1066+#. module: l10n_it_ricevute_bancarie
1067+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_line
1068+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_move_line
1069+msgid "Riba details"
1070+msgstr "Dettagli Ri.Ba."
1071+
1072+#. module: l10n_it_ricevute_bancarie
1073+#: field:riba.distinta,user_id:0
1074+msgid "User"
1075+msgstr "Utente"
1076+
1077+#. module: l10n_it_ricevute_bancarie
1078+#: field:riba.distinta,unsolved_move_ids:0
1079+msgid "Unsolved Entries"
1080+msgstr "Registrazioni insoluti"
1081+
1082+#. module: l10n_it_ricevute_bancarie
1083+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_move_line
1084+msgid "Journal Items"
1085+msgstr "Voci sezionale"
1086+
1087+#. module: l10n_it_ricevute_bancarie
1088+#: constraint:account.move.line:0
1089+msgid "You can not create journal items on an account of type view."
1090+msgstr "Non è possibile effettuare registrazioni su un conto di tipo vista."
1091+
1092+#. module: l10n_it_ricevute_bancarie
1093+#: help:riba.configurazione,bank_id:0
1094+msgid "Bank account used for Ri.Ba. issuing"
1095+msgstr "Conto bancario utilizzato per l'emissione delle Ri.Ba."
1096+
1097+#. module: l10n_it_ricevute_bancarie
1098+#: selection:riba.file.export,state:0
1099+msgid "choose"
1100+msgstr "choose"
1101+
1102+#. module: l10n_it_ricevute_bancarie
1103+#: constraint:res.partner.bank:0
1104+msgid "\n"
1105+"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
1106+msgstr "\n"
1107+"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
1108+
1109+#. module: l10n_it_ricevute_bancarie
1110+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:127
1111+#, python-format
1112+msgid "Ri.Ba. Bank"
1113+msgstr "Banca Ri.Ba."
1114+
1115+#. module: l10n_it_ricevute_bancarie
1116+#: view:riba.unsolved:0
1117+msgid "This wizard generates the journal entry related to an unsolved payment"
1118+msgstr "Questo wizard genererà la registrazione relativa ad un pagamento insoluto"
1119+
1120+#. module: l10n_it_ricevute_bancarie
1121+#: field:riba.distinta,date_created:0
1122+msgid "Creation date"
1123+msgstr "Data creazione"
1124+
1125+#. module: l10n_it_ricevute_bancarie
1126+#: view:riba.distinta:0
1127+msgid "Invoice entries"
1128+msgstr "Registrazioni fattura"
1129+
1130+#. module: l10n_it_ricevute_bancarie
1131+#: help:riba.configurazione,accreditation_journal_id:0
1132+msgid "Journal used when Ri.Ba. amount is accredited by the bank"
1133+msgstr "Sezionale utilizzato quando l'import della Ri.Ba. viene accreditato dalla banca"
1134+
1135+#. module: l10n_it_ricevute_bancarie
1136+#: field:riba.distinta,line_ids:0
1137+msgid "Riba deadlines"
1138+msgstr "Scadenze Ri.Ba."
1139+
1140+#. module: l10n_it_ricevute_bancarie
1141+#: field:riba.unsolved,riba_bank_amount:0
1142+msgid "Ri.Ba. bank amount"
1143+msgstr "Importo banca Ri.Ba."
1144+
1145+#. module: l10n_it_ricevute_bancarie
1146+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:107
1147+#, python-format
1148+msgid "Credit"
1149+msgstr "Credito"
1150+
1151+#. module: l10n_it_ricevute_bancarie
1152+#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
1153+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
1154+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
1155+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
1156+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
1157+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
1158+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
1159+#, python-format
1160+msgid "Error"
1161+msgstr "Errore"
1162+
1163+#. module: l10n_it_ricevute_bancarie
1164+#: field:riba.distinta,date_accepted:0
1165+msgid "Acceptance date"
1166+msgstr "Data accettazione"
1167+
1168+#. module: l10n_it_ricevute_bancarie
1169+#: field:riba.configurazione,acceptance_account_id:0
1170+msgid "Acceptance account"
1171+msgstr "Importo accettazione"
1172+
1173+#. module: l10n_it_ricevute_bancarie
1174+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:187
1175+#, python-format
1176+msgid "No Street specified for "
1177+msgstr "Nessun indirizzo specificato per"
1178+
1179+#. module: l10n_it_ricevute_bancarie
1180+#: field:riba.distinta.line,partner_id:0
1181+msgid "Cliente"
1182+msgstr "Cliente"
1183+
1184+#. module: l10n_it_ricevute_bancarie
1185+#: view:account.move.line:0
1186+msgid "Group by customer"
1187+msgstr "Raggruppa per cliente"
1188+
1189+#. module: l10n_it_ricevute_bancarie
1190+#: sql_constraint:account.invoice:0
1191+msgid "Invoice Number must be unique per Company!"
1192+msgstr "Invoice Number must be unique per Company!"
1193+
1194+#. module: l10n_it_ricevute_bancarie
1195+#: view:riba.distinta:0
1196+msgid "Distinte Ri.Ba."
1197+msgstr "Distinte Ri.Ba."
1198+
1199+#. module: l10n_it_ricevute_bancarie
1200+#: view:riba.accreditation:0
1201+msgid "Skip and confirm accreditation"
1202+msgstr "Salta e conferma accredito"
1203+
1204+#. module: l10n_it_ricevute_bancarie
1205+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner_bank
1206+msgid "Bank Accounts"
1207+msgstr "Conti Bancari"
1208+
1209+#. module: l10n_it_ricevute_bancarie
1210+#: field:riba.distinta.line,sequence:0
1211+msgid "Number"
1212+msgstr "Numero"
1213+
1214+#. module: l10n_it_ricevute_bancarie
1215+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
1216+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
1217+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
1218+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
1219+#, python-format
1220+msgid "No active ID found"
1221+msgstr "Nessun ID trovato"
1222+
1223+#. module: l10n_it_ricevute_bancarie
1224+#: view:riba.distinta:0
1225+msgid "General"
1226+msgstr "Generale"
1227+
1228+#. module: l10n_it_ricevute_bancarie
1229+#: view:riba.emissione:0
1230+msgid "This wizard generates the Ri.Ba. list, do you confirm?"
1231+msgstr "Questo wizard genererà la distinta Ri.Ba., confermi?"
1232+
1233+#. module: l10n_it_ricevute_bancarie
1234+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_invoice
1235+msgid "Invoice"
1236+msgstr "Fattura"
1237+
1238+#. module: l10n_it_ricevute_bancarie
1239+#: view:riba.accreditation:0
1240+#: view:riba.distinta:0
1241+#: view:riba.emissione:0
1242+#: view:riba.file.export:0
1243+#: view:riba.unsolved:0
1244+msgid "Cancel"
1245+msgstr "Annulla"
1246+
1247+#. module: l10n_it_ricevute_bancarie
1248+#: view:account.move.line:0
1249+msgid "Group by invoice"
1250+msgstr "Raggruppa per fattura"
1251+
1252+#. module: l10n_it_ricevute_bancarie
1253+#: field:riba.distinta.line,acceptance_account_id:0
1254+msgid "Acceptance Account"
1255+msgstr "Conto accettazione"
1256+
1257+#. module: l10n_it_ricevute_bancarie
1258+#: selection:riba.distinta,state:0
1259+msgid "Canceled"
1260+msgstr "Annullata"
1261+
1262+#. module: l10n_it_ricevute_bancarie
1263+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_unsolved_action
1264+#: view:riba.unsolved:0
1265+msgid "Ri.Ba. Unsolved"
1266+msgstr "Ri.Ba. Insoluta"
1267+
1268+#. module: l10n_it_ricevute_bancarie
1269+#: field:account.invoice,unsolved_move_line_ids:0
1270+msgid "Unsolved journal items"
1271+msgstr "Registrazioni insoluti"
1272+
1273+#. module: l10n_it_ricevute_bancarie
1274+#: constraint:account.move.line:0
1275+msgid "Company must be the same for its related account and period."
1276+msgstr "Company must be the same for its related account and period."
1277+
1278+#. module: l10n_it_ricevute_bancarie
1279+#: view:riba.distinta:0
1280+msgid "Other Info"
1281+msgstr "Altre info"
1282+
1283+#. module: l10n_it_ricevute_bancarie
1284+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_payment_term
1285+msgid "Payment Term"
1286+msgstr "Termine di pagamento"
1287+
1288+#. module: l10n_it_ricevute_bancarie
1289+#: view:riba.configurazione:0
1290+msgid "Acceptance"
1291+msgstr "Accettazione"
1292+
1293+#. module: l10n_it_ricevute_bancarie
1294+#: view:riba.distinta:0
1295+#: selection:riba.distinta,state:0
1296+#: selection:riba.distinta.line,state:0
1297+msgid "Accredited"
1298+msgstr "Accreditata"
1299+
1300+#. module: l10n_it_ricevute_bancarie
1301+#: field:riba.distinta.move.line,move_line_id:0
1302+msgid "Credit move line"
1303+msgstr "Riga credito"
1304+
1305+#. module: l10n_it_ricevute_bancarie
1306+#: view:riba.unsolved:0
1307+msgid "Skip and confirm the unsolved state"
1308+msgstr "Salta e conferma lo stato di insoluto"
1309+
1310+#. module: l10n_it_ricevute_bancarie
1311+#: view:riba.distinta:0
1312+msgid "Ri.Ba. - Distinta"
1313+msgstr "Ri.Ba. - Distinta"
1314+
1315+#. module: l10n_it_ricevute_bancarie
1316+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
1317+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
1318+#, python-format
1319+msgid "Every account is mandatory"
1320+msgstr "Ogni conto è obbligatorio"
1321+
1322+#. module: l10n_it_ricevute_bancarie
1323+#: view:riba.configurazione:0
1324+msgid "Ri.Ba. - Configurazione"
1325+msgstr "Ri.Ba. - Configurazione"
1326+
1327+#. module: l10n_it_ricevute_bancarie
1328+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_configurazione
1329+msgid "Ri.Ba. Configuration"
1330+msgstr "Ri.Ba. Configurazione"
1331+
1332+#. module: l10n_it_ricevute_bancarie
1333+#: field:res.partner,group_riba:0
1334+msgid "Group Ri.Ba."
1335+msgstr "Raggruppa Ri.Ba."
1336+
1337+#. module: l10n_it_ricevute_bancarie
1338+#: field:riba.accreditation,bank_account_id:0
1339+#: field:riba.configurazione,bank_account_id:0
1340+#: field:riba.unsolved,bank_account_id:0
1341+msgid "Bank account"
1342+msgstr "Conto banca"
1343+
1344+#. module: l10n_it_ricevute_bancarie
1345+#: field:riba.unsolved,bank_amount:0
1346+msgid "Taken amount"
1347+msgstr "Importo prelevato"
1348+
1349+#. module: l10n_it_ricevute_bancarie
1350+#: field:account.payment.term,riba:0
1351+msgid "Riba"
1352+msgstr "Ri.Ba."
1353+
1354+#. module: l10n_it_ricevute_bancarie
1355+#: field:riba.distinta.line,invoice_number:0
1356+msgid "Invoice Number"
1357+msgstr "Numero fattura"
1358+
1359+#. module: l10n_it_ricevute_bancarie
1360+#: view:riba.accreditation:0
1361+msgid "This wizard generates the journal entry related to accreditation received from the bank"
1362+msgstr "Questo wizard genererà la registrazione relativa all'accredito ricevuto dalla banca"
1363+
1364+#. module: l10n_it_ricevute_bancarie
1365+#: view:res.partner:0
1366+msgid "Ri.Ba. properties"
1367+msgstr "Proprietà Ri.Ba."
1368+
1369+#. module: l10n_it_ricevute_bancarie
1370+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:113
1371+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:119
1372+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:141
1373+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_bank
1374+#, python-format
1375+msgid "Bank"
1376+msgstr "Banca"
1377+
1378+#. module: l10n_it_ricevute_bancarie
1379+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:117
1380+#, python-format
1381+msgid "Unsolved Ri.Ba. %s - line %s"
1382+msgstr "Ri.Ba. %s insoluta - riga %s"
1383+
1384+#. module: l10n_it_ricevute_bancarie
1385+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta
1386+msgid "Distinta Riba"
1387+msgstr "Distinta Riba"
1388+
1389+#. module: l10n_it_ricevute_bancarie
1390+#: selection:riba.configurazione,tipo:0
1391+msgid "Al dopo incasso"
1392+msgstr "Al dopo incasso"
1393+
1394+#. module: l10n_it_ricevute_bancarie
1395+#: view:riba.distinta:0
1396+#: field:riba.distinta,payment_ids:0
1397+#: field:riba.distinta.line,payment_ids:0
1398+msgid "Payments"
1399+msgstr "Pagamenti"
1400+
1401+#. module: l10n_it_ricevute_bancarie
1402+#: view:riba.configurazione:0
1403+#: selection:riba.configurazione,tipo:0
1404+msgid "Salvo buon fine"
1405+msgstr "Salvo buon fine"
1406+
1407+#. module: l10n_it_ricevute_bancarie
1408+#: field:riba.accreditation,bank_amount:0
1409+msgid "Versed amount"
1410+msgstr "Importo versato"
1411+
1412+#. module: l10n_it_ricevute_bancarie
1413+#: field:account.move.line,unsolved_invoice_ids:0
1414+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_invoice_tree1
1415+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_invoices
1416+msgid "Unsolved Invoices"
1417+msgstr "Fatture insolute"
1418+
1419+#. module: l10n_it_ricevute_bancarie
1420+#: constraint:account.move.line:0
1421+msgid "You can not create journal items on closed account."
1422+msgstr "You can not create journal items on closed account."
1423+
1424+#. module: l10n_it_ricevute_bancarie
1425+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:200
1426+#, python-format
1427+msgid "No City specified for "
1428+msgstr "Nessuna città specificata per"
1429+
1430+#. module: l10n_it_ricevute_bancarie
1431+#: field:riba.distinta.line,distinta_id:0
1432+msgid "Distinta"
1433+msgstr "Distinta"
1434+
1435+#. module: l10n_it_ricevute_bancarie
1436+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_configurazione
1437+msgid "Parametri di configurazione per le Ricevute Bancarie"
1438+msgstr "Parametri di configurazione per le Ricevute Bancarie"
1439+
1440+#. module: l10n_it_ricevute_bancarie
1441+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_distinte
1442+msgid "Distinte"
1443+msgstr "Distinte"
1444+
1445+#. module: l10n_it_ricevute_bancarie
1446+#: field:riba.distinta.line,acceptance_move_id:0
1447+msgid "Acceptance Entry"
1448+msgstr "Registrazione di accettazione"
1449+
1450+#. module: l10n_it_ricevute_bancarie
1451+#: field:riba.configurazione,acceptance_journal_id:0
1452+msgid "Acceptance journal"
1453+msgstr "Sezionale di accettazione"
1454+
1455+#. module: l10n_it_ricevute_bancarie
1456+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:147
1457+#, python-format
1458+msgid "Expenses"
1459+msgstr "Spese"
1460+
1461+#. module: l10n_it_ricevute_bancarie
1462+#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
1463+#, python-format
1464+msgid "Distinta %s is in state %s. You can only delete documents in state draft or canceled"
1465+msgstr "La distinta %s è nello stato %s. E' possibile eliminare solamente i documenti in stato bozza o annullato."
1466+
1467+#. module: l10n_it_ricevute_bancarie
1468+#: field:riba.configurazione,bank_id:0
1469+msgid "Banca"
1470+msgstr "Banca"
1471+
1472+#. module: l10n_it_ricevute_bancarie
1473+#: view:riba.file.export:0
1474+msgid "Export"
1475+msgstr "Export"
1476+
1477+#. module: l10n_it_ricevute_bancarie
1478+#: field:riba.file.export,riba_.txt:0
1479+msgid "File"
1480+msgstr "File"
1481+
1482+#. module: l10n_it_ricevute_bancarie
1483+#: view:riba.distinta:0
1484+msgid "Accounting"
1485+msgstr "Contabilità"
1486+
1487+#. module: l10n_it_ricevute_bancarie
1488+#: field:account.move.line,distinta_line_ids:0
1489+msgid "Dettaglio riba"
1490+msgstr "Dettaglio riba"
1491+
1492
1493=== added directory 'l10n_it_ricevute_bancarie/partner'
1494=== added file 'l10n_it_ricevute_bancarie/partner/__init__.py'
1495--- l10n_it_ricevute_bancarie/partner/__init__.py 1970-01-01 00:00:00 +0000
1496+++ l10n_it_ricevute_bancarie/partner/__init__.py 2014-02-20 16:47:57 +0000
1497@@ -0,0 +1,24 @@
1498+# -*- coding: utf-8 -*-
1499+##############################################################################
1500+#
1501+# Copyright (C) 2012 Andrea Cometa.
1502+# Email: info@andreacometa.it
1503+# Web site: http://www.andreacometa.it
1504+#
1505+# This program is free software: you can redistribute it and/or modify
1506+# it under the terms of the GNU Affero General Public License as published
1507+# by the Free Software Foundation, either version 3 of the License, or
1508+# (at your option) any later version.
1509+#
1510+# This program is distributed in the hope that it will be useful,
1511+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1512+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1513+# GNU Affero General Public License for more details.
1514+#
1515+# You should have received a copy of the GNU Affero General Public License
1516+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1517+#
1518+##############################################################################
1519+
1520+import partner
1521+
1522
1523=== added file 'l10n_it_ricevute_bancarie/partner/partner.py'
1524--- l10n_it_ricevute_bancarie/partner/partner.py 1970-01-01 00:00:00 +0000
1525+++ l10n_it_ricevute_bancarie/partner/partner.py 2014-02-20 16:47:57 +0000
1526@@ -0,0 +1,38 @@
1527+# -*- coding: utf-8 -*-
1528+##############################################################################
1529+#
1530+# Copyright (C) 2012 Andrea Cometa.
1531+# Email: info@andreacometa.it
1532+# Web site: http://www.andreacometa.it
1533+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
1534+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
1535+# Copyright (C) 2012 Associazione OpenERP Italia
1536+# (<http://www.openerp-italia.org>).
1537+#
1538+# This program is free software: you can redistribute it and/or modify
1539+# it under the terms of the GNU Affero General Public License as published
1540+# by the Free Software Foundation, either version 3 of the License, or
1541+# (at your option) any later version.
1542+#
1543+# This program is distributed in the hope that it will be useful,
1544+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1545+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1546+# GNU Affero General Public License for more details.
1547+#
1548+# You should have received a copy of the GNU Affero General Public License
1549+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1550+#
1551+##############################################################################
1552+
1553+from openerp.osv import fields, orm
1554+
1555+class res_partner(orm.Model):
1556+
1557+ _name = "res.partner"
1558+ _inherit = "res.partner"
1559+
1560+ _columns = {
1561+ 'group_riba' : fields.boolean("Group Ri.Ba.",
1562+ help="Group Ri.Ba. by customer while issuing"),
1563+ }
1564+
1565
1566=== added file 'l10n_it_ricevute_bancarie/partner/partner_view.xml'
1567--- l10n_it_ricevute_bancarie/partner/partner_view.xml 1970-01-01 00:00:00 +0000
1568+++ l10n_it_ricevute_bancarie/partner/partner_view.xml 2014-02-20 16:47:57 +0000
1569@@ -0,0 +1,23 @@
1570+<?xml version="1.0"?>
1571+<openerp>
1572+ <data>
1573+
1574+ <!--========================================================-->
1575+ <!-- RES.PARTNER - FORM -->
1576+ <!--========================================================-->
1577+ <record id="view_partner_form_riba" model="ir.ui.view">
1578+ <field name="name">res.parner.form.riba</field>
1579+ <field name="model">res.partner</field>
1580+ <field name="inherit_id" ref="base.view_partner_form"/>
1581+ <field name="arch" type="xml">
1582+ <field name="property_payment_term" position="after">
1583+ <separator string="Ri.Ba. properties" colspan="2"/>
1584+ <group col="4" colspan="2">
1585+ <field name="group_riba"/>
1586+ </group>
1587+ </field>
1588+ </field>
1589+ </record>
1590+
1591+ </data>
1592+</openerp>
1593
1594=== added file 'l10n_it_ricevute_bancarie/riba.py'
1595--- l10n_it_ricevute_bancarie/riba.py 1970-01-01 00:00:00 +0000
1596+++ l10n_it_ricevute_bancarie/riba.py 2014-02-20 16:47:57 +0000
1597@@ -0,0 +1,405 @@
1598+# -*- coding: utf-8 -*-
1599+##############################################################################
1600+#
1601+# Copyright (C) 2012 Andrea Cometa.
1602+# Email: info@andreacometa.it
1603+# Web site: http://www.andreacometa.it
1604+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
1605+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
1606+# Copyright (C) 2012 Associazione OpenERP Italia
1607+# (<http://www.openerp-italia.org>).
1608+#
1609+# This program is free software: you can redistribute it and/or modify
1610+# it under the terms of the GNU Affero General Public License as published
1611+# by the Free Software Foundation, either version 3 of the License, or
1612+# (at your option) any later version.
1613+#
1614+# This program is distributed in the hope that it will be useful,
1615+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1616+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1617+# GNU Affero General Public License for more details.
1618+#
1619+# You should have received a copy of the GNU Affero General Public License
1620+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1621+#
1622+##############################################################################
1623+
1624+from openerp.osv import fields, orm
1625+import time
1626+import decimal_precision as dp
1627+import netsvc
1628+from tools.translate import _
1629+
1630+class riba_distinta(orm.Model):
1631+
1632+ def _get_acceptance_move_ids(self, cr, uid, ids, field_name, arg, context):
1633+ res = {}
1634+ for distinta in self.browse(cr, uid, ids, context=context):
1635+ move_ids = []
1636+ for line in distinta.line_ids:
1637+ if line.acceptance_move_id and line.acceptance_move_id.id not in move_ids:
1638+ move_ids.append(line.acceptance_move_id.id)
1639+ res[distinta.id] = move_ids
1640+ return res
1641+
1642+ def _get_unsolved_move_ids(self, cr, uid, ids, field_name, arg, context):
1643+ res = {}
1644+ for distinta in self.browse(cr, uid, ids, context=context):
1645+ move_ids = []
1646+ for line in distinta.line_ids:
1647+ if line.unsolved_move_id and line.unsolved_move_id.id not in move_ids:
1648+ move_ids.append(line.unsolved_move_id.id)
1649+ res[distinta.id] = move_ids
1650+ return res
1651+
1652+ def _get_payment_ids(self, cr, uid, ids, field_name, arg, context):
1653+ res = {}
1654+ for distinta in self.browse(cr, uid, ids, context=context):
1655+ move_line_ids = []
1656+ for line in distinta.line_ids:
1657+ for payment in line.payment_ids:
1658+ if payment.id not in move_line_ids:
1659+ move_line_ids.append(payment.id)
1660+ res[distinta.id] = move_line_ids
1661+ return res
1662+
1663+ _name = 'riba.distinta'
1664+ _description = 'Distinta Riba'
1665+
1666+ _columns = {
1667+ 'name': fields.char('Reference', size=128, required=True, readonly=True, states={'draft': [('readonly', False)]}),
1668+ 'config': fields.many2one('riba.configurazione', 'Configuration',
1669+ select=True, required=True, readonly=True, states={'draft': [('readonly', False)]},
1670+ help='Riba configuration to be used'),
1671+ 'state': fields.selection([
1672+ ('draft', 'Draft'),
1673+ ('accepted', 'Accepted'),
1674+ ('accredited', 'Accredited'),
1675+ ('paid', 'Paid'),
1676+ ('unsolved', 'Unsolved'),
1677+ ('cancel', 'Canceled')], 'State', select=True, readonly=True),
1678+ 'line_ids': fields.one2many('riba.distinta.line', 'distinta_id',
1679+ 'Riba deadlines', readonly=True, states={'draft': [('readonly', False)]}),
1680+ 'user_id': fields.many2one('res.users', 'User', required=True, readonly=True, states={'draft': [('readonly', False)]}),
1681+ 'date_created': fields.date('Creation date', readonly=True),
1682+ 'date_accepted': fields.date('Acceptance date', readonly=True),
1683+ 'date_accreditation': fields.date('Accreditation date', readonly=True),
1684+ 'date_paid': fields.date('Paid date', readonly=True),
1685+ 'date_unsolved': fields.date('Unsolved date', readonly=True),
1686+ 'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
1687+ 'acceptance_move_ids': fields.function(_get_acceptance_move_ids, type='many2many', relation='account.move', method=True, string="Acceptance Entries"),
1688+ 'accreditation_move_id': fields.many2one('account.move', 'Accreditation Entry', readonly=True),
1689+ 'payment_ids': fields.function(_get_payment_ids, relation='account.move.line', type="many2many", string='Payments'),
1690+ 'unsolved_move_ids': fields.function(_get_unsolved_move_ids, type='many2many', relation='account.move', method=True, string="Unsolved Entries"),
1691+ 'type': fields.related('config', 'tipo', type='char', size=32, string='Type', readonly=True),
1692+ }
1693+
1694+ _defaults = {
1695+ 'user_id': lambda self,cr,uid,context: uid,
1696+ 'date_created': fields.date.context_today,
1697+ 'name': lambda self,cr,uid,context: self.pool.get('ir.sequence').get(cr, uid, 'riba.distinta'),
1698+ 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.distinta', context=c),
1699+ }
1700+
1701+ def unlink(self, cr, uid, ids, context=None):
1702+ for distinta in self.browse(cr, uid, ids, context=context):
1703+ if distinta.state not in ('draft', 'cancel'):
1704+ raise orm.except_orm(_('Error'),_('Distinta %s is in state %s. You can only delete documents in state draft or canceled') % (distinta.name, distinta.state))
1705+ super(riba_distinta,self).unlink(cr, uid, ids, context=context)
1706+ return True
1707+
1708+ def confirm(self, cr, uid, ids, context=None):
1709+ line_pool = self.pool.get('riba.distinta.line')
1710+ for distinta in self.browse(cr, uid, ids, context=context):
1711+ line_pool.confirm(cr, uid, [line.id for line in distinta.line_ids], context=context)
1712+ return True
1713+
1714+ def riba_new(self, cr, uid, ids, context=None):
1715+ self.write(cr, uid, ids, {
1716+ 'state': 'draft',
1717+ }, context=context)
1718+ return True
1719+
1720+ def riba_cancel(self, cr, uid, ids, context=None):
1721+ for distinta in self.browse(cr, uid, ids, context=context):
1722+ # TODO remove ervery other move
1723+ for line in distinta.line_ids:
1724+ if line.acceptance_move_id:
1725+ line.acceptance_move_id.unlink()
1726+ if line.unsolved_move_id:
1727+ line.unsolved_move_id.unlink()
1728+ if distinta.accreditation_move_id:
1729+ distinta.accreditation_move_id.unlink()
1730+ self.write(cr, uid, ids, {
1731+ 'state': 'cancel',
1732+ }, context=context)
1733+ return True
1734+
1735+ def riba_accepted(self, cr, uid, ids, context=None):
1736+ self.write(cr, uid, ids, {
1737+ 'state': 'accepted',
1738+ 'date_accepted': fields.date.context_today(
1739+ self, cr, uid, context),
1740+ }, context=context)
1741+ return True
1742+
1743+ def riba_accredited(self, cr, uid, ids, context=None):
1744+ self.write(cr, uid, ids, {
1745+ 'state': 'accredited',
1746+ 'date_accreditation': fields.date.context_today(
1747+ self, cr, uid, context),
1748+ }, context=context)
1749+ for distinta in self.browse(cr, uid, ids, context=context):
1750+ for line in distinta.line_ids:
1751+ line.write({'state': 'accredited'})
1752+ return True
1753+
1754+ def riba_paid(self, cr, uid, ids, context=None):
1755+ self.write(cr, uid, ids, {
1756+ 'state': 'paid',
1757+ 'date_paid': fields.date.context_today(
1758+ self, cr, uid, context),
1759+ }, context=context)
1760+ return True
1761+
1762+ def riba_unsolved(self, cr, uid, ids, context=None):
1763+ self.write(cr, uid, ids, {
1764+ 'state': 'unsolved',
1765+ 'date_unsolved': fields.date.context_today(
1766+ self, cr, uid, context),
1767+ }, context=context)
1768+ return True
1769+
1770+ def test_accepted(self, cr, uid, ids, *args):
1771+ for distinta in self.browse(cr, uid, ids):
1772+ for line in distinta.line_ids:
1773+ if line.state != 'confirmed':
1774+ return False
1775+ return True
1776+
1777+ def test_unsolved(self, cr, uid, ids, *args):
1778+ for distinta in self.browse(cr, uid, ids):
1779+ for line in distinta.line_ids:
1780+ if line.state != 'unsolved':
1781+ return False
1782+ return True
1783+
1784+ def test_paid(self, cr, uid, ids, *args):
1785+ for distinta in self.browse(cr, uid, ids):
1786+ for line in distinta.line_ids:
1787+ if line.state != 'paid':
1788+ return False
1789+ return True
1790+
1791+ def action_cancel_draft(self, cr, uid, ids, *args):
1792+ self.write(cr, uid, ids, {'state':'draft'})
1793+ wf_service = netsvc.LocalService("workflow")
1794+ for distinta_id in ids:
1795+ wf_service.trg_delete(uid, 'riba.distinta', distinta_id, cr)
1796+ wf_service.trg_create(uid, 'riba.distinta', distinta_id, cr)
1797+ return True
1798+
1799+
1800+class riba_distinta_line(orm.Model):
1801+
1802+ def _get_line_values(self, cr, uid, ids, field_name, arg, context):
1803+ res = {}
1804+ for line in self.browse(cr, uid, ids, context=context):
1805+ res[line.id] = {}
1806+ res[line.id]['amount'] = 0.0
1807+ res[line.id]['invoice_date'] = ''
1808+ res[line.id]['invoice_number'] = ''
1809+ for move_line in line.move_line_ids:
1810+ res[line.id]['amount'] += move_line.amount
1811+ if not res[line.id]['invoice_date']:
1812+ res[line.id]['invoice_date'] = str(move_line.move_line_id.invoice.date_invoice)
1813+ else:
1814+ res[line.id]['invoice_date'] += ', '+str(move_line.move_line_id.invoice.date_invoice)
1815+ if not res[line.id]['invoice_number']:
1816+ res[line.id]['invoice_number'] = str(move_line.move_line_id.invoice.internal_number)
1817+ else:
1818+ res[line.id]['invoice_number'] += ', '+str(move_line.move_line_id.invoice.internal_number)
1819+ return res
1820+
1821+ def _reconciled(self, cr, uid, ids, name, args, context=None):
1822+ wf_service = netsvc.LocalService("workflow")
1823+ res = {}
1824+ for id in ids:
1825+ res[id] = self.test_paid(cr, uid, [id])
1826+ if res[id]:
1827+ self.write(cr, uid, id, {'state': 'paid'}, context=context)
1828+ wf_service.trg_validate(
1829+ uid, 'riba.distinta',
1830+ self.browse(cr, uid, id).distinta_id.id, 'paid', cr)
1831+ return res
1832+
1833+ def move_line_id_payment_gets(self, cr, uid, ids, *args):
1834+ res = {}
1835+ if not ids: return res
1836+ cr.execute('SELECT distinta_line.id, l.id '\
1837+ 'FROM account_move_line l '\
1838+ 'LEFT JOIN riba_distinta_line distinta_line ON (distinta_line.acceptance_move_id=l.move_id) '\
1839+ 'WHERE distinta_line.id IN %s '\
1840+ 'AND l.account_id=distinta_line.acceptance_account_id',
1841+ (tuple(ids),))
1842+ for r in cr.fetchall():
1843+ res.setdefault(r[0], [])
1844+ res[r[0]].append( r[1] )
1845+ return res
1846+
1847+ # return the ids of the move lines which has the same account than the statement
1848+ # whose id is in ids
1849+ def move_line_id_payment_get(self, cr, uid, ids, *args):
1850+ if not ids: return []
1851+ result = self.move_line_id_payment_gets(cr, uid, ids, *args)
1852+ return result.get(ids[0], [])
1853+
1854+ def test_paid(self, cr, uid, ids, *args):
1855+ res = self.move_line_id_payment_get(cr, uid, ids)
1856+ if not res:
1857+ return False
1858+ ok = True
1859+ for id in res:
1860+ cr.execute('select reconcile_id from account_move_line where id=%s', (id,))
1861+ ok = ok and bool(cr.fetchone()[0])
1862+ return ok
1863+
1864+ def _get_riba_line_from_move_line(self, cr, uid, ids, context=None):
1865+ move = {}
1866+ for line in self.pool.get('account.move.line').browse(cr, uid, ids, context=context):
1867+ if line.reconcile_partial_id:
1868+ for line2 in line.reconcile_partial_id.line_partial_ids:
1869+ move[line2.move_id.id] = True
1870+ if line.reconcile_id:
1871+ for line2 in line.reconcile_id.line_id:
1872+ move[line2.move_id.id] = True
1873+ line_ids = []
1874+ if move:
1875+ line_ids = self.pool.get('riba.distinta.line').search(
1876+ cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
1877+ return line_ids
1878+
1879+ def _get_line_from_reconcile(self, cr, uid, ids, context=None):
1880+ move = {}
1881+ for r in self.pool.get('account.move.reconcile').browse(cr, uid, ids, context=context):
1882+ for line in r.line_partial_ids:
1883+ move[line.move_id.id] = True
1884+ for line in r.line_id:
1885+ move[line.move_id.id] = True
1886+ line_ids = []
1887+ if move:
1888+ line_ids = self.pool.get('riba.distinta.line').search(
1889+ cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
1890+ return line_ids
1891+
1892+ def _compute_lines(self, cr, uid, ids, name, args, context=None):
1893+ result = {}
1894+ for riba_line in self.browse(cr, uid, ids, context=context):
1895+ src = []
1896+ lines = []
1897+ if riba_line.acceptance_move_id:
1898+ for m in riba_line.acceptance_move_id.line_id:
1899+ temp_lines = []
1900+ if m.reconcile_id and m.credit == 0.0:
1901+ temp_lines = map(lambda x: x.id, m.reconcile_id.line_id)
1902+ elif m.reconcile_partial_id and m.credit == 0.0:
1903+ temp_lines = map(lambda x: x.id, m.reconcile_partial_id.line_partial_ids)
1904+ lines += [x for x in temp_lines if x not in lines]
1905+ src.append(m.id)
1906+
1907+ lines = filter(lambda x: x not in src, lines)
1908+ result[riba_line.id] = lines
1909+ return result
1910+
1911+ # TODO estendere la account_due_list per visualizzare e filtrare in base alle riba ?
1912+ _name = 'riba.distinta.line'
1913+ _description = 'Riba details'
1914+ _rec_name = 'sequence'
1915+
1916+ _columns = {
1917+ 'sequence': fields.integer('Number'),
1918+ 'move_line_ids': fields.one2many('riba.distinta.move.line', 'riba_line_id', 'Credit move lines'),
1919+ 'acceptance_move_id': fields.many2one('account.move', 'Acceptance Entry', readonly=True),
1920+ 'unsolved_move_id': fields.many2one('account.move', 'Unsolved Entry', readonly=True),
1921+ 'acceptance_account_id': fields.many2one('account.account', 'Acceptance Account'),
1922+ 'amount' : fields.function(_get_line_values, method=True, string="Amount", multi="line"),
1923+ 'bank_id': fields.many2one('res.partner.bank', 'Debitor Bank'),
1924+ 'iban': fields.related('bank_id', 'iban', type='char', string='IBAN', store=False, readonly=True),
1925+ 'distinta_id': fields.many2one('riba.distinta', 'Distinta', required=True, ondelete='cascade'),
1926+ 'partner_id' : fields.many2one('res.partner', "Cliente", readonly=True),
1927+ 'invoice_date' : fields.function(_get_line_values, string="Invoice Date", type='char', size=256, method=True, multi="line"),
1928+ 'invoice_number' : fields.function(_get_line_values, string="Invoice Number", type='char', size=256, method=True, multi="line"),
1929+ 'due_date' : fields.date("Due date", readonly=True),
1930+ 'state': fields.selection([
1931+ ('draft', 'Draft'),
1932+ ('confirmed', 'Confirmed'),
1933+ ('accredited', 'Accredited'),
1934+ ('paid', 'Paid'),
1935+ ('unsolved', 'Unsolved'),
1936+ ], 'State', select=True, readonly=True),
1937+ 'reconciled': fields.function(_reconciled, string='Paid/Reconciled', type='boolean',
1938+ store={
1939+ 'riba.distinta.line': (lambda self, cr, uid, ids, c={}: ids, ['acceptance_move_id'], 50),
1940+ 'account.move.line': (_get_riba_line_from_move_line, None, 50),
1941+ 'account.move.reconcile': (_get_line_from_reconcile, None, 50),
1942+ }, help="It indicates that the line has been paid and the journal entry of the line has been reconciled with one or several journal entries of payment."),
1943+ 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
1944+ 'type': fields.related('distinta_id', 'type', type='char', size=32, string='Type', readonly=True),
1945+ }
1946+
1947+ def confirm(self, cr, uid, ids, context=None):
1948+ move_pool = self.pool.get('account.move')
1949+ move_line_pool = self.pool.get('account.move.line')
1950+ wf_service = netsvc.LocalService("workflow")
1951+ for line in self.browse(cr, uid, ids, context=context):
1952+ journal = line.distinta_id.config.acceptance_journal_id
1953+ total_credit = 0.0
1954+ move_id= move_pool.create(cr, uid, {
1955+ 'ref': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
1956+ 'journal_id': journal.id,
1957+ }, context=context)
1958+ to_be_reconciled = []
1959+ for riba_move_line in line.move_line_ids:
1960+ total_credit += riba_move_line.amount
1961+ move_line_id = move_line_pool.create(cr, uid, {
1962+ 'name': riba_move_line.move_line_id.invoice.number,
1963+ 'partner_id': line.partner_id.id,
1964+ 'account_id': riba_move_line.move_line_id.account_id.id,
1965+ 'credit': riba_move_line.amount,
1966+ 'debit': 0.0,
1967+ 'move_id': move_id,
1968+ }, context=context)
1969+ to_be_reconciled.append([move_line_id, riba_move_line.move_line_id.id])
1970+ move_line_pool.create(cr, uid, {
1971+ 'name': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
1972+ 'account_id': line.acceptance_account_id.id,
1973+ 'partner_id': line.partner_id.id,
1974+ 'date_maturity': line.due_date,
1975+ 'credit': 0.0,
1976+ 'debit': total_credit,
1977+ 'move_id': move_id,
1978+ }, context=context)
1979+ move_pool.post(cr, uid, [move_id], context=context)
1980+ for reconcile_ids in to_be_reconciled:
1981+ move_line_pool.reconcile_partial(cr, uid, reconcile_ids, context=context)
1982+ line.write({
1983+ 'acceptance_move_id': move_id,
1984+ 'state': 'confirmed',
1985+ })
1986+ wf_service.trg_validate(
1987+ uid, 'riba.distinta', line.distinta_id.id, 'accepted', cr)
1988+ return True
1989+
1990+
1991+class riba_distinta_move_line(orm.Model):
1992+
1993+ _name = 'riba.distinta.move.line'
1994+ _description = 'Riba details'
1995+ _rec_name = 'amount'
1996+
1997+ _columns = {
1998+ 'amount' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
1999+ 'move_line_id': fields.many2one('account.move.line', 'Credit move line'),
2000+ 'riba_line_id': fields.many2one('riba.distinta.line', 'Distinta line', ondelete='cascade'),
2001+ }
2002+
2003
2004=== added file 'l10n_it_ricevute_bancarie/riba_sequence.xml'
2005--- l10n_it_ricevute_bancarie/riba_sequence.xml 1970-01-01 00:00:00 +0000
2006+++ l10n_it_ricevute_bancarie/riba_sequence.xml 2014-02-20 16:47:57 +0000
2007@@ -0,0 +1,17 @@
2008+<?xml version="1.0" encoding="utf-8"?>
2009+<openerp>
2010+ <data noupdate="1">
2011+ <record forcecreate="1" id="type_riba_distinta" model="ir.sequence.type">
2012+ <field name="name">Tipo Distinta Ri.Ba.</field>
2013+ <field name="code">seq.riba.distinta</field>
2014+ </record>
2015+
2016+ <record forcecreate="1" id="seq_riba_distinta" model="ir.sequence">
2017+ <field name="name">Distinta Ri.Ba.</field>
2018+ <field name="code">seq.riba.distinta</field>
2019+ <field eval="3" name="padding"/>
2020+ <field name="prefix">%(y)s/</field>
2021+ </record>
2022+
2023+ </data>
2024+</openerp>
2025
2026=== added file 'l10n_it_ricevute_bancarie/riba_view.xml'
2027--- l10n_it_ricevute_bancarie/riba_view.xml 1970-01-01 00:00:00 +0000
2028+++ l10n_it_ricevute_bancarie/riba_view.xml 2014-02-20 16:47:57 +0000
2029@@ -0,0 +1,180 @@
2030+<?xml version="1.0" encoding="utf-8"?>
2031+<openerp>
2032+ <data>
2033+
2034+ <menuitem name="Ri.Ba." parent="account.menu_finance" id="menu_riba" icon="STOCK_OPEN" />
2035+
2036+ <!-- ====================================================== -->
2037+ <!-- DISTINTA RIBA - FILTRI -->
2038+ <!-- ====================================================== -->
2039+ <record id="view_distinta_riba_filtri" model="ir.ui.view">
2040+ <field name="name">riba.distinta.filtri</field>
2041+ <field name="model">riba.distinta</field>
2042+ <field name="arch" type="xml">
2043+ <search string="Distinte Ri.Ba.">
2044+ <filter icon="terp-check" string="Draft" domain="[('state','=','draft')]" help="Draft"/>
2045+ <filter icon="terp-dolar" string="Confirmed" domain="[('state','=','accepted')]" help="Accepted"/>
2046+ <filter icon="terp-dolar_ok!" string="Paid" domain="[('state','=','paid')]" help="Paid"/>
2047+ <separator orientation="vertical"/>
2048+ <field name="name" />
2049+ <field name="config" />
2050+ <field name="date_accepted" />
2051+ <field name="date_paid" />
2052+ </search>
2053+ </field>
2054+ </record>
2055+
2056+ <!-- ====================================================== -->
2057+ <!-- DISTINTA RIBA TREE -->
2058+ <!-- ====================================================== -->
2059+ <record model="ir.ui.view" id="view_distinta_riba_tree">
2060+ <field name="name">riba.distinta.tree</field>
2061+ <field name="model">riba.distinta</field>
2062+ <field name="arch" type="xml">
2063+ <tree string="Distinte Ri.Ba.">
2064+ <field name="name" />
2065+ <field name="config" />
2066+ <field name="date_accepted" />
2067+ <field name="date_paid" />
2068+ <field name="state" />
2069+ </tree>
2070+ </field>
2071+ </record>
2072+
2073+ <!-- ====================================================== -->
2074+ <!-- DISTINTA RIBA FORM -->
2075+ <!-- ====================================================== -->
2076+ <record model="ir.ui.view" id="view_distinta_riba_form">
2077+ <field name="name">riba.distinta.form</field>
2078+ <field name="model">riba.distinta</field>
2079+ <field name="arch" type="xml">
2080+ <form string="Ri.Ba. - Distinta">
2081+ <field name="name" />
2082+ <field name="config" widget="selection"/>
2083+ <notebook colspan="4">
2084+ <page string="General">
2085+ <field name="line_ids" nolabel="1" colspan="4">
2086+ <tree string="Detail">
2087+ <field name="sequence"/>
2088+ <field name="invoice_number"/>
2089+ <field name="invoice_date"/>
2090+ <field name="partner_id"/>
2091+ <field name="iban"/>
2092+ <field name="amount" sum="Amount"/>
2093+ <field name="due_date"/>
2094+ <field name="state"/>
2095+ <button name="%(riba_unsolved_action)d" type='action' attrs="{'invisible':['|',('type','=','incasso'),('state','!=','accredited')]}" string="Unsolved" icon="terp-dolar_ok!"/>
2096+ <field name="type" invisible="1" />
2097+ </tree>
2098+ <form string="Detail">
2099+ <notebook colspan="4">
2100+ <page string="General">
2101+ <field name="sequence"/>
2102+ <field name="invoice_number"/>
2103+ <field name="invoice_date"/>
2104+ <field name="partner_id"/>
2105+ <field name="amount" />
2106+ <field name="due_date"/>
2107+ <field name="state"/>
2108+ <field name="reconciled" />
2109+ </page>
2110+ <page string="Accounting">
2111+ <separator string="Invoice entries" colspan="4"/>
2112+ <field name="move_line_ids" nolabel="1" colspan="4">
2113+ <tree string="Move lines">
2114+ <field name="amount" />
2115+ <field name="move_line_id"/>
2116+ </tree>
2117+ <form string="Move line">
2118+ <field name="amount" />
2119+ <field name="move_line_id"/>
2120+ </form>
2121+ </field>
2122+ <field name="acceptance_account_id"/>
2123+ <field name="acceptance_move_id"/>
2124+ <separator string="Payments" colspan="4"/>
2125+ <field name="payment_ids" nolabel="1" colspan="4">
2126+ <tree string="Payments">
2127+ <field name="date"/>
2128+ <field name="move_id"/>
2129+ <field name="ref"/>
2130+ <field name="name"/>
2131+ <field name="journal_id" groups="base.group_user"/>
2132+ <field name="debit"/>
2133+ <field name="credit"/>
2134+ <field name="amount_currency"/>
2135+ <field name="currency_id"/>
2136+ </tree>
2137+ </field>
2138+ <field name="unsolved_move_id"/>
2139+ </page>
2140+ </notebook>
2141+ </form>
2142+ </field>
2143+ <group col="2" colspan="2">
2144+ <field name="state" readonly="1" nolabel="1" colspan="2" />
2145+ <field name="type" invisible="1" />
2146+ </group>
2147+ <group col="2" colspan="2">
2148+ <button name="confirm" type='object' string="Accepted" icon="gtk-apply" attrs="{'invisible':['|',('state','!=','draft'),('type','=','incasso')]}"/>
2149+ <button name="%(riba_accreditation_action)d" type='action' attrs="{'invisible':['|',('state','!=','accepted'),('type','=','incasso')]}" string="Accredited" icon="gtk-apply"/>
2150+ <button name="cancel" attrs="{'invisible':[('state','=','cancel')]}" string="Cancel" icon="gtk-cancel"/>
2151+ <button name="action_cancel_draft" attrs="{'invisible':['|',('state','!=','cancel'),('type','=','incasso')]}" string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
2152+ </group>
2153+ </page>
2154+ <page string="Other Info">
2155+ <field name="user_id" />
2156+ <newline/>
2157+ <field name="date_created" />
2158+ <field name="date_accepted" />
2159+ <field name="date_accreditation" />
2160+ <field name="date_paid" />
2161+ </page>
2162+ <page string="Accounting">
2163+ <separator colspan="4" string="Acceptance Entries"/>
2164+ <field name='acceptance_move_ids' colspan="4" nolabel="1"/>
2165+ <separator colspan="4" string="Accreditation Entry"/>
2166+ <field name='accreditation_move_id' colspan="4" nolabel="1"/>
2167+ <separator colspan="4" string="Payments"/>
2168+ <field name='payment_ids' colspan="4" nolabel="1">
2169+ <tree string="Payments">
2170+ <field name="date"/>
2171+ <field name="move_id"/>
2172+ <field name="ref"/>
2173+ <field name="name"/>
2174+ <field name="journal_id" groups="base.group_user"/>
2175+ <field name="debit"/>
2176+ <field name="credit"/>
2177+ <field name="amount_currency"/>
2178+ <field name="currency_id"/>
2179+ </tree>
2180+ </field>
2181+ <separator colspan="4" string="Unsolved"/>
2182+ <field name='unsolved_move_ids' colspan="4" nolabel="1"/>
2183+ </page>
2184+ </notebook>
2185+ </form>
2186+ </field>
2187+ </record>
2188+
2189+ <!-- ====================================================== -->
2190+ <!-- ACTION DISTINTA RIBA -->
2191+ <!-- ====================================================== -->
2192+ <record id="distinta_riba_action" model="ir.actions.act_window">
2193+ <field name="name">Distinta Ri.Ba.</field>
2194+ <field name="type">ir.actions.act_window</field>
2195+ <field name="res_model">riba.distinta</field>
2196+ <field name="src_model">riba.distinta</field>
2197+ <field name="view_type">form</field>
2198+ <field name="view_mode">tree,form</field>
2199+ <field name="search_view_id" ref="view_distinta_riba_filtri"/>
2200+ </record>
2201+
2202+ <!-- ====================================================== -->
2203+ <!-- DISTINTA RIBA - MENU -->
2204+ <!-- ====================================================== -->
2205+ <menuitem name="Distinte" parent="menu_riba"
2206+ id="menu_riba_distinte" action="distinta_riba_action" />
2207+
2208+ </data>
2209+</openerp>
2210
2211=== added file 'l10n_it_ricevute_bancarie/riba_workflow.xml'
2212--- l10n_it_ricevute_bancarie/riba_workflow.xml 1970-01-01 00:00:00 +0000
2213+++ l10n_it_ricevute_bancarie/riba_workflow.xml 2014-02-20 16:47:57 +0000
2214@@ -0,0 +1,112 @@
2215+<?xml version="1.0"?>
2216+<openerp>
2217+ <data>
2218+ <record model="workflow" id="wkf_riba_distinta">
2219+ <field name="name">riba.distinta.wkf</field>
2220+ <field name="osv">riba.distinta</field>
2221+ <field name="on_create">True</field>
2222+ </record>
2223+
2224+ <record model="workflow.activity" id="act_new">
2225+ <field name="wkf_id" ref="wkf_riba_distinta" />
2226+ <field name="flow_start">True</field>
2227+ <field name="name">new</field>
2228+ <field name="kind">function</field>
2229+ <field name="action">riba_new()</field>
2230+ </record>
2231+
2232+ <record model="workflow.activity" id="act_accepted">
2233+ <field name="wkf_id" ref="wkf_riba_distinta" />
2234+ <field name="name">accepted</field>
2235+ <field name="kind">function</field>
2236+ <field name="action">riba_accepted()</field>
2237+ </record>
2238+
2239+ <record model="workflow.activity" id="act_accredited">
2240+ <field name="wkf_id" ref="wkf_riba_distinta" />
2241+ <field name="name">accredited</field>
2242+ <field name="kind">function</field>
2243+ <field name="action">riba_accredited()</field>
2244+ </record>
2245+
2246+ <record model="workflow.activity" id="act_paid">
2247+ <field name="wkf_id" ref="wkf_riba_distinta" />
2248+ <field name="name">paid</field>
2249+ <field name="kind">function</field>
2250+ <field name="action">riba_paid()</field>
2251+ </record>
2252+
2253+ <record model="workflow.activity" id="act_unsolved">
2254+ <field name="wkf_id" ref="wkf_riba_distinta" />
2255+ <field name="name">unsolved</field>
2256+ <field name="kind">function</field>
2257+ <field name="action">riba_unsolved()</field>
2258+ </record>
2259+
2260+ <record model="workflow.activity" id="act_cancel">
2261+ <field name="wkf_id" ref="wkf_riba_distinta" />
2262+ <field name="name">cancel</field>
2263+ <field name="kind">function</field>
2264+ <field name="action">riba_cancel()</field>
2265+ <field name="flow_stop">True</field>
2266+ </record>
2267+
2268+ <!-- transitions -->
2269+
2270+ <record model="workflow.transition" id="new_to_accepted">
2271+ <field name="act_from" ref="act_new" />
2272+ <field name="act_to" ref="act_accepted" />
2273+ <field name="signal">accepted</field>
2274+ <field name="condition">test_accepted()</field>
2275+ </record>
2276+ <record model="workflow.transition" id="accepted_to_accredited">
2277+ <field name="act_from" ref="act_accepted" />
2278+ <field name="act_to" ref="act_accredited" />
2279+ <field name="signal">accredited</field>
2280+ </record>
2281+ <record model="workflow.transition" id="accredited_to_paid">
2282+ <field name="act_from" ref="act_accredited" />
2283+ <field name="act_to" ref="act_paid" />
2284+ <field name="signal">paid</field>
2285+ <field name="condition">test_paid()</field>
2286+ </record>
2287+ <record model="workflow.transition" id="accepted_to_paid">
2288+ <field name="act_from" ref="act_accepted" />
2289+ <field name="act_to" ref="act_paid" />
2290+ <field name="signal">paid</field>
2291+ <field name="condition">test_paid()</field>
2292+ </record>
2293+ <record model="workflow.transition" id="accepted_to_cancel">
2294+ <field name="act_from" ref="act_accepted" />
2295+ <field name="act_to" ref="act_cancel" />
2296+ <field name="signal">cancel</field>
2297+ </record>
2298+ <record model="workflow.transition" id="new_to_cancel">
2299+ <field name="act_from" ref="act_new" />
2300+ <field name="act_to" ref="act_cancel" />
2301+ <field name="signal">cancel</field>
2302+ </record>
2303+ <record model="workflow.transition" id="accredited_to_cancel">
2304+ <field name="act_from" ref="act_accredited" />
2305+ <field name="act_to" ref="act_cancel" />
2306+ <field name="signal">cancel</field>
2307+ </record>
2308+ <record model="workflow.transition" id="paid_to_cancel">
2309+ <field name="act_from" ref="act_paid" />
2310+ <field name="act_to" ref="act_cancel" />
2311+ <field name="signal">cancel</field>
2312+ </record>
2313+ <record model="workflow.transition" id="accredited_to_unsolved">
2314+ <field name="act_from" ref="act_accredited" />
2315+ <field name="act_to" ref="act_unsolved" />
2316+ <field name="signal">unsolved</field>
2317+ <field name="condition">test_unsolved()</field>
2318+ </record>
2319+ <record model="workflow.transition" id="unsolved_to_cancel">
2320+ <field name="act_from" ref="act_unsolved" />
2321+ <field name="act_to" ref="act_cancel" />
2322+ <field name="signal">cancel</field>
2323+ </record>
2324+
2325+ </data>
2326+</openerp>
2327
2328=== added directory 'l10n_it_ricevute_bancarie/security'
2329=== added file 'l10n_it_ricevute_bancarie/security/ir.model.access.csv'
2330--- l10n_it_ricevute_bancarie/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
2331+++ l10n_it_ricevute_bancarie/security/ir.model.access.csv 2014-02-20 16:47:57 +0000
2332@@ -0,0 +1,15 @@
2333+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2334+access_riba_distinta_uinvoice,riba_distinta,model_riba_distinta,account.group_account_invoice,1,1,1,1
2335+access_riba_distinta_group_invoice,riba_distinta group invoice,model_riba_distinta,account.group_account_invoice,1,1,1,1
2336+access_riba_distinta_user,riba_distinta user,model_riba_distinta,base.group_user,1,0,0,0
2337+access_riba_distinta_accountant,riba_distinta accountant,model_riba_distinta,account.group_account_user,1,0,0,0
2338+access_riba_distinta_line_uinvoice,riba_distinta_line,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
2339+access_riba_distinta_line_group_invoice,riba_distinta_line group invoice,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
2340+access_riba_distinta_line_user,riba_distinta_line user,model_riba_distinta_line,base.group_user,1,0,0,0
2341+access_riba_distinta_line_accountant,riba_distinta_line accountant,model_riba_distinta_line,account.group_account_user,1,0,0,0
2342+access_riba_distinta_move_line_uinvoice,riba_distinta_move_line,model_riba_distinta_move_line,account.group_account_invoice,1,1,1,1
2343+access_riba_distinta_move_line_group_invoice,riba_distinta_move_line group invoice,model_riba_distinta_move_line,account.group_account_invoice,1,1,1,1
2344+access_riba_distinta_move_line_user,riba_distinta_move_line user,model_riba_distinta_move_line,base.group_user,1,0,0,0
2345+access_riba_distinta_move_line_accountant,riba_distinta_move_line accountant,model_riba_distinta_move_line,account.group_account_user,1,0,0,0
2346+access_riba_configurazione_manager,riba_configurazione,model_riba_configurazione,account.group_account_manager,1,1,1,1
2347+access_riba_configurazione_invoice,riba_configurazione invoice,model_riba_configurazione,account.group_account_invoice,1,0,0,0
2348
2349=== added directory 'l10n_it_ricevute_bancarie/wizard'
2350=== added file 'l10n_it_ricevute_bancarie/wizard/__init__.py'
2351--- l10n_it_ricevute_bancarie/wizard/__init__.py 1970-01-01 00:00:00 +0000
2352+++ l10n_it_ricevute_bancarie/wizard/__init__.py 2014-02-20 16:47:57 +0000
2353@@ -0,0 +1,30 @@
2354+# -*- coding: utf-8 -*-
2355+##############################################################################
2356+#
2357+# Copyright (C) 2012 Andrea Cometa.
2358+# Email: info@andreacometa.it
2359+# Web site: http://www.andreacometa.it
2360+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
2361+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
2362+# Copyright (C) 2012 Associazione OpenERP Italia
2363+# (<http://www.openerp-italia.org>).
2364+#
2365+# This program is free software: you can redistribute it and/or modify
2366+# it under the terms of the GNU Affero General Public License as published
2367+# by the Free Software Foundation, either version 3 of the License, or
2368+# (at your option) any later version.
2369+#
2370+# This program is distributed in the hope that it will be useful,
2371+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2372+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2373+# GNU Affero General Public License for more details.
2374+#
2375+# You should have received a copy of the GNU Affero General Public License
2376+# along with this program. If not, see <http://www.gnu.org/licenses/>.
2377+#
2378+##############################################################################
2379+
2380+import wizard_emissione_riba
2381+import riba_file_export
2382+import wizard_accreditation
2383+import wizard_unsolved
2384
2385=== added file 'l10n_it_ricevute_bancarie/wizard/riba_file_export.py'
2386--- l10n_it_ricevute_bancarie/wizard/riba_file_export.py 1970-01-01 00:00:00 +0000
2387+++ l10n_it_ricevute_bancarie/wizard/riba_file_export.py 2014-02-20 16:47:57 +0000
2388@@ -0,0 +1,244 @@
2389+# -*- coding: utf-8 -*-
2390+##############################################################################
2391+#
2392+# Copyright (C) 2011-2012 Associazione OpenERP Italia
2393+# (<http://www.openerp-italia.org>).
2394+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
2395+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
2396+# Thanks to Antonio de Vincentiis http://www.devincentiis.it/ ,
2397+# GAzie http://gazie.sourceforge.net/
2398+# and Cecchi s.r.l http://www.cecchi.com/
2399+#
2400+# This program is free software: you can redistribute it and/or modify
2401+# it under the terms of the GNU Affero General Public License as published by
2402+# the Free Software Foundation, either version 3 of the License, or
2403+# (at your option) any later version.
2404+#
2405+# This program is distributed in the hope that it will be useful,
2406+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2407+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2408+# GNU Affero General Public License for more details.
2409+#
2410+# You should have received a copy of the GNU Affero General Public License
2411+# along with this program. If not, see <http://www.gnu.org/licenses/>.
2412+#
2413+##############################################################################
2414+
2415+'''
2416+*****************************************************************************************
2417+ Questa classe genera il file RiBa standard ABI-CBI passando alla funzione "creaFile" i due array di seguito specificati:
2418+$intestazione = array monodimensionale con i seguenti index:
2419+ [0] = credit_sia variabile lunghezza 5 alfanumerico
2420+ [1] = credit_abi assuntrice variabile lunghezza 5 numerico
2421+ [2] = credit_cab assuntrice variabile lunghezza 5 numerico
2422+ [3] = credit_conto conto variabile lunghezza 10 alfanumerico
2423+ [4] = data_creazione variabile lunghezza 6 numerico formato GGMMAA
2424+ [5] = nome_supporto variabile lunghezza 20 alfanumerico
2425+ [6] = codice_divisa variabile lunghezza 1 alfanumerico opzionale default "E"
2426+ [7] = name_company nome ragione sociale creditore variabile lunghezza 24 alfanumerico
2427+ [8] = indirizzo_creditore variabile lunghezza 24 alfanumerico
2428+ [9] = cap_citta_creditore variabile lunghezza 24 alfanumerico
2429+ [10] = ref (definizione attivita) creditore
2430+ [11] = codice fiscale/partita iva creditore alfanumerico opzionale
2431+
2432+$ricevute_bancarie = array bidimensionale con i seguenti index:
2433+ [0] = numero ricevuta lunghezza 10 numerico
2434+ [1] = data scadenza lunghezza 6 numerico
2435+ [2] = importo in centesimi di euro
2436+ [3] = nome debitore lunghezza 60 alfanumerico
2437+ [4] = codice fiscale/partita iva debitore lunghezza 16 alfanumerico
2438+ [5] = indirizzo debitore lunghezza 30 alfanumerico
2439+ [6] = cap debitore lunghezza 5 numerico
2440+ [7] = citta debitore alfanumerico
2441+ [8] = debitor_province debitore alfanumerico
2442+ [9] = abi banca domiciliataria lunghezza 5 numerico
2443+ [10] = cab banca domiciliataria lunghezza 5 numerico
2444+ [11] = descrizione banca domiciliataria lunghezza 50 alfanumerico
2445+ [12] = codice cliente attribuito dal creditore lunghezza 16 numerico
2446+ [13] = numero fattura lunghezza 40 alfanumerico
2447+ [14] = data effettiva della fattura
2448+
2449+'''
2450+
2451+import tools
2452+import base64
2453+from openerp.osv import fields,orm
2454+from tools.translate import _
2455+import datetime
2456+
2457+class riba_file_export(orm.TransientModel):
2458+
2459+ _progressivo = 0
2460+ _assuntrice = 0
2461+ _sia = 0
2462+ _data = 0
2463+ _valuta = 0
2464+ _supporto = 0
2465+ _totale = 0
2466+ _creditore = 0
2467+ _descrizione = ''
2468+ _codice = ''
2469+ _comune_provincia_debitor = ''
2470+
2471+ def _RecordIB(self, sia_assuntrice, abi_assuntrice, data_creazione, nome_supporto, codice_divisa): #record di testa
2472+ self._sia = sia_assuntrice.rjust(5,'0')
2473+ self._assuntrice = abi_assuntrice.rjust(5, '0')
2474+ self._data = data_creazione.rjust(6, '0')
2475+ self._valuta = codice_divisa[0:1]
2476+ self._supporto = nome_supporto.ljust(20, ' ')
2477+ return " IB" + self._sia + self._assuntrice + self._data + self._supporto + " " * 74 + self._valuta + " " * 6 + "\r\n"
2478+
2479+ def _Record14(self, scadenza, importo, abi_assuntrice, cab_assuntrice, conto, abi_domiciliataria, cab_domiciliataria, sia_credit, codice_cliente):
2480+ self._totale += importo
2481+ return " 14" + str(self._progressivo).rjust(7,'0') + " " * 12 + scadenza + "30000" + str(int(round(importo*100))).rjust(13,'0') + "-" + abi_assuntrice.rjust(5,'0') + cab_assuntrice.rjust(5,'0') + conto.ljust(12,'0') + abi_domiciliataria.rjust(5,'0') + cab_domiciliataria.rjust(5,'0') + " " * 12 + str(sia_credit).rjust(5,'0') + "4" + codice_cliente.ljust(16) + " " * 6 + self._valuta + "\r\n"
2482+
2483+ def _Record20(self, ragione_soc1_creditore, indirizzo_creditore, cap_citta_creditore, ref_creditore,):
2484+ self._creditore = ragione_soc1_creditore.ljust(24)
2485+ return " 20" + str(self._progressivo).rjust(7,'0') + self._creditore[0:24] + indirizzo_creditore.ljust(24)[0:24] + cap_citta_creditore.ljust(24)[0:24]+ ref_creditore.ljust(24)[0:24] + " " * 14 + "\r\n"
2486+
2487+ def _Record30(self, nome_debitore, codice_fiscale_debitore):
2488+ return " 30" + str(self._progressivo).rjust(7,'0') + nome_debitore.ljust(60)[0:60] + codice_fiscale_debitore.ljust(16,' ') + " " * 34 + "\r\n"
2489+
2490+ def _Record40(self, indirizzo_debitore, cap_debitore, comune_debitore, provincia_debitore, descrizione_domiciliataria=""):
2491+ self._comune_provincia_debitor = comune_debitore + provincia_debitore.rjust(25-len(comune_debitore),' ')
2492+ return " 40" + str(self._progressivo).rjust(7,'0') + indirizzo_debitore.ljust(30)[0:30] + str(cap_debitore).rjust(5,'0') + self._comune_provincia_debitor + descrizione_domiciliataria.ljust(50)[0:50] + "\r\n"
2493+
2494+ def _Record50(self, importo_debito, invoice_ref, data_invoice, partita_iva_creditore):
2495+ self._descrizione = 'PER LA FATTURA N. ' + invoice_ref + ' DEL '+ data_invoice + ' IMP '+ str(importo_debito)
2496+ return " 50" + str(self._progressivo).rjust(7,'0') + self._descrizione.ljust(80)[0:80] + " " * 10 + partita_iva_creditore.ljust(16,' ') + " " * 4 + "\r\n"
2497+
2498+ def _Record51(self, numero_ricevuta_creditore):
2499+ return " 51" + str(self._progressivo).rjust(7,'0') + str(numero_ricevuta_creditore).rjust(10,'0') + self._creditore[0:20] + " " * 80 + "\r\n"
2500+
2501+ def _Record70(self):
2502+ return " 70" + str(self._progressivo).rjust(7,'0') + " " * 110 + "\r\n"
2503+
2504+ def _RecordEF(self): #record di coda
2505+ return " EF" + self._sia + self._assuntrice + self._data + self._supporto + " " * 6 + str(self._progressivo).rjust(7,'0') + str(int(round(self._totale * 100))).rjust(15,'0') + "0" * 15 + str(int(self._progressivo)*7+2).rjust(7,'0') + " " * 24 + self._valuta + " " * 6 + "\r\n"
2506+
2507+ def _creaFile(self, intestazione, ricevute_bancarie):
2508+ accumulatore = self._RecordIB(intestazione[0], intestazione[1], intestazione[4], intestazione[5], intestazione[6])
2509+ for value in ricevute_bancarie: #estraggo le ricevute dall'array
2510+ self._progressivo =self._progressivo + 1
2511+ accumulatore = accumulatore + self._Record14(
2512+ value[1], value[2], intestazione[1], intestazione[2], intestazione[3], value[9], value[10], intestazione[0], value[12])
2513+ accumulatore = accumulatore + self._Record20(intestazione[7], intestazione[8], intestazione[9], intestazione[10])
2514+ accumulatore = accumulatore + self._Record30(value[3], value[4])
2515+ accumulatore = accumulatore + self._Record40(value[5], value[6], value[7], value[8], value[11])
2516+ accumulatore = accumulatore + self._Record50(value[2], value[13], value[14], intestazione[11])
2517+ accumulatore = accumulatore + self._Record51(value[0])
2518+ accumulatore = accumulatore + self._Record70()
2519+ accumulatore = accumulatore + self._RecordEF()
2520+ self._progressivo = 0
2521+ self._totale = 0
2522+ return accumulatore
2523+
2524+ def act_getfile(self, cr, uid, ids, context=None):
2525+ active_ids = context and context.get('active_ids', [])
2526+ order_obj = self.pool.get('riba.distinta').browse(cr, uid, active_ids, context=context)[0]
2527+ credit_bank = order_obj.config.bank_id
2528+ name_company = order_obj.config.company_id.partner_id.name
2529+ if not credit_bank.iban:
2530+ raise orm.except_orm('Error', _('No IBAN specified'))
2531+ credit_abi = credit_bank.iban[5:10]
2532+ credit_cab = credit_bank.iban[10:15]
2533+ credit_conto = credit_bank.iban[-12:]
2534+ if not credit_bank.codice_sia:
2535+ raise orm.except_orm('Error', _('No SIA Code specified for: ') + name_company)
2536+ credit_sia = credit_bank.codice_sia
2537+ credit_account = credit_bank.iban[15:27]
2538+ dataemissione = datetime.datetime.now().strftime("%d%m%y")
2539+ nome_supporto = datetime.datetime.now().strftime("%d%m%y%H%M%S") + credit_sia
2540+ creditor_address = order_obj.config.company_id.partner_id
2541+ creditor_street = creditor_address.street or ''
2542+ creditor_city = creditor_address.city or ''
2543+ creditor_province = creditor_address.province.code or ''
2544+ if not order_obj.config.company_id.partner_id.vat and not order_obj.config.company_id.partner_id.fiscalcode:
2545+ raise orm.except_orm('Error', _('No VAT or Fiscalcode specified for: ') + name_company)
2546+ array_testata = [
2547+ credit_sia,
2548+ credit_abi,
2549+ credit_cab,
2550+ credit_conto,
2551+ dataemissione,
2552+ nome_supporto,
2553+ 'E',
2554+ name_company,
2555+ creditor_address.street or '',
2556+ creditor_address.zip or '' + ' ' + creditor_city,
2557+ order_obj.config.company_id.partner_id.ref or '',
2558+ order_obj.config.company_id.partner_id.vat and order_obj.config.company_id.partner_id.vat[2:] or order_obj.config.company_id.partner_id.fiscalcode,
2559+ ]
2560+ arrayRiba = []
2561+ for line in order_obj.line_ids:
2562+ debit_bank = line.bank_id
2563+ debitor_address = line.partner_id
2564+ debitor_street = debitor_address.street or ''
2565+ debitor_zip = debitor_address.zip or ''
2566+ if not debit_bank.iban:
2567+ raise orm.except_orm('Error', _('No IBAN specified for ') + line.partner_id.name)
2568+ debit_abi = debit_bank.iban[5:10]
2569+ debit_cab = debit_bank.iban[10:15]
2570+ debitor_city = debitor_address.city and debitor_address.city.ljust(23)[0:23] or ''
2571+ debitor_province = debitor_address.province.code or ''
2572+ if not line.due_date: # ??? VERIFICARE
2573+ due_date = '000000'
2574+ else:
2575+ due_date = datetime.datetime.strptime(line.due_date[:10], '%Y-%m-%d').strftime("%d%m%y")
2576+
2577+ if not line.partner_id.vat and not line.partner_id.fiscalcode:
2578+ raise orm.except_orm('Error', _('No VAT or Fiscal code specified for ') + line.partner_id.name)
2579+ if not (debit_bank.bank and debit_bank.bank.name or debit_bank.bank_name):
2580+ raise orm.except_orm('Error', _('No debit_bank specified for ') + line.partner_id.name)
2581+ Riba = [
2582+ line.sequence,
2583+ due_date,
2584+ line.amount,
2585+ line.partner_id.name,
2586+ line.partner_id.vat and line.partner_id.vat[2:] or line.partner_id.fiscalcode,
2587+ debitor_street,
2588+ debitor_zip,
2589+ debitor_city,
2590+ debitor_province,
2591+ debit_abi,
2592+ debit_cab,
2593+ debit_bank.bank and debit_bank.bank.name or debit_bank.bank_name,
2594+ line.partner_id.ref or '',
2595+ #line.move_line_id.name,
2596+ line.invoice_number,
2597+ #datetime.datetime.strptime(line.distinta_id.date_created, '%Y-%m-%d').strftime("%d/%m/%Y"),
2598+ line.invoice_date,
2599+ ]
2600+ arrayRiba.append(Riba)
2601+
2602+ out=base64.encodestring(self._creaFile(array_testata, arrayRiba).encode("utf8"))
2603+ self.write(cr, uid, ids, {'state':'get', 'riba_.txt':out}, context=context)
2604+
2605+ model_data_obj = self.pool.get('ir.model.data')
2606+ view_rec = model_data_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'wizard_riba_file_export')
2607+ view_id = view_rec and view_rec[1] or False
2608+
2609+ return {
2610+ 'view_type': 'form',
2611+ 'view_id' : [view_id],
2612+ 'view_mode': 'form',
2613+ 'res_model': 'riba.file.export',
2614+ 'res_id': ids[0],
2615+ 'type': 'ir.actions.act_window',
2616+ 'target': 'new',
2617+ 'context': context,
2618+ }
2619+
2620+ _name = "riba.file.export"
2621+
2622+ _columns = {
2623+ 'state': fields.selection( ( ('choose','choose'), # choose accounts
2624+ ('get','get'), # get the file
2625+ ) ),
2626+ 'riba_.txt': fields.binary('File', readonly=True),
2627+ }
2628+ _defaults = {
2629+ 'state': lambda *a: 'choose',
2630+ }
2631+
2632+
2633
2634=== added file 'l10n_it_ricevute_bancarie/wizard/riba_file_export.xml'
2635--- l10n_it_ricevute_bancarie/wizard/riba_file_export.xml 1970-01-01 00:00:00 +0000
2636+++ l10n_it_ricevute_bancarie/wizard/riba_file_export.xml 2014-02-20 16:47:57 +0000
2637@@ -0,0 +1,32 @@
2638+<?xml version="1.0" encoding="utf-8"?>
2639+<openerp>
2640+ <data>
2641+
2642+ <record id="wizard_riba_file_export" model="ir.ui.view">
2643+ <field name="name">Export Ri.Ba.</field>
2644+ <field name="model">riba.file.export</field>
2645+ <field name="arch" type="xml">
2646+ <form string="Export Ri.Ba. file">
2647+ <group col="4">
2648+ <group colspan="4" >
2649+ <button icon="gtk-cancel" special="cancel" string="Cancel"/>
2650+ <button icon="gtk-ok" name="act_getfile" string="Export" type="object"/>
2651+ </group>
2652+ <group colspan="4">
2653+ <field name="riba_.txt" readonly="1"/>
2654+ </group>
2655+ </group>
2656+ </form>
2657+ </field>
2658+ </record>
2659+
2660+ <act_window name="Export Ri.Ba."
2661+ res_model="riba.file.export"
2662+ src_model="riba.distinta"
2663+ view_mode="form"
2664+ target="new"
2665+ key2="client_action_multi"
2666+ id="action_wizard_riba_file_export"
2667+ view_id="wizard_riba_file_export"/>
2668+ </data>
2669+</openerp>
2670
2671=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py'
2672--- l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py 1970-01-01 00:00:00 +0000
2673+++ l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py 2014-02-20 16:47:57 +0000
2674@@ -0,0 +1,139 @@
2675+# -*- coding: utf-8 -*-
2676+##############################################################################
2677+#
2678+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
2679+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
2680+# Copyright (C) 2012 Associazione OpenERP Italia
2681+# (<http://www.openerp-italia.org>).
2682+#
2683+# This program is free software: you can redistribute it and/or modify
2684+# it under the terms of the GNU Affero General Public License as published
2685+# by the Free Software Foundation, either version 3 of the License, or
2686+# (at your option) any later version.
2687+#
2688+# This program is distributed in the hope that it will be useful,
2689+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2690+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2691+# GNU Affero General Public License for more details.
2692+#
2693+# You should have received a copy of the GNU Affero General Public License
2694+# along with this program. If not, see <http://www.gnu.org/licenses/>.
2695+#
2696+##############################################################################
2697+
2698+from openerp.osv import fields,orm
2699+from tools.translate import _
2700+import netsvc
2701+
2702+class riba_accreditation(orm.TransientModel):
2703+
2704+ def _get_accreditation_journal_id(self, cr, uid, context=None):
2705+ return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_journal_id', context=context)
2706+
2707+ def _get_accreditation_account_id(self, cr, uid, context=None):
2708+ return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_account_id', context=context)
2709+
2710+ def _get_bank_account_id(self, cr, uid, context=None):
2711+ return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_account_id', context=context)
2712+
2713+ def _get_bank_expense_account_id(self, cr, uid, context=None):
2714+ return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_expense_account_id', context=context)
2715+
2716+ def _get_accreditation_amount(self, cr, uid, context=None):
2717+ if context is None:
2718+ context = {}
2719+ if not context.get('active_id', False):
2720+ return False
2721+ distinta_pool = self.pool.get('riba.distinta')
2722+ distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
2723+ amount = 0.0
2724+ for line in distinta.line_ids:
2725+ amount += line.amount
2726+ return amount
2727+
2728+ _name = "riba.accreditation"
2729+ _description = "Bank accreditation"
2730+ _columns = {
2731+ 'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal",
2732+ domain=[('type', '=', 'bank')]),
2733+ 'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
2734+ 'accreditation_amount': fields.float('Credit amount'),
2735+ 'bank_account_id' : fields.many2one('account.account', "Bank account",
2736+ domain=[('type', '=', 'liquidity')]),
2737+ 'bank_amount': fields.float('Versed amount'),
2738+ 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
2739+ 'expense_amount': fields.float('Expenses amount'),
2740+ }
2741+
2742+ _defaults = {
2743+ 'accreditation_journal_id': _get_accreditation_journal_id,
2744+ 'accreditation_account_id': _get_accreditation_account_id,
2745+ 'bank_account_id': _get_bank_account_id,
2746+ 'bank_expense_account_id': _get_bank_expense_account_id,
2747+ 'accreditation_amount': _get_accreditation_amount,
2748+ }
2749+
2750+ def skip(self, cr, uid, ids, context=None):
2751+ if context is None:
2752+ context = {}
2753+ wf_service = netsvc.LocalService("workflow")
2754+ active_id = context and context.get('active_id', False) or False
2755+ if not active_id:
2756+ raise orm.except_orm(_('Error'), _('No active ID found'))
2757+ wf_service.trg_validate(
2758+ uid, 'riba.distinta', active_id, 'accredited', cr)
2759+ return {'type': 'ir.actions.act_window_close'}
2760+
2761+ def create_move(self, cr, uid, ids, context=None):
2762+ if context is None:
2763+ context = {}
2764+ wf_service = netsvc.LocalService("workflow")
2765+ active_id = context and context.get('active_id', False) or False
2766+ if not active_id:
2767+ raise orm.except_orm(_('Error'), _('No active ID found'))
2768+ move_pool = self.pool.get('account.move')
2769+ move_line_pool = self.pool.get('account.move.line')
2770+ distinta_pool = self.pool.get('riba.distinta')
2771+ distinta = distinta_pool.browse(cr, uid, active_id, context=context)
2772+ wizard = self.browse(cr,uid,ids)[0]
2773+ if not wizard.accreditation_journal_id or not wizard.accreditation_account_id or not wizard.bank_account_id or not wizard.bank_expense_account_id:
2774+ raise orm.except_orm(_('Error'), _('Every account is mandatory'))
2775+ move_vals = {
2776+ 'ref': _('Accreditation Ri.Ba. %s') % distinta.name,
2777+ 'journal_id': wizard.accreditation_journal_id.id,
2778+ 'line_id': [
2779+ (0,0, {
2780+ 'name': _('Credit'),
2781+ 'account_id': wizard.accreditation_account_id.id,
2782+ 'credit': wizard.accreditation_amount,
2783+ 'debit': 0.0,
2784+ }),
2785+ (0,0, {
2786+ 'name': _('Bank'),
2787+ 'account_id': wizard.bank_account_id.id,
2788+ 'debit': wizard.bank_amount,
2789+ 'credit': 0.0,
2790+ }),
2791+ (0,0, {
2792+ 'name': _('Bank'),
2793+ 'account_id': wizard.bank_expense_account_id.id,
2794+ 'debit': wizard.expense_amount,
2795+ 'credit': 0.0,
2796+ }),
2797+ ]
2798+ }
2799+ move_id = move_pool.create(cr, uid, move_vals, context=context)
2800+ distinta.write({'accreditation_move_id': move_id})
2801+ wf_service.trg_validate(
2802+ uid, 'riba.distinta', active_id, 'accredited', cr)
2803+ return {
2804+ 'name': _('Accreditation Entry'),
2805+ 'view_type': 'form',
2806+ 'view_mode': 'form',
2807+ 'res_model': 'account.move',
2808+ 'type': 'ir.actions.act_window',
2809+ 'target': 'current',
2810+ 'res_id': move_id or False,
2811+ }
2812+
2813+
2814
2815=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml'
2816--- l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml 1970-01-01 00:00:00 +0000
2817+++ l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml 2014-02-20 16:47:57 +0000
2818@@ -0,0 +1,41 @@
2819+<?xml version="1.0" encoding="utf-8"?>
2820+
2821+<openerp>
2822+ <data>
2823+
2824+ <record id="riba_accreditation" model="ir.ui.view">
2825+ <field name="name">riba.accreditation.wizard</field>
2826+ <field name="model">riba.accreditation</field>
2827+ <field name="arch" type="xml">
2828+ <form string="Ri.Ba. Accreditation">
2829+ <separator string="This wizard generates the journal entry related to accreditation received from the bank" colspan="4"/>
2830+ <field name="accreditation_journal_id" />
2831+ <newline/>
2832+ <field name="accreditation_account_id" />
2833+ <field name="accreditation_amount" />
2834+ <field name="bank_account_id" />
2835+ <field name="bank_amount" />
2836+ <field name="bank_expense_account_id" />
2837+ <field name="expense_amount" />
2838+ <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
2839+ <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
2840+ <separator string="You can also skip this step and set the distinta status to 'accredited' anyway" colspan="4"/>
2841+ <button string="Skip and confirm accreditation" name="skip" type="object" icon="gtk-apply" colspan="4"/>
2842+ </form>
2843+ </field>
2844+ </record>
2845+
2846+ <record id="riba_accreditation_action" model="ir.actions.act_window">
2847+ <field name="name">Ri.Ba. Accreditation</field>
2848+ <field name="type">ir.actions.act_window</field>
2849+ <field name="res_model">riba.accreditation</field>
2850+ <field name="src_model">riba.distinta</field>
2851+ <field name="view_type">form</field>
2852+ <field name="view_mode">form</field>
2853+ <field name="target">new</field>
2854+ <field name="view_id" ref="riba_accreditation"/>
2855+
2856+ </record>
2857+
2858+ </data>
2859+</openerp>
2860
2861=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py'
2862--- l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py 1970-01-01 00:00:00 +0000
2863+++ l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py 2014-02-20 16:47:57 +0000
2864@@ -0,0 +1,133 @@
2865+# -*- coding: utf-8 -*-
2866+##############################################################################
2867+#
2868+# Copyright (C) 2012 Andrea Cometa.
2869+# Email: info@andreacometa.it
2870+# Web site: http://www.andreacometa.it
2871+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
2872+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
2873+# Copyright (C) 2012 Associazione OpenERP Italia
2874+# (<http://www.openerp-italia.org>).
2875+#
2876+# This program is free software: you can redistribute it and/or modify
2877+# it under the terms of the GNU Affero General Public License as published
2878+# by the Free Software Foundation, either version 3 of the License, or
2879+# (at your option) any later version.
2880+#
2881+# This program is distributed in the hope that it will be useful,
2882+# but WITHOUT ANY WARRANTY; without even the implied warranty of
2883+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2884+# GNU Affero General Public License for more details.
2885+#
2886+# You should have received a copy of the GNU Affero General Public License
2887+# along with this program. If not, see <http://www.gnu.org/licenses/>.
2888+#
2889+##############################################################################
2890+
2891+from openerp.osv import fields,orm
2892+
2893+# -------------------------------------------------------
2894+# EMISSIONE RIBA
2895+# -------------------------------------------------------
2896+class emissione_riba(orm.TransientModel):
2897+ _name = "riba.emissione"
2898+ _description = "Emissione Ricevute Bancarie"
2899+ _columns = {
2900+
2901+ 'configurazione' : fields.many2one('riba.configurazione', 'Configurazione', required=True),
2902+ }
2903+
2904+ def crea_distinta(self, cr, uid, ids, context=None):
2905+ if context is None:
2906+ context = {}
2907+ def create_rdl(conta, bank_id, rd_id, date_maturity, partner_id, acceptance_account_id):
2908+ rdl = {
2909+ 'sequence' : conta,
2910+ 'bank_id' : bank_id,
2911+ 'distinta_id': rd_id,
2912+ 'due_date' : date_maturity,
2913+ 'partner_id' : partner_id,
2914+ 'state': 'draft',
2915+ 'acceptance_account_id': acceptance_account_id,
2916+ }
2917+ return riba_distinta_line.create(cr, uid, rdl, context=context)
2918+
2919+ """
2920+ Qui creiamo la distinta
2921+ """
2922+ wizard_obj = self.browse(cr,uid,ids)[0]
2923+ active_ids = context and context.get('active_ids', [])
2924+ riba_distinta = self.pool.get('riba.distinta')
2925+ riba_distinta_line = self.pool.get('riba.distinta.line')
2926+ riba_distinta_move_line = self.pool.get('riba.distinta.move.line')
2927+ move_line_obj = self.pool.get('account.move.line')
2928+
2929+ # create distinta
2930+ rd = {
2931+ 'name': self.pool.get('ir.sequence').get(cr, uid, 'seq.riba.distinta'),
2932+ 'config': wizard_obj.configurazione.id,
2933+ 'user_id': uid,
2934+ 'date_created': fields.date.context_today(self, cr, uid, context),
2935+ }
2936+ rd_id = riba_distinta.create(cr, uid, rd)
2937+
2938+ # group by partner and due date
2939+ grouped_lines = {}
2940+ move_line_ids = move_line_obj.search(cr, uid, [('id', 'in', active_ids)], context=context)
2941+ for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
2942+ if move_line.partner_id.group_riba:
2943+ if not grouped_lines.get(
2944+ (move_line.partner_id.id, move_line.date_maturity), False):
2945+ grouped_lines[(move_line.partner_id.id, move_line.date_maturity)] = []
2946+ grouped_lines[(move_line.partner_id.id, move_line.date_maturity)].append(
2947+ move_line)
2948+
2949+ # create lines
2950+ conta = 1
2951+
2952+ for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
2953+ if move_line.partner_id.bank_ids:
2954+ bank_id = move_line.partner_id.bank_ids[0]
2955+ else:
2956+ raise orm.except_orm('Attenzione!', 'Il cliente %s non ha la banca!!!' % move_line.partner_id.name)
2957+ if move_line.partner_id.group_riba:
2958+ for key in grouped_lines:
2959+ if key[0] == move_line.partner_id.id and key[1] == move_line.date_maturity:
2960+ 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)
2961+ total = 0.0
2962+ invoice_date_group = ''
2963+ for grouped_line in grouped_lines[key]:
2964+ riba_distinta_move_line.create(cr, uid, {
2965+ 'riba_line_id': rdl_id,
2966+ 'amount': grouped_line.amount_residual,
2967+ 'move_line_id': grouped_line.id,
2968+ }, context=context)
2969+ del grouped_lines[key]
2970+ break
2971+ else:
2972+ 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)
2973+ riba_distinta_move_line.create(cr, uid, {
2974+ 'riba_line_id': rdl_id,
2975+ 'amount': move_line.amount_residual,
2976+ 'move_line_id': move_line.id,
2977+ }, context=context)
2978+
2979+ conta+=1
2980+
2981+ # ----- show distinta form
2982+ mod_obj = self.pool.get('ir.model.data')
2983+ res = mod_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'view_distinta_riba_form')
2984+ res_id = res and res[1] or False,
2985+ return {
2986+ 'name': 'Distinta',
2987+ 'view_type': 'form',
2988+ 'view_mode': 'form',
2989+ 'view_id': res_id,
2990+ 'res_model': 'riba.distinta',
2991+ 'type': 'ir.actions.act_window',
2992+ #'nodestroy': True,
2993+ 'target': 'current',
2994+ 'res_id': rd_id or False,
2995+ }
2996+
2997+emissione_riba()
2998
2999=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml'
3000--- l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml 1970-01-01 00:00:00 +0000
3001+++ l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml 2014-02-20 16:47:57 +0000
3002@@ -0,0 +1,50 @@
3003+<?xml version="1.0" encoding="utf-8"?>
3004+
3005+<openerp>
3006+ <data>
3007+
3008+ <!-- ====================================================== -->
3009+ <!-- WIZARD EMISSIONE RIBA -->
3010+ <!-- ====================================================== -->
3011+ <record id="emissione_riba_view" model="ir.ui.view">
3012+ <field name="name">riba.emissione.wizard</field>
3013+ <field name="model">riba.emissione</field>
3014+ <field name="arch" type="xml">
3015+ <form string="Issue Ri.Ba.">
3016+ <separator string="This wizard generates the Ri.Ba. list, do you confirm?" colspan="4"/>
3017+ <field name="configurazione"/>
3018+ <group col="4" colspan="4">
3019+ <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
3020+ <button string="Create" name="crea_distinta" type="object" icon="gtk-ok" colspan="2"/>
3021+ </group>
3022+ </form>
3023+ </field>
3024+ </record>
3025+
3026+ <!-- ====================================================== -->
3027+ <!-- ACTION EMISSIONE RIBA -->
3028+ <!-- ====================================================== -->
3029+ <record id="emissione_riba_action" model="ir.actions.act_window">
3030+ <field name="name">Issue Ri.Ba.</field>
3031+ <field name="type">ir.actions.act_window</field>
3032+ <field name="res_model">riba.emissione</field>
3033+ <field name="src_model">account.move.line</field>
3034+ <field name="view_type">form</field>
3035+ <field name="view_mode">form</field>
3036+ <field name="target">new</field>
3037+ <field name="view_id" ref="emissione_riba_view"/>
3038+
3039+ </record>
3040+
3041+ <record model="ir.values" id="emissione_riba_client_action">
3042+ <!--field name="model_id" ref="sale.model_sale_order" /
3043+ <field name="object" eval="1" /> -->
3044+ <field name="name">Issue Ri.Ba.</field>
3045+ <field name="key2">client_action_multi</field>
3046+ <field name="value" eval="'ir.actions.act_window,' + str(ref('emissione_riba_action'))" />
3047+ <field name="key">action</field>
3048+ <field name="model">account.move.line</field>
3049+ </record>
3050+
3051+ </data>
3052+</openerp>
3053
3054=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py'
3055--- l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py 1970-01-01 00:00:00 +0000
3056+++ l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py 2014-02-20 16:47:57 +0000
3057@@ -0,0 +1,177 @@
3058+# -*- coding: utf-8 -*-
3059+##############################################################################
3060+#
3061+# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
3062+# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
3063+# Copyright (C) 2012 Associazione OpenERP Italia
3064+# (<http://www.openerp-italia.org>).
3065+#
3066+# This program is free software: you can redistribute it and/or modify
3067+# it under the terms of the GNU Affero General Public License as published
3068+# by the Free Software Foundation, either version 3 of the License, or
3069+# (at your option) any later version.
3070+#
3071+# This program is distributed in the hope that it will be useful,
3072+# but WITHOUT ANY WARRANTY; without even the implied warranty of
3073+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3074+# GNU Affero General Public License for more details.
3075+#
3076+# You should have received a copy of the GNU Affero General Public License
3077+# along with this program. If not, see <http://www.gnu.org/licenses/>.
3078+#
3079+##############################################################################
3080+
3081+from openerp.osv import fields,orm
3082+from tools.translate import _
3083+import netsvc
3084+
3085+class riba_unsolved(orm.TransientModel):
3086+
3087+ def _get_unsolved_journal_id(self, cr, uid, context=None):
3088+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'unsolved_journal_id', context=context)
3089+
3090+ def _get_effects_account_id(self, cr, uid, context=None):
3091+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'acceptance_account_id', context=context)
3092+
3093+ def _get_effects_amount(self, cr, uid, context=None):
3094+ if context is None:
3095+ context = {}
3096+ if not context.get('active_id', False):
3097+ return False
3098+ return self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context).amount
3099+
3100+ def _get_riba_bank_account_id(self, cr, uid, context=None):
3101+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'accreditation_account_id', context=context)
3102+
3103+ def _get_overdue_effects_account_id(self, cr, uid, context=None):
3104+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'overdue_effects_account_id', context=context)
3105+
3106+ def _get_bank_account_id(self, cr, uid, context=None):
3107+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'bank_account_id', context=context)
3108+
3109+ def _get_bank_expense_account_id(self, cr, uid, context=None):
3110+ return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'protest_charge_account_id', context=context)
3111+
3112+
3113+ _name = "riba.unsolved"
3114+ _columns = {
3115+ 'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal",
3116+ domain=[('type', '=', 'bank')]),
3117+ 'effects_account_id' : fields.many2one('account.account', "Effects account",
3118+ domain=[('type', '=', 'receivable')]),
3119+ 'effects_amount': fields.float('Effects amount'),
3120+ 'riba_bank_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
3121+ 'riba_bank_amount': fields.float('Ri.Ba. bank amount'),
3122+ 'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account",
3123+ domain=[('type', '=', 'receivable')]),
3124+ 'overdue_effects_amount': fields.float('Overdue Effects amount'),
3125+ 'bank_account_id' : fields.many2one('account.account', "Bank account",
3126+ domain=[('type', '=', 'liquidity')]),
3127+ 'bank_amount': fields.float('Taken amount'),
3128+ 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
3129+ 'expense_amount': fields.float('Expenses amount'),
3130+ }
3131+
3132+ _defaults = {
3133+ 'unsolved_journal_id': _get_unsolved_journal_id,
3134+ 'effects_account_id': _get_effects_account_id,
3135+ 'effects_amount': _get_effects_amount,
3136+ 'riba_bank_account_id': _get_riba_bank_account_id,
3137+ 'riba_bank_amount': _get_effects_amount,
3138+ 'overdue_effects_account_id': _get_overdue_effects_account_id,
3139+ 'overdue_effects_amount': _get_effects_amount,
3140+ 'bank_account_id': _get_bank_account_id,
3141+ 'bank_expense_account_id': _get_bank_expense_account_id,
3142+ }
3143+
3144+ def skip(self, cr, uid, ids, context=None):
3145+ if context is None:
3146+ context = {}
3147+ wf_service = netsvc.LocalService("workflow")
3148+ active_id = context and context.get('active_id', False) or False
3149+ if not active_id:
3150+ raise orm.except_orm(_('Error'), _('No active ID found'))
3151+ line_pool = self.pool.get('riba.distinta.line')
3152+ line_pool.write(cr, uid, active_id,
3153+ {'state': 'unsolved'}, context=context)
3154+ wf_service.trg_validate(
3155+ uid, 'riba.distinta', line_pool.browse(cr, uid, active_id).distinta_id.id, 'unsolved', cr)
3156+ return {'type': 'ir.actions.act_window_close'}
3157+
3158+ def create_move(self, cr, uid, ids, context=None):
3159+ if context is None:
3160+ context = {}
3161+ wf_service = netsvc.LocalService("workflow")
3162+ active_id = context and context.get('active_id', False) or False
3163+ if not active_id:
3164+ raise orm.except_orm(_('Error'), _('No active ID found'))
3165+ move_pool = self.pool.get('account.move')
3166+ invoice_pool = self.pool.get('account.invoice')
3167+ move_line_pool = self.pool.get('account.move.line')
3168+ distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, active_id, context=context)
3169+ wizard = self.browse(cr,uid,ids)[0]
3170+ if not wizard.unsolved_journal_id or not wizard.effects_account_id or not wizard.riba_bank_account_id or not wizard.overdue_effects_account_id or not wizard.bank_account_id or not wizard.bank_expense_account_id:
3171+ raise orm.except_orm(_('Error'), _('Every account is mandatory'))
3172+ move_vals = {
3173+ 'ref': _('Unsolved Ri.Ba. %s - line %s') % (distinta_line.distinta_id.name, distinta_line.sequence),
3174+ 'journal_id': wizard.unsolved_journal_id.id,
3175+ 'line_id': [
3176+ (0,0, {
3177+ 'name': _('Effects'),
3178+ 'account_id': wizard.effects_account_id.id,
3179+ 'credit': wizard.effects_amount,
3180+ 'debit': 0.0,
3181+ }),
3182+ (0,0, {
3183+ 'name': _('Ri.Ba. Bank'),
3184+ 'account_id': wizard.riba_bank_account_id.id,
3185+ 'debit': wizard.riba_bank_amount,
3186+ 'credit': 0.0,
3187+ }),
3188+ (0,0, {
3189+ 'name': _('Overdue Effects'),
3190+ 'account_id': wizard.overdue_effects_account_id.id,
3191+ 'debit': wizard.overdue_effects_amount,
3192+ 'credit': 0.0,
3193+ 'partner_id': distinta_line.partner_id.id,
3194+ 'date_maturity': distinta_line.due_date,
3195+ }),
3196+ (0,0, {
3197+ 'name': _('Bank'),
3198+ 'account_id': wizard.bank_account_id.id,
3199+ 'credit': wizard.bank_amount,
3200+ 'debit': 0.0,
3201+ }),
3202+ (0,0, {
3203+ 'name': _('Expenses'),
3204+ 'account_id': wizard.bank_expense_account_id.id,
3205+ 'debit': wizard.expense_amount,
3206+ 'credit': 0.0,
3207+ }),
3208+ ]
3209+ }
3210+ move_id = move_pool.create(cr, uid, move_vals, context=context)
3211+
3212+ for move_line in move_pool.browse(cr, uid, move_id, context=context).line_id:
3213+ if move_line.account_id.id == wizard.overdue_effects_account_id.id:
3214+ for riba_move_line in distinta_line.move_line_ids:
3215+ invoice_pool.write(cr, uid, riba_move_line.move_line_id.invoice.id, {
3216+ 'unsolved_move_line_ids': [(4, move_line.id)],
3217+ }, context=context)
3218+
3219+ distinta_line.write({
3220+ 'unsolved_move_id': move_id,
3221+ 'state': 'unsolved',
3222+ })
3223+ wf_service.trg_validate(
3224+ uid, 'riba.distinta', distinta_line.distinta_id.id, 'unsolved', cr)
3225+ return {
3226+ 'name': _('Unsolved Entry'),
3227+ 'view_type': 'form',
3228+ 'view_mode': 'form',
3229+ 'res_model': 'account.move',
3230+ 'type': 'ir.actions.act_window',
3231+ 'target': 'current',
3232+ 'res_id': move_id or False,
3233+ }
3234+
3235
3236=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml'
3237--- l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml 1970-01-01 00:00:00 +0000
3238+++ l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml 2014-02-20 16:47:57 +0000
3239@@ -0,0 +1,45 @@
3240+<?xml version="1.0" encoding="utf-8"?>
3241+
3242+<openerp>
3243+ <data>
3244+
3245+ <record id="riba_unsolved" model="ir.ui.view">
3246+ <field name="name">riba.unsolved.wizard</field>
3247+ <field name="model">riba.unsolved</field>
3248+ <field name="arch" type="xml">
3249+ <form string="Ri.Ba. Unsolved">
3250+ <separator string="This wizard generates the journal entry related to an unsolved payment" colspan="4"/>
3251+ <field name="unsolved_journal_id" />
3252+ <newline/>
3253+ <field name="effects_account_id" />
3254+ <field name="effects_amount" />
3255+ <field name="riba_bank_account_id" />
3256+ <field name="riba_bank_amount" />
3257+ <field name="overdue_effects_account_id" />
3258+ <field name="overdue_effects_amount" />
3259+ <field name="bank_account_id" />
3260+ <field name="bank_amount" />
3261+ <field name="bank_expense_account_id" />
3262+ <field name="expense_amount" />
3263+ <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
3264+ <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
3265+ <separator string="You can also skip this step and set the line status to 'unsolved' anyway" colspan="4"/>
3266+ <button string="Skip and confirm the unsolved state" name="skip" type="object" icon="gtk-apply" colspan="4"/>
3267+ </form>
3268+ </field>
3269+ </record>
3270+
3271+ <record id="riba_unsolved_action" model="ir.actions.act_window">
3272+ <field name="name">Ri.Ba. Unsolved</field>
3273+ <field name="type">ir.actions.act_window</field>
3274+ <field name="res_model">riba.unsolved</field>
3275+ <field name="src_model">riba.distinta.line</field>
3276+ <field name="view_type">form</field>
3277+ <field name="view_mode">form</field>
3278+ <field name="target">new</field>
3279+ <field name="view_id" ref="riba_unsolved"/>
3280+
3281+ </record>
3282+
3283+ </data>
3284+</openerp>

Subscribers

People subscribed via source and target branches