← Back to team overview

openobject-italia-core-devs team mailing list archive

[Merge] lp:~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie into lp:openobject-italia/7.0

 

Davide Corio has proposed merging lp:~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie into lp:openobject-italia/7.0.

Requested reviews:
  OpenERP Italia core devs (openobject-italia-core-devs)

For more details, see:
https://code.launchpad.net/~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie/+merge/191903

v7 porting
-- 
https://code.launchpad.net/~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie/+merge/191903
Your team OpenERP Italia core devs is requested to review the proposed merge of lp:~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie into lp:openobject-italia/7.0.
=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,3 @@
+Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxx>
+Andrea Cometa <info@xxxxxxxxxxxxxxx>
+Davide Corio <info@xxxxxxxxxxxxxxx>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import configurazione
+import partner
+import riba
+import account
+import wizard
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    "name": "Ricevute Bancarie",
+    "version": "1.3",
+    "author": "OpenERP Italian Community",
+    "category": "Accounting & Finance",
+    "website": "http://www.openerp-italia.org";,
+    "description": """
+Gestione delle Ricevute Bancarie
+--------------------------------
+Nella configurazione delle Ri.Ba. è possibile specificare se si tratti di 'salvo buon fine' o 'al dopo incasso'. I due tipi di Ri.Ba. hanno un flusso completamente diverso. In caso di 'al dopo incasso', nessuna registrazione verrà effettuata automaticamente e le fatture risulteranno pagate solo al momento dell'effettivo incasso.
+
+E' possibile specificare diverse configurazioni (dal menù configurazioni -> varie -> Ri.Ba.). Per ognuna, in caso di 'salvo buon fine', è necessario specificare almeno il sezionale ed il conto da utilizzare al momento dell'accettazione della distinta da parte della banca.
+La configurazione relativa alla fase di accredito, verrà usata nel momento in cui la banca accredita l'importo della distinta. Mentre quella relativa all'insoluto verrà utilizzato in caso di mancato pagamento da parte del cliente.
+
+Per utilizzare il meccanismo delle Ri.Ba. è necessario configurare un termine di pagamento di tipo 'Ri.Ba.'.
+
+Per emettere una distinta bisogna andare su Ri.Ba. -> emetti Ri.Ba. e selezionare i pagamenti per i quali emettere la distinta.
+Se per il cliente è stato abilitato il raggruppo, i pagamenti dello stesso cliente e con la stessa data di scadenza andranno a costituire un solo elemento della distinta.
+
+I possibili stati della distinta sono: bozza, accettata, accreditata, pagata, insoluta, annullata.
+Ad ogni passaggio di stato sarà possibile generare le relative registrazioni contabili, le quali verranno riepilogate nel tab 'contabilità'. Questo tab è presente sia sulla distinta che sulle sue righe.
+
+Qui https://docs.google.com/document/d/1xCqeTcY6CF-Dgk_Avthhy7iwg_aG86WzNv3E_HHQkt4/edit# abbiamo un esempio delle tipiche registrazioni generate da un flusso 'salvo buon fine'.
+    """,
+    'images': [],
+    'depends': ['account','account_voucher', 'l10n_it_fiscalcode'],
+    'init_xml': [],
+    'data': [
+        "partner/partner_view.xml",
+        "configurazione_view.xml",
+        "riba_sequence.xml",
+        "wizard/wizard_accreditation.xml",
+        "wizard/wizard_unsolved.xml",
+        "riba_view.xml",
+        "account/account_view.xml",
+        "wizard/wizard_emissione_riba.xml",
+        "wizard/riba_file_export.xml",
+        "riba_workflow.xml",
+        "security/ir.model.access.csv",
+    ],
+    'demo_xml': [],
+    'test': [],
+    'installable': True,
+    'active': False,
+}

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import account
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields, orm
+
+class account_payment_term(orm.Model):
+    # flag riba utile a distinguere la modalità di pagamento
+    _inherit = 'account.payment.term'
+    
+    _columns = {
+        'riba' : fields.boolean('Riba'),
+    }
+    _defaults = {
+        'riba': False,
+    }
+
+
+class res_bank_add_field(orm.Model):
+    _inherit = 'res.bank'
+    _columns = {
+        'banca_estera' : fields.boolean('Banca Estera'),
+    }
+
+
+class res_partner_bank_add(orm.Model):
+    _inherit = 'res.partner.bank'
+    _columns = {
+        'codice_sia' : fields.char('Codice SIA', size=5, help="Identification Code of the Company in the System Interbank")    
+    }
+
+
+# se distinta_line_ids == None allora non è stata emessa
+class account_move_line(orm.Model):
+    _inherit = "account.move.line"
+
+    def _get_invoice(self, cr, uid, ids, field_name, arg, context=None):
+        invoice_pool = self.pool.get('account.invoice')
+        res = {}
+        for line in self.browse(cr, uid, ids):
+            inv_ids = invoice_pool.search(cr, uid, [('move_id', '=', line.move_id.id)])
+            if len(inv_ids)>1:
+                raise orm.except_orm(_('Error'), _('Incongruent data: move %s has more than one invoice') % line.move_id.name)
+            if inv_ids:
+                res[line.id] = inv_ids[0]
+            else:
+                res[line.id] = False
+        return res
+
+    def _get_move_lines(self, cr, uid, ids, context=None):
+        invoice_pool = self.pool.get('account.invoice')
+        res = []
+        for invoice in invoice_pool.browse(cr, uid, ids):
+            if invoice.move_id:
+                for line in invoice.move_id.line_id:
+                    if line.id not in res:
+                        res.append(line.id)
+        return res
+
+    _columns = {
+        'distinta_line_ids' : fields.one2many('riba.distinta.move.line', 'move_line_id', "Dettaglio riba"),
+        'riba': fields.related('invoice', 'payment_term', 'riba', 
+            type='boolean', string='RiBa', store=False),
+        'unsolved_invoice_ids': fields.many2many('account.invoice', 'invoice_unsolved_line_rel', 'line_id', 'invoice_id', 'Unsolved Invoices'),
+        'iban' : fields.related('partner_id', 'bank_ids', 'iban', type='char', string='IBAN', store=False),
+        'invoice_origin': fields.related('invoice', 'origin', type='char', string='Source Doc', store=False),
+        'invoice_date': fields.related('invoice', 'date_invoice', type='date', string='Invoice Date', store=False),
+        'payment_term_id': fields.related('invoice', 'payment_term', type='many2one', string='Payment Term', store=False, relation="account.payment.term"),
+        'stored_invoice_id': fields.function(_get_invoice, method=True, string="Invoice", type="many2one", relation="account.invoice",
+            store={
+                'account.move.line': (lambda self, cr, uid, ids, c={}: ids, ['move_id'], 10),
+                'account.invoice': (_get_move_lines, ['move_id'], 10),
+                }),
+        'partner_ref': fields.related('partner_id', 'ref', type='char', string='Partner Ref', store=False),
+    }
+    _defaults = {
+        'distinta_line_ids' : None,
+    }
+
+    def fields_view_get(self, cr, uid, view_id=None, view_type='form', context={}, toolbar=False, submenu=False):
+        model_data_obj = self.pool.get('ir.model.data')
+        ids = model_data_obj.search(cr, uid, [('module','=','l10n_it_ricevute_bancarie'), ('name','=','view_riba_da_emettere_tree')])
+        if ids:
+            view_payments_tree_id = self.pool.get('ir.model.data').get_object_reference(
+                cr, uid, 'l10n_it_ricevute_bancarie', 'view_riba_da_emettere_tree')
+        if ids and view_id == view_payments_tree_id[1]:
+            # Use RiBa list - grazie a eLBati @ account_due_list
+            result = super(orm.Model, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
+        else:
+            # Use special views for account.move.line object (for ex. tree view contains user defined fields)
+            result = super(account_move_line, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
+        return result
+
+
+class account_invoice(orm.Model):
+    _inherit = "account.invoice"
+    _columns = {
+        'unsolved_move_line_ids': fields.many2many('account.move.line', 'invoice_unsolved_line_rel', 'invoice_id', 'line_id', 'Unsolved journal items'),
+        }

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <!-- ====================================================== -->
+        <!--                     CAMPI AGGIUNTIVI                    -->
+        <!-- ====================================================== -->
+        <record id="view_riba_add_text_field" model="ir.ui.view">
+            <field name="name">account.riba.add.text.field</field>
+            <field name="model">account.payment.term</field>
+            <field name="inherit_id" ref="account.view_payment_term_form"/>
+            <field name="arch" type="xml">
+                <field name="active" position="after">
+                    <field name="riba"/>
+                </field>
+            </field>
+        </record>
+        <record id="view_res_bank_add_text_field" model="ir.ui.view">
+            <field name="name">res.bank.add.text.field</field>
+            <field name="model">res.bank</field>
+            <field name="inherit_id" ref="base.view_res_bank_form"/>
+            <field name="arch" type="xml">
+                 <field name="bic" position="after">
+                    <field name="banca_estera"/>
+                 </field>
+             </field>
+        </record>
+        <record id="view_partner_bank_sia_form" model="ir.ui.view">
+            <field name="name">res.partner.bank.form.sia.inherit</field>
+            <field name="model">res.partner.bank</field>
+            <field name="inherit_id" ref="base.view_partner_bank_form"/>
+            <field name="arch" type="xml">
+                <field name="acc_number" position="after">
+                    <field name="codice_sia"/>
+                </field>
+            </field>
+        </record>
+        
+    <!-- Riba da emettere Tree View -->
+
+    <record model="ir.ui.view" id="view_riba_da_emettere_tree">
+        <field name="name">Issue Ri.Ba.</field>
+        <field name="model">account.move.line</field>
+        <field name="arch" type="xml">
+            <tree string="Issue Ri.Ba." colors="red:date_maturity&lt;current_date">
+                <field name="stored_invoice_id" readonly="1"/>
+                <field name="invoice_date" readonly="1"/>
+                <field name="invoice_origin" readonly="1"/>
+                <field name="partner_id" readonly="1"/>
+                <field name="iban" readonly="1"/>
+                <field name="partner_ref" readonly="1"/>
+                <field name="payment_term_id" readonly="1"/>
+                <field name="account_id" readonly="1"/>
+                <field name="debit" readonly="1" sum="Total Debit"/>
+                <field name="date_maturity"/>
+                <field name="riba" />
+                <field name="distinta_line_ids" invisible="1" />
+            </tree>
+        </field>
+    </record>
+
+    <!-- Riba da emettere Filtro -->
+
+    <record id="riba_filter" model="ir.ui.view">
+        <field name="name">Ri.Ba. filter</field>
+        <field name="model">account.move.line</field>
+        <field name="arch" type="xml">
+            <search string="Search Journal Items">
+                <filter icon="terp-go-today" string="To Issue" 
+                    domain="[('distinta_line_ids', '=', False)]" name="da_emettere"/>
+                <field name="account_id"/>
+                <field name="partner_id"/>
+                <field name="invoice"/>
+                <field name="invoice_origin"/>
+                <field name="date_maturity"/>
+                <newline/>
+                <group expand="0" string="Group by..." colspan="11">
+                    <filter string="Group by customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
+                    <filter string="Group by invoice" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'stored_invoice_id'}"/>
+                </group>
+            </search>
+        </field>
+    </record>
+
+    <!-- Riba da emettere Action -->
+
+    <record model="ir.actions.act_window" id="action_riba_da_emettere">
+        <field name="name">Issue Ri.Ba.</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">account.move.line</field>
+        <field name="src_model">account.move.line</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="view_id" ref="view_riba_da_emettere_tree" />
+        <field name="context">{'search_default_da_emettere':1}</field>
+        <field name="domain">['&amp;','|',('riba','=','True'),('unsolved_invoice_ids','!=',False),('account_id.type','=','receivable')]</field>
+        <field name="search_view_id" ref="riba_filter"/>
+    </record>
+
+
+        <menuitem name="Issue Ri.Ba." parent="menu_riba" 
+            id="menu_riba_da_emettere" action="action_riba_da_emettere" />
+
+    <!-- Invoice -->
+
+        <record id="invoice_form" model="ir.ui.view">
+            <field name="name">account.invoice.form</field>
+            <field name="model">account.invoice</field>
+            <field name="inherit_id" ref="account.invoice_form"></field>
+            <field name="arch" type="xml">
+                <field name="payment_ids" position="after">
+                    <separator string="Unsolved Ri.Ba." colspan="4"/>
+                    <field name="unsolved_move_line_ids" colspan="4" nolabel="1"/>
+                </field>
+            </field>
+        </record>
+
+        <record id="action_invoice_tree1" model="ir.actions.act_window">
+            <field name="name">Unsolved Invoices</field>
+            <field name="res_model">account.invoice</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form,calendar,graph</field>
+            <field eval="False" name="view_id"/>
+            <field name="domain">[('type','=','out_invoice'), ('unsolved_move_line_ids', '!=', False)]</field>
+            <field name="context">{'default_type':'out_invoice', 'type':'out_invoice', 'journal_type': 'sale'}</field>
+            <field name="search_view_id" ref="account.view_account_invoice_filter"/>
+        </record>
+
+
+        <record id="action_invoice_tree1_view1" model="ir.actions.act_window.view">
+            <field eval="1" name="sequence"/>
+            <field name="view_mode">tree</field>
+            <field name="act_window_id" ref="action_invoice_tree1"/>
+        </record>
+
+        <record id="action_invoice_tree1_view2" model="ir.actions.act_window.view">
+            <field eval="2" name="sequence"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="account.invoice_form"/>
+            <field name="act_window_id" ref="action_invoice_tree1"/>
+        </record>
+        <menuitem name="Unsolved Invoices" parent="menu_riba" 
+            id="menu_invoices" action="action_invoice_tree1" />
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields, orm
+
+class riba_configurazione(orm.Model):
+
+    _name = "riba.configurazione"
+    _description = "Parametri di configurazione per le Ricevute Bancarie"
+
+    _columns = {
+        'name' : fields.char("Descrizione", size=64, required=True),
+        'tipo' : fields.selection((('sbf', 'Salvo buon fine'),('incasso', 'Al dopo incasso')), 
+            "Modalità Emissione", required=True),
+        'bank_id' : fields.many2one('res.partner.bank', "Banca",
+            required=True, help="Bank account used for Ri.Ba. issuing"),
+            
+        'acceptance_journal_id' : fields.many2one('account.journal', "Acceptance journal", 
+            domain=[('type', '=', 'bank')],
+            help="Journal used when Ri.Ba. is accepted by the bank"),
+        'acceptance_account_id' : fields.many2one('account.account', "Acceptance account", 
+            domain=[('type', '=', 'receivable')], help='Account used when Ri.Ba. is accepted by the bank'),
+            
+        'company_id': fields.many2one('res.company', 'Company',required=True),
+        
+        'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal", 
+            domain=[('type', '=', 'bank')],
+            help="Journal used when Ri.Ba. amount is accredited by the bank"),
+        'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account", help='Account used when Ri.Ba. is accepted by the bank'),
+        'bank_account_id' : fields.many2one('account.account', "Bank account", 
+            domain=[('type', '=', 'liquidity')]),
+        'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
+        
+        'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal", 
+            domain=[('type', '=', 'bank')],
+            help="Journal used when Ri.Ba. is unsolved"),
+        'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account", 
+            domain=[('type', '=', 'receivable')]),
+        'protest_charge_account_id' : fields.many2one('account.account', "Protest charge account"),
+    }
+
+    _defaults = {
+        'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.configurazione', context=c),
+    }
+    
+    def get_default_value_by_distinta(self, cr, uid, field_name, context=None):
+        if context is None:
+            context = {}
+        if not context.get('active_id', False):
+            return False
+        distinta_pool = self.pool.get('riba.distinta')
+        distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
+        return distinta.config[field_name] and distinta.config[field_name].id or False
+    
+    def get_default_value_by_distinta_line(self, cr, uid, field_name, context=None):
+        if context is None:
+            context = {}
+        if not context.get('active_id', False):
+            return False
+        distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context)
+        return distinta_line.distinta_id.config[field_name] and distinta_line.distinta_id.config[field_name].id or False
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+		<!-- ====================================================== -->
+		<!-- 				CONFIGURAZIONE RIBA FORM 				-->
+		<!-- ====================================================== -->
+		<record model="ir.ui.view" id="view_riba_configurazione_form">
+			<field name="name">riba.configurazione.form</field>
+			<field name="model">riba.configurazione</field>
+			<field name="arch" type="xml">
+				<form string="Ri.Ba. - Configurazione">
+					<field name="name" />
+					<field name="tipo" />
+					<field name="bank_id" />
+                    <field name="company_id"  widget="selection" groups="base.group_multi_company"/>
+                    <group string="Salvo buon fine" attrs="{'invisible': [('tipo','!=','sbf')]}" colspan="4" col="4">
+                        <separator colspan="4" string="Acceptance"/>
+                        <field name="acceptance_journal_id" attrs="{'required':[('tipo','=','sbf')]}"/>
+                        <field name="acceptance_account_id" attrs="{'required':[('tipo','=','sbf')]}"/>
+                        <separator colspan="4" string="Accreditation"/>
+                        <field name="accreditation_journal_id" />
+                        <field name="accreditation_account_id"/>
+                        <field name="bank_account_id" />
+                        <field name="bank_expense_account_id" />
+                        <separator colspan="4" string="Unsolved"/>
+                        <field name="unsolved_journal_id" />
+                        <field name="overdue_effects_account_id" />
+                        <field name="protest_charge_account_id" />
+                    </group>
+				</form>
+			</field>
+		</record>
+		<!-- ====================================================== -->
+		<!-- 				CONFIGURAZIONE RIBA ACTION				-->
+		<!-- ====================================================== -->
+		<record model="ir.actions.act_window" id="action_riba_configurazione">
+				<field name="name">Ri.Ba. - Configuration</field>
+				<field name="type">ir.actions.act_window</field>
+				<field name="res_model">riba.configurazione</field>
+				<field name="view_type">form</field>
+				<field name="view_mode">tree,form</field>
+				<!--field name="view_id" ref="view_riba_configurazione_form"/-->
+		</record>
+		<!-- ====================================================== -->
+		<!-- 				CONFIGURAZIONE RIBA MENU 				-->
+		<!-- ====================================================== -->
+		<menuitem action="action_riba_configurazione" id="menu_riba_configurazione" name="Ri.Ba. Configuration" parent="account.menu_configuration_misc"/>
+
+	</data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,930 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* l10n_it_ricevute_bancarie
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-05-21 10:13+0000\n"
+"PO-Revision-Date: 2012-05-21 10:13+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.configurazione,acceptance_account_id:0
+#: help:riba.configurazione,accreditation_account_id:0
+msgid "Account used when Ri.Ba. is accepted by the bank"
+msgstr "Il conto utilizzato quando la Ri.Ba. viene accettata dalla banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:143
+#, python-format
+msgid "No IBAN specified"
+msgstr "Nessun IBAN specificato"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_configurazione
+msgid "Ri.Ba. - Configuration"
+msgstr "Ri.Ba. - Configurazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:res.partner.bank,codice_sia:0
+msgid "Identification Code of the Company in the System Interbank"
+msgstr "Codice identificativo dell'azienda nel sistema interbancario"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.unsolved,effects_account_id:0
+msgid "Effects account"
+msgstr "Conto effetti"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,tipo:0
+msgid "Modalità Emissione"
+msgstr "Modalità Emissione"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:103
+#, python-format
+msgid "Accreditation Ri.Ba. %s"
+msgstr "Accredito Ri.Ba. %s"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.configurazione,acceptance_journal_id:0
+msgid "Journal used when Ri.Ba. is accepted by the bank"
+msgstr "Sezionale utilizzato quando la Ri.Ba. viene accettata dalla banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,accreditation_account_id:0
+#: field:riba.configurazione,accreditation_account_id:0
+#: field:riba.unsolved,riba_bank_account_id:0
+msgid "Ri.Ba. bank account"
+msgstr "Banca conto Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,bank_id:0
+msgid "Debitor Bank"
+msgstr "Banca debitore"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:res.partner,group_riba:0
+msgid "Group Ri.Ba. by customer while issuing"
+msgstr "Raggruppa le Ri.Ba. per cliente durante l'emissione"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:133
+#, python-format
+msgid "Overdue Effects"
+msgstr "Effetti insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,company_id:0
+#: field:riba.distinta,company_id:0
+msgid "Company"
+msgstr "Azienda"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,invoice_date:0
+msgid "Invoice Date"
+msgstr "Data fattura"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Move line"
+msgstr "Riga contabile"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:163
+#, python-format
+msgid "No VAT or Fiscalcode specified for: "
+msgstr "P IVA o codice fiscale non specificato per:"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_wizard_riba_file_export
+msgid "Export Ri.Ba."
+msgstr "Esporta Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:121
+#, python-format
+msgid "Effects"
+msgstr "Effetti"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_accreditation_action
+#: view:riba.accreditation:0
+msgid "Ri.Ba. Accreditation"
+msgstr "Accredito Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:193
+#, python-format
+msgid "No IBAN specified for "
+msgstr "Nessun IBAN specificato per"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:182
+#, python-format
+msgid "No address specified for "
+msgstr "Nessun indirizzo specificato per"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,accreditation_amount:0
+msgid "Credit amount"
+msgstr "Importo credito"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:148
+#, python-format
+msgid "No SIA Code specified for: "
+msgstr "Nessun codice SIA specificato per:"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Move lines"
+msgstr "Righe contabili"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,name:0
+msgid "Descrizione"
+msgstr "Descrizione"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "Total Debit"
+msgstr "Debito totale"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: field:riba.distinta.line,amount:0
+#: field:riba.distinta.move.line,amount:0
+msgid "Amount"
+msgstr "Importo"
+
+#. module: l10n_it_ricevute_bancarie
+#: sql_constraint:account.move.line:0
+msgid "Wrong credit or debit value in accounting entry !"
+msgstr "Valore di credito o debito errato nella registrazione contabile !"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:res.partner.bank,codice_sia:0
+msgid "Codice SIA"
+msgstr "Codice SIA"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:210
+#, python-format
+msgid "No VAT or Fiscal code specified for "
+msgstr "P IVA o codice fiscale non specificato per"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_unsolved
+msgid "riba.unsolved"
+msgstr "riba.unsolved"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.distinta.line,reconciled:0
+msgid "It indicates that the line has been paid and the journal entry of the line has been reconciled with one or several journal entries of payment."
+msgstr "Indica che la riga è stata pagata e la registrazione della riga è stata riconciliata con una o più registrazioni di pagamento"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_file_export
+msgid "riba.file.export"
+msgstr "riba.file.export"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.configurazione:0
+#: view:riba.distinta:0
+#: selection:riba.distinta,state:0
+#: selection:riba.distinta.line,state:0
+msgid "Unsolved"
+msgstr "Insoluto"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,config:0
+msgid "Configuration"
+msgstr "Configurazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,name:0
+msgid "Reference"
+msgstr "Riferimento"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:170
+#: field:riba.distinta.line,unsolved_move_id:0
+#, python-format
+msgid "Unsolved Entry"
+msgstr "Registrazione insoluto"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.distinta,config:0
+msgid "Riba configuration to be used"
+msgstr "Configurazione Ri.Ba. da usare"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:account.move.line:0
+msgid "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
+msgstr "The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Reset to Draft"
+msgstr "Reimposta a bozza"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner
+msgid "Partner"
+msgstr "Partner"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.file.export:0
+msgid "Export Ri.Ba. file"
+msgstr "Esporta file Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:res.bank,banca_estera:0
+msgid "Banca Estera"
+msgstr "Banca Estera"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: selection:riba.distinta.line,state:0
+msgid "Confirmed"
+msgstr "Confermata"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,date_paid:0
+msgid "Paid date"
+msgstr "Data pagamento"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.configurazione:0
+msgid "Accreditation"
+msgstr "Accredito"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.accreditation:0
+#: view:riba.emissione:0
+#: view:riba.unsolved:0
+msgid "Create"
+msgstr "Crea"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,bank_expense_account_id:0
+#: field:riba.configurazione,bank_expense_account_id:0
+#: field:riba.unsolved,bank_expense_account_id:0
+msgid "Bank Expenses account"
+msgstr "Conto spese bancarie"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,state:0
+#: field:riba.distinta.line,state:0
+msgid "State"
+msgstr "Stato"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_riba_da_emettere
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.emissione_riba_action
+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_da_emettere
+#: view:riba.emissione:0
+msgid "Issue Ri.Ba."
+msgstr "Emetti Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.invoice:0
+msgid "Unsolved Ri.Ba."
+msgstr "Ri.Ba. insolute"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,type:0
+#: field:riba.distinta.line,type:0
+msgid "Type"
+msgstr "Tipo"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.configurazione,unsolved_journal_id:0
+msgid "Journal used when Ri.Ba. is unsolved"
+msgstr "Sezionale utilizzato quando la Ri.Ba. è insoluta"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,reconciled:0
+msgid "Paid/Reconciled"
+msgstr "Pagato/Riconciliato"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.emissione,configurazione:0
+msgid "Configurazione"
+msgstr "Configurazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.unsolved,effects_amount:0
+msgid "Effects amount"
+msgstr "Importo effetti"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,expense_amount:0
+#: field:riba.unsolved,expense_amount:0
+msgid "Expenses amount"
+msgstr "Importo spese"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:account.move.line,riba:0
+msgid "RiBa"
+msgstr "Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: selection:riba.file.export,state:0
+msgid "get"
+msgstr "get"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: selection:riba.distinta,state:0
+msgid "Accepted"
+msgstr "Accettata"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "To Issue"
+msgstr "Da emettere"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.distinta_riba_action
+msgid "Distinta Ri.Ba."
+msgstr "Distinta Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: field:riba.distinta,acceptance_move_ids:0
+msgid "Acceptance Entries"
+msgstr "Registrazioni di accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,date_unsolved:0
+msgid "Unsolved date"
+msgstr "Data insoluto"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba
+msgid "Ri.Ba."
+msgstr "Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.move.line,riba_line_id:0
+msgid "Distinta line"
+msgstr "Riga distinta"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:131
+#: view:riba.distinta:0
+#: field:riba.distinta,accreditation_move_id:0
+#, python-format
+msgid "Accreditation Entry"
+msgstr "Registrazione accredito"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,unsolved_journal_id:0
+#: field:riba.unsolved,unsolved_journal_id:0
+msgid "Unsolved journal"
+msgstr "Sezionale insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,move_line_ids:0
+msgid "Credit move lines"
+msgstr "Righe contabili di credito"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,due_date:0
+msgid "Due date"
+msgstr "Data scadenza"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,accreditation_journal_id:0
+#: field:riba.configurazione,accreditation_journal_id:0
+msgid "Accreditation journal"
+msgstr "Sezionale di accredito"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,protest_charge_account_id:0
+msgid "Protest charge account"
+msgstr "Conto spese di protesto"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:account.move.line:0
+msgid "The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal."
+msgstr "The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "Group by..."
+msgstr "Raggruppa per..."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,date_accreditation:0
+msgid "Accreditation date"
+msgstr "Data accredito"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:155
+#, python-format
+msgid "No address specified for: "
+msgstr "Nessun indirizzo specificato per:"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "Search Journal Items"
+msgstr "Cerca scritture"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,overdue_effects_account_id:0
+#: field:riba.unsolved,overdue_effects_account_id:0
+msgid "Overdue Effects account"
+msgstr "Conto effetti insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.unsolved,overdue_effects_amount:0
+msgid "Overdue Effects amount"
+msgstr "Importo effetti insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.accreditation:0
+msgid "You can also skip this step and set the distinta status to 'accredited' anyway"
+msgstr "E' anche possibile saltare questo passo e impostare comunque la distinta dello stato di 'accreditata'"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:191
+#, python-format
+msgid "No CAP specified for "
+msgstr "Nessun CAP specificato per"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.unsolved:0
+msgid "You can also skip this step and set the line status to 'unsolved' anyway"
+msgstr "E' anche possibile saltare questo passo e impostare comunque lo stato della riga a 'insoluta'"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Detail"
+msgstr "Dettaglio"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_emissione
+msgid "Emissione Ricevute Bancarie"
+msgstr "Emissione Ricevute Bancarie"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: selection:riba.distinta,state:0
+#: selection:riba.distinta.line,state:0
+msgid "Draft"
+msgstr "Bozza"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.file.export,state:0
+msgid "unknown"
+msgstr "sconosciuto"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: selection:riba.distinta,state:0
+#: selection:riba.distinta.line,state:0
+msgid "Paid"
+msgstr "Pagata"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_accreditation
+msgid "Bank accreditation"
+msgstr "Accredito banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_line
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta_move_line
+msgid "Riba details"
+msgstr "Dettagli Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,user_id:0
+msgid "User"
+msgstr "Utente"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,unsolved_move_ids:0
+msgid "Unsolved Entries"
+msgstr "Registrazioni insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_move_line
+msgid "Journal Items"
+msgstr "Voci sezionale"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:account.move.line:0
+msgid "You can not create journal items on an account of type view."
+msgstr "Non è possibile effettuare registrazioni su un conto di tipo vista."
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.configurazione,bank_id:0
+msgid "Bank account used for Ri.Ba. issuing"
+msgstr "Conto bancario utilizzato per l'emissione delle Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: selection:riba.file.export,state:0
+msgid "choose"
+msgstr "choose"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:res.partner.bank:0
+msgid "\n"
+"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
+msgstr "\n"
+"Please define BIC/Swift code on bank for bank type IBAN Account to make valid payments"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:127
+#, python-format
+msgid "Ri.Ba. Bank"
+msgstr "Banca Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.unsolved:0
+msgid "This wizard generates the journal entry related to an unsolved payment"
+msgstr "Questo wizard genererà la registrazione relativa ad un pagamento insoluto"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,date_created:0
+msgid "Creation date"
+msgstr "Data creazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Invoice entries"
+msgstr "Registrazioni fattura"
+
+#. module: l10n_it_ricevute_bancarie
+#: help:riba.configurazione,accreditation_journal_id:0
+msgid "Journal used when Ri.Ba. amount is accredited by the bank"
+msgstr "Sezionale utilizzato quando l'import della Ri.Ba. viene accreditato dalla banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,line_ids:0
+msgid "Riba deadlines"
+msgstr "Scadenze Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.unsolved,riba_bank_amount:0
+msgid "Ri.Ba. bank amount"
+msgstr "Importo banca Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:107
+#, python-format
+msgid "Credit"
+msgstr "Credito"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
+#, python-format
+msgid "Error"
+msgstr "Errore"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta,date_accepted:0
+msgid "Acceptance date"
+msgstr "Data accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,acceptance_account_id:0
+msgid "Acceptance account"
+msgstr "Importo accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:187
+#, python-format
+msgid "No Street specified for "
+msgstr "Nessun indirizzo specificato per"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,partner_id:0
+msgid "Cliente"
+msgstr "Cliente"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "Group by customer"
+msgstr "Raggruppa per cliente"
+
+#. module: l10n_it_ricevute_bancarie
+#: sql_constraint:account.invoice:0
+msgid "Invoice Number must be unique per Company!"
+msgstr "Invoice Number must be unique per Company!"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Distinte Ri.Ba."
+msgstr "Distinte Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.accreditation:0
+msgid "Skip and confirm accreditation"
+msgstr "Salta e conferma accredito"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_partner_bank
+msgid "Bank Accounts"
+msgstr "Conti Bancari"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,sequence:0
+msgid "Number"
+msgstr "Numero"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:83
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:94
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:94
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:108
+#, python-format
+msgid "No active ID found"
+msgstr "Nessun ID trovato"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "General"
+msgstr "Generale"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.emissione:0
+msgid "This wizard generates the Ri.Ba. list, do you confirm?"
+msgstr "Questo wizard genererà la distinta Ri.Ba., confermi?"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_invoice
+msgid "Invoice"
+msgstr "Fattura"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.accreditation:0
+#: view:riba.distinta:0
+#: view:riba.emissione:0
+#: view:riba.file.export:0
+#: view:riba.unsolved:0
+msgid "Cancel"
+msgstr "Annulla"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:account.move.line:0
+msgid "Group by invoice"
+msgstr "Raggruppa per fattura"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,acceptance_account_id:0
+msgid "Acceptance Account"
+msgstr "Conto accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: selection:riba.distinta,state:0
+msgid "Canceled"
+msgstr "Annullata"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.riba_unsolved_action
+#: view:riba.unsolved:0
+msgid "Ri.Ba. Unsolved"
+msgstr "Ri.Ba. Insoluta"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:account.invoice,unsolved_move_line_ids:0
+msgid "Unsolved journal items"
+msgstr "Registrazioni insoluti"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:account.move.line:0
+msgid "Company must be the same for its related account and period."
+msgstr "Company must be the same for its related account and period."
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Other Info"
+msgstr "Altre info"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_account_payment_term
+msgid "Payment Term"
+msgstr "Termine di pagamento"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.configurazione:0
+msgid "Acceptance"
+msgstr "Accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: selection:riba.distinta,state:0
+#: selection:riba.distinta.line,state:0
+msgid "Accredited"
+msgstr "Accreditata"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.move.line,move_line_id:0
+msgid "Credit move line"
+msgstr "Riga credito"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.unsolved:0
+msgid "Skip and confirm the unsolved state"
+msgstr "Salta e conferma lo stato di insoluto"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Ri.Ba. - Distinta"
+msgstr "Ri.Ba. - Distinta"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:101
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:115
+#, python-format
+msgid "Every account is mandatory"
+msgstr "Ogni conto è obbligatorio"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.configurazione:0
+msgid "Ri.Ba. - Configurazione"
+msgstr "Ri.Ba. - Configurazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_configurazione
+msgid "Ri.Ba. Configuration"
+msgstr "Ri.Ba. Configurazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:res.partner,group_riba:0
+msgid "Group Ri.Ba."
+msgstr "Raggruppa Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,bank_account_id:0
+#: field:riba.configurazione,bank_account_id:0
+#: field:riba.unsolved,bank_account_id:0
+msgid "Bank account"
+msgstr "Conto banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.unsolved,bank_amount:0
+msgid "Taken amount"
+msgstr "Importo prelevato"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:account.payment.term,riba:0
+msgid "Riba"
+msgstr "Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,invoice_number:0
+msgid "Invoice Number"
+msgstr "Numero fattura"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.accreditation:0
+msgid "This wizard generates the journal entry related to accreditation received from the bank"
+msgstr "Questo wizard genererà la registrazione relativa all'accredito ricevuto dalla banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:res.partner:0
+msgid "Ri.Ba. properties"
+msgstr "Proprietà Ri.Ba."
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:113
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py:119
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:141
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_res_bank
+#, python-format
+msgid "Bank"
+msgstr "Banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:117
+#, python-format
+msgid "Unsolved Ri.Ba. %s - line %s"
+msgstr "Ri.Ba. %s insoluta - riga %s"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_distinta
+msgid "Distinta Riba"
+msgstr "Distinta Riba"
+
+#. module: l10n_it_ricevute_bancarie
+#: selection:riba.configurazione,tipo:0
+msgid "Al dopo incasso"
+msgstr "Al dopo incasso"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+#: field:riba.distinta,payment_ids:0
+#: field:riba.distinta.line,payment_ids:0
+msgid "Payments"
+msgstr "Pagamenti"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.configurazione:0
+#: selection:riba.configurazione,tipo:0
+msgid "Salvo buon fine"
+msgstr "Salvo buon fine"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.accreditation,bank_amount:0
+msgid "Versed amount"
+msgstr "Importo versato"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:account.move.line,unsolved_invoice_ids:0
+#: model:ir.actions.act_window,name:l10n_it_ricevute_bancarie.action_invoice_tree1
+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_invoices
+msgid "Unsolved Invoices"
+msgstr "Fatture insolute"
+
+#. module: l10n_it_ricevute_bancarie
+#: constraint:account.move.line:0
+msgid "You can not create journal items on closed account."
+msgstr "You can not create journal items on closed account."
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/riba_file_export.py:200
+#, python-format
+msgid "No City specified for "
+msgstr "Nessuna città specificata per"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,distinta_id:0
+msgid "Distinta"
+msgstr "Distinta"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.model,name:l10n_it_ricevute_bancarie.model_riba_configurazione
+msgid "Parametri di configurazione per le Ricevute Bancarie"
+msgstr "Parametri di configurazione per le Ricevute Bancarie"
+
+#. module: l10n_it_ricevute_bancarie
+#: model:ir.ui.menu,name:l10n_it_ricevute_bancarie.menu_riba_distinte
+msgid "Distinte"
+msgstr "Distinte"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.distinta.line,acceptance_move_id:0
+msgid "Acceptance Entry"
+msgstr "Registrazione di accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,acceptance_journal_id:0
+msgid "Acceptance journal"
+msgstr "Sezionale di accettazione"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py:147
+#, python-format
+msgid "Expenses"
+msgstr "Spese"
+
+#. module: l10n_it_ricevute_bancarie
+#: code:addons/l10n_it_ricevute_bancarie/riba.py:108
+#, python-format
+msgid "Distinta %s is in state %s. You can only delete documents in state draft or canceled"
+msgstr "La distinta %s è nello stato %s. E' possibile eliminare solamente i documenti in stato bozza o annullato."
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.configurazione,bank_id:0
+msgid "Banca"
+msgstr "Banca"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.file.export:0
+msgid "Export"
+msgstr "Export"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:riba.file.export,riba_.txt:0
+msgid "File"
+msgstr "File"
+
+#. module: l10n_it_ricevute_bancarie
+#: view:riba.distinta:0
+msgid "Accounting"
+msgstr "Contabilità"
+
+#. module: l10n_it_ricevute_bancarie
+#: field:account.move.line,distinta_line_ids:0
+msgid "Dettaglio riba"
+msgstr "Dettaglio riba"
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import partner
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields, orm
+
+class res_partner(orm.Model):
+
+    _name = "res.partner"
+    _inherit = "res.partner"
+
+    _columns = {
+        'group_riba' : fields.boolean("Group Ri.Ba.", 
+            help="Group Ri.Ba. by customer while issuing"),
+    }

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+
+        <!--========================================================-->
+        <!--                    RES.PARTNER - FORM                    -->
+        <!--========================================================-->
+        <record id="view_partner_form_riba" model="ir.ui.view">
+            <field name="name">res.parner.form.riba</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="base.view_partner_form"/>
+            <field name="arch" type="xml">
+                <field name="property_payment_term" position="after">
+                    <separator string="Ri.Ba. properties" colspan="2"/>
+                    <group col="4" colspan="2">
+                        <field name="group_riba"/>
+                    </group>
+                </field>
+            </field>
+        </record>
+
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,401 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields, orm
+import time
+import decimal_precision as dp
+import netsvc
+from tools.translate import _
+
+class riba_distinta(orm.Model):
+    
+    def _get_acceptance_move_ids(self, cr, uid, ids, field_name, arg, context):
+        res = {}
+        for distinta in self.browse(cr, uid, ids, context=context):
+            move_ids = []
+            for line in distinta.line_ids:
+                if line.acceptance_move_id and line.acceptance_move_id.id not in move_ids:
+                    move_ids.append(line.acceptance_move_id.id)
+            res[distinta.id] = move_ids
+        return res
+    
+    def _get_unsolved_move_ids(self, cr, uid, ids, field_name, arg, context):
+        res = {}
+        for distinta in self.browse(cr, uid, ids, context=context):
+            move_ids = []
+            for line in distinta.line_ids:
+                if line.unsolved_move_id and line.unsolved_move_id.id not in move_ids:
+                    move_ids.append(line.unsolved_move_id.id)
+            res[distinta.id] = move_ids
+        return res
+    
+    def _get_payment_ids(self, cr, uid, ids, field_name, arg, context):
+        res = {}
+        for distinta in self.browse(cr, uid, ids, context=context):
+            move_line_ids = []
+            for line in distinta.line_ids:
+                for payment in line.payment_ids:
+                    if payment.id not in move_line_ids:
+                        move_line_ids.append(payment.id)
+            res[distinta.id] = move_line_ids
+        return res
+
+    _name = 'riba.distinta'
+    _description = 'Distinta Riba'
+
+    _columns = {
+        'name': fields.char('Reference', size=128, required=True, readonly=True, states={'draft': [('readonly', False)]}),
+        'config': fields.many2one('riba.configurazione', 'Configuration', 
+            select=True, required=True, readonly=True, states={'draft': [('readonly', False)]}, 
+            help='Riba configuration to be used'),
+        'state': fields.selection([
+            ('draft', 'Draft'),
+            ('accepted', 'Accepted'),
+            ('accredited', 'Accredited'),
+            ('paid', 'Paid'),
+            ('unsolved', 'Unsolved'),
+            ('cancel', 'Canceled')], 'State', select=True, readonly=True),
+        'line_ids': fields.one2many('riba.distinta.line', 'distinta_id',
+            'Riba deadlines', readonly=True, states={'draft': [('readonly', False)]}),
+        'user_id': fields.many2one('res.users', 'User', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+        'date_created': fields.date('Creation date', readonly=True),
+        'date_accepted': fields.date('Acceptance date', readonly=True),
+        'date_accreditation': fields.date('Accreditation date', readonly=True),
+        'date_paid': fields.date('Paid date', readonly=True),
+        'date_unsolved': fields.date('Unsolved date', readonly=True),
+        'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
+        'acceptance_move_ids': fields.function(_get_acceptance_move_ids, type='many2many', relation='account.move', method=True, string="Acceptance Entries"),
+        'accreditation_move_id': fields.many2one('account.move', 'Accreditation Entry', readonly=True),
+        'payment_ids': fields.function(_get_payment_ids, relation='account.move.line', type="many2many", string='Payments'),
+        'unsolved_move_ids': fields.function(_get_unsolved_move_ids, type='many2many', relation='account.move', method=True, string="Unsolved Entries"),
+        'type': fields.related('config', 'tipo', type='char', size=32, string='Type', readonly=True),
+    }
+
+    _defaults = {
+        'user_id': lambda self,cr,uid,context: uid,
+        'date_created': fields.date.context_today,
+        'name': lambda self,cr,uid,context: self.pool.get('ir.sequence').get(cr, uid, 'riba.distinta'),
+        'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'riba.distinta', context=c),
+    }
+    
+    def unlink(self, cr, uid, ids, context=None):
+        for distinta in self.browse(cr, uid, ids, context=context):
+            if distinta.state not in ('draft',  'cancel'):
+                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))
+        osv.osv.unlink(cr, uid, ids, context=context)
+        return True
+
+    def confirm(self, cr, uid, ids, context=None):
+        line_pool = self.pool.get('riba.distinta.line')
+        for distinta in self.browse(cr, uid, ids, context=context):
+            line_pool.confirm(cr, uid, [line.id for line in distinta.line_ids], context=context)
+        return True
+    
+    def riba_new(self, cr, uid, ids, context=None):
+        self.write(cr, uid, ids, {
+            'state': 'draft',
+            }, context=context)
+        return True
+    
+    def riba_cancel(self, cr, uid, ids, context=None):
+        for distinta in self.browse(cr, uid, ids, context=context):
+            # TODO remove ervery other move
+            for line in distinta.line_ids:
+                if line.acceptance_move_id:
+                    line.acceptance_move_id.unlink()
+                if line.unsolved_move_id:
+                    line.unsolved_move_id.unlink()
+            if distinta.accreditation_move_id:
+                distinta.accreditation_move_id.unlink()
+        self.write(cr, uid, ids, {
+            'state': 'cancel',
+            }, context=context)
+        return True
+    
+    def riba_accepted(self, cr, uid, ids, context=None):
+        self.write(cr, uid, ids, {
+            'state': 'accepted',
+            'date_accepted': fields.date.context_today(self,cr,uid,context),
+            }, context=context)
+        return True
+    
+    def riba_accredited(self, cr, uid, ids, context=None):
+        self.write(cr, uid, ids, {
+            'state': 'accredited',
+            'date_accreditation': fields.date.context_today(self,cr,uid,context),
+            }, context=context)
+        for distinta in self.browse(cr, uid, ids, context=context):
+            for line in distinta.line_ids:
+                line.write({'state': 'accredited'})
+        return True
+    
+    def riba_paid(self, cr, uid, ids, context=None):
+        self.write(cr, uid, ids, {
+            'state': 'paid',
+            'date_paid': fields.date.context_today(self,cr,uid,context),
+            }, context=context)
+        return True
+    
+    def riba_unsolved(self, cr, uid, ids, context=None):
+        self.write(cr, uid, ids, {
+            'state': 'unsolved',
+            'date_unsolved': fields.date.context_today(self,cr,uid,context),
+            }, context=context)
+        return True
+        
+    def test_accepted(self, cr, uid, ids, *args):
+        for distinta in self.browse(cr, uid, ids):
+            for line in distinta.line_ids:
+                if line.state != 'confirmed':
+                    return False
+        return True
+        
+    def test_unsolved(self, cr, uid, ids, *args):
+        for distinta in self.browse(cr, uid, ids):
+            for line in distinta.line_ids:
+                if line.state != 'unsolved':
+                    return False
+        return True
+        
+    def test_paid(self, cr, uid, ids, *args):
+        for distinta in self.browse(cr, uid, ids):
+            for line in distinta.line_ids:
+                if line.state != 'paid':
+                    return False
+        return True
+        
+    def action_cancel_draft(self, cr, uid, ids, *args):
+        self.write(cr, uid, ids, {'state':'draft'})
+        wf_service = netsvc.LocalService("workflow")
+        for distinta_id in ids:
+            wf_service.trg_delete(uid, 'riba.distinta', distinta_id, cr)
+            wf_service.trg_create(uid, 'riba.distinta', distinta_id, cr)
+        return True
+
+
+class riba_distinta_line(orm.Model):
+    
+    def _get_line_values(self, cr, uid, ids, field_name, arg, context):
+        res = {}
+        for line in self.browse(cr, uid, ids, context=context):
+            res[line.id] = {}
+            res[line.id]['amount'] = 0.0
+            res[line.id]['invoice_date'] = ''
+            res[line.id]['invoice_number'] = ''
+            for move_line in line.move_line_ids:
+                res[line.id]['amount'] += move_line.amount
+                if not res[line.id]['invoice_date']:
+                    res[line.id]['invoice_date'] = str(move_line.move_line_id.invoice.date_invoice)
+                else:
+                    res[line.id]['invoice_date'] += ', '+str(move_line.move_line_id.invoice.date_invoice)
+                if not res[line.id]['invoice_number']:
+                    res[line.id]['invoice_number'] = str(move_line.move_line_id.invoice.internal_number)
+                else:
+                    res[line.id]['invoice_number'] += ', '+str(move_line.move_line_id.invoice.internal_number)
+        return res
+
+    def _reconciled(self, cr, uid, ids, name, args, context=None):
+        wf_service = netsvc.LocalService("workflow")
+        res = {}
+        for id in ids:
+            res[id] = self.test_paid(cr, uid, [id])
+            if res[id]:
+                self.write(cr, uid, id, {'state': 'paid'}, context=context)
+                wf_service.trg_validate(
+                    uid, 'riba.distinta',
+                    self.browse(cr, uid, id).distinta_id.id, 'paid', cr)
+        return res
+
+    def move_line_id_payment_gets(self, cr, uid, ids, *args):
+        res = {}
+        if not ids: return res
+        cr.execute('SELECT distinta_line.id, l.id '\
+                   'FROM account_move_line l '\
+                   'LEFT JOIN riba_distinta_line distinta_line ON (distinta_line.acceptance_move_id=l.move_id) '\
+                   'WHERE distinta_line.id IN %s '\
+                   'AND l.account_id=distinta_line.acceptance_account_id',
+                   (tuple(ids),))
+        for r in cr.fetchall():
+            res.setdefault(r[0], [])
+            res[r[0]].append( r[1] )
+        return res
+
+    # return the ids of the move lines which has the same account than the statement
+    # whose id is in ids
+    def move_line_id_payment_get(self, cr, uid, ids, *args):
+        if not ids: return []
+        result = self.move_line_id_payment_gets(cr, uid, ids, *args)
+        return result.get(ids[0], [])
+
+    def test_paid(self, cr, uid, ids, *args):
+        res = self.move_line_id_payment_get(cr, uid, ids)
+        if not res:
+            return False
+        ok = True
+        for id in res:
+            cr.execute('select reconcile_id from account_move_line where id=%s', (id,))
+            ok = ok and  bool(cr.fetchone()[0])
+        return ok
+
+    def _get_riba_line_from_move_line(self, cr, uid, ids, context=None):
+        move = {}
+        for line in self.pool.get('account.move.line').browse(cr, uid, ids, context=context):
+            if line.reconcile_partial_id:
+                for line2 in line.reconcile_partial_id.line_partial_ids:
+                    move[line2.move_id.id] = True
+            if line.reconcile_id:
+                for line2 in line.reconcile_id.line_id:
+                    move[line2.move_id.id] = True
+        line_ids = []
+        if move:
+            line_ids = self.pool.get('riba.distinta.line').search(
+                cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
+        return line_ids
+
+    def _get_line_from_reconcile(self, cr, uid, ids, context=None):
+        move = {}
+        for r in self.pool.get('account.move.reconcile').browse(cr, uid, ids, context=context):
+            for line in r.line_partial_ids:
+                move[line.move_id.id] = True
+            for line in r.line_id:
+                move[line.move_id.id] = True
+        line_ids = []
+        if move:
+            line_ids = self.pool.get('riba.distinta.line').search(
+                cr, uid, [('acceptance_move_id','in',move.keys())], context=context)
+        return line_ids
+
+    def _compute_lines(self, cr, uid, ids, name, args, context=None):
+        result = {}
+        for riba_line in self.browse(cr, uid, ids, context=context):
+            src = []
+            lines = []
+            if riba_line.acceptance_move_id:
+                for m in riba_line.acceptance_move_id.line_id:
+                    temp_lines = []
+                    if m.reconcile_id and m.credit == 0.0:
+                        temp_lines = map(lambda x: x.id, m.reconcile_id.line_id)
+                    elif m.reconcile_partial_id and m.credit == 0.0:
+                        temp_lines = map(lambda x: x.id, m.reconcile_partial_id.line_partial_ids)
+                    lines += [x for x in temp_lines if x not in lines]
+                    src.append(m.id)
+
+            lines = filter(lambda x: x not in src, lines)
+            result[riba_line.id] = lines
+        return result
+        
+    # TODO estendere la account_due_list per visualizzare e filtrare in base alle riba ?
+    _name = 'riba.distinta.line'
+    _description = 'Riba details'
+    _rec_name = 'sequence'
+
+    _columns = {
+        'sequence': fields.integer('Number'),
+        'move_line_ids': fields.one2many('riba.distinta.move.line', 'riba_line_id', 'Credit move lines'),
+        'acceptance_move_id': fields.many2one('account.move', 'Acceptance Entry', readonly=True),
+        'unsolved_move_id': fields.many2one('account.move', 'Unsolved Entry', readonly=True),
+        'acceptance_account_id': fields.many2one('account.account', 'Acceptance Account'),
+        'amount' : fields.function(_get_line_values, method=True, string="Amount", multi="line"),
+        'bank_id': fields.many2one('res.partner.bank', 'Debitor Bank'),
+        'iban': fields.related('bank_id', 'iban', type='char', string='IBAN', store=False, readonly=True),
+        'distinta_id': fields.many2one('riba.distinta', 'Distinta', required=True, ondelete='cascade'),
+        'partner_id' : fields.many2one('res.partner', "Cliente", readonly=True),
+        'invoice_date' : fields.function(_get_line_values, string="Invoice Date", type='char', size=256, method=True, multi="line"),
+        'invoice_number' : fields.function(_get_line_values, string="Invoice Number", type='char', size=256, method=True, multi="line"),
+        'due_date' : fields.date("Due date", readonly=True),
+        'state': fields.selection([
+            ('draft', 'Draft'),
+            ('confirmed', 'Confirmed'),
+            ('accredited', 'Accredited'),
+            ('paid', 'Paid'),
+            ('unsolved', 'Unsolved'),
+            ], 'State', select=True, readonly=True),
+        'reconciled': fields.function(_reconciled, string='Paid/Reconciled', type='boolean',
+            store={
+                'riba.distinta.line': (lambda self, cr, uid, ids, c={}: ids, ['acceptance_move_id'], 50),
+                'account.move.line': (_get_riba_line_from_move_line, None, 50),
+                'account.move.reconcile': (_get_line_from_reconcile, None, 50),
+            }, 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."),
+        'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
+        'type': fields.related('distinta_id', 'type', type='char', size=32, string='Type', readonly=True),
+    }
+    
+    def confirm(self, cr, uid, ids, context=None):
+        move_pool = self.pool.get('account.move')
+        move_line_pool = self.pool.get('account.move.line')
+        wf_service = netsvc.LocalService("workflow")
+        for line in self.browse(cr, uid, ids, context=context):
+            journal = line.distinta_id.config.acceptance_journal_id
+            total_credit = 0.0
+            move_id= move_pool.create(cr, uid, {
+                'ref': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
+                'journal_id': journal.id,
+                }, context=context)
+            to_be_reconciled = []
+            for riba_move_line in line.move_line_ids:
+                total_credit += riba_move_line.amount
+                move_line_id = move_line_pool.create(cr, uid, {
+                    'name': riba_move_line.move_line_id.invoice.number,
+                    'account_id': riba_move_line.move_line_id.account_id.id,
+                    'credit': riba_move_line.amount,
+                    'debit': 0.0,
+                    'move_id': move_id,
+                    'partner_id': line.partner_id.id,
+                    }, context=context)
+                to_be_reconciled.append([move_line_id, riba_move_line.move_line_id.id])
+            move_line_pool.create(cr, uid, {
+                'name': 'Ri.Ba. %s - line %s' % (line.distinta_id.name, line.sequence),
+                'account_id': line.acceptance_account_id.id,
+                'partner_id': line.partner_id.id,
+                'date_maturity': line.due_date,
+                'credit': 0.0,
+                'debit': total_credit,
+                'move_id': move_id,
+                }, context=context)
+            move_pool.post(cr, uid, [move_id], context=context)
+            for reconcile_ids in to_be_reconciled:
+                move_line_pool.reconcile_partial(cr, uid, reconcile_ids, context=context)
+            line.write({
+                'acceptance_move_id': move_id,
+                'state': 'confirmed',
+                })
+            wf_service.trg_validate(
+                uid, 'riba.distinta', line.distinta_id.id, 'accepted', cr)
+        return True
+
+
+class riba_distinta_move_line(orm.Model):
+
+    _name = 'riba.distinta.move.line'
+    _description = 'Riba details'
+    _rec_name = 'amount'
+
+    _columns = {
+        'amount' : fields.float('Amount', digits_compute=dp.get_precision('Account')),
+        'move_line_id': fields.many2one('account.move.line', 'Credit move line'),
+        'riba_line_id': fields.many2one('riba.distinta.line', 'Distinta line', ondelete='cascade'),
+    }
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+        <record forcecreate="1" id="type_riba_distinta" model="ir.sequence.type">
+            <field name="name">Tipo Distinta Ri.Ba.</field>
+            <field name="code">seq.riba.distinta</field>
+        </record>
+        
+        <record forcecreate="1" id="seq_riba_distinta" model="ir.sequence">
+            <field name="name">Distinta Ri.Ba.</field>
+            <field name="code">seq.riba.distinta</field>
+            <field eval="3" name="padding"/>
+            <field name="prefix">%(y)s/</field>
+        </record>
+         
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        
+        <menuitem name="Ri.Ba." parent="account.menu_finance" id="menu_riba" icon="STOCK_OPEN" />
+
+        <!-- ====================================================== -->
+        <!--                     DISTINTA RIBA - FILTRI                 -->
+        <!-- ====================================================== -->
+        <record id="view_distinta_riba_filtri" model="ir.ui.view">
+            <field name="name">riba.distinta.filtri</field>
+            <field name="model">riba.distinta</field>
+            <field name="arch" type="xml">
+                <search string="Distinte Ri.Ba.">
+                    <filter icon="terp-check" string="Draft" domain="[('state','=','draft')]" help="Draft"/>
+                    <filter icon="terp-dolar" string="Confirmed" domain="[('state','=','accepted')]" help="Accepted"/>
+                    <filter icon="terp-dolar_ok!" string="Paid" domain="[('state','=','paid')]" help="Paid"/>
+                    <separator orientation="vertical"/>
+                    <field name="name" />
+                    <field name="config" />
+                    <field name="date_accepted" />
+                    <field name="date_paid" />
+               </search>
+            </field>
+        </record>
+
+        <!-- ====================================================== -->
+        <!--                     DISTINTA RIBA TREE                     -->
+        <!-- ====================================================== -->
+        <record model="ir.ui.view" id="view_distinta_riba_tree">
+            <field name="name">riba.distinta.tree</field>
+            <field name="model">riba.distinta</field>
+            <field name="arch" type="xml">
+                <tree string="Distinte Ri.Ba.">
+                    <field name="name" />
+                    <field name="config" />
+                    <field name="date_accepted" />
+                    <field name="date_paid" />
+                    <field name="state" />
+                </tree>
+            </field>
+        </record>
+
+        <!-- ====================================================== -->
+        <!--                     DISTINTA RIBA FORM                     -->
+        <!-- ====================================================== -->
+        <record model="ir.ui.view" id="view_distinta_riba_form">
+            <field name="name">riba.distinta.form</field>
+            <field name="model">riba.distinta</field>
+            <field name="arch" type="xml">
+                <form string="Ri.Ba. - Distinta">
+                    <field name="name" />
+                    <field name="config" widget="selection"/>
+                    <notebook colspan="4">
+                        <page string="General">
+                            <field name="line_ids" nolabel="1" colspan="4">
+                                <tree string="Detail">
+                                    <field name="sequence"/>
+                                    <field name="invoice_number"/>
+                                    <field name="invoice_date"/>
+                                    <field name="partner_id"/>
+                                    <field name="iban"/>
+                                    <field name="amount" sum="Amount"/>
+                                    <field name="due_date"/>
+                                    <field name="state"/>
+                                    <button name="%(riba_unsolved_action)d" type='action' attrs="{'invisible':['|',('type','=','incasso'),('state','!=','accredited')]}" string="Unsolved" icon="terp-dolar_ok!"/>
+                                    <field name="type" invisible="1" />
+                                </tree>
+                                <form string="Detail">
+                                    <notebook colspan="4">
+                                        <page string="General">
+                                            <field name="sequence"/>
+                                            <field name="invoice_number"/>
+                                            <field name="invoice_date"/>
+                                            <field name="partner_id"/>
+                                            <field name="amount" />
+                                            <field name="due_date"/>
+                                            <field name="state"/>
+                                            <field name="reconciled" />
+                                        </page>
+                                        <page string="Accounting">
+                                            <separator string="Invoice entries" colspan="4"/>
+                                            <field name="move_line_ids" nolabel="1" colspan="4">
+                                                <tree string="Move lines">
+                                                    <field name="amount" />
+                                                    <field name="move_line_id"/>
+                                                </tree>
+                                                <form string="Move line">
+                                                    <field name="amount" />
+                                                    <field name="move_line_id"/>
+                                                </form>
+                                            </field>
+                                            <field name="acceptance_account_id"/>
+                                            <field name="acceptance_move_id"/>
+                                            <separator string="Payments" colspan="4"/>
+                                            <field name="payment_ids" nolabel="1" colspan="4">
+                                                <tree string="Payments">
+                                                    <field name="date"/>
+                                                    <field name="move_id"/>
+                                                    <field name="ref"/>
+                                                    <field name="name"/>
+                                                    <field name="journal_id" groups="base.group_user"/>
+                                                    <field name="debit"/>
+                                                    <field name="credit"/>
+                                                    <field name="amount_currency"/>
+                                                    <field name="currency_id"/>
+                                                </tree>
+                                            </field>
+                                            <field name="unsolved_move_id"/>
+                                        </page>
+                                    </notebook>
+                                </form>
+                            </field>
+                            <group col="2" colspan="2">
+                                <field name="state" readonly="1" nolabel="1" colspan="2" />
+                                <field name="type" invisible="1" />
+                            </group>
+                            <group col="2" colspan="2">
+                                <button name="confirm" type='object' string="Accepted" icon="gtk-apply" attrs="{'invisible':['|',('state','!=','draft'),('type','=','incasso')]}"/>
+                                <button name="%(riba_accreditation_action)d" type='action'  attrs="{'invisible':['|',('state','!=','accepted'),('type','=','incasso')]}" string="Accredited" icon="gtk-apply"/>
+                                <button name="cancel" attrs="{'invisible':[('state','=','cancel')]}"  string="Cancel" icon="gtk-cancel"/>
+                                <button name="action_cancel_draft" attrs="{'invisible':['|',('state','!=','cancel'),('type','=','incasso')]}"  string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
+                            </group>
+                        </page>
+                        <page string="Other Info">
+                            <field name="user_id" />
+                            <newline/>
+                            <field name="date_created" />
+                            <field name="date_accepted" />
+                            <field name="date_accreditation" />
+                            <field name="date_paid" />
+                        </page>
+                        <page string="Accounting">
+                            <separator colspan="4" string="Acceptance Entries"/>
+                            <field name='acceptance_move_ids' colspan="4" nolabel="1"/>
+                            <separator colspan="4" string="Accreditation Entry"/>
+                            <field name='accreditation_move_id' colspan="4" nolabel="1"/>
+                            <separator colspan="4" string="Payments"/>
+                            <field name='payment_ids' colspan="4" nolabel="1">
+                                <tree string="Payments">
+                                    <field name="date"/>
+                                    <field name="move_id"/>
+                                    <field name="ref"/>
+                                    <field name="name"/>
+                                    <field name="journal_id" groups="base.group_user"/>
+                                    <field name="debit"/>
+                                    <field name="credit"/>
+                                    <field name="amount_currency"/>
+                                    <field name="currency_id"/>
+                                </tree>
+                            </field>
+                            <separator colspan="4" string="Unsolved"/>
+                            <field name='unsolved_move_ids' colspan="4" nolabel="1"/>
+                        </page>
+                    </notebook>
+                </form>
+            </field>
+        </record>
+        
+        <!-- ====================================================== -->
+        <!--                     ACTION DISTINTA RIBA                -->
+        <!-- ====================================================== -->
+        <record id="distinta_riba_action" model="ir.actions.act_window">
+            <field name="name">Distinta Ri.Ba.</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">riba.distinta</field>
+            <field name="src_model">riba.distinta</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_distinta_riba_filtri"/>
+        </record>
+        
+        <!-- ====================================================== -->
+        <!--                     DISTINTA RIBA - MENU                -->
+        <!-- ====================================================== -->
+        <menuitem name="Distinte" parent="menu_riba" 
+            id="menu_riba_distinte" action="distinta_riba_action" />
+
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+        <record model="workflow" id="wkf_riba_distinta">
+            <field name="name">riba.distinta.wkf</field>
+            <field name="osv">riba.distinta</field>
+            <field name="on_create">True</field>
+        </record>
+
+        <record model="workflow.activity" id="act_new">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="flow_start">True</field>
+            <field name="name">new</field>
+            <field name="kind">function</field>
+            <field name="action">riba_new()</field>
+        </record>
+
+        <record model="workflow.activity" id="act_accepted">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="name">accepted</field>
+            <field name="kind">function</field>
+            <field name="action">riba_accepted()</field>
+        </record>
+
+        <record model="workflow.activity" id="act_accredited">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="name">accredited</field>
+            <field name="kind">function</field>
+            <field name="action">riba_accredited()</field>
+        </record>
+
+        <record model="workflow.activity" id="act_paid">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="name">paid</field>
+            <field name="kind">function</field>
+            <field name="action">riba_paid()</field>
+        </record>
+
+        <record model="workflow.activity" id="act_unsolved">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="name">unsolved</field>
+            <field name="kind">function</field>
+            <field name="action">riba_unsolved()</field>
+        </record>
+
+        <record model="workflow.activity" id="act_cancel">
+            <field name="wkf_id" ref="wkf_riba_distinta" />
+            <field name="name">cancel</field>
+            <field name="kind">function</field>
+            <field name="action">riba_cancel()</field>
+            <field name="flow_stop">True</field>
+        </record>
+
+        <!-- transitions -->
+
+        <record model="workflow.transition" id="new_to_accepted">
+            <field name="act_from" ref="act_new" />
+            <field name="act_to" ref="act_accepted" />
+            <field name="signal">accepted</field>
+            <field name="condition">test_accepted()</field>
+        </record>
+        <record model="workflow.transition" id="accepted_to_accredited">
+            <field name="act_from" ref="act_accepted" />
+            <field name="act_to" ref="act_accredited" />
+            <field name="signal">accredited</field>
+        </record>
+        <record model="workflow.transition" id="accredited_to_paid">
+            <field name="act_from" ref="act_accredited" />
+            <field name="act_to" ref="act_paid" />
+            <field name="signal">paid</field>
+            <field name="condition">test_paid()</field>
+        </record>
+        <record model="workflow.transition" id="accepted_to_paid">
+            <field name="act_from" ref="act_accepted" />
+            <field name="act_to" ref="act_paid" />
+            <field name="signal">paid</field>
+            <field name="condition">test_paid()</field>
+        </record>
+        <record model="workflow.transition" id="accepted_to_cancel">
+            <field name="act_from" ref="act_accepted" />
+            <field name="act_to" ref="act_cancel" />
+            <field name="signal">cancel</field>
+        </record>
+        <record model="workflow.transition" id="new_to_cancel">
+            <field name="act_from" ref="act_new" />
+            <field name="act_to" ref="act_cancel" />
+            <field name="signal">cancel</field>
+        </record>
+        <record model="workflow.transition" id="accredited_to_cancel">
+            <field name="act_from" ref="act_accredited" />
+            <field name="act_to" ref="act_cancel" />
+            <field name="signal">cancel</field>
+        </record>
+        <record model="workflow.transition" id="paid_to_cancel">
+            <field name="act_from" ref="act_paid" />
+            <field name="act_to" ref="act_cancel" />
+            <field name="signal">cancel</field>
+        </record>
+        <record model="workflow.transition" id="accredited_to_unsolved">
+            <field name="act_from" ref="act_accredited" />
+            <field name="act_to" ref="act_unsolved" />
+            <field name="signal">unsolved</field>
+            <field name="condition">test_unsolved()</field>
+        </record>
+        <record model="workflow.transition" id="unsolved_to_cancel">
+            <field name="act_from" ref="act_unsolved" />
+            <field name="act_to" ref="act_cancel" />
+            <field name="signal">cancel</field>
+        </record>
+
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,15 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_riba_distinta_uinvoice,riba_distinta,model_riba_distinta,account.group_account_invoice,1,1,1,1
+access_riba_distinta_group_invoice,riba_distinta group invoice,model_riba_distinta,account.group_account_invoice,1,1,1,1
+access_riba_distinta_user,riba_distinta user,model_riba_distinta,base.group_user,1,0,0,0
+access_riba_distinta_accountant,riba_distinta accountant,model_riba_distinta,account.group_account_user,1,0,0,0
+access_riba_distinta_line_uinvoice,riba_distinta_line,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
+access_riba_distinta_line_group_invoice,riba_distinta_line group invoice,model_riba_distinta_line,account.group_account_invoice,1,1,1,1
+access_riba_distinta_line_user,riba_distinta_line user,model_riba_distinta_line,base.group_user,1,0,0,0
+access_riba_distinta_line_accountant,riba_distinta_line accountant,model_riba_distinta_line,account.group_account_user,1,0,0,0
+access_riba_distinta_move_line_uinvoice,riba_distinta_move_line,model_riba_distinta_move_line,account.group_account_invoice,1,1,1,1
+access_riba_distinta_move_line_group_invoice,riba_distinta_move_line group invoice,model_riba_distinta_move_line,account.group_account_invoice,1,1,1,1
+access_riba_distinta_move_line_user,riba_distinta_move_line user,model_riba_distinta_move_line,base.group_user,1,0,0,0
+access_riba_distinta_move_line_accountant,riba_distinta_move_line accountant,model_riba_distinta_move_line,account.group_account_user,1,0,0,0
+access_riba_configurazione_manager,riba_configurazione,model_riba_configurazione,account.group_account_manager,1,1,1,1
+access_riba_configurazione_invoice,riba_configurazione invoice,model_riba_configurazione,account.group_account_invoice,1,0,0,0

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard_emissione_riba
+import riba_file_export
+import wizard_accreditation
+import wizard_unsolved

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,241 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2011-2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>) 
+#    Thanks to Antonio de Vincentiis http://www.devincentiis.it/ ,
+#    GAzie http://gazie.sourceforge.net/
+#    and Cecchi s.r.l http://www.cecchi.com/
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+'''
+*****************************************************************************************
+ Questa classe genera il file RiBa standard ABI-CBI passando alla funzione "creaFile" i due array di seguito specificati:
+$intestazione = array monodimensionale con i seguenti index:
+              [0] = credit_sia variabile lunghezza 5 alfanumerico
+              [1] = credit_abi assuntrice variabile lunghezza 5 numerico
+              [2] = credit_cab assuntrice variabile lunghezza 5 numerico
+              [3] = credit_conto conto variabile lunghezza 10 alfanumerico
+              [4] = data_creazione variabile lunghezza 6 numerico formato GGMMAA
+              [5] = nome_supporto variabile lunghezza 20 alfanumerico
+              [6] = codice_divisa variabile lunghezza 1 alfanumerico opzionale default "E"
+              [7] = name_company nome ragione sociale creditore variabile lunghezza 24 alfanumerico
+              [8] = indirizzo_creditore variabile lunghezza 24 alfanumerico
+              [9] = cap_citta_creditore variabile lunghezza 24 alfanumerico
+              [10] = ref (definizione attivita) creditore 
+              [11] = codice fiscale/partita iva creditore alfanumerico opzionale
+
+$ricevute_bancarie = array bidimensionale con i seguenti index:
+                   [0] = numero ricevuta lunghezza 10 numerico
+                   [1] = data scadenza lunghezza 6 numerico
+                   [2] = importo in centesimi di euro
+                   [3] = nome debitore lunghezza 60 alfanumerico
+                   [4] = codice fiscale/partita iva debitore lunghezza 16 alfanumerico
+                   [5] = indirizzo debitore lunghezza 30 alfanumerico
+                   [6] = cap debitore lunghezza 5 numerico
+                   [7] = citta debitore alfanumerico
+                   [8] = debitor_province debitore alfanumerico
+                   [9] = abi banca domiciliataria lunghezza 5 numerico
+                   [10] = cab banca domiciliataria lunghezza 5 numerico
+                   [11] = descrizione banca domiciliataria lunghezza 50 alfanumerico
+                   [12] = codice cliente attribuito dal creditore lunghezza 16 numerico
+                   [13] = numero fattura lunghezza 40 alfanumerico
+                   [14] = data effettiva della fattura
+
+'''
+
+import tools
+import base64
+from openerp.osv import fields,orm
+from tools.translate import _
+import datetime
+
+class riba_file_export(orm.TransientModel):
+
+    _progressivo = 0
+    _assuntrice = 0
+    _sia = 0
+    _data = 0
+    _valuta = 0
+    _supporto = 0
+    _totale = 0
+    _creditore = 0
+    _descrizione = ''
+    _codice = ''
+    _comune_provincia_debitor = ''
+
+    def _RecordIB(self, sia_assuntrice, abi_assuntrice, data_creazione, nome_supporto, codice_divisa): #record di testa
+        self._sia = sia_assuntrice.rjust(5,'0')
+        self._assuntrice = abi_assuntrice.rjust(5, '0')
+        self._data = data_creazione.rjust(6, '0')
+        self._valuta = codice_divisa[0:1]
+        self._supporto = nome_supporto.ljust(20, ' ')
+        return " IB" + self._sia + self._assuntrice + self._data + self._supporto + " " * 74 + self._valuta + " " * 6 + "\r\n"
+
+    def _Record14(self, scadenza, importo, abi_assuntrice, cab_assuntrice, conto, abi_domiciliataria, cab_domiciliataria, sia_credit, codice_cliente):
+        self._totale += importo
+        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"
+
+    def _Record20(self, ragione_soc1_creditore, indirizzo_creditore, cap_citta_creditore, ref_creditore,):
+        self._creditore =  ragione_soc1_creditore.ljust(24)
+        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"
+
+    def _Record30(self, nome_debitore, codice_fiscale_debitore):
+        return " 30" + str(self._progressivo).rjust(7,'0') + nome_debitore.ljust(60)[0:60] + codice_fiscale_debitore.ljust(16,' ') + " " * 34 + "\r\n"
+
+    def _Record40(self, indirizzo_debitore, cap_debitore, comune_debitore, provincia_debitore, descrizione_domiciliataria=""):
+        self._comune_provincia_debitor = comune_debitore + provincia_debitore.rjust(25-len(comune_debitore),' ')
+        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"
+
+    def _Record50(self, importo_debito, invoice_ref, data_invoice, partita_iva_creditore):
+        self._descrizione = 'PER LA FATTURA N. ' + invoice_ref + ' DEL '+ data_invoice + ' IMP '+ str(importo_debito)
+        return " 50" + str(self._progressivo).rjust(7,'0') + self._descrizione.ljust(80)[0:80] + " " * 10 + partita_iva_creditore.ljust(16,' ') + " " * 4 + "\r\n"
+
+    def _Record51(self, numero_ricevuta_creditore):
+        return " 51" + str(self._progressivo).rjust(7,'0') + str(numero_ricevuta_creditore).rjust(10,'0') + self._creditore[0:20] + " " * 80 + "\r\n"
+
+    def _Record70(self):
+        return " 70" + str(self._progressivo).rjust(7,'0') + " " * 110 + "\r\n"
+
+    def _RecordEF(self): #record di coda
+        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"
+
+    def _creaFile(self, intestazione, ricevute_bancarie):
+        accumulatore = self._RecordIB(intestazione[0], intestazione[1], intestazione[4], intestazione[5], intestazione[6])
+        for value in ricevute_bancarie: #estraggo le ricevute dall'array
+            self._progressivo =self._progressivo + 1
+            accumulatore = accumulatore + self._Record14(
+                value[1], value[2], intestazione[1], intestazione[2], intestazione[3], value[9], value[10], intestazione[0], value[12])
+            accumulatore = accumulatore + self._Record20(intestazione[7], intestazione[8], intestazione[9], intestazione[10])
+            accumulatore = accumulatore + self._Record30(value[3], value[4])
+            accumulatore = accumulatore + self._Record40(value[5], value[6], value[7], value[8], value[11])
+            accumulatore = accumulatore + self._Record50(value[2], value[13], value[14], intestazione[11])
+            accumulatore = accumulatore + self._Record51(value[0])
+            accumulatore = accumulatore + self._Record70()
+        accumulatore = accumulatore + self._RecordEF()
+        self._progressivo = 0
+        self._totale = 0
+        return accumulatore
+
+    def act_getfile(self, cr, uid, ids, context=None):
+        active_ids = context and context.get('active_ids', [])
+        order_obj = self.pool.get('riba.distinta').browse(cr, uid, active_ids, context=context)[0]
+        credit_bank = order_obj.config.bank_id
+        name_company = order_obj.config.company_id.partner_id.name
+        if not credit_bank.iban:
+           raise orm.except_orm('Error', _('No IBAN specified'))
+        credit_abi = credit_bank.iban[5:10]
+        credit_cab = credit_bank.iban[10:15]
+        credit_conto = credit_bank.iban[-12:]
+        if not credit_bank.codice_sia:
+           raise orm.except_orm('Error', _('No SIA Code specified for: ') + name_company)
+        credit_sia = credit_bank.codice_sia
+        credit_account = credit_bank.iban[15:27]
+        dataemissione = datetime.datetime.now().strftime("%d%m%y")
+        nome_supporto = datetime.datetime.now().strftime("%d%m%y%H%M%S") + credit_sia
+        creditor_address = order_obj.config.company_id.partner_id
+        creditor_street = creditor_address.street or ''
+        creditor_city = creditor_address.city or ''
+        creditor_province = creditor_address.province.code or ''
+        if not order_obj.config.company_id.partner_id.vat and not order_obj.config.company_id.partner_id.fiscalcode:
+           raise orm.except_orm('Error', _('No VAT or Fiscalcode specified for: ') + name_company)
+        array_testata = [
+               credit_sia,
+               credit_abi,
+               credit_cab,
+               credit_conto,
+               dataemissione,
+               nome_supporto,
+               'E',
+               name_company,
+               creditor_address.street or '',
+               creditor_address.zip or '' + ' ' + creditor_city,
+               order_obj.config.company_id.partner_id.ref or '',
+               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,
+               ]
+        arrayRiba = []
+        for line in order_obj.line_ids:
+            debit_bank = line.bank_id
+            debitor_address = line.partner_id
+            debitor_street = debitor_address.street or ''
+            debitor_zip = debitor_address.zip or ''
+            if not debit_bank.iban:
+               raise orm.except_orm('Error', _('No IBAN specified for ') + line.partner_id.name)
+            debit_abi = debit_bank.iban[5:10]
+            debit_cab = debit_bank.iban[10:15]
+            debitor_city = debitor_address.city or ''
+            debitor_province = debitor_address.province.code or ''
+            if not line.due_date: # ??? VERIFICARE
+                due_date =  '000000'
+            else:
+                due_date = datetime.datetime.strptime(line.due_date[:10], '%Y-%m-%d').strftime("%d%m%y")
+
+            if not line.partner_id.vat and not line.partner_id.fiscalcode:
+                raise orm.except_orm('Error', _('No VAT or Fiscal code specified for ') + line.partner_id.name)
+            Riba = [
+                        line.sequence,
+                        due_date,
+                        line.amount,
+                        line.partner_id.name,
+                        line.partner_id.vat and line.partner_id.vat[2:] or line.partner_id.fiscalcode,
+                        debitor_street,
+                        debitor_zip,
+                        debitor_city,
+                        debitor_province,
+                        debit_abi,
+                        debit_cab,
+                        debit_bank.bank and debit_bank.bank.name or debit_bank.bank_name,
+                        line.partner_id.ref or '',
+                        #line.move_line_id.name,
+                        line.invoice_number,
+                        #datetime.datetime.strptime(line.distinta_id.date_created, '%Y-%m-%d').strftime("%d/%m/%Y"),
+                        line.invoice_date,
+                        ]
+            arrayRiba.append(Riba)
+
+        out=base64.encodestring(self._creaFile(array_testata, arrayRiba).encode("utf8"))
+        self.write(cr, uid, ids, {'state':'get', 'riba_.txt':out}, context=context)
+
+        model_data_obj = self.pool.get('ir.model.data')
+        view_rec = model_data_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'wizard_riba_file_export')
+        view_id = view_rec and view_rec[1] or False
+
+        return {
+           'view_type': 'form',
+           'view_id' : [view_id],
+           'view_mode': 'form',
+           'res_model': 'riba.file.export',
+           'res_id': ids[0],
+           'type': 'ir.actions.act_window',
+           'target': 'new',
+           'context': context,
+        }
+
+    _name = "riba.file.export"
+
+    _columns = {
+        'state': fields.selection( ( ('choose','choose'),   # choose accounts
+                                     ('get','get'),         # get the file
+                                   ) ),
+        'riba_.txt': fields.binary('File', readonly=True),
+    }
+    _defaults = { 
+        'state': lambda *a: 'choose',
+        }
+

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="wizard_riba_file_export" model="ir.ui.view">
+            <field name="name">Export Ri.Ba.</field>
+            <field name="model">riba.file.export</field>
+            <field name="arch" type="xml">
+                <form string="Export Ri.Ba. file">
+                    <group col="4">
+                        <group colspan="4" >
+                            <button icon="gtk-cancel" special="cancel" string="Cancel"/>
+                            <button icon="gtk-ok" name="act_getfile" string="Export" type="object"/>
+                        </group>
+                        <group colspan="4">
+                            <field name="riba_.txt" readonly="1"/>
+                        </group>
+                    </group>
+                </form>
+            </field>
+        </record>
+
+       <act_window name="Export Ri.Ba."
+            res_model="riba.file.export"
+            src_model="riba.distinta"
+            view_mode="form"
+            target="new"
+            key2="client_action_multi"
+            id="action_wizard_riba_file_export"
+            view_id="wizard_riba_file_export"/>
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#  
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields,orm
+from tools.translate import _
+import netsvc
+
+class riba_accreditation(orm.TransientModel):
+    
+    def _get_accreditation_journal_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_journal_id', context=context)
+    
+    def _get_accreditation_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'accreditation_account_id', context=context)
+    
+    def _get_bank_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_account_id', context=context)
+    
+    def _get_bank_expense_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta( cr, uid, 'bank_expense_account_id', context=context)
+    
+    def _get_accreditation_amount(self, cr, uid, context=None):
+        if context is None:
+            context = {}
+        if not context.get('active_id', False):
+            return False
+        distinta_pool = self.pool.get('riba.distinta')
+        distinta = distinta_pool.browse(cr, uid, context['active_id'], context=context)
+        amount = 0.0
+        for line in distinta.line_ids:
+            amount += line.amount
+        return amount
+    
+    _name = "riba.accreditation"
+    _description = "Bank accreditation"
+    _columns = {
+        'accreditation_journal_id' : fields.many2one('account.journal', "Accreditation journal", 
+            domain=[('type', '=', 'bank')]),
+        'accreditation_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
+        'accreditation_amount': fields.float('Credit amount'),
+        'bank_account_id' : fields.many2one('account.account', "Bank account", 
+            domain=[('type', '=', 'liquidity')]),
+        'bank_amount': fields.float('Versed amount'),
+        'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
+        'expense_amount': fields.float('Expenses amount'),
+        }
+
+    _defaults = {
+        'accreditation_journal_id': _get_accreditation_journal_id,
+        'accreditation_account_id': _get_accreditation_account_id,
+        'bank_account_id': _get_bank_account_id,
+        'bank_expense_account_id': _get_bank_expense_account_id,
+        'accreditation_amount': _get_accreditation_amount,
+        }
+        
+    def skip(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        wf_service = netsvc.LocalService("workflow")
+        active_id = context and context.get('active_id', False) or False
+        if not active_id:
+            raise orm.except_orm(_('Error'), _('No active ID found'))
+        wf_service.trg_validate(
+            uid, 'riba.distinta', active_id, 'accredited', cr)
+        return {'type': 'ir.actions.act_window_close'}
+        
+    def create_move(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        wf_service = netsvc.LocalService("workflow")
+        active_id = context and context.get('active_id', False) or False
+        if not active_id:
+            raise orm.except_orm(_('Error'), _('No active ID found'))
+        move_pool = self.pool.get('account.move')
+        move_line_pool = self.pool.get('account.move.line')
+        distinta_pool = self.pool.get('riba.distinta')
+        distinta = distinta_pool.browse(cr, uid, active_id, context=context)
+        wizard = self.browse(cr,uid,ids)[0]
+        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:
+            raise orm.except_orm(_('Error'), _('Every account is mandatory'))
+        move_vals = {
+            'ref': _('Accreditation Ri.Ba. %s') % distinta.name,
+            'journal_id': wizard.accreditation_journal_id.id,
+            'line_id': [
+                (0,0, {
+                    'name':  _('Credit'),
+                    'account_id': wizard.accreditation_account_id.id,
+                    'credit': wizard.accreditation_amount,
+                    'debit': 0.0,
+                    }),
+                (0,0, {
+                    'name':  _('Bank'),
+                    'account_id': wizard.bank_account_id.id,
+                    'debit': wizard.bank_amount,
+                    'credit': 0.0,
+                    }),
+                (0,0, {
+                    'name':  _('Bank'),
+                    'account_id': wizard.bank_expense_account_id.id,
+                    'debit': wizard.expense_amount,
+                    'credit': 0.0,
+                    }),
+                ]
+            }
+        move_id = move_pool.create(cr, uid, move_vals, context=context)
+        distinta.write({'accreditation_move_id': move_id})
+        wf_service.trg_validate(
+            uid, 'riba.distinta', active_id, 'accredited', cr)
+        return {
+            'name': _('Accreditation Entry'),
+            'view_type': 'form',
+            'view_mode': 'form',
+            'res_model': 'account.move',
+            'type': 'ir.actions.act_window',
+            'target': 'current',
+            'res_id': move_id or False,
+        }

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data>
+        
+        <record id="riba_accreditation" model="ir.ui.view">
+            <field name="name">riba.accreditation.wizard</field>
+            <field name="model">riba.accreditation</field>
+            <field name="arch" type="xml">
+                <form string="Ri.Ba. Accreditation">
+                    <separator string="This wizard generates the journal entry related to accreditation received from the bank" colspan="4"/>
+					<field name="accreditation_journal_id" />
+                    <newline/>
+					<field name="accreditation_account_id" />
+					<field name="accreditation_amount" />
+					<field name="bank_account_id" />
+					<field name="bank_amount" />
+					<field name="bank_expense_account_id" />
+					<field name="expense_amount" />
+                    <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
+                    <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
+                    <separator string="You can also skip this step and set the distinta status to 'accredited' anyway" colspan="4"/>
+                    <button string="Skip and confirm accreditation" name="skip" type="object" icon="gtk-apply" colspan="4"/>
+                </form>
+            </field>
+        </record>
+        
+        <record id="riba_accreditation_action" model="ir.actions.act_window">
+            <field name="name">Ri.Ba. Accreditation</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">riba.accreditation</field>
+            <field name="src_model">riba.distinta</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+            <field name="view_id" ref="riba_accreditation"/>
+
+        </record>
+        
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,131 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Andrea Cometa.
+#    Email: info@xxxxxxxxxxxxxxx
+#    Web site: http://www.andreacometa.it
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields,orm
+
+# -------------------------------------------------------
+#        EMISSIONE RIBA
+# -------------------------------------------------------
+class emissione_riba(orm.TransientModel):
+    _name = "riba.emissione"
+    _description = "Emissione Ricevute Bancarie"
+    _columns = {
+
+        'configurazione' : fields.many2one('riba.configurazione', 'Configurazione', required=True),
+        }
+    
+    def crea_distinta(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        def create_rdl(conta, bank_id, rd_id, date_maturity, partner_id, acceptance_account_id):
+            rdl = {
+                'sequence' : conta,
+                'bank_id' : bank_id,
+                'distinta_id': rd_id,
+                'due_date' : date_maturity,
+                'partner_id' : partner_id,
+                'state': 'draft',
+                'acceptance_account_id': acceptance_account_id,
+            }
+            return riba_distinta_line.create(cr, uid, rdl, context=context)
+            
+        """
+        Qui creiamo la distinta
+        """
+        wizard_obj = self.browse(cr,uid,ids)[0]
+        active_ids = context and context.get('active_ids', [])
+        riba_distinta = self.pool.get('riba.distinta')
+        riba_distinta_line = self.pool.get('riba.distinta.line')
+        riba_distinta_move_line = self.pool.get('riba.distinta.move.line')
+        move_line_obj = self.pool.get('account.move.line')
+
+        # create distinta
+        rd = {
+            'name': self.pool.get('ir.sequence').get(cr, uid, 'seq.riba.distinta'),
+            'config': wizard_obj.configurazione.id,
+            'user_id': uid,
+            'date_created': fields.date.context_today(self,cr,uid,context),
+        }
+        rd_id = riba_distinta.create(cr, uid, rd)
+        
+        # group by partner and due date
+        grouped_lines = {}
+        move_line_ids = move_line_obj.search(cr, uid, [('id', 'in', active_ids)], context=context)
+        for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
+            if move_line.partner_id.group_riba:
+                if not grouped_lines.get(
+                    (move_line.partner_id.id, move_line.date_maturity), False):
+                    grouped_lines[(move_line.partner_id.id, move_line.date_maturity)] = []
+                grouped_lines[(move_line.partner_id.id, move_line.date_maturity)].append(
+                    move_line)
+        
+        # create lines
+        conta = 1
+        
+        for move_line in move_line_obj.browse(cr, uid, move_line_ids, context=context):
+            if move_line.partner_id.bank_ids:
+                bank_id = move_line.partner_id.bank_ids[0]
+            else:
+                raise orm.except_orm('Attenzione!', 'Il cliente %s non ha la banca!!!' % move_line.partner_id.name)
+            if move_line.partner_id.group_riba:
+                for key in grouped_lines:
+                    if key[0] == move_line.partner_id.id and key[1] == move_line.date_maturity:
+                        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)
+                        total = 0.0
+                        invoice_date_group = ''
+                        for grouped_line in grouped_lines[key]:
+                            riba_distinta_move_line.create(cr, uid, {
+                                'riba_line_id': rdl_id,
+                                'amount': grouped_line.debit,
+                                'move_line_id': grouped_line.id,
+                                }, context=context)
+                        del grouped_lines[key]
+                        break
+            else:
+                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)
+                riba_distinta_move_line.create(cr, uid, {
+                    'riba_line_id': rdl_id,
+                    'amount': move_line.debit,
+                    'move_line_id': move_line.id,
+                    }, context=context)
+            
+            conta+=1
+        
+        # ----- show distinta form
+        mod_obj = self.pool.get('ir.model.data')
+        res = mod_obj.get_object_reference(cr, uid, 'l10n_it_ricevute_bancarie', 'view_distinta_riba_form')
+        res_id = res and res[1] or False,
+        return {
+            'name': 'Distinta',
+            'view_type': 'form',
+            'view_mode': 'form',
+            'view_id': res_id,
+            'res_model': 'riba.distinta',
+            'type': 'ir.actions.act_window',
+            #'nodestroy': True,
+            'target': 'current',
+            'res_id': rd_id or False,
+        }

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data>
+        
+        <!-- ====================================================== -->
+        <!--                     WIZARD EMISSIONE RIBA                -->
+        <!-- ====================================================== -->
+        <record id="emissione_riba_view" model="ir.ui.view">
+            <field name="name">riba.emissione.wizard</field>
+            <field name="model">riba.emissione</field>
+            <field name="arch" type="xml">
+                <form string="Issue Ri.Ba.">
+                    <separator string="This wizard generates the Ri.Ba. list, do you confirm?" colspan="4"/>
+                    <field name="configurazione"/>
+                    <group col="4" colspan="4">
+                        <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
+                        <button string="Create" name="crea_distinta" type="object" icon="gtk-ok" colspan="2"/>
+                    </group>
+                </form>
+            </field>
+        </record>
+        
+        <!-- ====================================================== -->
+        <!--                     ACTION EMISSIONE RIBA                -->
+        <!-- ====================================================== -->
+        <record id="emissione_riba_action" model="ir.actions.act_window">
+            <field name="name">Issue Ri.Ba.</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">riba.emissione</field>
+            <field name="src_model">account.move.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+            <field name="view_id" ref="emissione_riba_view"/>
+
+        </record>
+        
+        <record model="ir.values" id="emissione_riba_client_action">
+            <!--field name="model_id" ref="sale.model_sale_order" /
+            <field name="object" eval="1" /> -->
+            <field name="name">Issue Ri.Ba.</field>
+            <field name="key2">client_action_multi</field>
+            <field name="value" eval="'ir.actions.act_window,' + str(ref('emissione_riba_action'))" />
+            <field name="key">action</field>
+            <field name="model">account.move.line</field>
+        </record>
+        
+    </data>
+</openerp>

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,184 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    Copyright (C) 2012 Agile Business Group sagl (<http://www.agilebg.com>)
+#    Copyright (C) 2012 Domsense srl (<http://www.domsense.com>)
+#    Copyright (C) 2012 Associazione OpenERP Italia
+#    (<http://www.openerp-italia.org>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as published
+#    by the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields,orm
+from tools.translate import _
+import netsvc
+
+class riba_unsolved(orm.TransientModel):
+    
+    def _get_unsolved_journal_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'unsolved_journal_id', context=context)
+    
+    def _get_effects_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'acceptance_account_id', context=context)
+    
+    def _get_effects_amount(self, cr, uid, context=None):
+        if context is None:
+            context = {}
+        if not context.get('active_id', False):
+            return False
+        return self.pool.get('riba.distinta.line').browse(cr, uid, context['active_id'], context=context).amount
+    
+    def _get_riba_bank_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'accreditation_account_id', context=context)
+    
+    def _get_overdue_effects_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'overdue_effects_account_id', context=context)
+    
+    def _get_bank_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'bank_account_id', context=context)
+    
+    def _get_bank_expense_account_id(self, cr, uid, context=None):
+        return self.pool.get('riba.configurazione').get_default_value_by_distinta_line( cr, uid, 'protest_charge_account_id', context=context)
+        
+    
+    _name = "riba.unsolved"
+    _columns = {
+        'unsolved_journal_id' : fields.many2one('account.journal', "Unsolved journal", 
+            domain=[('type', '=', 'bank')]),
+        'effects_account_id' : fields.many2one('account.account', "Effects account", 
+            domain=[('type', '=', 'receivable')]),
+        'effects_amount': fields.float('Effects amount'),
+        'riba_bank_account_id' : fields.many2one('account.account', "Ri.Ba. bank account"),
+        'riba_bank_amount': fields.float('Ri.Ba. bank amount'),
+        'overdue_effects_account_id' : fields.many2one('account.account', "Overdue Effects account", 
+            domain=[('type', '=', 'receivable')]),
+        'overdue_effects_amount': fields.float('Overdue Effects amount'),
+        'bank_account_id' : fields.many2one('account.account', "Bank account", 
+            domain=[('type', '=', 'liquidity')]),
+        'bank_amount': fields.float('Taken amount'),
+        'bank_expense_account_id' : fields.many2one('account.account', "Bank Expenses account"),
+        'expense_amount': fields.float('Expenses amount'),
+        }
+
+    _defaults = {
+        'unsolved_journal_id': _get_unsolved_journal_id,
+        'effects_account_id': _get_effects_account_id,
+        'effects_amount': _get_effects_amount,
+        'riba_bank_account_id': _get_riba_bank_account_id,
+        'riba_bank_amount': _get_effects_amount,
+        'overdue_effects_account_id': _get_overdue_effects_account_id,
+        'overdue_effects_amount': _get_effects_amount,
+        'bank_account_id': _get_bank_account_id,
+        'bank_expense_account_id': _get_bank_expense_account_id,
+        }
+        
+    def skip(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        wf_service = netsvc.LocalService("workflow")
+        active_id = context and context.get('active_id', False) or False
+        if not active_id:
+            raise orm.except_orm(_('Error'), _('No active ID found'))
+        line_pool = self.pool.get('riba.distinta.line')
+        line_pool.write(cr, uid, active_id,
+            {'state': 'unsolved'}, context=context)
+        wf_service.trg_validate(
+            uid, 'riba.distinta', line_pool.browse(cr, uid, active_id).distinta_id.id, 'unsolved', cr)
+        return {'type': 'ir.actions.act_window_close'}
+        
+    def create_move(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        wf_service = netsvc.LocalService("workflow")
+        active_id = context and context.get('active_id', False) or False
+        if not active_id:
+            raise orm.except_orm(_('Error'), _('No active ID found'))
+        move_pool = self.pool.get('account.move')
+        invoice_pool = self.pool.get('account.invoice')
+        move_line_pool = self.pool.get('account.move.line')
+        distinta_line = self.pool.get('riba.distinta.line').browse(cr, uid, active_id, context=context)
+        wizard = self.browse(cr,uid,ids)[0]
+        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:
+            raise orm.except_orm(_('Error'), _('Every account is mandatory'))
+        move_vals = {
+            'ref': _('Unsolved Ri.Ba. %s - line %s') % (distinta_line.distinta_id.name, distinta_line.sequence),
+            'journal_id': wizard.unsolved_journal_id.id,
+            'line_id': [
+                (0,0, {
+                    'name':  _('Effects'),
+                    'account_id': wizard.effects_account_id.id,
+                    'credit': wizard.effects_amount,
+                    'debit': 0.0,
+                    'partner_id': distinta_line.partner_id.id,
+                    }),
+                (0,0, {
+                    'name':  _('Ri.Ba. Bank'),
+                    'account_id': wizard.riba_bank_account_id.id,
+                    'debit': wizard.riba_bank_amount,
+                    'credit': 0.0,
+                    }),
+                (0,0, {
+                    'name':  _('Overdue Effects'),
+                    'account_id': wizard.overdue_effects_account_id.id,
+                    'debit': wizard.overdue_effects_amount,
+                    'credit': 0.0,
+                    'partner_id': distinta_line.partner_id.id,
+                    'date_maturity': distinta_line.due_date,
+                    }),
+                (0,0, {
+                    'name':  _('Bank'),
+                    'account_id': wizard.bank_account_id.id,
+                    'credit': wizard.bank_amount,
+                    'debit': 0.0,
+                    }),
+                (0,0, {
+                    'name':  _('Expenses'),
+                    'account_id': wizard.bank_expense_account_id.id,
+                    'debit': wizard.expense_amount,
+                    'credit': 0.0,
+                    }),
+                ]
+            }
+        move_id = move_pool.create(cr, uid, move_vals, context=context)
+
+        to_be_reconciled = []        
+        for move_line in move_pool.browse(cr, uid, move_id, context=context).line_id:
+            if move_line.account_id.id == wizard.overdue_effects_account_id.id:
+                for riba_move_line in distinta_line.move_line_ids:
+                    invoice_pool.write(cr, uid, riba_move_line.move_line_id.invoice.id, {
+                        'unsolved_move_line_ids': [(4, move_line.id)],
+                        }, context=context)
+            if move_line.account_id.id == wizard.effects_account_id.id:
+                to_be_reconciled.append(move_line.id)
+        for acceptance_move_line in distinta_line.acceptance_move_id.line_id:
+            if acceptance_move_line.debit > 0.0:
+                to_be_reconciled.append(acceptance_move_line.id)
+        move_line_pool.reconcile_partial(cr, uid, to_be_reconciled, context=context)
+        
+        distinta_line.write({
+            'unsolved_move_id': move_id,
+            'state': 'unsolved',
+            })
+        wf_service.trg_validate(
+            uid, 'riba.distinta', distinta_line.distinta_id.id, 'unsolved', cr)
+        return {
+            'name': _('Unsolved Entry'),
+            'view_type': 'form',
+            'view_mode': 'form',
+            'res_model': 'account.move',
+            'type': 'ir.actions.act_window',
+            'target': 'current',
+            'res_id': move_id or False,
+        }

=== 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	2013-10-19 14:59:05 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<openerp>
+    <data>
+        
+        <record id="riba_unsolved" model="ir.ui.view">
+            <field name="name">riba.unsolved.wizard</field>
+            <field name="model">riba.unsolved</field>
+            <field name="arch" type="xml">
+                <form string="Ri.Ba. Unsolved">
+                    <separator string="This wizard generates the journal entry related to an unsolved payment" colspan="4"/>
+					<field name="unsolved_journal_id" />
+                    <newline/>
+					<field name="effects_account_id" />
+					<field name="effects_amount" />
+					<field name="riba_bank_account_id" />
+					<field name="riba_bank_amount" />
+					<field name="overdue_effects_account_id" />
+					<field name="overdue_effects_amount" />
+					<field name="bank_account_id" />
+					<field name="bank_amount" />
+					<field name="bank_expense_account_id" />
+					<field name="expense_amount" />
+                    <button string="Cancel" special="cancel" icon="gtk-cancel" colspan="2"/>
+                    <button string="Create" name="create_move" type="object" icon="gtk-ok" colspan="2"/>
+                    <separator string="You can also skip this step and set the line status to 'unsolved' anyway" colspan="4"/>
+                    <button string="Skip and confirm the unsolved state" name="skip" type="object" icon="gtk-apply" colspan="4"/>
+                </form>
+            </field>
+        </record>
+        
+        <record id="riba_unsolved_action" model="ir.actions.act_window">
+            <field name="name">Ri.Ba. Unsolved</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">riba.unsolved</field>
+            <field name="src_model">riba.distinta.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+            <field name="view_id" ref="riba_unsolved"/>
+
+        </record>
+        
+    </data>
+</openerp>


Follow ups