Merge lp:~domsense/domsense-agilebg-addons/adding_causali into lp:domsense-agilebg-addons/6.0

Proposed by Davide Corio
Status: Rejected
Rejected by: Lorenzo Battistini
Proposed branch: lp:~domsense/domsense-agilebg-addons/adding_causali
Merge into: lp:domsense-agilebg-addons/6.0
Diff against target: 550 lines (+519/-0)
6 files modified
account_recurring_model/AUTHORS.txt (+1/-0)
account_recurring_model/__init__.py (+22/-0)
account_recurring_model/__openerp__.py (+35/-0)
account_recurring_model/account_model.py (+231/-0)
account_recurring_model/account_model_view.xml (+89/-0)
account_recurring_model/i18n/it.po (+141/-0)
To merge this branch: bzr merge lp:~domsense/domsense-agilebg-addons/adding_causali
Reviewer Review Type Date Requested Status
Lorenzo Battistini Needs Information
Review via email: mp+73954@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Lorenzo Battistini (elbati) wrote :

Non si riesce a usare 'super' nei metodi 'generate' e 'create_entries' ?

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

ad occhio direi di no, ma sarei felice di essere smentito

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

Lo consideriamo sostituito da account_move_template e account_invoice_template?

Unmerged revisions

22. By Davide Corio

[ADD] new reg wizard

21. By Davide Corio

[FIX] missing import

20. By Davide Corio

[IMP] dedicated menu item and translations

19. By Davide Corio

[FIX] pdb removed

18. By Davide Corio

[IMP] tax computation

17. By Davide Corio

[IMP] added tax_code on model line

16. By Lorenzo Battistini

[DEL] account_voucher_template

15. By Lorenzo Battistini

[FIX] varie

14. By Lorenzo Battistini

[FIX] mandatory field

13. By Lorenzo Battistini

[add] account_recurring_model account_voucher_template

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'account_recurring_model'
2=== added file 'account_recurring_model/AUTHORS.txt'
3--- account_recurring_model/AUTHORS.txt 1970-01-01 00:00:00 +0000
4+++ account_recurring_model/AUTHORS.txt 2011-09-03 19:18:23 +0000
5@@ -0,0 +1,1 @@
6+Davide Corio <davide.corio@agilebg.com>
7
8=== added file 'account_recurring_model/__init__.py'
9--- account_recurring_model/__init__.py 1970-01-01 00:00:00 +0000
10+++ account_recurring_model/__init__.py 2011-09-03 19:18:23 +0000
11@@ -0,0 +1,22 @@
12+# -*- encoding: utf-8 -*-
13+##############################################################################
14+#
15+# OpenERP, Open Source Management Solution
16+# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
17+#
18+# This program is free software: you can redistribute it and/or modify
19+# it under the terms of the GNU Affero General Public License as
20+# published by the Free Software Foundation, either version 3 of the
21+# License, or (at your option) any later version.
22+#
23+# This program is distributed in the hope that it will be useful,
24+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26+# GNU Affero General Public License for more details.
27+#
28+# You should have received a copy of the GNU Affero General Public License
29+# along with this program. If not, see <http://www.gnu.org/licenses/>.
30+#
31+##############################################################################
32+
33+import account_model
34
35=== added file 'account_recurring_model/__openerp__.py'
36--- account_recurring_model/__openerp__.py 1970-01-01 00:00:00 +0000
37+++ account_recurring_model/__openerp__.py 2011-09-03 19:18:23 +0000
38@@ -0,0 +1,35 @@
39+# -*- encoding: utf-8 -*-
40+##############################################################################
41+#
42+# OpenERP, Open Source Management Solution
43+# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
44+#
45+# This program is free software: you can redistribute it and/or modify
46+# it under the terms of the GNU Affero General Public License as
47+# published by the Free Software Foundation, either version 3 of the
48+# License, or (at your option) any later version.
49+#
50+# This program is distributed in the hope that it will be useful,
51+# but WITHOUT ANY WARRANTY; without even the implied warranty of
52+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53+# GNU Affero General Public License for more details.
54+#
55+# You should have received a copy of the GNU Affero General Public License
56+# along with this program. If not, see <http://www.gnu.org/licenses/>.
57+#
58+##############################################################################
59+{
60+ 'name': 'Account Recurring Models',
61+ 'version': '0.1',
62+ 'category': 'Generic Modules/Accounting',
63+ 'description': """Account Recurring Models (Improvements)""",
64+ 'author': 'Agile Business Group & Domsense',
65+ 'website': 'http://www.agilebg.com',
66+ 'license': 'AGPL-3',
67+ "depends" : ['account'],
68+ "init_xml" : ['account_model_view.xml'],
69+ "update_xml" : [],
70+ "demo_xml" : [],
71+ "active": False,
72+ "installable": True
73+}
74
75=== added file 'account_recurring_model/account_model.py'
76--- account_recurring_model/account_model.py 1970-01-01 00:00:00 +0000
77+++ account_recurring_model/account_model.py 2011-09-03 19:18:23 +0000
78@@ -0,0 +1,231 @@
79+# -*- encoding: utf-8 -*-
80+##############################################################################
81+#
82+# OpenERP, Open Source Management Solution
83+# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
84+#
85+# This program is free software: you can redistribute it and/or modify
86+# it under the terms of the GNU Affero General Public License as
87+# published by the Free Software Foundation, either version 3 of the
88+# License, or (at your option) any later version.
89+#
90+# This program is distributed in the hope that it will be useful,
91+# but WITHOUT ANY WARRANTY; without even the implied warranty of
92+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93+# GNU Affero General Public License for more details.
94+#
95+# You should have received a copy of the GNU Affero General Public License
96+# along with this program. If not, see <http://www.gnu.org/licenses/>.
97+#
98+##############################################################################
99+
100+import datetime
101+import time
102+import decimal_precision as dp
103+
104+from osv import fields, osv
105+from tools.translate import _
106+
107+
108+class account_model_line(osv.osv):
109+
110+ _inherit = 'account.model.line'
111+ _columns = {
112+ 'type':fields.selection([
113+ ('cr','Credit'),
114+ ('dr','Debit'),
115+ ], 'Type'),
116+ 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
117+ 'value_type': fields.selection([
118+ ('amount','Amount'),
119+ ('percentage','Percentage'),
120+ ], 'Value Type'),
121+ 'account_tax_id': fields.many2one('account.tax','Tax'),
122+ }
123+
124+ def compute_amount(self,vals,amount):
125+ if vals['type']=='cr' and vals['value_type']=='amount':
126+ vals['credit']=vals['amount']
127+ elif vals['type']=='cr' and vals['value_type']=='percentage':
128+ vals['credit']=(amount/100)*vals['amount']
129+ elif vals['type']=='dr' and vals['value_type']=='amount':
130+ vals['debit']=vals['amount']
131+ elif vals['type']=='dr' and vals['value_type']=='percentage':
132+ vals['debit']=(amount/100)*vals['amount']
133+ return vals
134+
135+ def create(self, cr, uid, vals, context=None):
136+ amount = self.pool.get('account.model').browse(cr,uid,vals['model_id']).amount
137+ vals = self.compute_amount(vals,amount)
138+ return super(account_model_line, self).create(cr, uid, vals, context)
139+
140+ def write(self, cr, uid, ids, vals, context=None):
141+ amount = self.pool.get('account.model.line').browse(cr,uid,ids[0]).model_id.amount
142+ vals = self.compute_amount(vals,amount)
143+ return super(account_model_line, self).write(cr, uid, ids, vals, context=context)
144+
145+account_model_line()
146+
147+class account_model(osv.osv):
148+
149+ _inherit = 'account.model'
150+ _columns = {
151+ 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
152+ }
153+
154+ def generate(self, cr, uid, ids, datas={}, context=None):
155+ move_ids = []
156+ entry = {}
157+ account_move_obj = self.pool.get('account.move')
158+ account_move_line_obj = self.pool.get('account.move.line')
159+ pt_obj = self.pool.get('account.payment.term')
160+
161+ if context is None:
162+ context = {}
163+
164+ if datas.get('date', False):
165+ context.update({'date': datas['date']})
166+
167+ period_id = self.pool.get('account.period').find(cr, uid, dt=context.get('date', False))
168+ if not period_id:
169+ raise osv.except_osv(_('No period found !'), _('Unable to find a valid period !'))
170+ period_id = period_id[0]
171+
172+ for model in self.browse(cr, uid, ids, context=context):
173+ entry['name'] = model.name%{'year':time.strftime('%Y'), 'month':time.strftime('%m'), 'date':time.strftime('%Y-%m')}
174+ move_id = account_move_obj.create(cr, uid, {
175+ 'ref': entry['name'],
176+ 'period_id': period_id,
177+ 'journal_id': model.journal_id.id,
178+ 'date': context.get('date',time.strftime('%Y-%m-%d'))
179+ })
180+ move_ids.append(move_id)
181+ for line in model.lines_id:
182+ analytic_account_id = False
183+ if line.analytic_account_id:
184+ if not model.journal_id.analytic_journal_id:
185+ raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (model.journal_id.name,))
186+ analytic_account_id = line.analytic_account_id.id
187+ val = {
188+ 'move_id': move_id,
189+ 'journal_id': model.journal_id.id,
190+ 'period_id': period_id,
191+ 'analytic_account_id': analytic_account_id
192+ }
193+
194+ date_maturity = time.strftime('%Y-%m-%d')
195+ if line.date_maturity == 'partner':
196+ if not line.partner_id:
197+ raise osv.except_osv(_('Error !'), _("Maturity date of entry line generated by model line '%s' of model '%s' is based on partner payment term!" \
198+ "\nPlease define partner on it!")%(line.name, model.name))
199+ if line.partner_id.property_payment_term:
200+ payment_term_id = line.partner_id.property_payment_term.id
201+ pterm_list = pt_obj.compute(cr, uid, payment_term_id, value=1, date_ref=date_maturity)
202+ if pterm_list:
203+ pterm_list = [l[0] for l in pterm_list]
204+ pterm_list.sort()
205+ date_maturity = pterm_list[-1]
206+
207+ val.update({
208+ 'name': line.name,
209+ 'quantity': line.quantity,
210+ 'debit': line.debit,
211+ 'credit': line.credit,
212+ 'account_id': line.account_id.id,
213+ 'move_id': move_id,
214+ 'partner_id': line.partner_id.id,
215+ 'date': context.get('date',time.strftime('%Y-%m-%d')),
216+ 'date_maturity': date_maturity,
217+ 'account_tax_id': line.account_tax_id.id,
218+ })
219+ c = context.copy()
220+ c.update({'journal_id': model.journal_id.id,'period_id': period_id})
221+ account_move_line_obj.create(cr, uid, val, context=c)
222+
223+ return move_ids
224+
225+account_model()
226+
227+class account_use_model(osv.osv_memory):
228+
229+ _inherit = 'account.use.model'
230+
231+ def create_entries(self, cr, uid, ids, context=None):
232+ account_model_obj = self.pool.get('account.model')
233+ account_period_obj = self.pool.get('account.period')
234+ account_move_obj = self.pool.get('account.move')
235+ account_move_line_obj = self.pool.get('account.move.line')
236+ pt_obj = self.pool.get('account.payment.term')
237+ mod_obj = self.pool.get('ir.model.data')
238+ if context is None:
239+ context = {}
240+ move_ids = []
241+ entry = {}
242+ data = self.read(cr, uid, ids, context=context)[0]
243+ record_id = context and context.get('model_line', False) or False
244+ if record_id:
245+ data_model = account_model_obj.browse(cr, uid, data['model'], context=context)
246+ else:
247+ data_model = account_model_obj.browse(cr, uid, context['active_ids'], context=context)
248+ for model in data_model:
249+ entry['name'] = model.name%{'year':time.strftime('%Y'), 'month':time.strftime('%m'), 'date':time.strftime('%d')}
250+ period_id = account_period_obj.find(cr, uid, context=context)
251+ if not period_id:
252+ raise osv.except_osv(_('No period found !'), _('Unable to find a valid period !'))
253+ period_id = period_id[0]
254+ move_id = account_move_obj.create(cr, uid, {
255+ 'ref': entry['name'],
256+ 'period_id': period_id,
257+ 'journal_id': model.journal_id.id,
258+ })
259+ move_ids.append(move_id)
260+ for line in model.lines_id:
261+ analytic_account_id = False
262+ if line.analytic_account_id:
263+ if not model.journal_id.analytic_journal_id:
264+ raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (model.journal_id.name,))
265+ analytic_account_id = line.analytic_account_id.id
266+ val = {
267+ 'move_id': move_id,
268+ 'journal_id': model.journal_id.id,
269+ 'period_id': period_id,
270+ 'analytic_account_id': analytic_account_id
271+ }
272+ date_maturity = time.strftime('%Y-%m-%d')
273+ if line.date_maturity == 'partner' and line.partner_id and line.partner_id.property_payment_term:
274+ payment_term_id = line.partner_id.property_payment_term.id
275+ pterm_list = pt_obj.compute(cr, uid, payment_term_id, value=1, date_ref=date_maturity)
276+ if pterm_list:
277+ pterm_list = [l[0] for l in pterm_list]
278+ pterm_list.sort()
279+ date_maturity = pterm_list[-1]
280+ val.update({
281+ 'name': line.name,
282+ 'quantity': line.quantity,
283+ 'debit': line.debit,
284+ 'credit': line.credit,
285+ 'account_id': line.account_id.id,
286+ 'move_id': move_id,
287+ 'partner_id': line.partner_id.id,
288+ 'date': time.strftime('%Y-%m-%d'),
289+ 'date_maturity': date_maturity,
290+ 'account_tax_id': line.account_tax_id.id,
291+ })
292+ c = context.copy()
293+ c.update({'journal_id': model.journal_id.id,'period_id': period_id})
294+ id_line = account_move_line_obj.create(cr, uid, val, context=c)
295+
296+ context.update({'move_ids':move_ids})
297+ model_data_ids = mod_obj.search(cr, uid,[('model','=','ir.ui.view'),('name','=','view_move_form')], context=context)
298+ resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
299+ return {
300+ 'domain': "[('id','in', ["+','.join(map(str,context['move_ids']))+"])]",
301+ 'name': 'Entries',
302+ 'view_type': 'form',
303+ 'view_mode': 'tree,form',
304+ 'res_model': 'account.move',
305+ 'views': [(False,'tree'),(resource_id,'form')],
306+ 'type': 'ir.actions.act_window',
307+ }
308+
309+account_use_model()
310
311=== added file 'account_recurring_model/account_model_view.xml'
312--- account_recurring_model/account_model_view.xml 1970-01-01 00:00:00 +0000
313+++ account_recurring_model/account_model_view.xml 2011-09-03 19:18:23 +0000
314@@ -0,0 +1,89 @@
315+<?xml version="1.0" encoding="UTF-8"?>
316+<openerp>
317+ <data>
318+
319+ <record id="view_model_line_form_type" model="ir.ui.view">
320+ <field name="name">account.model.line.form.type</field>
321+ <field name="model">account.model.line</field>
322+ <field name="inherit_id" ref="account.view_model_line_form"/>
323+ <field name="arch" type="xml">
324+ <field name="partner_id" position="after">
325+ <field name="type"/>
326+ </field>
327+ </field>
328+ </record>
329+
330+ <record id="view_model_form_amount" model="ir.ui.view">
331+ <field name="name">account.model.form.amount</field>
332+ <field name="model">account.model</field>
333+ <field name="inherit_id" ref="account.view_model_form"/>
334+ <field name="arch" type="xml">
335+ <field name="name" position="after">
336+ <field name="amount"/>
337+ </field>
338+ </field>
339+ </record>
340+
341+ <record id="view_model_line_tree_type" model="ir.ui.view">
342+ <field name="name">account.model.line.tree.type</field>
343+ <field name="model">account.model.line</field>
344+ <field name="inherit_id" ref="account.view_model_line_tree"/>
345+ <field name="arch" type="xml">
346+ <field name="partner_id" position="after">
347+ <field name="type"/>
348+ </field>
349+ </field>
350+ </record>
351+
352+ <record id="view_model_line_tree_amount_1" model="ir.ui.view">
353+ <field name="name">account.model.line.tree.amount.1</field>
354+ <field name="model">account.model.line</field>
355+ <field name="inherit_id" ref="account.view_model_line_tree"/>
356+ <field name="arch" type="xml">
357+ <field name="credit" position="replace">
358+ </field>
359+ </field>
360+ </record>
361+
362+ <record id="view_model_line_tree_amount_2" model="ir.ui.view">
363+ <field name="name">account.model.line.tree.amount.2</field>
364+ <field name="model">account.model.line</field>
365+ <field name="inherit_id" ref="account.view_model_line_tree"/>
366+ <field name="arch" type="xml">
367+ <field name="debit" position="replace">
368+ <field name="value_type"/>
369+ <field name="amount"/>
370+ <field name="account_tax_id"/>
371+ </field>
372+ </field>
373+ </record>
374+
375+ <record id="view_model_line_form_amount_1" model="ir.ui.view">
376+ <field name="name">account.model.line.form.amount.1</field>
377+ <field name="model">account.model.line</field>
378+ <field name="inherit_id" ref="account.view_model_line_form"/>
379+ <field name="arch" type="xml">
380+ <field name="credit" position="replace">
381+ </field>
382+ </field>
383+ </record>
384+
385+ <record id="view_model_line_form_amount_2" model="ir.ui.view">
386+ <field name="name">account.model.line.form.amount.2</field>
387+ <field name="model">account.model.line</field>
388+ <field name="inherit_id" ref="account.view_model_line_form"/>
389+ <field name="arch" type="xml">
390+ <field name="debit" position="replace">
391+ <field name="value_type"/>
392+ <field name="amount"/>
393+ <field name="account_tax_id"/>
394+ </field>
395+ </field>
396+ </record>
397+
398+ <menuitem
399+ action="account.action_model_form" name="Recurring Models" id="menu_action_recurring_model_form" sequence="5" parent="account.menu_finance_entries" groups="base.group_extended"/>
400+ <menuitem name="Create Entries from Model" action="account.action_view_account_use_model" id="menu_action_manual_recurring" sequence="10" parent="account.menu_finance_entries"/>
401+
402+ </data>
403+</openerp>
404
405=== added directory 'account_recurring_model/i18n'
406=== added file 'account_recurring_model/i18n/it.po'
407--- account_recurring_model/i18n/it.po 1970-01-01 00:00:00 +0000
408+++ account_recurring_model/i18n/it.po 2011-09-03 19:18:23 +0000
409@@ -0,0 +1,141 @@
410+# Translation of OpenERP Server.
411+# This file contains the translation of the following modules:
412+# * account_recurring_model
413+#
414+msgid ""
415+msgstr ""
416+"Project-Id-Version: OpenERP Server 6.0.2\n"
417+"Report-Msgid-Bugs-To: support@openerp.com\n"
418+"POT-Creation-Date: 2011-09-03 15:29+0000\n"
419+"PO-Revision-Date: 2011-09-03 15:29+0000\n"
420+"Last-Translator: <>\n"
421+"Language-Team: \n"
422+"MIME-Version: 1.0\n"
423+"Content-Type: text/plain; charset=UTF-8\n"
424+"Content-Transfer-Encoding: \n"
425+"Plural-Forms: \n"
426+
427+#. module: account_recurring_model
428+#: code:addons/account_recurring_model/account_model.py:107
429+#: code:addons/account_recurring_model/account_model.py:186
430+#, python-format
431+msgid "You have to define an analytic journal on the '%s' journal!"
432+msgstr "E' necessario definire un giornale analitico sul sezionale '%s'!"
433+
434+#. module: account_recurring_model
435+#: selection:account.model.line,type:0
436+msgid "Debit"
437+msgstr "Dare"
438+
439+#. module: account_recurring_model
440+#: model:ir.ui.menu,name:account_recurring_model.menu_action_manual_recurring
441+msgid "Create Entries from Model"
442+msgstr "Crea registrazioni da causale"
443+
444+#. module: account_recurring_model
445+#: field:account.model.line,type:0
446+msgid "Type"
447+msgstr "Tipo"
448+
449+#. module: account_recurring_model
450+#: selection:account.model.line,value_type:0
451+msgid "Percentage"
452+msgstr "Percentuale"
453+
454+#. module: account_recurring_model
455+#: code:addons/account_recurring_model/account_model.py:119
456+#, python-format
457+msgid "Error !"
458+msgstr "Errore !"
459+
460+#. module: account_recurring_model
461+#: model:ir.module.module,description:account_recurring_model.module_meta_information
462+msgid "Account Recurring Models (Improvements)"
463+msgstr "Account Recurring Models (Improvements)"
464+
465+#. module: account_recurring_model
466+#: code:addons/account_recurring_model/account_model.py:119
467+#, python-format
468+msgid "Maturity date of entry line generated by model line '%s' of model '%s' is based on partner payment term!\n"
469+"Please define partner on it!"
470+msgstr "Maturity date of entry line generated by model line '%s' of model '%s' is based on partner payment term!\n"
471+"Please define partner on it!"
472+
473+#. module: account_recurring_model
474+#: model:ir.ui.menu,name:account_recurring_model.menu_action_recurring_model_form
475+msgid "Recurring Models"
476+msgstr "Modelli Causale"
477+
478+#. module: account_recurring_model
479+#: model:ir.model,name:account_recurring_model.model_account_model
480+msgid "Account Model"
481+msgstr "Modello Causale"
482+
483+#. module: account_recurring_model
484+#: sql_constraint:account.model.line:0
485+msgid "Wrong credit or debit value in model (Credit Or Debit Must Be \"0\")!"
486+msgstr "Errato valore per il credito od il debito nel modello (uno dei due deve essere \"0\") !"
487+
488+#. module: account_recurring_model
489+#: sql_constraint:account.model.line:0
490+msgid "Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!"
491+msgstr "Valore del credito o debito errato (credito+debito deve essere maggiore di \"0\")!"
492+
493+#. module: account_recurring_model
494+#: model:ir.model,name:account_recurring_model.model_account_model_line
495+msgid "Account Model Entries"
496+msgstr "Voci Modello Causale"
497+
498+#. module: account_recurring_model
499+#: selection:account.model.line,type:0
500+msgid "Credit"
501+msgstr "Avere"
502+
503+#. module: account_recurring_model
504+#: field:account.model,amount:0
505+#: field:account.model.line,amount:0
506+#: selection:account.model.line,value_type:0
507+msgid "Amount"
508+msgstr "Importo"
509+
510+#. module: account_recurring_model
511+#: model:ir.model,name:account_recurring_model.model_account_use_model
512+msgid "Use model"
513+msgstr "Usa il modello"
514+
515+#. module: account_recurring_model
516+#: model:ir.module.module,shortdesc:account_recurring_model.module_meta_information
517+msgid "Account Recurring Models"
518+msgstr "Account Recurring Models"
519+
520+#. module: account_recurring_model
521+#: code:addons/account_recurring_model/account_model.py:91
522+#: code:addons/account_recurring_model/account_model.py:174
523+#, python-format
524+msgid "Unable to find a valid period !"
525+msgstr "Impossibile trovare un periodo valido!"
526+
527+#. module: account_recurring_model
528+#: field:account.model.line,value_type:0
529+msgid "Value Type"
530+msgstr "Tipo Valore"
531+
532+#. module: account_recurring_model
533+#: code:addons/account_recurring_model/account_model.py:107
534+#: code:addons/account_recurring_model/account_model.py:186
535+#, python-format
536+msgid "No Analytic Journal !"
537+msgstr "No Analytic Journal !"
538+
539+#. module: account_recurring_model
540+#: field:account.model.line,account_tax_id:0
541+msgid "Tax"
542+msgstr "Tassa"
543+
544+#. module: account_recurring_model
545+#: code:addons/account_recurring_model/account_model.py:91
546+#: code:addons/account_recurring_model/account_model.py:174
547+#, python-format
548+msgid "No period found !"
549+msgstr "No period found !"
550+

Subscribers

People subscribed via source and target branches

to status/vote changes: