Merge lp:~enlightx-deactivatedaccount/openobject-italia/7.0-l10n_it_ricevute_bancarie into lp:~openobject-italia-core-devs/openobject-italia/italian-addons-7.0

Proposed by Davide Corio
Status: Needs review
Proposed branch: lp:~enlightx-deactivatedaccount/openobject-italia/7.0-l10n_it_ricevute_bancarie
Merge into: lp:~openobject-italia-core-devs/openobject-italia/italian-addons-7.0
Diff against target: 3296 lines (+3161/-0)
26 files modified
l10n_it_ricevute_bancarie/AUTHORS.txt (+3/-0)
l10n_it_ricevute_bancarie/__init__.py (+32/-0)
l10n_it_ricevute_bancarie/__openerp__.py (+71/-0)
l10n_it_ricevute_bancarie/account/__init__.py (+24/-0)
l10n_it_ricevute_bancarie/account/account.py (+121/-0)
l10n_it_ricevute_bancarie/account/account_view.xml (+145/-0)
l10n_it_ricevute_bancarie/configurazione.py (+85/-0)
l10n_it_ricevute_bancarie/configurazione_view.xml (+50/-0)
l10n_it_ricevute_bancarie/i18n/it.po (+930/-0)
l10n_it_ricevute_bancarie/partner/__init__.py (+24/-0)
l10n_it_ricevute_bancarie/partner/partner.py (+37/-0)
l10n_it_ricevute_bancarie/partner/partner_view.xml (+23/-0)
l10n_it_ricevute_bancarie/riba.py (+401/-0)
l10n_it_ricevute_bancarie/riba_sequence.xml (+17/-0)
l10n_it_ricevute_bancarie/riba_view.xml (+180/-0)
l10n_it_ricevute_bancarie/riba_workflow.xml (+112/-0)
l10n_it_ricevute_bancarie/security/ir.model.access.csv (+15/-0)
l10n_it_ricevute_bancarie/wizard/__init__.py (+30/-0)
l10n_it_ricevute_bancarie/wizard/riba_file_export.py (+241/-0)
l10n_it_ricevute_bancarie/wizard/riba_file_export.xml (+32/-0)
l10n_it_ricevute_bancarie/wizard/wizard_accreditation.py (+137/-0)
l10n_it_ricevute_bancarie/wizard/wizard_accreditation.xml (+41/-0)
l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.py (+131/-0)
l10n_it_ricevute_bancarie/wizard/wizard_emissione_riba.xml (+50/-0)
l10n_it_ricevute_bancarie/wizard/wizard_unsolved.py (+184/-0)
l10n_it_ricevute_bancarie/wizard/wizard_unsolved.xml (+45/-0)
To merge this branch: bzr merge lp:~enlightx-deactivatedaccount/openobject-italia/7.0-l10n_it_ricevute_bancarie
Reviewer Review Type Date Requested Status
Lorenzo Battistini Needs Fixing
Review via email: mp+194577@code.launchpad.net

Description of the change

v7 compat fixes for l10n_it_ricevute_bancarie

To post a comment you must log in.
Revision history for this message
Lorenzo Battistini (elbati) wrote :

Grazie Davide,
allego il diff tra la versione 6.1 e 7.0, per valutare meglio le modifiche:
http://pastie.org/8467470

Revision history for this message
Davide Corio (enlightx-deactivatedaccount) wrote :

Grazie a te.

In particolare non mi sono chiare le modifiche fatte ad account_move_line.
Presumo abbiano uno scopo preciso.

Ammetto di non aver indagato.

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

Se sei d'accordo, in questa MP includerei solamente le modifiche atte a far funzionare il modulo stabile (quello sul branch ufficiale 6.1) sulla 7.0. Le correzioni ai bachi o eventuali miglioramenti al modulo le introdurrei tramite apposite merge proposals.

Quindi, facendo riferimento al diff:

l 17: Lascerei la dipendenza da account_due_list. Per velocizzare il processo di merge di tale modulo sui branch community, invito tutti a fare una review su https://code.launchpad.net/~agilebg/account-payment/adding_account_due_list_7/+merge/182330

l 72-127: sono campi/modifiche che verrebbero introdotte da account_due_list, quindi, se lasciamo la dipendenza, non sono necessari

l 207: è forse una modifica che risolverebbe qualche bug conosciuto? La terrei comunque fuori per ora

l 311, 319, 328, 336, 631: come mai viene passato il self alla chiamata ad un metodo?

l 353, 728: anche questa riga risolve forse un bug esistente?

l 440: la scriverei così: creditor_province = creditor_address.province and creditor_address.province.code or ''

l 649, 658: è necessario per il porting alla 7?

l 745-750: probabilmente un enhancement da tenere fuori da questa MP

PS: non eliminare questa MP in caso ne volessi fare un'altra, al massimo la impostiamo a rejected. Ti consiglio comunque di fare le modifiche direttamente su lp:~enlightx/openobject-italia/7.0-l10n_it_ricevute_bancarie e questa MP verrà aggiornata automaticamente.

PPS: se hai bisogno di verificare il diff tra versione 6.1 e 7.0, puoi copiare nel branch 6.1 il modulo dal branch 7.0 e fare bzr diff

review: Needs Fixing
Revision history for this message
Davide Corio (enlightx-deactivatedaccount) wrote :

Personalmente mi interesserebbe sentire il parere di Bruno sulle modifiche apportate, appunto per capire se risolvono effettivamente dei bachi esistenti.

Revision history for this message
Davide Corio (enlightx-deactivatedaccount) wrote :

Abbiamo ora entrambe le versioni, con e senza le migliorie apportate da Bruno.

Quella "standard" è qui:

https://code.launchpad.net/~enlightx/openobject-italia/adding_riba_v7/+merge/194620

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

2013/11/9 Davide Corio <email address hidden>

> Personalmente mi interesserebbe sentire il parere di Bruno sulle modifiche
> apportate, appunto per capire se risolvono effettivamente dei bachi
> esistenti.
>
>
Anche a me, ma vorrei parlarne sulle relative merge proposals.

Ad esempio questa
https://code.launchpad.net/~bruno-bottacini/openobject-italia/6.1-fix-bug-1167773/+merge/158863
è ancora in sospeso e non la includerei nel porting.

Se nella MP del porting vogliamo includere modifiche non direttamente
collegate al porting alla 7, per ogni ulteriore modifica bisogna spiegare
cosa fa, cosa risolve o cosa migliora. E deve essere approvata.

Revision history for this message
Davide Corio (enlightx-deactivatedaccount) wrote :

Quindi conviene partire da https://code.launchpad.net/~enlightx/openobject-italia/adding_riba_v7/+merge/194620 e marcare questo come rejected

Unmerged revisions

225. By Davide Corio

[ADD] l10n_it_ricevute_bancarie

Preview Diff

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

Subscribers

People subscribed via source and target branches