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
=== added directory 'l10n_it_ricevute_bancarie'
=== added file 'l10n_it_ricevute_bancarie/AUTHORS.txt'
--- l10n_it_ricevute_bancarie/AUTHORS.txt 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/AUTHORS.txt 2014-02-20 16:47:57 +0000
@@ -0,0 +1,3 @@
1Lorenzo Battistini <lorenzo.battistini@agilebg.com>
2Andrea Cometa <info@andreacometa.it>
3Davide Corio <info@davidecorio.com>
04
=== added file 'l10n_it_ricevute_bancarie/__init__.py'
--- l10n_it_ricevute_bancarie/__init__.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/__init__.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,32 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27import configurazione
28import partner
29import riba
30import account
31import wizard
32
033
=== added file 'l10n_it_ricevute_bancarie/__openerp__.py'
--- l10n_it_ricevute_bancarie/__openerp__.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/__openerp__.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,71 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27{
28 "name": "Ricevute Bancarie",
29 "version": "1.3",
30 "author": "OpenERP Italian Community",
31 "category": "Accounting & Finance",
32 "website": "http://www.openerp-italia.org",
33 "description": """
34Gestione delle Ricevute Bancarie
35--------------------------------
36Nella 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.
37
38E' 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.
39La 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.
40
41Per utilizzare il meccanismo delle Ri.Ba. è necessario configurare un termine di pagamento di tipo 'Ri.Ba.'.
42
43Per emettere una distinta bisogna andare su Ri.Ba. -> emetti Ri.Ba. e selezionare i pagamenti per i quali emettere la distinta.
44Se 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.
45
46I possibili stati della distinta sono: bozza, accettata, accreditata, pagata, insoluta, annullata.
47Ad 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.
48
49Qui 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'.
50 """,
51 'images': [],
52 'depends': ['account','account_voucher', 'l10n_it_fiscalcode', 'account_due_list'],
53 'init_xml': [],
54 'data': [
55 "partner/partner_view.xml",
56 "configurazione_view.xml",
57 "riba_sequence.xml",
58 "wizard/wizard_accreditation.xml",
59 "wizard/wizard_unsolved.xml",
60 "riba_view.xml",
61 "account/account_view.xml",
62 "wizard/wizard_emissione_riba.xml",
63 "wizard/riba_file_export.xml",
64 "riba_workflow.xml",
65 "security/ir.model.access.csv",
66 ],
67 'demo_xml': [],
68 'test': [],
69 'installable': True,
70 'active': False,
71}
072
=== added directory 'l10n_it_ricevute_bancarie/account'
=== added file 'l10n_it_ricevute_bancarie/account/__init__.py'
--- l10n_it_ricevute_bancarie/account/__init__.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/account/__init__.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,24 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU Affero General Public License as published
10# by the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU Affero General Public License for more details.
17#
18# You should have received a copy of the GNU Affero General Public License
19# along with this program. If not, see <http://www.gnu.org/licenses/>.
20#
21##############################################################################
22
23import account
24
025
=== added file 'l10n_it_ricevute_bancarie/account/account.py'
--- l10n_it_ricevute_bancarie/account/account.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/account/account.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,99 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27from openerp.osv import fields, orm
28
29class account_payment_term(orm.Model):
30 # flag riba utile a distinguere la modalità di pagamento
31 _inherit = 'account.payment.term'
32
33 _columns = {
34 'riba' : fields.boolean('Riba'),
35 }
36 _defaults = {
37 'riba': False,
38 }
39
40
41class res_bank_add_field(orm.Model):
42 _inherit = 'res.bank'
43 _columns = {
44 'banca_estera' : fields.boolean('Banca Estera'),
45 }
46
47
48class res_partner_bank_add(orm.Model):
49 _inherit = 'res.partner.bank'
50 _columns = {
51 'codice_sia' : fields.char('Codice SIA', size=5, help="Identification Code of the Company in the System Interbank")
52 }
53
54
55# se distinta_line_ids == None allora non è stata emessa
56class account_move_line(orm.Model):
57 _inherit = "account.move.line"
58
59 _columns = {
60 'distinta_line_ids' : fields.one2many('riba.distinta.move.line', 'move_line_id', "Dettaglio riba"),
61 'riba': fields.related('invoice', 'payment_term', 'riba',
62 type='boolean', string='RiBa', store=False),
63 'unsolved_invoice_ids': fields.many2many('account.invoice', 'invoice_unsolved_line_rel', 'line_id', 'invoice_id', 'Unsolved Invoices'),
64 'iban' : fields.related('partner_id', 'bank_ids', 'iban', type='char', string='IBAN', store=False),
65 }
66 _defaults = {
67 'distinta_line_ids' : None,
68 }
69
70 def fields_view_get(
71 self, cr, uid, view_id=None, view_type='form',
72 context={}, toolbar=False, submenu=False
73 ):
74 # Special view for account.move.line object
75 # (for ex. tree view contains user defined fields)
76 result = super(account_move_line, self).fields_view_get(
77 cr, uid, view_id, view_type, context, toolbar=toolbar,
78 submenu=submenu)
79 try:
80 view_payments_tree_id = self.pool.get(
81 'ir.model.data').get_object_reference(
82 cr, uid, 'l10n_it_ricevute_bancarie',
83 'view_riba_da_emettere_tree')
84 except ValueError:
85 return result
86 if view_id == view_payments_tree_id[1]:
87 # Use RiBa list - grazie a eLBati @ account_due_list
88 return super(orm.Model, self).fields_view_get(
89 cr, uid, view_id, view_type, context, toolbar=toolbar,
90 submenu=submenu)
91 else:
92 return result
93
94
95class account_invoice(orm.Model):
96 _inherit = "account.invoice"
97 _columns = {
98 'unsolved_move_line_ids': fields.many2many('account.move.line', 'invoice_unsolved_line_rel', 'invoice_id', 'line_id', 'Unsolved journal items'),
99 }
0100
=== added file 'l10n_it_ricevute_bancarie/account/account_view.xml'
--- l10n_it_ricevute_bancarie/account/account_view.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/account/account_view.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,149 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data>
4
5 <!-- ====================================================== -->
6 <!-- CAMPI AGGIUNTIVI -->
7 <!-- ====================================================== -->
8 <record id="view_riba_add_text_field" model="ir.ui.view">
9 <field name="name">account.riba.add.text.field</field>
10 <field name="model">account.payment.term</field>
11 <field name="inherit_id" ref="account.view_payment_term_form"/>
12 <field name="arch" type="xml">
13 <field name="active" position="after">
14 <field name="riba"/>
15 </field>
16 </field>
17 </record>
18 <record id="view_res_bank_add_text_field" model="ir.ui.view">
19 <field name="name">res.bank.add.text.field</field>
20 <field name="model">res.bank</field>
21 <field name="inherit_id" ref="base.view_res_bank_form"/>
22 <field name="arch" type="xml">
23 <field name="bic" position="after">
24 <field name="banca_estera"/>
25 </field>
26 </field>
27 </record>
28 <record id="view_partner_bank_sia_form" model="ir.ui.view">
29 <field name="name">res.partner.bank.form.sia.inherit</field>
30 <field name="model">res.partner.bank</field>
31 <field name="inherit_id" ref="base.view_partner_bank_form"/>
32 <field name="arch" type="xml">
33 <field name="acc_number" position="after">
34 <field name="codice_sia"/>
35 </field>
36 </field>
37 </record>
38
39 <!-- Riba da emettere Tree View -->
40
41 <record model="ir.ui.view" id="view_riba_da_emettere_tree">
42 <field name="name">Issue Ri.Ba.</field>
43 <field name="model">account.move.line</field>
44 <field name="arch" type="xml">
45 <tree string="Issue Ri.Ba." colors="red:date_maturity&lt;current_date">
46 <field name="stored_invoice_id" readonly="1"/>
47 <field name="invoice_date" readonly="1"/>
48 <field name="invoice_origin" readonly="1"/>
49 <field name="partner_id" readonly="1"/>
50 <field name="iban" readonly="1"/>
51 <field name="partner_ref" readonly="1"/>
52 <field name="payment_term_id" readonly="1"/>
53 <field name="account_id" readonly="1"/>
54 <field name="debit" readonly="1" sum="Total Debit"/>
55 <field name="amount_residual" readonly="1" sum="Total Amount" />
56 <field name="date_maturity"/>
57 <field name="riba" />
58 <field name="distinta_line_ids" invisible="1" />
59 <field name="reconcile_id" invisible="1" />
60 </tree>
61 </field>
62 </record>
63
64 <!-- Riba da emettere Filtro -->
65
66 <record id="riba_filter" model="ir.ui.view">
67 <field name="name">Ri.Ba. filter</field>
68 <field name="model">account.move.line</field>
69 <field name="arch" type="xml">
70 <search string="Search Journal Items">
71 <filter icon="terp-go-today" string="To Issue"
72 domain="[('distinta_line_ids', '=', False)]" name="da_emettere"/>
73 <filter icon="terp-go-today" string="Issued"
74 domain="[('distinta_line_ids', '!=', False)]" name="emesse"/>
75 <field name="account_id"/>
76 <field name="partner_id"/>
77 <field name="invoice"/>
78 <field name="invoice_origin"/>
79 <field name="date_maturity"/>
80 <newline/>
81 <group expand="0" string="Group by..." colspan="11">
82 <filter string="Group by customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
83 <filter string="Group by invoice" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'stored_invoice_id'}"/>
84 </group>
85 </search>
86 </field>
87 </record>
88
89 <!-- Riba da emettere Action -->
90
91 <record model="ir.actions.act_window" id="action_riba_da_emettere">
92 <field name="name">Issue Ri.Ba.</field>
93 <field name="type">ir.actions.act_window</field>
94 <field name="res_model">account.move.line</field>
95 <field name="src_model">account.move.line</field>
96 <field name="view_type">form</field>
97 <field name="view_mode">tree,form</field>
98 <field name="view_id" ref="view_riba_da_emettere_tree" />
99 <field name="context">{'search_default_da_emettere':1}</field>
100 <field name="domain">['&amp;','|',('riba','=','True'),('unsolved_invoice_ids','!=',False),('account_id.type','=','receivable'), ('reconcile_id', '=', False)]</field>
101 <field name="search_view_id" ref="riba_filter"/>
102 </record>
103
104
105 <menuitem name="Issue Ri.Ba." parent="menu_riba"
106 id="menu_riba_da_emettere" action="action_riba_da_emettere" />
107
108 <!-- Invoice -->
109
110 <record id="invoice_form" model="ir.ui.view">
111 <field name="name">account.invoice.form</field>
112 <field name="model">account.invoice</field>
113 <field name="inherit_id" ref="account.invoice_form"></field>
114 <field name="arch" type="xml">
115 <field name="payment_ids" position="after">
116 <separator string="Unsolved Ri.Ba." colspan="4"/>
117 <field name="unsolved_move_line_ids" colspan="4" nolabel="1"/>
118 </field>
119 </field>
120 </record>
121
122 <record id="action_invoice_tree1" model="ir.actions.act_window">
123 <field name="name">Unsolved Invoices</field>
124 <field name="res_model">account.invoice</field>
125 <field name="view_type">form</field>
126 <field name="view_mode">tree,form,calendar,graph</field>
127 <field eval="False" name="view_id"/>
128 <field name="domain">[('type','=','out_invoice'), ('unsolved_move_line_ids', '!=', False)]</field>
129 <field name="context">{'default_type':'out_invoice', 'type':'out_invoice', 'journal_type': 'sale'}</field>
130 <field name="search_view_id" ref="account.view_account_invoice_filter"/>
131 </record>
132
133
134 <record id="action_invoice_tree1_view1" model="ir.actions.act_window.view">
135 <field eval="1" name="sequence"/>
136 <field name="view_mode">tree</field>
137 <field name="act_window_id" ref="action_invoice_tree1"/>
138 </record>
139
140 <record id="action_invoice_tree1_view2" model="ir.actions.act_window.view">
141 <field eval="2" name="sequence"/>
142 <field name="view_mode">form</field>
143 <field name="view_id" ref="account.invoice_form"/>
144 <field name="act_window_id" ref="action_invoice_tree1"/>
145 </record>
146 <menuitem name="Unsolved Invoices" parent="menu_riba"
147 id="menu_invoices" action="action_invoice_tree1" />
148 </data>
149</openerp>
0150
=== added file 'l10n_it_ricevute_bancarie/configurazione.py'
--- l10n_it_ricevute_bancarie/configurazione.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/configurazione.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,86 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27from openerp.osv import fields, orm
28
29class riba_configurazione(orm.Model):
30
31 _name = "riba.configurazione"
32 _description = "Parametri di configurazione per le Ricevute Bancarie"
33
34 _columns = {
35 'name' : fields.char("Descrizione", size=64, required=True),
36 'tipo' : fields.selection((('sbf', 'Salvo buon fine'),('incasso', 'Al dopo incasso')),
37 "Modalità Emissione", required=True),
38 'bank_id' : fields.many2one('res.partner.bank', "Banca",
39 required=True, help="Bank account used for Ri.Ba. issuing"),
40
41 'acceptance_journal_id' : fields.many2one('account.journal', "Acceptance journal",
42 domain=[('type', '=', 'bank')],
43 help="Journal used when Ri.Ba. is accepted by the bank"),
44 'acceptance_account_id' : fields.many2one('account.account', "Acceptance account",
45 domain=[('type', '=', 'receivable')], help='Account used when Ri.Ba. is accepted by the bank'),
46
47 'company_id': fields.many2one('res.company', 'Company',required=True),
48
49 'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal",
50 domain=[('type', '=', 'bank')],
51 help="Journal used when Ri.Ba. amount is accredited by the bank"),
52 'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account", help='Account used when Ri.Ba. is accepted by the bank'),
53 'bank_account_id' : fields.many2one('account.account', "Bank account",
54 domain=[('type', '=', 'liquidity')]),
55 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
56
57 'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal",
58 domain=[('type', '=', 'bank')],
59 help="Journal used when Ri.Ba. is unsolved"),
60 'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account",
61 domain=[('type', '=', 'receivable')]),
62 'protest_charge_account_id' : fields.many2one('account.account', "Protest charge account"),
63 }
64
65 _defaults = {
66 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.configurazione', context=c),
67 }
68
69 def get_default_value_by_distinta(self, cr, uid, field_name, context=None):
70 if context is None:
71 context = {}
72 if not context.get('active_id', False):
73 return False
74 distinta_pool = self.pool.get('riba.distinta')
75 distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
76 return distinta.config[field_name] and distinta.config[field_name].id or False
77
78 def get_default_value_by_distinta_line(self, cr, uid, field_name, context=None):
79 if context is None:
80 context = {}
81 if not context.get('active_id', False):
82 return False
83 distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context)
84 return distinta_line.distinta_id.config[field_name] and distinta_line.distinta_id.config[field_name].id or False
85
86
087
=== added file 'l10n_it_ricevute_bancarie/configurazione_view.xml'
--- l10n_it_ricevute_bancarie/configurazione_view.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/configurazione_view.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,50 @@
1<?xml version="1.0"?>
2<openerp>
3 <data>
4 <!-- ====================================================== -->
5 <!-- CONFIGURAZIONE RIBA FORM -->
6 <!-- ====================================================== -->
7 <record model="ir.ui.view" id="view_riba_configurazione_form">
8 <field name="name">riba.configurazione.form</field>
9 <field name="model">riba.configurazione</field>
10 <field name="arch" type="xml">
11 <form string="Ri.Ba. - Configurazione">
12 <field name="name" />
13 <field name="tipo" />
14 <field name="bank_id" />
15 <field name="company_id" widget="selection" groups="base.group_multi_company"/>
16 <group string="Salvo buon fine" attrs="{'invisible': [('tipo','!=','sbf')]}" colspan="4" col="4">
17 <separator colspan="4" string="Acceptance"/>
18 <field name="acceptance_journal_id" attrs="{'required':[('tipo','=','sbf')]}"/>
19 <field name="acceptance_account_id" attrs="{'required':[('tipo','=','sbf')]}"/>
20 <separator colspan="4" string="Accreditation"/>
21 <field name="accreditation_journal_id" />
22 <field name="accreditation_account_id"/>
23 <field name="bank_account_id" />
24 <field name="bank_expense_account_id" />
25 <separator colspan="4" string="Unsolved"/>
26 <field name="unsolved_journal_id" />
27 <field name="overdue_effects_account_id" />
28 <field name="protest_charge_account_id" />
29 </group>
30 </form>
31 </field>
32 </record>
33 <!-- ====================================================== -->
34 <!-- CONFIGURAZIONE RIBA ACTION -->
35 <!-- ====================================================== -->
36 <record model="ir.actions.act_window" id="action_riba_configurazione">
37 <field name="name">Ri.Ba. - Configuration</field>
38 <field name="type">ir.actions.act_window</field>
39 <field name="res_model">riba.configurazione</field>
40 <field name="view_type">form</field>
41 <field name="view_mode">tree,form</field>
42 <!--field name="view_id" ref="view_riba_configurazione_form"/-->
43 </record>
44 <!-- ====================================================== -->
45 <!-- CONFIGURAZIONE RIBA MENU -->
46 <!-- ====================================================== -->
47 <menuitem action="action_riba_configurazione" id="menu_riba_configurazione" name="Ri.Ba. Configuration" parent="account.menu_configuration_misc"/>
48
49 </data>
50</openerp>
051
=== added directory 'l10n_it_ricevute_bancarie/i18n'
=== added file 'l10n_it_ricevute_bancarie/i18n/it.po'
--- l10n_it_ricevute_bancarie/i18n/it.po 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/i18n/it.po 2014-02-20 16:47:57 +0000
@@ -0,0 +1,930 @@
1# Translation of OpenERP Server.
2# This file contains the translation of the following modules:
3# * l10n_it_ricevute_bancarie
4#
5msgid ""
6msgstr ""
7"Project-Id-Version: OpenERP Server 6.1\n"
8"Report-Msgid-Bugs-To: \n"
9"POT-Creation-Date: 2012-05-21 10:13+0000\n"
10"PO-Revision-Date: 2012-05-21 10:13+0000\n"
11"Last-Translator: <>\n"
12"Language-Team: \n"
13"MIME-Version: 1.0\n"
14"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Transfer-Encoding: \n"
16"Plural-Forms: \n"
17
18#. module: l10n_it_ricevute_bancarie
19#: help:riba.configurazione,acceptance_account_id:0
20#: help:riba.configurazione,accreditation_account_id:0
21msgid "Account used when Ri.Ba. is accepted by the bank"
22msgstr "Il conto utilizzato quando la Ri.Ba. viene accettata dalla banca"
23
24#. module: l10n_it_ricevute_bancarie
25#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:143
26#, python-format
27msgid "No IBAN specified"
28msgstr "Nessun IBAN specificato"
29
30#. module: l10n_it_ricevute_bancarie
31#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_configurazione
32msgid "Ri.Ba. - Configuration"
33msgstr "Ri.Ba. - Configurazione"
34
35#. module: l10n_it_ricevute_bancarie
36#: help:res.partner.bank,codice_sia:0
37msgid "Identification Code of the Company in the System Interbank"
38msgstr "Codice identificativo dell'azienda nel sistema interbancario"
39
40#. module: l10n_it_ricevute_bancarie
41#: field:riba.unsolved,effects_account_id:0
42msgid "Effects account"
43msgstr "Conto effetti"
44
45#. module: l10n_it_ricevute_bancarie
46#: field:riba.configurazione,tipo:0
47msgid "Modalità Emissione"
48msgstr "Modalità Emissione"
49
50#. module: l10n_it_ricevute_bancarie
51#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:103
52#, python-format
53msgid "Accreditation Ri.Ba. %s"
54msgstr "Accredito Ri.Ba. %s"
55
56#. module: l10n_it_ricevute_bancarie
57#: help:riba.configurazione,acceptance_journal_id:0
58msgid "Journal used when Ri.Ba. is accepted by the bank"
59msgstr "Sezionale utilizzato quando la Ri.Ba. viene accettata dalla banca"
60
61#. module: l10n_it_ricevute_bancarie
62#: field:riba.accreditation,accreditation_account_id:0
63#: field:riba.configurazione,accreditation_account_id:0
64#: field:riba.unsolved,riba_bank_account_id:0
65msgid "Ri.Ba. bank account"
66msgstr "Banca conto Ri.Ba."
67
68#. module: l10n_it_ricevute_bancarie
69#: field:riba.distinta.line,bank_id:0
70msgid "Debitor Bank"
71msgstr "Banca debitore"
72
73#. module: l10n_it_ricevute_bancarie
74#: help:res.partner,group_riba:0
75msgid "Group Ri.Ba. by customer while issuing"
76msgstr "Raggruppa le Ri.Ba. per cliente durante l'emissione"
77
78#. module: l10n_it_ricevute_bancarie
79#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:133
80#, python-format
81msgid "Overdue Effects"
82msgstr "Effetti insoluti"
83
84#. module: l10n_it_ricevute_bancarie
85#: field:riba.configurazione,company_id:0
86#: field:riba.distinta,company_id:0
87msgid "Company"
88msgstr "Azienda"
89
90#. module: l10n_it_ricevute_bancarie
91#: field:riba.distinta.line,invoice_date:0
92msgid "Invoice Date"
93msgstr "Data fattura"
94
95#. module: l10n_it_ricevute_bancarie
96#: view:riba.distinta:0
97msgid "Move line"
98msgstr "Riga contabile"
99
100#. module: l10n_it_ricevute_bancarie
101#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:163
102#, python-format
103msgid "No VAT or Fiscalcode specified for: "
104msgstr "P IVA o codice fiscale non specificato per:"
105
106#. module: l10n_it_ricevute_bancarie
107#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_wizard_riba_file_export
108msgid "Export Ri.Ba."
109msgstr "Esporta Ri.Ba."
110
111#. module: l10n_it_ricevute_bancarie
112#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:121
113#, python-format
114msgid "Effects"
115msgstr "Effetti"
116
117#. module: l10n_it_ricevute_bancarie
118#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_accreditation_action
119#: view:riba.accreditation:0
120msgid "Ri.Ba. Accreditation"
121msgstr "Accredito Ri.Ba."
122
123#. module: l10n_it_ricevute_bancarie
124#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:193
125#, python-format
126msgid "No IBAN specified for "
127msgstr "Nessun IBAN specificato per"
128
129#. module: l10n_it_ricevute_bancarie
130#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:182
131#, python-format
132msgid "No address specified for "
133msgstr "Nessun indirizzo specificato per"
134
135#. module: l10n_it_ricevute_bancarie
136#: field:riba.accreditation,accreditation_amount:0
137msgid "Credit amount"
138msgstr "Importo credito"
139
140#. module: l10n_it_ricevute_bancarie
141#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:148
142#, python-format
143msgid "No SIA Code specified for: "
144msgstr "Nessun codice SIA specificato per:"
145
146#. module: l10n_it_ricevute_bancarie
147#: view:riba.distinta:0
148msgid "Move lines"
149msgstr "Righe contabili"
150
151#. module: l10n_it_ricevute_bancarie
152#: field:riba.configurazione,name:0
153msgid "Descrizione"
154msgstr "Descrizione"
155
156#. module: l10n_it_ricevute_bancarie
157#: view:account.move.line:0
158msgid "Total Debit"
159msgstr "Debito totale"
160
161#. module: l10n_it_ricevute_bancarie
162#: view:riba.distinta:0
163#: field:riba.distinta.line,amount:0
164#: field:riba.distinta.move.line,amount:0
165msgid "Amount"
166msgstr "Importo"
167
168#. module: l10n_it_ricevute_bancarie
169#: sql_constraint:account.move.line:0
170msgid "Wrong credit or debit value in accounting entry !"
171msgstr "Valore di credito o debito errato nella registrazione contabile !"
172
173#. module: l10n_it_ricevute_bancarie
174#: field:res.partner.bank,codice_sia:0
175msgid "Codice SIA"
176msgstr "Codice SIA"
177
178#. module: l10n_it_ricevute_bancarie
179#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:210
180#, python-format
181msgid "No VAT or Fiscal code specified for "
182msgstr "P IVA o codice fiscale non specificato per"
183
184#. module: l10n_it_ricevute_bancarie
185#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_unsolved
186msgid "riba.unsolved"
187msgstr "riba.unsolved"
188
189#. module: l10n_it_ricevute_bancarie
190#: help:riba.distinta.line,reconciled:0
191msgid "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."
192msgstr "Indica che la riga è stata pagata e la registrazione della riga è stata riconciliata con una o più registrazioni di pagamento"
193
194#. module: l10n_it_ricevute_bancarie
195#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_file_export
196msgid "riba.file.export"
197msgstr "riba.file.export"
198
199#. module: l10n_it_ricevute_bancarie
200#: view:riba.configurazione:0
201#: view:riba.distinta:0
202#: selection:riba.distinta,state:0
203#: selection:riba.distinta.line,state:0
204msgid "Unsolved"
205msgstr "Insoluto"
206
207#. module: l10n_it_ricevute_bancarie
208#: field:riba.distinta,config:0
209msgid "Configuration"
210msgstr "Configurazione"
211
212#. module: l10n_it_ricevute_bancarie
213#: field:riba.distinta,name:0
214msgid "Reference"
215msgstr "Riferimento"
216
217#. module: l10n_it_ricevute_bancarie
218#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:170
219#: field:riba.distinta.line,unsolved_move_id:0
220#, python-format
221msgid "Unsolved Entry"
222msgstr "Registrazione insoluto"
223
224#. module: l10n_it_ricevute_bancarie
225#: help:riba.distinta,config:0
226msgid "Riba configuration to be used"
227msgstr "Configurazione Ri.Ba. da usare"
228
229#. module: l10n_it_ricevute_bancarie
230#: constraint:account.move.line:0
231msgid "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
232msgstr "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
233
234#. module: l10n_it_ricevute_bancarie
235#: view:riba.distinta:0
236msgid "Reset to Draft"
237msgstr "Reimposta a bozza"
238
239#. module: l10n_it_ricevute_bancarie
240#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner
241msgid "Partner"
242msgstr "Partner"
243
244#. module: l10n_it_ricevute_bancarie
245#: view:riba.file.export:0
246msgid "Export Ri.Ba. file"
247msgstr "Esporta file Ri.Ba."
248
249#. module: l10n_it_ricevute_bancarie
250#: field:res.bank,banca_estera:0
251msgid "Banca Estera"
252msgstr "Banca Estera"
253
254#. module: l10n_it_ricevute_bancarie
255#: view:riba.distinta:0
256#: selection:riba.distinta.line,state:0
257msgid "Confirmed"
258msgstr "Confermata"
259
260#. module: l10n_it_ricevute_bancarie
261#: field:riba.distinta,date_paid:0
262msgid "Paid date"
263msgstr "Data pagamento"
264
265#. module: l10n_it_ricevute_bancarie
266#: view:riba.configurazione:0
267msgid "Accreditation"
268msgstr "Accredito"
269
270#. module: l10n_it_ricevute_bancarie
271#: view:riba.accreditation:0
272#: view:riba.emissione:0
273#: view:riba.unsolved:0
274msgid "Create"
275msgstr "Crea"
276
277#. module: l10n_it_ricevute_bancarie
278#: field:riba.accreditation,bank_expense_account_id:0
279#: field:riba.configurazione,bank_expense_account_id:0
280#: field:riba.unsolved,bank_expense_account_id:0
281msgid "Bank Expenses account"
282msgstr "Conto spese bancarie"
283
284#. module: l10n_it_ricevute_bancarie
285#: field:riba.distinta,state:0
286#: field:riba.distinta.line,state:0
287msgid "State"
288msgstr "Stato"
289
290#. module: l10n_it_ricevute_bancarie
291#: view:account.move.line:0
292#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_da_emettere
293#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.emissione_riba_action
294#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_da_emettere
295#: view:riba.emissione:0
296msgid "Issue Ri.Ba."
297msgstr "Emetti Ri.Ba."
298
299#. module: l10n_it_ricevute_bancarie
300#: view:account.invoice:0
301msgid "Unsolved Ri.Ba."
302msgstr "Ri.Ba. insolute"
303
304#. module: l10n_it_ricevute_bancarie
305#: field:riba.distinta,type:0
306#: field:riba.distinta.line,type:0
307msgid "Type"
308msgstr "Tipo"
309
310#. module: l10n_it_ricevute_bancarie
311#: help:riba.configurazione,unsolved_journal_id:0
312msgid "Journal used when Ri.Ba. is unsolved"
313msgstr "Sezionale utilizzato quando la Ri.Ba. è insoluta"
314
315#. module: l10n_it_ricevute_bancarie
316#: field:riba.distinta.line,reconciled:0
317msgid "Paid/Reconciled"
318msgstr "Pagato/Riconciliato"
319
320#. module: l10n_it_ricevute_bancarie
321#: field:riba.emissione,configurazione:0
322msgid "Configurazione"
323msgstr "Configurazione"
324
325#. module: l10n_it_ricevute_bancarie
326#: field:riba.unsolved,effects_amount:0
327msgid "Effects amount"
328msgstr "Importo effetti"
329
330#. module: l10n_it_ricevute_bancarie
331#: field:riba.accreditation,expense_amount:0
332#: field:riba.unsolved,expense_amount:0
333msgid "Expenses amount"
334msgstr "Importo spese"
335
336#. module: l10n_it_ricevute_bancarie
337#: field:account.move.line,riba:0
338msgid "RiBa"
339msgstr "Ri.Ba."
340
341#. module: l10n_it_ricevute_bancarie
342#: selection:riba.file.export,state:0
343msgid "get"
344msgstr "get"
345
346#. module: l10n_it_ricevute_bancarie
347#: view:riba.distinta:0
348#: selection:riba.distinta,state:0
349msgid "Accepted"
350msgstr "Accettata"
351
352#. module: l10n_it_ricevute_bancarie
353#: view:account.move.line:0
354msgid "To Issue"
355msgstr "Da emettere"
356
357#. module: l10n_it_ricevute_bancarie
358#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.distinta_riba_action
359msgid "Distinta Ri.Ba."
360msgstr "Distinta Ri.Ba."
361
362#. module: l10n_it_ricevute_bancarie
363#: view:riba.distinta:0
364#: field:riba.distinta,acceptance_move_ids:0
365msgid "Acceptance Entries"
366msgstr "Registrazioni di accettazione"
367
368#. module: l10n_it_ricevute_bancarie
369#: field:riba.distinta,date_unsolved:0
370msgid "Unsolved date"
371msgstr "Data insoluto"
372
373#. module: l10n_it_ricevute_bancarie
374#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba
375msgid "Ri.Ba."
376msgstr "Ri.Ba."
377
378#. module: l10n_it_ricevute_bancarie
379#: field:riba.distinta.move.line,riba_line_id:0
380msgid "Distinta line"
381msgstr "Riga distinta"
382
383#. module: l10n_it_ricevute_bancarie
384#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:131
385#: view:riba.distinta:0
386#: field:riba.distinta,accreditation_move_id:0
387#, python-format
388msgid "Accreditation Entry"
389msgstr "Registrazione accredito"
390
391#. module: l10n_it_ricevute_bancarie
392#: field:riba.configurazione,unsolved_journal_id:0
393#: field:riba.unsolved,unsolved_journal_id:0
394msgid "Unsolved journal"
395msgstr "Sezionale insoluti"
396
397#. module: l10n_it_ricevute_bancarie
398#: field:riba.distinta.line,move_line_ids:0
399msgid "Credit move lines"
400msgstr "Righe contabili di credito"
401
402#. module: l10n_it_ricevute_bancarie
403#: field:riba.distinta.line,due_date:0
404msgid "Due date"
405msgstr "Data scadenza"
406
407#. module: l10n_it_ricevute_bancarie
408#: field:riba.accreditation,accreditation_journal_id:0
409#: field:riba.configurazione,accreditation_journal_id:0
410msgid "Accreditation journal"
411msgstr "Sezionale di accredito"
412
413#. module: l10n_it_ricevute_bancarie
414#: field:riba.configurazione,protest_charge_account_id:0
415msgid "Protest charge account"
416msgstr "Conto spese di protesto"
417
418#. module: l10n_it_ricevute_bancarie
419#: constraint:account.move.line:0
420msgid "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."
421msgstr "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."
422
423#. module: l10n_it_ricevute_bancarie
424#: view:account.move.line:0
425msgid "Group by..."
426msgstr "Raggruppa per..."
427
428#. module: l10n_it_ricevute_bancarie
429#: field:riba.distinta,date_accreditation:0
430msgid "Accreditation date"
431msgstr "Data accredito"
432
433#. module: l10n_it_ricevute_bancarie
434#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:155
435#, python-format
436msgid "No address specified for: "
437msgstr "Nessun indirizzo specificato per:"
438
439#. module: l10n_it_ricevute_bancarie
440#: view:account.move.line:0
441msgid "Search Journal Items"
442msgstr "Cerca scritture"
443
444#. module: l10n_it_ricevute_bancarie
445#: field:riba.configurazione,overdue_effects_account_id:0
446#: field:riba.unsolved,overdue_effects_account_id:0
447msgid "Overdue Effects account"
448msgstr "Conto effetti insoluti"
449
450#. module: l10n_it_ricevute_bancarie
451#: field:riba.unsolved,overdue_effects_amount:0
452msgid "Overdue Effects amount"
453msgstr "Importo effetti insoluti"
454
455#. module: l10n_it_ricevute_bancarie
456#: view:riba.accreditation:0
457msgid "You can also skip this step and set the distinta status to 'accredited' anyway"
458msgstr "E' anche possibile saltare questo passo e impostare comunque la distinta dello stato di 'accreditata'"
459
460#. module: l10n_it_ricevute_bancarie
461#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:191
462#, python-format
463msgid "No CAP specified for "
464msgstr "Nessun CAP specificato per"
465
466#. module: l10n_it_ricevute_bancarie
467#: view:riba.unsolved:0
468msgid "You can also skip this step and set the line status to 'unsolved' anyway"
469msgstr "E' anche possibile saltare questo passo e impostare comunque lo stato della riga a 'insoluta'"
470
471#. module: l10n_it_ricevute_bancarie
472#: view:riba.distinta:0
473msgid "Detail"
474msgstr "Dettaglio"
475
476#. module: l10n_it_ricevute_bancarie
477#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_emissione
478msgid "Emissione Ricevute Bancarie"
479msgstr "Emissione Ricevute Bancarie"
480
481#. module: l10n_it_ricevute_bancarie
482#: view:riba.distinta:0
483#: selection:riba.distinta,state:0
484#: selection:riba.distinta.line,state:0
485msgid "Draft"
486msgstr "Bozza"
487
488#. module: l10n_it_ricevute_bancarie
489#: field:riba.file.export,state:0
490msgid "unknown"
491msgstr "sconosciuto"
492
493#. module: l10n_it_ricevute_bancarie
494#: view:riba.distinta:0
495#: selection:riba.distinta,state:0
496#: selection:riba.distinta.line,state:0
497msgid "Paid"
498msgstr "Pagata"
499
500#. module: l10n_it_ricevute_bancarie
501#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_accreditation
502msgid "Bank accreditation"
503msgstr "Accredito banca"
504
505#. module: l10n_it_ricevute_bancarie
506#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_line
507#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_move_line
508msgid "Riba details"
509msgstr "Dettagli Ri.Ba."
510
511#. module: l10n_it_ricevute_bancarie
512#: field:riba.distinta,user_id:0
513msgid "User"
514msgstr "Utente"
515
516#. module: l10n_it_ricevute_bancarie
517#: field:riba.distinta,unsolved_move_ids:0
518msgid "Unsolved Entries"
519msgstr "Registrazioni insoluti"
520
521#. module: l10n_it_ricevute_bancarie
522#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_move_line
523msgid "Journal Items"
524msgstr "Voci sezionale"
525
526#. module: l10n_it_ricevute_bancarie
527#: constraint:account.move.line:0
528msgid "You can not create journal items on an account of type view."
529msgstr "Non è possibile effettuare registrazioni su un conto di tipo vista."
530
531#. module: l10n_it_ricevute_bancarie
532#: help:riba.configurazione,bank_id:0
533msgid "Bank account used for Ri.Ba. issuing"
534msgstr "Conto bancario utilizzato per l'emissione delle Ri.Ba."
535
536#. module: l10n_it_ricevute_bancarie
537#: selection:riba.file.export,state:0
538msgid "choose"
539msgstr "choose"
540
541#. module: l10n_it_ricevute_bancarie
542#: constraint:res.partner.bank:0
543msgid "\n"
544"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
545msgstr "\n"
546"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
547
548#. module: l10n_it_ricevute_bancarie
549#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:127
550#, python-format
551msgid "Ri.Ba. Bank"
552msgstr "Banca Ri.Ba."
553
554#. module: l10n_it_ricevute_bancarie
555#: view:riba.unsolved:0
556msgid "This wizard generates the journal entry related to an unsolved payment"
557msgstr "Questo wizard genererà la registrazione relativa ad un pagamento insoluto"
558
559#. module: l10n_it_ricevute_bancarie
560#: field:riba.distinta,date_created:0
561msgid "Creation date"
562msgstr "Data creazione"
563
564#. module: l10n_it_ricevute_bancarie
565#: view:riba.distinta:0
566msgid "Invoice entries"
567msgstr "Registrazioni fattura"
568
569#. module: l10n_it_ricevute_bancarie
570#: help:riba.configurazione,accreditation_journal_id:0
571msgid "Journal used when Ri.Ba. amount is accredited by the bank"
572msgstr "Sezionale utilizzato quando l'import della Ri.Ba. viene accreditato dalla banca"
573
574#. module: l10n_it_ricevute_bancarie
575#: field:riba.distinta,line_ids:0
576msgid "Riba deadlines"
577msgstr "Scadenze Ri.Ba."
578
579#. module: l10n_it_ricevute_bancarie
580#: field:riba.unsolved,riba_bank_amount:0
581msgid "Ri.Ba. bank amount"
582msgstr "Importo banca Ri.Ba."
583
584#. module: l10n_it_ricevute_bancarie
585#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:107
586#, python-format
587msgid "Credit"
588msgstr "Credito"
589
590#. module: l10n_it_ricevute_bancarie
591#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
592#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
593#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
594#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
595#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
596#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
597#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
598#, python-format
599msgid "Error"
600msgstr "Errore"
601
602#. module: l10n_it_ricevute_bancarie
603#: field:riba.distinta,date_accepted:0
604msgid "Acceptance date"
605msgstr "Data accettazione"
606
607#. module: l10n_it_ricevute_bancarie
608#: field:riba.configurazione,acceptance_account_id:0
609msgid "Acceptance account"
610msgstr "Importo accettazione"
611
612#. module: l10n_it_ricevute_bancarie
613#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:187
614#, python-format
615msgid "No Street specified for "
616msgstr "Nessun indirizzo specificato per"
617
618#. module: l10n_it_ricevute_bancarie
619#: field:riba.distinta.line,partner_id:0
620msgid "Cliente"
621msgstr "Cliente"
622
623#. module: l10n_it_ricevute_bancarie
624#: view:account.move.line:0
625msgid "Group by customer"
626msgstr "Raggruppa per cliente"
627
628#. module: l10n_it_ricevute_bancarie
629#: sql_constraint:account.invoice:0
630msgid "Invoice Number must be unique per Company!"
631msgstr "Invoice Number must be unique per Company!"
632
633#. module: l10n_it_ricevute_bancarie
634#: view:riba.distinta:0
635msgid "Distinte Ri.Ba."
636msgstr "Distinte Ri.Ba."
637
638#. module: l10n_it_ricevute_bancarie
639#: view:riba.accreditation:0
640msgid "Skip and confirm accreditation"
641msgstr "Salta e conferma accredito"
642
643#. module: l10n_it_ricevute_bancarie
644#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner_bank
645msgid "Bank Accounts"
646msgstr "Conti Bancari"
647
648#. module: l10n_it_ricevute_bancarie
649#: field:riba.distinta.line,sequence:0
650msgid "Number"
651msgstr "Numero"
652
653#. module: l10n_it_ricevute_bancarie
654#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
655#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
656#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
657#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
658#, python-format
659msgid "No active ID found"
660msgstr "Nessun ID trovato"
661
662#. module: l10n_it_ricevute_bancarie
663#: view:riba.distinta:0
664msgid "General"
665msgstr "Generale"
666
667#. module: l10n_it_ricevute_bancarie
668#: view:riba.emissione:0
669msgid "This wizard generates the Ri.Ba. list, do you confirm?"
670msgstr "Questo wizard genererà la distinta Ri.Ba., confermi?"
671
672#. module: l10n_it_ricevute_bancarie
673#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_invoice
674msgid "Invoice"
675msgstr "Fattura"
676
677#. module: l10n_it_ricevute_bancarie
678#: view:riba.accreditation:0
679#: view:riba.distinta:0
680#: view:riba.emissione:0
681#: view:riba.file.export:0
682#: view:riba.unsolved:0
683msgid "Cancel"
684msgstr "Annulla"
685
686#. module: l10n_it_ricevute_bancarie
687#: view:account.move.line:0
688msgid "Group by invoice"
689msgstr "Raggruppa per fattura"
690
691#. module: l10n_it_ricevute_bancarie
692#: field:riba.distinta.line,acceptance_account_id:0
693msgid "Acceptance Account"
694msgstr "Conto accettazione"
695
696#. module: l10n_it_ricevute_bancarie
697#: selection:riba.distinta,state:0
698msgid "Canceled"
699msgstr "Annullata"
700
701#. module: l10n_it_ricevute_bancarie
702#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_unsolved_action
703#: view:riba.unsolved:0
704msgid "Ri.Ba. Unsolved"
705msgstr "Ri.Ba. Insoluta"
706
707#. module: l10n_it_ricevute_bancarie
708#: field:account.invoice,unsolved_move_line_ids:0
709msgid "Unsolved journal items"
710msgstr "Registrazioni insoluti"
711
712#. module: l10n_it_ricevute_bancarie
713#: constraint:account.move.line:0
714msgid "Company must be the same for its related account and period."
715msgstr "Company must be the same for its related account and period."
716
717#. module: l10n_it_ricevute_bancarie
718#: view:riba.distinta:0
719msgid "Other Info"
720msgstr "Altre info"
721
722#. module: l10n_it_ricevute_bancarie
723#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_payment_term
724msgid "Payment Term"
725msgstr "Termine di pagamento"
726
727#. module: l10n_it_ricevute_bancarie
728#: view:riba.configurazione:0
729msgid "Acceptance"
730msgstr "Accettazione"
731
732#. module: l10n_it_ricevute_bancarie
733#: view:riba.distinta:0
734#: selection:riba.distinta,state:0
735#: selection:riba.distinta.line,state:0
736msgid "Accredited"
737msgstr "Accreditata"
738
739#. module: l10n_it_ricevute_bancarie
740#: field:riba.distinta.move.line,move_line_id:0
741msgid "Credit move line"
742msgstr "Riga credito"
743
744#. module: l10n_it_ricevute_bancarie
745#: view:riba.unsolved:0
746msgid "Skip and confirm the unsolved state"
747msgstr "Salta e conferma lo stato di insoluto"
748
749#. module: l10n_it_ricevute_bancarie
750#: view:riba.distinta:0
751msgid "Ri.Ba. - Distinta"
752msgstr "Ri.Ba. - Distinta"
753
754#. module: l10n_it_ricevute_bancarie
755#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
756#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
757#, python-format
758msgid "Every account is mandatory"
759msgstr "Ogni conto è obbligatorio"
760
761#. module: l10n_it_ricevute_bancarie
762#: view:riba.configurazione:0
763msgid "Ri.Ba. - Configurazione"
764msgstr "Ri.Ba. - Configurazione"
765
766#. module: l10n_it_ricevute_bancarie
767#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_configurazione
768msgid "Ri.Ba. Configuration"
769msgstr "Ri.Ba. Configurazione"
770
771#. module: l10n_it_ricevute_bancarie
772#: field:res.partner,group_riba:0
773msgid "Group Ri.Ba."
774msgstr "Raggruppa Ri.Ba."
775
776#. module: l10n_it_ricevute_bancarie
777#: field:riba.accreditation,bank_account_id:0
778#: field:riba.configurazione,bank_account_id:0
779#: field:riba.unsolved,bank_account_id:0
780msgid "Bank account"
781msgstr "Conto banca"
782
783#. module: l10n_it_ricevute_bancarie
784#: field:riba.unsolved,bank_amount:0
785msgid "Taken amount"
786msgstr "Importo prelevato"
787
788#. module: l10n_it_ricevute_bancarie
789#: field:account.payment.term,riba:0
790msgid "Riba"
791msgstr "Ri.Ba."
792
793#. module: l10n_it_ricevute_bancarie
794#: field:riba.distinta.line,invoice_number:0
795msgid "Invoice Number"
796msgstr "Numero fattura"
797
798#. module: l10n_it_ricevute_bancarie
799#: view:riba.accreditation:0
800msgid "This wizard generates the journal entry related to accreditation received from the bank"
801msgstr "Questo wizard genererà la registrazione relativa all'accredito ricevuto dalla banca"
802
803#. module: l10n_it_ricevute_bancarie
804#: view:res.partner:0
805msgid "Ri.Ba. properties"
806msgstr "Proprietà Ri.Ba."
807
808#. module: l10n_it_ricevute_bancarie
809#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:113
810#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:119
811#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:141
812#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_bank
813#, python-format
814msgid "Bank"
815msgstr "Banca"
816
817#. module: l10n_it_ricevute_bancarie
818#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:117
819#, python-format
820msgid "Unsolved Ri.Ba. %s - line %s"
821msgstr "Ri.Ba. %s insoluta - riga %s"
822
823#. module: l10n_it_ricevute_bancarie
824#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta
825msgid "Distinta Riba"
826msgstr "Distinta Riba"
827
828#. module: l10n_it_ricevute_bancarie
829#: selection:riba.configurazione,tipo:0
830msgid "Al dopo incasso"
831msgstr "Al dopo incasso"
832
833#. module: l10n_it_ricevute_bancarie
834#: view:riba.distinta:0
835#: field:riba.distinta,payment_ids:0
836#: field:riba.distinta.line,payment_ids:0
837msgid "Payments"
838msgstr "Pagamenti"
839
840#. module: l10n_it_ricevute_bancarie
841#: view:riba.configurazione:0
842#: selection:riba.configurazione,tipo:0
843msgid "Salvo buon fine"
844msgstr "Salvo buon fine"
845
846#. module: l10n_it_ricevute_bancarie
847#: field:riba.accreditation,bank_amount:0
848msgid "Versed amount"
849msgstr "Importo versato"
850
851#. module: l10n_it_ricevute_bancarie
852#: field:account.move.line,unsolved_invoice_ids:0
853#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_invoice_tree1
854#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_invoices
855msgid "Unsolved Invoices"
856msgstr "Fatture insolute"
857
858#. module: l10n_it_ricevute_bancarie
859#: constraint:account.move.line:0
860msgid "You can not create journal items on closed account."
861msgstr "You can not create journal items on closed account."
862
863#. module: l10n_it_ricevute_bancarie
864#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:200
865#, python-format
866msgid "No City specified for "
867msgstr "Nessuna città specificata per"
868
869#. module: l10n_it_ricevute_bancarie
870#: field:riba.distinta.line,distinta_id:0
871msgid "Distinta"
872msgstr "Distinta"
873
874#. module: l10n_it_ricevute_bancarie
875#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_configurazione
876msgid "Parametri di configurazione per le Ricevute Bancarie"
877msgstr "Parametri di configurazione per le Ricevute Bancarie"
878
879#. module: l10n_it_ricevute_bancarie
880#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_distinte
881msgid "Distinte"
882msgstr "Distinte"
883
884#. module: l10n_it_ricevute_bancarie
885#: field:riba.distinta.line,acceptance_move_id:0
886msgid "Acceptance Entry"
887msgstr "Registrazione di accettazione"
888
889#. module: l10n_it_ricevute_bancarie
890#: field:riba.configurazione,acceptance_journal_id:0
891msgid "Acceptance journal"
892msgstr "Sezionale di accettazione"
893
894#. module: l10n_it_ricevute_bancarie
895#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:147
896#, python-format
897msgid "Expenses"
898msgstr "Spese"
899
900#. module: l10n_it_ricevute_bancarie
901#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
902#, python-format
903msgid "Distinta %s is in state %s. You can only delete documents in state draft or canceled"
904msgstr "La distinta %s è nello stato %s. E' possibile eliminare solamente i documenti in stato bozza o annullato."
905
906#. module: l10n_it_ricevute_bancarie
907#: field:riba.configurazione,bank_id:0
908msgid "Banca"
909msgstr "Banca"
910
911#. module: l10n_it_ricevute_bancarie
912#: view:riba.file.export:0
913msgid "Export"
914msgstr "Export"
915
916#. module: l10n_it_ricevute_bancarie
917#: field:riba.file.export,riba_.txt:0
918msgid "File"
919msgstr "File"
920
921#. module: l10n_it_ricevute_bancarie
922#: view:riba.distinta:0
923msgid "Accounting"
924msgstr "Contabilità"
925
926#. module: l10n_it_ricevute_bancarie
927#: field:account.move.line,distinta_line_ids:0
928msgid "Dettaglio riba"
929msgstr "Dettaglio riba"
930
0931
=== added directory 'l10n_it_ricevute_bancarie/partner'
=== added file 'l10n_it_ricevute_bancarie/partner/__init__.py'
--- l10n_it_ricevute_bancarie/partner/__init__.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/partner/__init__.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,24 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7#
8# This program is free software: you can redistribute it and/or modify
9# it under the terms of the GNU Affero General Public License as published
10# by the Free Software Foundation, either version 3 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU Affero General Public License for more details.
17#
18# You should have received a copy of the GNU Affero General Public License
19# along with this program. If not, see <http://www.gnu.org/licenses/>.
20#
21##############################################################################
22
23import partner
24
025
=== added file 'l10n_it_ricevute_bancarie/partner/partner.py'
--- l10n_it_ricevute_bancarie/partner/partner.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/partner/partner.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,38 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27from openerp.osv import fields, orm
28
29class res_partner(orm.Model):
30
31 _name = "res.partner"
32 _inherit = "res.partner"
33
34 _columns = {
35 'group_riba' : fields.boolean("Group Ri.Ba.",
36 help="Group Ri.Ba. by customer while issuing"),
37 }
38
039
=== added file 'l10n_it_ricevute_bancarie/partner/partner_view.xml'
--- l10n_it_ricevute_bancarie/partner/partner_view.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/partner/partner_view.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,23 @@
1<?xml version="1.0"?>
2<openerp>
3 <data>
4
5 <!--========================================================-->
6 <!-- RES.PARTNER - FORM -->
7 <!--========================================================-->
8 <record id="view_partner_form_riba" model="ir.ui.view">
9 <field name="name">res.parner.form.riba</field>
10 <field name="model">res.partner</field>
11 <field name="inherit_id" ref="base.view_partner_form"/>
12 <field name="arch" type="xml">
13 <field name="property_payment_term" position="after">
14 <separator string="Ri.Ba. properties" colspan="2"/>
15 <group col="4" colspan="2">
16 <field name="group_riba"/>
17 </group>
18 </field>
19 </field>
20 </record>
21
22 </data>
23</openerp>
024
=== added file 'l10n_it_ricevute_bancarie/riba.py'
--- l10n_it_ricevute_bancarie/riba.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/riba.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,405 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27from openerp.osv import fields, orm
28import time
29import decimal_precision as dp
30import netsvc
31from tools.translate import _
32
33class riba_distinta(orm.Model):
34
35 def _get_acceptance_move_ids(self, cr, uid, ids, field_name, arg, context):
36 res = {}
37 for distinta in self.browse(cr, uid, ids, context=context):
38 move_ids = []
39 for line in distinta.line_ids:
40 if line.acceptance_move_id and line.acceptance_move_id.id not in move_ids:
41 move_ids.append(line.acceptance_move_id.id)
42 res[distinta.id] = move_ids
43 return res
44
45 def _get_unsolved_move_ids(self, cr, uid, ids, field_name, arg, context):
46 res = {}
47 for distinta in self.browse(cr, uid, ids, context=context):
48 move_ids = []
49 for line in distinta.line_ids:
50 if line.unsolved_move_id and line.unsolved_move_id.id not in move_ids:
51 move_ids.append(line.unsolved_move_id.id)
52 res[distinta.id] = move_ids
53 return res
54
55 def _get_payment_ids(self, cr, uid, ids, field_name, arg, context):
56 res = {}
57 for distinta in self.browse(cr, uid, ids, context=context):
58 move_line_ids = []
59 for line in distinta.line_ids:
60 for payment in line.payment_ids:
61 if payment.id not in move_line_ids:
62 move_line_ids.append(payment.id)
63 res[distinta.id] = move_line_ids
64 return res
65
66 _name = 'riba.distinta'
67 _description = 'Distinta Riba'
68
69 _columns = {
70 'name': fields.char('Reference', size=128, required=True, readonly=True, states={'draft': [('readonly', False)]}),
71 'config': fields.many2one('riba.configurazione', 'Configuration',
72 select=True, required=True, readonly=True, states={'draft': [('readonly', False)]},
73 help='Riba configuration to be used'),
74 'state': fields.selection([
75 ('draft', 'Draft'),
76 ('accepted', 'Accepted'),
77 ('accredited', 'Accredited'),
78 ('paid', 'Paid'),
79 ('unsolved', 'Unsolved'),
80 ('cancel', 'Canceled')], 'State', select=True, readonly=True),
81 'line_ids': fields.one2many('riba.distinta.line', 'distinta_id',
82 'Riba deadlines', readonly=True, states={'draft': [('readonly', False)]}),
83 'user_id': fields.many2one('res.users', 'User', required=True, readonly=True, states={'draft': [('readonly', False)]}),
84 'date_created': fields.date('Creation date', readonly=True),
85 'date_accepted': fields.date('Acceptance date', readonly=True),
86 'date_accreditation': fields.date('Accreditation date', readonly=True),
87 'date_paid': fields.date('Paid date', readonly=True),
88 'date_unsolved': fields.date('Unsolved date', readonly=True),
89 'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
90 'acceptance_move_ids': fields.function(_get_acceptance_move_ids, type='many2many', relation='account.move', method=True, string="Acceptance Entries"),
91 'accreditation_move_id': fields.many2one('account.move', 'Accreditation Entry', readonly=True),
92 'payment_ids': fields.function(_get_payment_ids, relation='account.move.line', type="many2many", string='Payments'),
93 'unsolved_move_ids': fields.function(_get_unsolved_move_ids, type='many2many', relation='account.move', method=True, string="Unsolved Entries"),
94 'type': fields.related('config', 'tipo', type='char', size=32, string='Type', readonly=True),
95 }
96
97 _defaults = {
98 'user_id': lambda self,cr,uid,context: uid,
99 'date_created': fields.date.context_today,
100 'name': lambda self,cr,uid,context: self.pool.get('ir.sequence').get(cr, uid, 'riba.distinta'),
101 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.distinta', context=c),
102 }
103
104 def unlink(self, cr, uid, ids, context=None):
105 for distinta in self.browse(cr, uid, ids, context=context):
106 if distinta.state not in ('draft', 'cancel'):
107 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))
108 super(riba_distinta,self).unlink(cr, uid, ids, context=context)
109 return True
110
111 def confirm(self, cr, uid, ids, context=None):
112 line_pool = self.pool.get('riba.distinta.line')
113 for distinta in self.browse(cr, uid, ids, context=context):
114 line_pool.confirm(cr, uid, [line.id for line in distinta.line_ids], context=context)
115 return True
116
117 def riba_new(self, cr, uid, ids, context=None):
118 self.write(cr, uid, ids, {
119 'state': 'draft',
120 }, context=context)
121 return True
122
123 def riba_cancel(self, cr, uid, ids, context=None):
124 for distinta in self.browse(cr, uid, ids, context=context):
125 # TODO remove ervery other move
126 for line in distinta.line_ids:
127 if line.acceptance_move_id:
128 line.acceptance_move_id.unlink()
129 if line.unsolved_move_id:
130 line.unsolved_move_id.unlink()
131 if distinta.accreditation_move_id:
132 distinta.accreditation_move_id.unlink()
133 self.write(cr, uid, ids, {
134 'state': 'cancel',
135 }, context=context)
136 return True
137
138 def riba_accepted(self, cr, uid, ids, context=None):
139 self.write(cr, uid, ids, {
140 'state': 'accepted',
141 'date_accepted': fields.date.context_today(
142 self, cr, uid, context),
143 }, context=context)
144 return True
145
146 def riba_accredited(self, cr, uid, ids, context=None):
147 self.write(cr, uid, ids, {
148 'state': 'accredited',
149 'date_accreditation': fields.date.context_today(
150 self, cr, uid, context),
151 }, context=context)
152 for distinta in self.browse(cr, uid, ids, context=context):
153 for line in distinta.line_ids:
154 line.write({'state': 'accredited'})
155 return True
156
157 def riba_paid(self, cr, uid, ids, context=None):
158 self.write(cr, uid, ids, {
159 'state': 'paid',
160 'date_paid': fields.date.context_today(
161 self, cr, uid, context),
162 }, context=context)
163 return True
164
165 def riba_unsolved(self, cr, uid, ids, context=None):
166 self.write(cr, uid, ids, {
167 'state': 'unsolved',
168 'date_unsolved': fields.date.context_today(
169 self, cr, uid, context),
170 }, context=context)
171 return True
172
173 def test_accepted(self, cr, uid, ids, *args):
174 for distinta in self.browse(cr, uid, ids):
175 for line in distinta.line_ids:
176 if line.state != 'confirmed':
177 return False
178 return True
179
180 def test_unsolved(self, cr, uid, ids, *args):
181 for distinta in self.browse(cr, uid, ids):
182 for line in distinta.line_ids:
183 if line.state != 'unsolved':
184 return False
185 return True
186
187 def test_paid(self, cr, uid, ids, *args):
188 for distinta in self.browse(cr, uid, ids):
189 for line in distinta.line_ids:
190 if line.state != 'paid':
191 return False
192 return True
193
194 def action_cancel_draft(self, cr, uid, ids, *args):
195 self.write(cr, uid, ids, {'state':'draft'})
196 wf_service = netsvc.LocalService("workflow")
197 for distinta_id in ids:
198 wf_service.trg_delete(uid, 'riba.distinta', distinta_id, cr)
199 wf_service.trg_create(uid, 'riba.distinta', distinta_id, cr)
200 return True
201
202
203class riba_distinta_line(orm.Model):
204
205 def _get_line_values(self, cr, uid, ids, field_name, arg, context):
206 res = {}
207 for line in self.browse(cr, uid, ids, context=context):
208 res[line.id] = {}
209 res[line.id]['amount'] = 0.0
210 res[line.id]['invoice_date'] = ''
211 res[line.id]['invoice_number'] = ''
212 for move_line in line.move_line_ids:
213 res[line.id]['amount'] += move_line.amount
214 if not res[line.id]['invoice_date']:
215 res[line.id]['invoice_date'] = str(move_line.move_line_id.invoice.date_invoice)
216 else:
217 res[line.id]['invoice_date'] += ', '+str(move_line.move_line_id.invoice.date_invoice)
218 if not res[line.id]['invoice_number']:
219 res[line.id]['invoice_number'] = str(move_line.move_line_id.invoice.internal_number)
220 else:
221 res[line.id]['invoice_number'] += ', '+str(move_line.move_line_id.invoice.internal_number)
222 return res
223
224 def _reconciled(self, cr, uid, ids, name, args, context=None):
225 wf_service = netsvc.LocalService("workflow")
226 res = {}
227 for id in ids:
228 res[id] = self.test_paid(cr, uid, [id])
229 if res[id]:
230 self.write(cr, uid, id, {'state': 'paid'}, context=context)
231 wf_service.trg_validate(
232 uid, 'riba.distinta',
233 self.browse(cr, uid, id).distinta_id.id, 'paid', cr)
234 return res
235
236 def move_line_id_payment_gets(self, cr, uid, ids, *args):
237 res = {}
238 if not ids: return res
239 cr.execute('SELECT distinta_line.id, l.id '\
240 'FROM account_move_line l '\
241 'LEFT JOIN riba_distinta_line distinta_line ON (distinta_line.acceptance_move_id=l.move_id) '\
242 'WHERE distinta_line.id IN %s '\
243 'AND l.account_id=distinta_line.acceptance_account_id',
244 (tuple(ids),))
245 for r in cr.fetchall():
246 res.setdefault(r[0], [])
247 res[r[0]].append( r[1] )
248 return res
249
250 # return the ids of the move lines which has the same account than the statement
251 # whose id is in ids
252 def move_line_id_payment_get(self, cr, uid, ids, *args):
253 if not ids: return []
254 result = self.move_line_id_payment_gets(cr, uid, ids, *args)
255 return result.get(ids[0], [])
256
257 def test_paid(self, cr, uid, ids, *args):
258 res = self.move_line_id_payment_get(cr, uid, ids)
259 if not res:
260 return False
261 ok = True
262 for id in res:
263 cr.execute('select reconcile_id from account_move_line where id=%s', (id,))
264 ok = ok and bool(cr.fetchone()[0])
265 return ok
266
267 def _get_riba_line_from_move_line(self, cr, uid, ids, context=None):
268 move = {}
269 for line in self.pool.get('account.move.line').browse(cr, uid, ids, context=context):
270 if line.reconcile_partial_id:
271 for line2 in line.reconcile_partial_id.line_partial_ids:
272 move[line2.move_id.id] = True
273 if line.reconcile_id:
274 for line2 in line.reconcile_id.line_id:
275 move[line2.move_id.id] = True
276 line_ids = []
277 if move:
278 line_ids = self.pool.get('riba.distinta.line').search(
279 cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
280 return line_ids
281
282 def _get_line_from_reconcile(self, cr, uid, ids, context=None):
283 move = {}
284 for r in self.pool.get('account.move.reconcile').browse(cr, uid, ids, context=context):
285 for line in r.line_partial_ids:
286 move[line.move_id.id] = True
287 for line in r.line_id:
288 move[line.move_id.id] = True
289 line_ids = []
290 if move:
291 line_ids = self.pool.get('riba.distinta.line').search(
292 cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
293 return line_ids
294
295 def _compute_lines(self, cr, uid, ids, name, args, context=None):
296 result = {}
297 for riba_line in self.browse(cr, uid, ids, context=context):
298 src = []
299 lines = []
300 if riba_line.acceptance_move_id:
301 for m in riba_line.acceptance_move_id.line_id:
302 temp_lines = []
303 if m.reconcile_id and m.credit == 0.0:
304 temp_lines = map(lambda x: x.id, m.reconcile_id.line_id)
305 elif m.reconcile_partial_id and m.credit == 0.0:
306 temp_lines = map(lambda x: x.id, m.reconcile_partial_id.line_partial_ids)
307 lines += [x for x in temp_lines if x not in lines]
308 src.append(m.id)
309
310 lines = filter(lambda x: x not in src, lines)
311 result[riba_line.id] = lines
312 return result
313
314 # TODO estendere la account_due_list per visualizzare e filtrare in base alle riba ?
315 _name = 'riba.distinta.line'
316 _description = 'Riba details'
317 _rec_name = 'sequence'
318
319 _columns = {
320 'sequence': fields.integer('Number'),
321 'move_line_ids': fields.one2many('riba.distinta.move.line', 'riba_line_id', 'Credit move lines'),
322 'acceptance_move_id': fields.many2one('account.move', 'Acceptance Entry', readonly=True),
323 'unsolved_move_id': fields.many2one('account.move', 'Unsolved Entry', readonly=True),
324 'acceptance_account_id': fields.many2one('account.account', 'Acceptance Account'),
325 'amount' : fields.function(_get_line_values, method=True, string="Amount", multi="line"),
326 'bank_id': fields.many2one('res.partner.bank', 'Debitor Bank'),
327 'iban': fields.related('bank_id', 'iban', type='char', string='IBAN', store=False, readonly=True),
328 'distinta_id': fields.many2one('riba.distinta', 'Distinta', required=True, ondelete='cascade'),
329 'partner_id' : fields.many2one('res.partner', "Cliente", readonly=True),
330 'invoice_date' : fields.function(_get_line_values, string="Invoice Date", type='char', size=256, method=True, multi="line"),
331 'invoice_number' : fields.function(_get_line_values, string="Invoice Number", type='char', size=256, method=True, multi="line"),
332 'due_date' : fields.date("Due date", readonly=True),
333 'state': fields.selection([
334 ('draft', 'Draft'),
335 ('confirmed', 'Confirmed'),
336 ('accredited', 'Accredited'),
337 ('paid', 'Paid'),
338 ('unsolved', 'Unsolved'),
339 ], 'State', select=True, readonly=True),
340 'reconciled': fields.function(_reconciled, string='Paid/Reconciled', type='boolean',
341 store={
342 'riba.distinta.line': (lambda self, cr, uid, ids, c={}: ids, ['acceptance_move_id'], 50),
343 'account.move.line': (_get_riba_line_from_move_line, None, 50),
344 'account.move.reconcile': (_get_line_from_reconcile, None, 50),
345 }, 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."),
346 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
347 'type': fields.related('distinta_id', 'type', type='char', size=32, string='Type', readonly=True),
348 }
349
350 def confirm(self, cr, uid, ids, context=None):
351 move_pool = self.pool.get('account.move')
352 move_line_pool = self.pool.get('account.move.line')
353 wf_service = netsvc.LocalService("workflow")
354 for line in self.browse(cr, uid, ids, context=context):
355 journal = line.distinta_id.config.acceptance_journal_id
356 total_credit = 0.0
357 move_id= move_pool.create(cr, uid, {
358 'ref': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
359 'journal_id': journal.id,
360 }, context=context)
361 to_be_reconciled = []
362 for riba_move_line in line.move_line_ids:
363 total_credit += riba_move_line.amount
364 move_line_id = move_line_pool.create(cr, uid, {
365 'name': riba_move_line.move_line_id.invoice.number,
366 'partner_id': line.partner_id.id,
367 'account_id': riba_move_line.move_line_id.account_id.id,
368 'credit': riba_move_line.amount,
369 'debit': 0.0,
370 'move_id': move_id,
371 }, context=context)
372 to_be_reconciled.append([move_line_id, riba_move_line.move_line_id.id])
373 move_line_pool.create(cr, uid, {
374 'name': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
375 'account_id': line.acceptance_account_id.id,
376 'partner_id': line.partner_id.id,
377 'date_maturity': line.due_date,
378 'credit': 0.0,
379 'debit': total_credit,
380 'move_id': move_id,
381 }, context=context)
382 move_pool.post(cr, uid, [move_id], context=context)
383 for reconcile_ids in to_be_reconciled:
384 move_line_pool.reconcile_partial(cr, uid, reconcile_ids, context=context)
385 line.write({
386 'acceptance_move_id': move_id,
387 'state': 'confirmed',
388 })
389 wf_service.trg_validate(
390 uid, 'riba.distinta', line.distinta_id.id, 'accepted', cr)
391 return True
392
393
394class riba_distinta_move_line(orm.Model):
395
396 _name = 'riba.distinta.move.line'
397 _description = 'Riba details'
398 _rec_name = 'amount'
399
400 _columns = {
401 'amount' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
402 'move_line_id': fields.many2one('account.move.line', 'Credit move line'),
403 'riba_line_id': fields.many2one('riba.distinta.line', 'Distinta line', ondelete='cascade'),
404 }
405
0406
=== added file 'l10n_it_ricevute_bancarie/riba_sequence.xml'
--- l10n_it_ricevute_bancarie/riba_sequence.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/riba_sequence.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,17 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data noupdate="1">
4 <record forcecreate="1" id="type_riba_distinta" model="ir.sequence.type">
5 <field name="name">Tipo Distinta Ri.Ba.</field>
6 <field name="code">seq.riba.distinta</field>
7 </record>
8
9 <record forcecreate="1" id="seq_riba_distinta" model="ir.sequence">
10 <field name="name">Distinta Ri.Ba.</field>
11 <field name="code">seq.riba.distinta</field>
12 <field eval="3" name="padding"/>
13 <field name="prefix">%(y)s/</field>
14 </record>
15
16 </data>
17</openerp>
018
=== added file 'l10n_it_ricevute_bancarie/riba_view.xml'
--- l10n_it_ricevute_bancarie/riba_view.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/riba_view.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,180 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data>
4
5 <menuitem name="Ri.Ba." parent="account.menu_finance" id="menu_riba" icon="STOCK_OPEN" />
6
7 <!-- ====================================================== -->
8 <!-- DISTINTA RIBA - FILTRI -->
9 <!-- ====================================================== -->
10 <record id="view_distinta_riba_filtri" model="ir.ui.view">
11 <field name="name">riba.distinta.filtri</field>
12 <field name="model">riba.distinta</field>
13 <field name="arch" type="xml">
14 <search string="Distinte Ri.Ba.">
15 <filter icon="terp-check" string="Draft" domain="[('state','=','draft')]" help="Draft"/>
16 <filter icon="terp-dolar" string="Confirmed" domain="[('state','=','accepted')]" help="Accepted"/>
17 <filter icon="terp-dolar_ok!" string="Paid" domain="[('state','=','paid')]" help="Paid"/>
18 <separator orientation="vertical"/>
19 <field name="name" />
20 <field name="config" />
21 <field name="date_accepted" />
22 <field name="date_paid" />
23 </search>
24 </field>
25 </record>
26
27 <!-- ====================================================== -->
28 <!-- DISTINTA RIBA TREE -->
29 <!-- ====================================================== -->
30 <record model="ir.ui.view" id="view_distinta_riba_tree">
31 <field name="name">riba.distinta.tree</field>
32 <field name="model">riba.distinta</field>
33 <field name="arch" type="xml">
34 <tree string="Distinte Ri.Ba.">
35 <field name="name" />
36 <field name="config" />
37 <field name="date_accepted" />
38 <field name="date_paid" />
39 <field name="state" />
40 </tree>
41 </field>
42 </record>
43
44 <!-- ====================================================== -->
45 <!-- DISTINTA RIBA FORM -->
46 <!-- ====================================================== -->
47 <record model="ir.ui.view" id="view_distinta_riba_form">
48 <field name="name">riba.distinta.form</field>
49 <field name="model">riba.distinta</field>
50 <field name="arch" type="xml">
51 <form string="Ri.Ba. - Distinta">
52 <field name="name" />
53 <field name="config" widget="selection"/>
54 <notebook colspan="4">
55 <page string="General">
56 <field name="line_ids" nolabel="1" colspan="4">
57 <tree string="Detail">
58 <field name="sequence"/>
59 <field name="invoice_number"/>
60 <field name="invoice_date"/>
61 <field name="partner_id"/>
62 <field name="iban"/>
63 <field name="amount" sum="Amount"/>
64 <field name="due_date"/>
65 <field name="state"/>
66 <button name="%(riba_unsolved_action)d" type='action' attrs="{'invisible':['|',('type','=','incasso'),('state','!=','accredited')]}" string="Unsolved" icon="terp-dolar_ok!"/>
67 <field name="type" invisible="1" />
68 </tree>
69 <form string="Detail">
70 <notebook colspan="4">
71 <page string="General">
72 <field name="sequence"/>
73 <field name="invoice_number"/>
74 <field name="invoice_date"/>
75 <field name="partner_id"/>
76 <field name="amount" />
77 <field name="due_date"/>
78 <field name="state"/>
79 <field name="reconciled" />
80 </page>
81 <page string="Accounting">
82 <separator string="Invoice entries" colspan="4"/>
83 <field name="move_line_ids" nolabel="1" colspan="4">
84 <tree string="Move lines">
85 <field name="amount" />
86 <field name="move_line_id"/>
87 </tree>
88 <form string="Move line">
89 <field name="amount" />
90 <field name="move_line_id"/>
91 </form>
92 </field>
93 <field name="acceptance_account_id"/>
94 <field name="acceptance_move_id"/>
95 <separator string="Payments" colspan="4"/>
96 <field name="payment_ids" nolabel="1" colspan="4">
97 <tree string="Payments">
98 <field name="date"/>
99 <field name="move_id"/>
100 <field name="ref"/>
101 <field name="name"/>
102 <field name="journal_id" groups="base.group_user"/>
103 <field name="debit"/>
104 <field name="credit"/>
105 <field name="amount_currency"/>
106 <field name="currency_id"/>
107 </tree>
108 </field>
109 <field name="unsolved_move_id"/>
110 </page>
111 </notebook>
112 </form>
113 </field>
114 <group col="2" colspan="2">
115 <field name="state" readonly="1" nolabel="1" colspan="2" />
116 <field name="type" invisible="1" />
117 </group>
118 <group col="2" colspan="2">
119 <button name="confirm" type='object' string="Accepted" icon="gtk-apply" attrs="{'invisible':['|',('state','!=','draft'),('type','=','incasso')]}"/>
120 <button name="%(riba_accreditation_action)d" type='action' attrs="{'invisible':['|',('state','!=','accepted'),('type','=','incasso')]}" string="Accredited" icon="gtk-apply"/>
121 <button name="cancel" attrs="{'invisible':[('state','=','cancel')]}" string="Cancel" icon="gtk-cancel"/>
122 <button name="action_cancel_draft" attrs="{'invisible':['|',('state','!=','cancel'),('type','=','incasso')]}" string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
123 </group>
124 </page>
125 <page string="Other Info">
126 <field name="user_id" />
127 <newline/>
128 <field name="date_created" />
129 <field name="date_accepted" />
130 <field name="date_accreditation" />
131 <field name="date_paid" />
132 </page>
133 <page string="Accounting">
134 <separator colspan="4" string="Acceptance Entries"/>
135 <field name='acceptance_move_ids' colspan="4" nolabel="1"/>
136 <separator colspan="4" string="Accreditation Entry"/>
137 <field name='accreditation_move_id' colspan="4" nolabel="1"/>
138 <separator colspan="4" string="Payments"/>
139 <field name='payment_ids' colspan="4" nolabel="1">
140 <tree string="Payments">
141 <field name="date"/>
142 <field name="move_id"/>
143 <field name="ref"/>
144 <field name="name"/>
145 <field name="journal_id" groups="base.group_user"/>
146 <field name="debit"/>
147 <field name="credit"/>
148 <field name="amount_currency"/>
149 <field name="currency_id"/>
150 </tree>
151 </field>
152 <separator colspan="4" string="Unsolved"/>
153 <field name='unsolved_move_ids' colspan="4" nolabel="1"/>
154 </page>
155 </notebook>
156 </form>
157 </field>
158 </record>
159
160 <!-- ====================================================== -->
161 <!-- ACTION DISTINTA RIBA -->
162 <!-- ====================================================== -->
163 <record id="distinta_riba_action" model="ir.actions.act_window">
164 <field name="name">Distinta Ri.Ba.</field>
165 <field name="type">ir.actions.act_window</field>
166 <field name="res_model">riba.distinta</field>
167 <field name="src_model">riba.distinta</field>
168 <field name="view_type">form</field>
169 <field name="view_mode">tree,form</field>
170 <field name="search_view_id" ref="view_distinta_riba_filtri"/>
171 </record>
172
173 <!-- ====================================================== -->
174 <!-- DISTINTA RIBA - MENU -->
175 <!-- ====================================================== -->
176 <menuitem name="Distinte" parent="menu_riba"
177 id="menu_riba_distinte" action="distinta_riba_action" />
178
179 </data>
180</openerp>
0181
=== added file 'l10n_it_ricevute_bancarie/riba_workflow.xml'
--- l10n_it_ricevute_bancarie/riba_workflow.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/riba_workflow.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,112 @@
1<?xml version="1.0"?>
2<openerp>
3 <data>
4 <record model="workflow" id="wkf_riba_distinta">
5 <field name="name">riba.distinta.wkf</field>
6 <field name="osv">riba.distinta</field>
7 <field name="on_create">True</field>
8 </record>
9
10 <record model="workflow.activity" id="act_new">
11 <field name="wkf_id" ref="wkf_riba_distinta" />
12 <field name="flow_start">True</field>
13 <field name="name">new</field>
14 <field name="kind">function</field>
15 <field name="action">riba_new()</field>
16 </record>
17
18 <record model="workflow.activity" id="act_accepted">
19 <field name="wkf_id" ref="wkf_riba_distinta" />
20 <field name="name">accepted</field>
21 <field name="kind">function</field>
22 <field name="action">riba_accepted()</field>
23 </record>
24
25 <record model="workflow.activity" id="act_accredited">
26 <field name="wkf_id" ref="wkf_riba_distinta" />
27 <field name="name">accredited</field>
28 <field name="kind">function</field>
29 <field name="action">riba_accredited()</field>
30 </record>
31
32 <record model="workflow.activity" id="act_paid">
33 <field name="wkf_id" ref="wkf_riba_distinta" />
34 <field name="name">paid</field>
35 <field name="kind">function</field>
36 <field name="action">riba_paid()</field>
37 </record>
38
39 <record model="workflow.activity" id="act_unsolved">
40 <field name="wkf_id" ref="wkf_riba_distinta" />
41 <field name="name">unsolved</field>
42 <field name="kind">function</field>
43 <field name="action">riba_unsolved()</field>
44 </record>
45
46 <record model="workflow.activity" id="act_cancel">
47 <field name="wkf_id" ref="wkf_riba_distinta" />
48 <field name="name">cancel</field>
49 <field name="kind">function</field>
50 <field name="action">riba_cancel()</field>
51 <field name="flow_stop">True</field>
52 </record>
53
54 <!-- transitions -->
55
56 <record model="workflow.transition" id="new_to_accepted">
57 <field name="act_from" ref="act_new" />
58 <field name="act_to" ref="act_accepted" />
59 <field name="signal">accepted</field>
60 <field name="condition">test_accepted()</field>
61 </record>
62 <record model="workflow.transition" id="accepted_to_accredited">
63 <field name="act_from" ref="act_accepted" />
64 <field name="act_to" ref="act_accredited" />
65 <field name="signal">accredited</field>
66 </record>
67 <record model="workflow.transition" id="accredited_to_paid">
68 <field name="act_from" ref="act_accredited" />
69 <field name="act_to" ref="act_paid" />
70 <field name="signal">paid</field>
71 <field name="condition">test_paid()</field>
72 </record>
73 <record model="workflow.transition" id="accepted_to_paid">
74 <field name="act_from" ref="act_accepted" />
75 <field name="act_to" ref="act_paid" />
76 <field name="signal">paid</field>
77 <field name="condition">test_paid()</field>
78 </record>
79 <record model="workflow.transition" id="accepted_to_cancel">
80 <field name="act_from" ref="act_accepted" />
81 <field name="act_to" ref="act_cancel" />
82 <field name="signal">cancel</field>
83 </record>
84 <record model="workflow.transition" id="new_to_cancel">
85 <field name="act_from" ref="act_new" />
86 <field name="act_to" ref="act_cancel" />
87 <field name="signal">cancel</field>
88 </record>
89 <record model="workflow.transition" id="accredited_to_cancel">
90 <field name="act_from" ref="act_accredited" />
91 <field name="act_to" ref="act_cancel" />
92 <field name="signal">cancel</field>
93 </record>
94 <record model="workflow.transition" id="paid_to_cancel">
95 <field name="act_from" ref="act_paid" />
96 <field name="act_to" ref="act_cancel" />
97 <field name="signal">cancel</field>
98 </record>
99 <record model="workflow.transition" id="accredited_to_unsolved">
100 <field name="act_from" ref="act_accredited" />
101 <field name="act_to" ref="act_unsolved" />
102 <field name="signal">unsolved</field>
103 <field name="condition">test_unsolved()</field>
104 </record>
105 <record model="workflow.transition" id="unsolved_to_cancel">
106 <field name="act_from" ref="act_unsolved" />
107 <field name="act_to" ref="act_cancel" />
108 <field name="signal">cancel</field>
109 </record>
110
111 </data>
112</openerp>
0113
=== added directory 'l10n_it_ricevute_bancarie/security'
=== added file 'l10n_it_ricevute_bancarie/security/ir.model.access.csv'
--- l10n_it_ricevute_bancarie/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/security/ir.model.access.csv 2014-02-20 16:47:57 +0000
@@ -0,0 +1,15 @@
1id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2access_riba_distinta_uinvoice,riba_distinta,model_riba_distinta,account.group_account_invoice,1,1,1,1
3access_riba_distinta_group_invoice,riba_distinta group invoice,model_riba_distinta,account.group_account_invoice,1,1,1,1
4access_riba_distinta_user,riba_distinta user,model_riba_distinta,base.group_user,1,0,0,0
5access_riba_distinta_accountant,riba_distinta accountant,model_riba_distinta,account.group_account_user,1,0,0,0
6access_riba_distinta_line_uinvoice,riba_distinta_line,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
7access_riba_distinta_line_group_invoice,riba_distinta_line group invoice,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
8access_riba_distinta_line_user,riba_distinta_line user,model_riba_distinta_line,base.group_user,1,0,0,0
9access_riba_distinta_line_accountant,riba_distinta_line accountant,model_riba_distinta_line,account.group_account_user,1,0,0,0
10access_riba_distinta_move_line_uinvoice,riba_distinta_move_line,model_riba_distinta_move_line,account.group_account_invoice,1,1,1,1
11access_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
12access_riba_distinta_move_line_user,riba_distinta_move_line user,model_riba_distinta_move_line,base.group_user,1,0,0,0
13access_riba_distinta_move_line_accountant,riba_distinta_move_line accountant,model_riba_distinta_move_line,account.group_account_user,1,0,0,0
14access_riba_configurazione_manager,riba_configurazione,model_riba_configurazione,account.group_account_manager,1,1,1,1
15access_riba_configurazione_invoice,riba_configurazione invoice,model_riba_configurazione,account.group_account_invoice,1,0,0,0
016
=== added directory 'l10n_it_ricevute_bancarie/wizard'
=== added file 'l10n_it_ricevute_bancarie/wizard/__init__.py'
--- l10n_it_ricevute_bancarie/wizard/__init__.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/__init__.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,30 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27import wizard_emissione_riba
28import riba_file_export
29import wizard_accreditation
30import wizard_unsolved
031
=== added file 'l10n_it_ricevute_bancarie/wizard/riba_file_export.py'
--- l10n_it_ricevute_bancarie/wizard/riba_file_export.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/riba_file_export.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,244 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2011-2012 Associazione OpenERP Italia
5# (<http://www.openerp-italia.org>).
6# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
7# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
8# Thanks to Antonio de Vincentiis http://www.devincentiis.it/ ,
9# GAzie http://gazie.sourceforge.net/
10# and Cecchi s.r.l http://www.cecchi.com/
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published by
14# the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27'''
28*****************************************************************************************
29 Questa classe genera il file RiBa standard ABI-CBI passando alla funzione "creaFile" i due array di seguito specificati:
30$intestazione = array monodimensionale con i seguenti index:
31 [0] = credit_sia variabile lunghezza 5 alfanumerico
32 [1] = credit_abi assuntrice variabile lunghezza 5 numerico
33 [2] = credit_cab assuntrice variabile lunghezza 5 numerico
34 [3] = credit_conto conto variabile lunghezza 10 alfanumerico
35 [4] = data_creazione variabile lunghezza 6 numerico formato GGMMAA
36 [5] = nome_supporto variabile lunghezza 20 alfanumerico
37 [6] = codice_divisa variabile lunghezza 1 alfanumerico opzionale default "E"
38 [7] = name_company nome ragione sociale creditore variabile lunghezza 24 alfanumerico
39 [8] = indirizzo_creditore variabile lunghezza 24 alfanumerico
40 [9] = cap_citta_creditore variabile lunghezza 24 alfanumerico
41 [10] = ref (definizione attivita) creditore
42 [11] = codice fiscale/partita iva creditore alfanumerico opzionale
43
44$ricevute_bancarie = array bidimensionale con i seguenti index:
45 [0] = numero ricevuta lunghezza 10 numerico
46 [1] = data scadenza lunghezza 6 numerico
47 [2] = importo in centesimi di euro
48 [3] = nome debitore lunghezza 60 alfanumerico
49 [4] = codice fiscale/partita iva debitore lunghezza 16 alfanumerico
50 [5] = indirizzo debitore lunghezza 30 alfanumerico
51 [6] = cap debitore lunghezza 5 numerico
52 [7] = citta debitore alfanumerico
53 [8] = debitor_province debitore alfanumerico
54 [9] = abi banca domiciliataria lunghezza 5 numerico
55 [10] = cab banca domiciliataria lunghezza 5 numerico
56 [11] = descrizione banca domiciliataria lunghezza 50 alfanumerico
57 [12] = codice cliente attribuito dal creditore lunghezza 16 numerico
58 [13] = numero fattura lunghezza 40 alfanumerico
59 [14] = data effettiva della fattura
60
61'''
62
63import tools
64import base64
65from openerp.osv import fields,orm
66from tools.translate import _
67import datetime
68
69class riba_file_export(orm.TransientModel):
70
71 _progressivo = 0
72 _assuntrice = 0
73 _sia = 0
74 _data = 0
75 _valuta = 0
76 _supporto = 0
77 _totale = 0
78 _creditore = 0
79 _descrizione = ''
80 _codice = ''
81 _comune_provincia_debitor = ''
82
83 def _RecordIB(self, sia_assuntrice, abi_assuntrice, data_creazione, nome_supporto, codice_divisa): #record di testa
84 self._sia = sia_assuntrice.rjust(5,'0')
85 self._assuntrice = abi_assuntrice.rjust(5, '0')
86 self._data = data_creazione.rjust(6, '0')
87 self._valuta = codice_divisa[0:1]
88 self._supporto = nome_supporto.ljust(20, ' ')
89 return " IB" + self._sia + self._assuntrice + self._data + self._supporto + " " * 74 + self._valuta + " " * 6 + "\r\n"
90
91 def _Record14(self, scadenza, importo, abi_assuntrice, cab_assuntrice, conto, abi_domiciliataria, cab_domiciliataria, sia_credit, codice_cliente):
92 self._totale += importo
93 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"
94
95 def _Record20(self, ragione_soc1_creditore, indirizzo_creditore, cap_citta_creditore, ref_creditore,):
96 self._creditore = ragione_soc1_creditore.ljust(24)
97 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"
98
99 def _Record30(self, nome_debitore, codice_fiscale_debitore):
100 return " 30" + str(self._progressivo).rjust(7,'0') + nome_debitore.ljust(60)[0:60] + codice_fiscale_debitore.ljust(16,' ') + " " * 34 + "\r\n"
101
102 def _Record40(self, indirizzo_debitore, cap_debitore, comune_debitore, provincia_debitore, descrizione_domiciliataria=""):
103 self._comune_provincia_debitor = comune_debitore + provincia_debitore.rjust(25-len(comune_debitore),' ')
104 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"
105
106 def _Record50(self, importo_debito, invoice_ref, data_invoice, partita_iva_creditore):
107 self._descrizione = 'PER LA FATTURA N. ' + invoice_ref + ' DEL '+ data_invoice + ' IMP '+ str(importo_debito)
108 return " 50" + str(self._progressivo).rjust(7,'0') + self._descrizione.ljust(80)[0:80] + " " * 10 + partita_iva_creditore.ljust(16,' ') + " " * 4 + "\r\n"
109
110 def _Record51(self, numero_ricevuta_creditore):
111 return " 51" + str(self._progressivo).rjust(7,'0') + str(numero_ricevuta_creditore).rjust(10,'0') + self._creditore[0:20] + " " * 80 + "\r\n"
112
113 def _Record70(self):
114 return " 70" + str(self._progressivo).rjust(7,'0') + " " * 110 + "\r\n"
115
116 def _RecordEF(self): #record di coda
117 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"
118
119 def _creaFile(self, intestazione, ricevute_bancarie):
120 accumulatore = self._RecordIB(intestazione[0], intestazione[1], intestazione[4], intestazione[5], intestazione[6])
121 for value in ricevute_bancarie: #estraggo le ricevute dall'array
122 self._progressivo =self._progressivo + 1
123 accumulatore = accumulatore + self._Record14(
124 value[1], value[2], intestazione[1], intestazione[2], intestazione[3], value[9], value[10], intestazione[0], value[12])
125 accumulatore = accumulatore + self._Record20(intestazione[7], intestazione[8], intestazione[9], intestazione[10])
126 accumulatore = accumulatore + self._Record30(value[3], value[4])
127 accumulatore = accumulatore + self._Record40(value[5], value[6], value[7], value[8], value[11])
128 accumulatore = accumulatore + self._Record50(value[2], value[13], value[14], intestazione[11])
129 accumulatore = accumulatore + self._Record51(value[0])
130 accumulatore = accumulatore + self._Record70()
131 accumulatore = accumulatore + self._RecordEF()
132 self._progressivo = 0
133 self._totale = 0
134 return accumulatore
135
136 def act_getfile(self, cr, uid, ids, context=None):
137 active_ids = context and context.get('active_ids', [])
138 order_obj = self.pool.get('riba.distinta').browse(cr, uid, active_ids, context=context)[0]
139 credit_bank = order_obj.config.bank_id
140 name_company = order_obj.config.company_id.partner_id.name
141 if not credit_bank.iban:
142 raise orm.except_orm('Error', _('No IBAN specified'))
143 credit_abi = credit_bank.iban[5:10]
144 credit_cab = credit_bank.iban[10:15]
145 credit_conto = credit_bank.iban[-12:]
146 if not credit_bank.codice_sia:
147 raise orm.except_orm('Error', _('No SIA Code specified for: ') + name_company)
148 credit_sia = credit_bank.codice_sia
149 credit_account = credit_bank.iban[15:27]
150 dataemissione = datetime.datetime.now().strftime("%d%m%y")
151 nome_supporto = datetime.datetime.now().strftime("%d%m%y%H%M%S") + credit_sia
152 creditor_address = order_obj.config.company_id.partner_id
153 creditor_street = creditor_address.street or ''
154 creditor_city = creditor_address.city or ''
155 creditor_province = creditor_address.province.code or ''
156 if not order_obj.config.company_id.partner_id.vat and not order_obj.config.company_id.partner_id.fiscalcode:
157 raise orm.except_orm('Error', _('No VAT or Fiscalcode specified for: ') + name_company)
158 array_testata = [
159 credit_sia,
160 credit_abi,
161 credit_cab,
162 credit_conto,
163 dataemissione,
164 nome_supporto,
165 'E',
166 name_company,
167 creditor_address.street or '',
168 creditor_address.zip or '' + ' ' + creditor_city,
169 order_obj.config.company_id.partner_id.ref or '',
170 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,
171 ]
172 arrayRiba = []
173 for line in order_obj.line_ids:
174 debit_bank = line.bank_id
175 debitor_address = line.partner_id
176 debitor_street = debitor_address.street or ''
177 debitor_zip = debitor_address.zip or ''
178 if not debit_bank.iban:
179 raise orm.except_orm('Error', _('No IBAN specified for ') + line.partner_id.name)
180 debit_abi = debit_bank.iban[5:10]
181 debit_cab = debit_bank.iban[10:15]
182 debitor_city = debitor_address.city and debitor_address.city.ljust(23)[0:23] or ''
183 debitor_province = debitor_address.province.code or ''
184 if not line.due_date: # ??? VERIFICARE
185 due_date = '000000'
186 else:
187 due_date = datetime.datetime.strptime(line.due_date[:10], '%Y-%m-%d').strftime("%d%m%y")
188
189 if not line.partner_id.vat and not line.partner_id.fiscalcode:
190 raise orm.except_orm('Error', _('No VAT or Fiscal code specified for ') + line.partner_id.name)
191 if not (debit_bank.bank and debit_bank.bank.name or debit_bank.bank_name):
192 raise orm.except_orm('Error', _('No debit_bank specified for ') + line.partner_id.name)
193 Riba = [
194 line.sequence,
195 due_date,
196 line.amount,
197 line.partner_id.name,
198 line.partner_id.vat and line.partner_id.vat[2:] or line.partner_id.fiscalcode,
199 debitor_street,
200 debitor_zip,
201 debitor_city,
202 debitor_province,
203 debit_abi,
204 debit_cab,
205 debit_bank.bank and debit_bank.bank.name or debit_bank.bank_name,
206 line.partner_id.ref or '',
207 #line.move_line_id.name,
208 line.invoice_number,
209 #datetime.datetime.strptime(line.distinta_id.date_created, '%Y-%m-%d').strftime("%d/%m/%Y"),
210 line.invoice_date,
211 ]
212 arrayRiba.append(Riba)
213
214 out=base64.encodestring(self._creaFile(array_testata, arrayRiba).encode("utf8"))
215 self.write(cr, uid, ids, {'state':'get', 'riba_.txt':out}, context=context)
216
217 model_data_obj = self.pool.get('ir.model.data')
218 view_rec = model_data_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'wizard_riba_file_export')
219 view_id = view_rec and view_rec[1] or False
220
221 return {
222 'view_type': 'form',
223 'view_id' : [view_id],
224 'view_mode': 'form',
225 'res_model': 'riba.file.export',
226 'res_id': ids[0],
227 'type': 'ir.actions.act_window',
228 'target': 'new',
229 'context': context,
230 }
231
232 _name = "riba.file.export"
233
234 _columns = {
235 'state': fields.selection( ( ('choose','choose'), # choose accounts
236 ('get','get'), # get the file
237 ) ),
238 'riba_.txt': fields.binary('File', readonly=True),
239 }
240 _defaults = {
241 'state': lambda *a: 'choose',
242 }
243
244
0245
=== added file 'l10n_it_ricevute_bancarie/wizard/riba_file_export.xml'
--- l10n_it_ricevute_bancarie/wizard/riba_file_export.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/riba_file_export.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,32 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3 <data>
4
5 <record id="wizard_riba_file_export" model="ir.ui.view">
6 <field name="name">Export Ri.Ba.</field>
7 <field name="model">riba.file.export</field>
8 <field name="arch" type="xml">
9 <form string="Export Ri.Ba. file">
10 <group col="4">
11 <group colspan="4" >
12 <button icon="gtk-cancel" special="cancel" string="Cancel"/>
13 <button icon="gtk-ok" name="act_getfile" string="Export" type="object"/>
14 </group>
15 <group colspan="4">
16 <field name="riba_.txt" readonly="1"/>
17 </group>
18 </group>
19 </form>
20 </field>
21 </record>
22
23 <act_window name="Export Ri.Ba."
24 res_model="riba.file.export"
25 src_model="riba.distinta"
26 view_mode="form"
27 target="new"
28 key2="client_action_multi"
29 id="action_wizard_riba_file_export"
30 view_id="wizard_riba_file_export"/>
31 </data>
32</openerp>
033
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py'
--- l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,139 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
5# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
6# Copyright (C) 2012 Associazione OpenERP Italia
7# (<http://www.openerp-italia.org>).
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU Affero General Public License as published
11# by the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU Affero General Public License for more details.
18#
19# You should have received a copy of the GNU Affero General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
21#
22##############################################################################
23
24from openerp.osv import fields,orm
25from tools.translate import _
26import netsvc
27
28class riba_accreditation(orm.TransientModel):
29
30 def _get_accreditation_journal_id(self, cr, uid, context=None):
31 return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_journal_id', context=context)
32
33 def _get_accreditation_account_id(self, cr, uid, context=None):
34 return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_account_id', context=context)
35
36 def _get_bank_account_id(self, cr, uid, context=None):
37 return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_account_id', context=context)
38
39 def _get_bank_expense_account_id(self, cr, uid, context=None):
40 return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_expense_account_id', context=context)
41
42 def _get_accreditation_amount(self, cr, uid, context=None):
43 if context is None:
44 context = {}
45 if not context.get('active_id', False):
46 return False
47 distinta_pool = self.pool.get('riba.distinta')
48 distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
49 amount = 0.0
50 for line in distinta.line_ids:
51 amount += line.amount
52 return amount
53
54 _name = "riba.accreditation"
55 _description = "Bank accreditation"
56 _columns = {
57 'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal",
58 domain=[('type', '=', 'bank')]),
59 'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
60 'accreditation_amount': fields.float('Credit amount'),
61 'bank_account_id' : fields.many2one('account.account', "Bank account",
62 domain=[('type', '=', 'liquidity')]),
63 'bank_amount': fields.float('Versed amount'),
64 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
65 'expense_amount': fields.float('Expenses amount'),
66 }
67
68 _defaults = {
69 'accreditation_journal_id': _get_accreditation_journal_id,
70 'accreditation_account_id': _get_accreditation_account_id,
71 'bank_account_id': _get_bank_account_id,
72 'bank_expense_account_id': _get_bank_expense_account_id,
73 'accreditation_amount': _get_accreditation_amount,
74 }
75
76 def skip(self, cr, uid, ids, context=None):
77 if context is None:
78 context = {}
79 wf_service = netsvc.LocalService("workflow")
80 active_id = context and context.get('active_id', False) or False
81 if not active_id:
82 raise orm.except_orm(_('Error'), _('No active ID found'))
83 wf_service.trg_validate(
84 uid, 'riba.distinta', active_id, 'accredited', cr)
85 return {'type': 'ir.actions.act_window_close'}
86
87 def create_move(self, cr, uid, ids, context=None):
88 if context is None:
89 context = {}
90 wf_service = netsvc.LocalService("workflow")
91 active_id = context and context.get('active_id', False) or False
92 if not active_id:
93 raise orm.except_orm(_('Error'), _('No active ID found'))
94 move_pool = self.pool.get('account.move')
95 move_line_pool = self.pool.get('account.move.line')
96 distinta_pool = self.pool.get('riba.distinta')
97 distinta = distinta_pool.browse(cr, uid, active_id, context=context)
98 wizard = self.browse(cr,uid,ids)[0]
99 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:
100 raise orm.except_orm(_('Error'), _('Every account is mandatory'))
101 move_vals = {
102 'ref': _('Accreditation Ri.Ba. %s') % distinta.name,
103 'journal_id': wizard.accreditation_journal_id.id,
104 'line_id': [
105 (0,0, {
106 'name': _('Credit'),
107 'account_id': wizard.accreditation_account_id.id,
108 'credit': wizard.accreditation_amount,
109 'debit': 0.0,
110 }),
111 (0,0, {
112 'name': _('Bank'),
113 'account_id': wizard.bank_account_id.id,
114 'debit': wizard.bank_amount,
115 'credit': 0.0,
116 }),
117 (0,0, {
118 'name': _('Bank'),
119 'account_id': wizard.bank_expense_account_id.id,
120 'debit': wizard.expense_amount,
121 'credit': 0.0,
122 }),
123 ]
124 }
125 move_id = move_pool.create(cr, uid, move_vals, context=context)
126 distinta.write({'accreditation_move_id': move_id})
127 wf_service.trg_validate(
128 uid, 'riba.distinta', active_id, 'accredited', cr)
129 return {
130 'name': _('Accreditation Entry'),
131 'view_type': 'form',
132 'view_mode': 'form',
133 'res_model': 'account.move',
134 'type': 'ir.actions.act_window',
135 'target': 'current',
136 'res_id': move_id or False,
137 }
138
139
0140
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml'
--- l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,41 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<openerp>
4 <data>
5
6 <record id="riba_accreditation" model="ir.ui.view">
7 <field name="name">riba.accreditation.wizard</field>
8 <field name="model">riba.accreditation</field>
9 <field name="arch" type="xml">
10 <form string="Ri.Ba. Accreditation">
11 <separator string="This wizard generates the journal entry related to accreditation received from the bank" colspan="4"/>
12 <field name="accreditation_journal_id" />
13 <newline/>
14 <field name="accreditation_account_id" />
15 <field name="accreditation_amount" />
16 <field name="bank_account_id" />
17 <field name="bank_amount" />
18 <field name="bank_expense_account_id" />
19 <field name="expense_amount" />
20 <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
21 <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
22 <separator string="You can also skip this step and set the distinta status to 'accredited' anyway" colspan="4"/>
23 <button string="Skip and confirm accreditation" name="skip" type="object" icon="gtk-apply" colspan="4"/>
24 </form>
25 </field>
26 </record>
27
28 <record id="riba_accreditation_action" model="ir.actions.act_window">
29 <field name="name">Ri.Ba. Accreditation</field>
30 <field name="type">ir.actions.act_window</field>
31 <field name="res_model">riba.accreditation</field>
32 <field name="src_model">riba.distinta</field>
33 <field name="view_type">form</field>
34 <field name="view_mode">form</field>
35 <field name="target">new</field>
36 <field name="view_id" ref="riba_accreditation"/>
37
38 </record>
39
40 </data>
41</openerp>
042
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py'
--- l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,133 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Andrea Cometa.
5# Email: info@andreacometa.it
6# Web site: http://www.andreacometa.it
7# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
8# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
9# Copyright (C) 2012 Associazione OpenERP Italia
10# (<http://www.openerp-italia.org>).
11#
12# This program is free software: you can redistribute it and/or modify
13# it under the terms of the GNU Affero General Public License as published
14# by the Free Software Foundation, either version 3 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU Affero General Public License for more details.
21#
22# You should have received a copy of the GNU Affero General Public License
23# along with this program. If not, see <http://www.gnu.org/licenses/>.
24#
25##############################################################################
26
27from openerp.osv import fields,orm
28
29# -------------------------------------------------------
30# EMISSIONE RIBA
31# -------------------------------------------------------
32class emissione_riba(orm.TransientModel):
33 _name = "riba.emissione"
34 _description = "Emissione Ricevute Bancarie"
35 _columns = {
36
37 'configurazione' : fields.many2one('riba.configurazione', 'Configurazione', required=True),
38 }
39
40 def crea_distinta(self, cr, uid, ids, context=None):
41 if context is None:
42 context = {}
43 def create_rdl(conta, bank_id, rd_id, date_maturity, partner_id, acceptance_account_id):
44 rdl = {
45 'sequence' : conta,
46 'bank_id' : bank_id,
47 'distinta_id': rd_id,
48 'due_date' : date_maturity,
49 'partner_id' : partner_id,
50 'state': 'draft',
51 'acceptance_account_id': acceptance_account_id,
52 }
53 return riba_distinta_line.create(cr, uid, rdl, context=context)
54
55 """
56 Qui creiamo la distinta
57 """
58 wizard_obj = self.browse(cr,uid,ids)[0]
59 active_ids = context and context.get('active_ids', [])
60 riba_distinta = self.pool.get('riba.distinta')
61 riba_distinta_line = self.pool.get('riba.distinta.line')
62 riba_distinta_move_line = self.pool.get('riba.distinta.move.line')
63 move_line_obj = self.pool.get('account.move.line')
64
65 # create distinta
66 rd = {
67 'name': self.pool.get('ir.sequence').get(cr, uid, 'seq.riba.distinta'),
68 'config': wizard_obj.configurazione.id,
69 'user_id': uid,
70 'date_created': fields.date.context_today(self, cr, uid, context),
71 }
72 rd_id = riba_distinta.create(cr, uid, rd)
73
74 # group by partner and due date
75 grouped_lines = {}
76 move_line_ids = move_line_obj.search(cr, uid, [('id', 'in', active_ids)], context=context)
77 for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
78 if move_line.partner_id.group_riba:
79 if not grouped_lines.get(
80 (move_line.partner_id.id, move_line.date_maturity), False):
81 grouped_lines[(move_line.partner_id.id, move_line.date_maturity)] = []
82 grouped_lines[(move_line.partner_id.id, move_line.date_maturity)].append(
83 move_line)
84
85 # create lines
86 conta = 1
87
88 for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
89 if move_line.partner_id.bank_ids:
90 bank_id = move_line.partner_id.bank_ids[0]
91 else:
92 raise orm.except_orm('Attenzione!', 'Il cliente %s non ha la banca!!!' % move_line.partner_id.name)
93 if move_line.partner_id.group_riba:
94 for key in grouped_lines:
95 if key[0] == move_line.partner_id.id and key[1] == move_line.date_maturity:
96 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)
97 total = 0.0
98 invoice_date_group = ''
99 for grouped_line in grouped_lines[key]:
100 riba_distinta_move_line.create(cr, uid, {
101 'riba_line_id': rdl_id,
102 'amount': grouped_line.amount_residual,
103 'move_line_id': grouped_line.id,
104 }, context=context)
105 del grouped_lines[key]
106 break
107 else:
108 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)
109 riba_distinta_move_line.create(cr, uid, {
110 'riba_line_id': rdl_id,
111 'amount': move_line.amount_residual,
112 'move_line_id': move_line.id,
113 }, context=context)
114
115 conta+=1
116
117 # ----- show distinta form
118 mod_obj = self.pool.get('ir.model.data')
119 res = mod_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'view_distinta_riba_form')
120 res_id = res and res[1] or False,
121 return {
122 'name': 'Distinta',
123 'view_type': 'form',
124 'view_mode': 'form',
125 'view_id': res_id,
126 'res_model': 'riba.distinta',
127 'type': 'ir.actions.act_window',
128 #'nodestroy': True,
129 'target': 'current',
130 'res_id': rd_id or False,
131 }
132
133emissione_riba()
0134
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml'
--- l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,50 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<openerp>
4 <data>
5
6 <!-- ====================================================== -->
7 <!-- WIZARD EMISSIONE RIBA -->
8 <!-- ====================================================== -->
9 <record id="emissione_riba_view" model="ir.ui.view">
10 <field name="name">riba.emissione.wizard</field>
11 <field name="model">riba.emissione</field>
12 <field name="arch" type="xml">
13 <form string="Issue Ri.Ba.">
14 <separator string="This wizard generates the Ri.Ba. list, do you confirm?" colspan="4"/>
15 <field name="configurazione"/>
16 <group col="4" colspan="4">
17 <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
18 <button string="Create" name="crea_distinta" type="object" icon="gtk-ok" colspan="2"/>
19 </group>
20 </form>
21 </field>
22 </record>
23
24 <!-- ====================================================== -->
25 <!-- ACTION EMISSIONE RIBA -->
26 <!-- ====================================================== -->
27 <record id="emissione_riba_action" model="ir.actions.act_window">
28 <field name="name">Issue Ri.Ba.</field>
29 <field name="type">ir.actions.act_window</field>
30 <field name="res_model">riba.emissione</field>
31 <field name="src_model">account.move.line</field>
32 <field name="view_type">form</field>
33 <field name="view_mode">form</field>
34 <field name="target">new</field>
35 <field name="view_id" ref="emissione_riba_view"/>
36
37 </record>
38
39 <record model="ir.values" id="emissione_riba_client_action">
40 <!--field name="model_id" ref="sale.model_sale_order" /
41 <field name="object" eval="1" /> -->
42 <field name="name">Issue Ri.Ba.</field>
43 <field name="key2">client_action_multi</field>
44 <field name="value" eval="'ir.actions.act_window,' + str(ref('emissione_riba_action'))" />
45 <field name="key">action</field>
46 <field name="model">account.move.line</field>
47 </record>
48
49 </data>
50</openerp>
051
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py'
--- l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py 2014-02-20 16:47:57 +0000
@@ -0,0 +1,177 @@
1# -*- coding: utf-8 -*-
2##############################################################################
3#
4# Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
5# Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
6# Copyright (C) 2012 Associazione OpenERP Italia
7# (<http://www.openerp-italia.org>).
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU Affero General Public License as published
11# by the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU Affero General Public License for more details.
18#
19# You should have received a copy of the GNU Affero General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
21#
22##############################################################################
23
24from openerp.osv import fields,orm
25from tools.translate import _
26import netsvc
27
28class riba_unsolved(orm.TransientModel):
29
30 def _get_unsolved_journal_id(self, cr, uid, context=None):
31 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'unsolved_journal_id', context=context)
32
33 def _get_effects_account_id(self, cr, uid, context=None):
34 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'acceptance_account_id', context=context)
35
36 def _get_effects_amount(self, cr, uid, context=None):
37 if context is None:
38 context = {}
39 if not context.get('active_id', False):
40 return False
41 return self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context).amount
42
43 def _get_riba_bank_account_id(self, cr, uid, context=None):
44 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'accreditation_account_id', context=context)
45
46 def _get_overdue_effects_account_id(self, cr, uid, context=None):
47 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'overdue_effects_account_id', context=context)
48
49 def _get_bank_account_id(self, cr, uid, context=None):
50 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'bank_account_id', context=context)
51
52 def _get_bank_expense_account_id(self, cr, uid, context=None):
53 return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'protest_charge_account_id', context=context)
54
55
56 _name = "riba.unsolved"
57 _columns = {
58 'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal",
59 domain=[('type', '=', 'bank')]),
60 'effects_account_id' : fields.many2one('account.account', "Effects account",
61 domain=[('type', '=', 'receivable')]),
62 'effects_amount': fields.float('Effects amount'),
63 'riba_bank_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
64 'riba_bank_amount': fields.float('Ri.Ba. bank amount'),
65 'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account",
66 domain=[('type', '=', 'receivable')]),
67 'overdue_effects_amount': fields.float('Overdue Effects amount'),
68 'bank_account_id' : fields.many2one('account.account', "Bank account",
69 domain=[('type', '=', 'liquidity')]),
70 'bank_amount': fields.float('Taken amount'),
71 'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
72 'expense_amount': fields.float('Expenses amount'),
73 }
74
75 _defaults = {
76 'unsolved_journal_id': _get_unsolved_journal_id,
77 'effects_account_id': _get_effects_account_id,
78 'effects_amount': _get_effects_amount,
79 'riba_bank_account_id': _get_riba_bank_account_id,
80 'riba_bank_amount': _get_effects_amount,
81 'overdue_effects_account_id': _get_overdue_effects_account_id,
82 'overdue_effects_amount': _get_effects_amount,
83 'bank_account_id': _get_bank_account_id,
84 'bank_expense_account_id': _get_bank_expense_account_id,
85 }
86
87 def skip(self, cr, uid, ids, context=None):
88 if context is None:
89 context = {}
90 wf_service = netsvc.LocalService("workflow")
91 active_id = context and context.get('active_id', False) or False
92 if not active_id:
93 raise orm.except_orm(_('Error'), _('No active ID found'))
94 line_pool = self.pool.get('riba.distinta.line')
95 line_pool.write(cr, uid, active_id,
96 {'state': 'unsolved'}, context=context)
97 wf_service.trg_validate(
98 uid, 'riba.distinta', line_pool.browse(cr, uid, active_id).distinta_id.id, 'unsolved', cr)
99 return {'type': 'ir.actions.act_window_close'}
100
101 def create_move(self, cr, uid, ids, context=None):
102 if context is None:
103 context = {}
104 wf_service = netsvc.LocalService("workflow")
105 active_id = context and context.get('active_id', False) or False
106 if not active_id:
107 raise orm.except_orm(_('Error'), _('No active ID found'))
108 move_pool = self.pool.get('account.move')
109 invoice_pool = self.pool.get('account.invoice')
110 move_line_pool = self.pool.get('account.move.line')
111 distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, active_id, context=context)
112 wizard = self.browse(cr,uid,ids)[0]
113 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:
114 raise orm.except_orm(_('Error'), _('Every account is mandatory'))
115 move_vals = {
116 'ref': _('Unsolved Ri.Ba. %s - line %s') % (distinta_line.distinta_id.name, distinta_line.sequence),
117 'journal_id': wizard.unsolved_journal_id.id,
118 'line_id': [
119 (0,0, {
120 'name': _('Effects'),
121 'account_id': wizard.effects_account_id.id,
122 'credit': wizard.effects_amount,
123 'debit': 0.0,
124 }),
125 (0,0, {
126 'name': _('Ri.Ba. Bank'),
127 'account_id': wizard.riba_bank_account_id.id,
128 'debit': wizard.riba_bank_amount,
129 'credit': 0.0,
130 }),
131 (0,0, {
132 'name': _('Overdue Effects'),
133 'account_id': wizard.overdue_effects_account_id.id,
134 'debit': wizard.overdue_effects_amount,
135 'credit': 0.0,
136 'partner_id': distinta_line.partner_id.id,
137 'date_maturity': distinta_line.due_date,
138 }),
139 (0,0, {
140 'name': _('Bank'),
141 'account_id': wizard.bank_account_id.id,
142 'credit': wizard.bank_amount,
143 'debit': 0.0,
144 }),
145 (0,0, {
146 'name': _('Expenses'),
147 'account_id': wizard.bank_expense_account_id.id,
148 'debit': wizard.expense_amount,
149 'credit': 0.0,
150 }),
151 ]
152 }
153 move_id = move_pool.create(cr, uid, move_vals, context=context)
154
155 for move_line in move_pool.browse(cr, uid, move_id, context=context).line_id:
156 if move_line.account_id.id == wizard.overdue_effects_account_id.id:
157 for riba_move_line in distinta_line.move_line_ids:
158 invoice_pool.write(cr, uid, riba_move_line.move_line_id.invoice.id, {
159 'unsolved_move_line_ids': [(4, move_line.id)],
160 }, context=context)
161
162 distinta_line.write({
163 'unsolved_move_id': move_id,
164 'state': 'unsolved',
165 })
166 wf_service.trg_validate(
167 uid, 'riba.distinta', distinta_line.distinta_id.id, 'unsolved', cr)
168 return {
169 'name': _('Unsolved Entry'),
170 'view_type': 'form',
171 'view_mode': 'form',
172 'res_model': 'account.move',
173 'type': 'ir.actions.act_window',
174 'target': 'current',
175 'res_id': move_id or False,
176 }
177
0178
=== added file 'l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml'
--- l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml 1970-01-01 00:00:00 +0000
+++ l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml 2014-02-20 16:47:57 +0000
@@ -0,0 +1,45 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<openerp>
4 <data>
5
6 <record id="riba_unsolved" model="ir.ui.view">
7 <field name="name">riba.unsolved.wizard</field>
8 <field name="model">riba.unsolved</field>
9 <field name="arch" type="xml">
10 <form string="Ri.Ba. Unsolved">
11 <separator string="This wizard generates the journal entry related to an unsolved payment" colspan="4"/>
12 <field name="unsolved_journal_id" />
13 <newline/>
14 <field name="effects_account_id" />
15 <field name="effects_amount" />
16 <field name="riba_bank_account_id" />
17 <field name="riba_bank_amount" />
18 <field name="overdue_effects_account_id" />
19 <field name="overdue_effects_amount" />
20 <field name="bank_account_id" />
21 <field name="bank_amount" />
22 <field name="bank_expense_account_id" />
23 <field name="expense_amount" />
24 <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
25 <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
26 <separator string="You can also skip this step and set the line status to 'unsolved' anyway" colspan="4"/>
27 <button string="Skip and confirm the unsolved state" name="skip" type="object" icon="gtk-apply" colspan="4"/>
28 </form>
29 </field>
30 </record>
31
32 <record id="riba_unsolved_action" model="ir.actions.act_window">
33 <field name="name">Ri.Ba. Unsolved</field>
34 <field name="type">ir.actions.act_window</field>
35 <field name="res_model">riba.unsolved</field>
36 <field name="src_model">riba.distinta.line</field>
37 <field name="view_type">form</field>
38 <field name="view_mode">form</field>
39 <field name="target">new</field>
40 <field name="view_id" ref="riba_unsolved"/>
41
42 </record>
43
44 </data>
45</openerp>

Subscribers

People subscribed via source and target branches