[IMP+FIX] account_analytic_analysis_recurring: Several things

* Translations
* Access rules
* README
* Currency for created invoices.
*  #START# and #END# set correctly
* Some conventions
This commit is contained in:
Pedro M. Baeza
2014-08-25 20:32:38 +02:00
committed by Christopher Rogos
parent 6e8662b208
commit 48a89c0697
6 changed files with 243 additions and 237 deletions

View File

@@ -19,4 +19,4 @@
# #
############################################################################## ##############################################################################
import account_analytic_analysis_recurring from . import account_analytic_analysis_recurring

View File

@@ -25,14 +25,14 @@
'version': '0.1', 'version': '0.1',
'category': 'Other', 'category': 'Other',
'description': """ 'description': """
This module add a new feature in contracts to manage recurring invoice This module adds a new feature in contracts to manage recurring invoicing
====================================================================== =========================================================================
This is a backport of the new V8 feature available in trunk and saas. With This is a backport of the new V8 feature available in trunk and saas. With
the V8 release this module will be deprecated. the V8 release this module will be deprecated.
It also add a little feature, you can use #START# and #END# in the contract It also adds a little feature, you can use #START# and #END# in the contract
line to automatically insert the dates of the invoiced period. line description to automatically insert the dates of the invoiced period.
Backport done By Yannick Buron. Backport done By Yannick Buron.
""", """,
@@ -40,12 +40,12 @@ Backport done By Yannick Buron.
'website': 'http://openerp.com', 'website': 'http://openerp.com',
'depends': ['base', 'account_analytic_analysis'], 'depends': ['base', 'account_analytic_analysis'],
'data': [ 'data': [
'security/ir.model.access.csv',
'account_analytic_analysis_recurring_cron.xml', 'account_analytic_analysis_recurring_cron.xml',
'account_analytic_analysis_recurring_view.xml', 'account_analytic_analysis_recurring_view.xml',
], ],
'demo': [''], 'demo': [],
'test': [], 'test': [],
'installable': True, 'installable': True,
'images': [], 'images': [],
} }
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -23,15 +23,14 @@ import datetime
import logging import logging
import time import time
from openerp.osv import osv, fields from openerp.osv import orm, fields
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.addons.decimal_precision import decimal_precision as dp from openerp.addons.decimal_precision import decimal_precision as dp
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
class account_analytic_invoice_line(osv.osv): class AccountAnalyticInvoiceLine(orm.Model):
_name = "account.analytic.invoice.line" _name = "account.analytic.invoice.line"
def _amount_line( def _amount_line(
@@ -104,7 +103,7 @@ class account_analytic_invoice_line(osv.osv):
return res_final return res_final
class account_analytic_account(osv.osv): class AccountAnalyticAccount(orm.Model):
_name = "account.analytic.account" _name = "account.analytic.account"
_inherit = "account.analytic.account" _inherit = "account.analytic.account"
@@ -132,6 +131,13 @@ class account_analytic_account(osv.osv):
'recurring_rule_type': 'monthly' 'recurring_rule_type': 'monthly'
} }
def copy(self, cr, uid, id, default=None, context=None):
# Reset next invoice date
default['recurring_next_date'] = \
self._defaults['recurring_next_date']()
return super(AccountAnalyticAccount, self).copy(
cr, uid, id, default=default, context=context)
def onchange_recurring_invoices( def onchange_recurring_invoices(
self, cr, uid, ids, recurring_invoices, self, cr, uid, ids, recurring_invoices,
date_start=False, context=None): date_start=False, context=None):
@@ -141,39 +147,36 @@ class account_analytic_account(osv.osv):
return value return value
def _prepare_invoice(self, cr, uid, contract, context=None): def _prepare_invoice(self, cr, uid, contract, context=None):
context = context or {} if context is None:
context = {}
inv_obj = self.pool.get('account.invoice') inv_obj = self.pool.get('account.invoice')
journal_obj = self.pool.get('account.journal') journal_obj = self.pool.get('account.journal')
fpos_obj = self.pool.get('account.fiscal.position') fpos_obj = self.pool.get('account.fiscal.position')
lang_obj = self.pool.get('res.lang') lang_obj = self.pool.get('res.lang')
if not contract.partner_id: if not contract.partner_id:
raise osv.except_osv( raise orm.except_orm(
_('No Customer Defined!'), _('No Customer Defined!'),
_("You must first select a Customer for Contract %s!") % _("You must first select a Customer for Contract %s!") %
contract.name) contract.name)
partner = contract.partner_id
fpos = contract.partner_id.property_account_position or False fpos = partner.property_account_position or False
journal_ids = journal_obj.search( journal_ids = journal_obj.search(
cr, uid, cr, uid,
[('type', '=', 'sale'), [('type', '=', 'sale'),
('company_id', '=', contract.company_id.id or False)], ('company_id', '=', contract.company_id.id or False)],
limit=1) limit=1)
if not journal_ids: if not journal_ids:
raise osv.except_osv( raise orm.except_orm(
_('Error!'), _('Error!'),
_('Please define a sale journal for the company "%s".') % _('Please define a sale journal for the company "%s".') %
(contract.company_id.name or '', )) (contract.company_id.name or '', ))
partner_payment_term = contract.partner_id.property_payment_term.id partner_payment_term = contract.partner_id.property_payment_term.id
inv_data = { inv_data = {
'reference': contract.code or False, 'reference': contract.code or False,
'account_id': contract.partner_id.property_account_receivable.id, 'account_id': partner.property_account_receivable.id,
'type': 'out_invoice', 'type': 'out_invoice',
'partner_id': contract.partner_id.id, 'partner_id': partner.id,
'currency_id': contract.partner_id.property_product_pricelist.id, 'currency_id': partner.property_product_pricelist.currency_id.id,
'journal_id': len(journal_ids) and journal_ids[0] or False, 'journal_id': len(journal_ids) and journal_ids[0] or False,
'date_invoice': contract.recurring_next_date, 'date_invoice': contract.recurring_next_date,
'origin': contract.name, 'origin': contract.name,
@@ -182,18 +185,14 @@ class account_analytic_account(osv.osv):
'company_id': contract.company_id.id or False, 'company_id': contract.company_id.id or False,
} }
invoice_id = inv_obj.create(cr, uid, inv_data, context=context) invoice_id = inv_obj.create(cr, uid, inv_data, context=context)
for line in contract.recurring_invoice_line_ids: for line in contract.recurring_invoice_line_ids:
res = line.product_id res = line.product_id
account_id = res.property_account_income.id account_id = res.property_account_income.id
if not account_id: if not account_id:
account_id = res.categ_id.property_account_income_categ.id account_id = res.categ_id.property_account_income_categ.id
account_id = fpos_obj.map_account(cr, uid, fpos, account_id) account_id = fpos_obj.map_account(cr, uid, fpos, account_id)
taxes = res.taxes_id or False taxes = res.taxes_id or False
tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
if 'old_date' in context: if 'old_date' in context:
lang_ids = lang_obj.search( lang_ids = lang_obj.search(
cr, uid, [('code', '=', contract.partner_id.lang)], cr, uid, [('code', '=', contract.partner_id.lang)],
@@ -204,7 +203,6 @@ class account_analytic_account(osv.osv):
'#START#', context['old_date'].strftime(format)) '#START#', context['old_date'].strftime(format))
line.name = line.name.replace( line.name = line.name.replace(
'#END#', context['next_date'].strftime(format)) '#END#', context['next_date'].strftime(format))
invoice_line_vals = { invoice_line_vals = {
'name': line.name, 'name': line.name,
'account_id': account_id, 'account_id': account_id,
@@ -216,42 +214,35 @@ class account_analytic_account(osv.osv):
'invoice_id': invoice_id, 'invoice_id': invoice_id,
'invoice_line_tax_id': [(6, 0, tax_id)], 'invoice_line_tax_id': [(6, 0, tax_id)],
} }
self.pool.get('account.invoice.line').create( self.pool['account.invoice.line'].create(
cr, uid, invoice_line_vals, context=context) cr, uid, invoice_line_vals, context=context)
inv_obj.button_compute(cr, uid, [invoice_id], context=context) inv_obj.button_compute(cr, uid, [invoice_id], context=context)
return invoice_id return invoice_id
def recurring_create_invoice(self, cr, uid, automatic=False, context=None): def recurring_create_invoice(self, cr, uid, automatic=False, context=None):
context = context or {} if context is None:
context = {}
current_date = time.strftime('%Y-%m-%d') current_date = time.strftime('%Y-%m-%d')
contract_ids = self.search( contract_ids = self.search(
cr, uid, cr, uid,
[('recurring_next_date', '<=', current_date), [('recurring_next_date', '<=', current_date),
('state', '=', 'open'), ('state', '=', 'open'),
('recurring_invoices', '=', True)]) ('recurring_invoices', '=', True)])
for contract in self.browse(cr, uid, contract_ids, context=context): for contract in self.browse(cr, uid, contract_ids, context=context):
next_date = datetime.datetime.strptime( next_date = datetime.datetime.strptime(
contract.recurring_next_date or current_date, "%Y-%m-%d") contract.recurring_next_date or current_date, "%Y-%m-%d")
interval = contract.recurring_interval interval = contract.recurring_interval
old_date = next_date
if contract.recurring_rule_type == 'daily': if contract.recurring_rule_type == 'daily':
old_date = next_date-relativedelta(days=+interval) new_date = next_date + relativedelta(days=+interval)
new_date = next_date+relativedelta(days=+interval)
elif contract.recurring_rule_type == 'weekly': elif contract.recurring_rule_type == 'weekly':
old_date = next_date-relativedelta(weeks=+interval) new_date = next_date + relativedelta(weeks=+interval)
new_date = next_date+relativedelta(weeks=+interval)
else: else:
old_date = next_date+relativedelta(months=+interval) new_date = next_date + relativedelta(months=+interval)
new_date = next_date+relativedelta(months=+interval)
context['old_date'] = old_date context['old_date'] = old_date
context['next_date'] = datetime.datetime.strptime( context['next_date'] = new_date
contract.recurring_next_date or current_date, "%Y-%m-%d")
self._prepare_invoice( self._prepare_invoice(
cr, uid, contract, context=context) cr, uid, contract, context=context)
self.write( self.write(
cr, uid, [contract.id], cr, uid, [contract.id],
{'recurring_next_date': new_date.strftime('%Y-%m-%d')}, {'recurring_next_date': new_date.strftime('%Y-%m-%d')},

View File

@@ -1,9 +1,34 @@
# Translation of OpenERP Server. # Translation of OpenERP Server.
# This file contains the translation of the following modules: # This file contains the translation of the following modules:
# * account_analytic_analysis_recurring # * account_analytic_analysis_recurring
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-21 11:41+0000\n"
"PO-Revision-Date: 2014-02-21 11:41+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_subtotal:0
msgid "Sub Total"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_rule_type:0
msgid "Recurrency"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_unit:0
msgid "Unit Price"
msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0 #: view:account.analytic.account:0
@@ -15,107 +40,11 @@ msgstr ""
msgid "Account Analytic Lines" msgid "Account Analytic Lines"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring
#: code:_description:0
#: field:account.analytic.invoice.line,analytic_account_id:0
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_account
#, python-format
msgid "Analytic Account"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_next_date:0
msgid "Date of Next Invoice"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Day(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,name:0
msgid "Description"
msgstr ""
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:130
#, python-format
msgid "Error!"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoices:0
msgid "Generate recurring invoices automatically"
msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoice_line_ids:0 #: field:account.analytic.account,recurring_invoice_line_ids:0
msgid "Invoice Lines" msgid "Invoice Lines"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_rule_type:0
msgid "Invoice automatically repeat at specified interval"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Month(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:125
#, python-format
msgid "No Customer Defined!"
msgstr ""
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:131
#, python-format
msgid "Please define a sale journal for the company \"%s\"."
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,product_id:0
msgid "Product"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,quantity:0
msgid "Quantity"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_rule_type:0
msgid "Recurrency"
msgstr ""
#. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0
msgid "Recurring Invoices"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_interval:0
msgid "Repeat Every"
msgstr ""
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_interval:0
msgid "Repeat every (Days/Week/Month/Year)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_subtotal:0
msgid "Sub Total"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_unit:0
msgid "Unit Price"
msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,uom_id:0 #: field:account.analytic.invoice.line,uom_id:0
msgid "Unit of Measure" msgid "Unit of Measure"
@@ -123,7 +52,37 @@ msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0 #: selection:account.analytic.account,recurring_rule_type:0
msgid "Week(s)" msgid "Day(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_rule_type:0
msgid "Invoice automatically repeat at specified interval"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,product_id:0
msgid "Product"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,name:0
msgid "Description"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_interval:0
msgid "Repeat Every"
msgstr ""
#. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0
msgid "Recurring Invoices"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoices:0
msgid "Generate recurring invoices automatically"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
@@ -132,14 +91,39 @@ msgid "Year(s)"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:125 #: selection:account.analytic.account,recurring_rule_type:0
#, python-format msgid "Week(s)"
msgid "You must first select a Customer for Contract %s!" msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,quantity:0
msgid "Quantity"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: code:_description:0
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_invoice_line #: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_invoice_line
#, python-format
msgid "account.analytic.invoice.line" msgid "account.analytic.invoice.line"
msgstr "" msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_next_date:0
msgid "Date of Next Invoice"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,analytic_account_id:0
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Month(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_interval:0
msgid "Repeat every (Days/Week/Month/Year)"
msgstr ""

View File

@@ -6,124 +6,151 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n" "Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-21 11:41+0000\n" "POT-Creation-Date: 2014-08-18 23:13+0000\n"
"PO-Revision-Date: 2014-02-21 11:41+0000\n" "PO-Revision-Date: 2014-08-19 01:14+0100\n"
"Last-Translator: <>\n" "Last-Translator: Joaquin Gutierrez <joaquing.pedrosa@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n" "Plural-Forms: \n"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_subtotal:0
msgid "Sub Total"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_rule_type:0
msgid "Recurrency"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_unit:0
msgid "Unit Price"
msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0 #: view:account.analytic.account:0
msgid ". create invoices" msgid ". create invoices"
msgstr "" msgstr ". crear facturas"
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0 #: view:account.analytic.account:0
msgid "Account Analytic Lines" msgid "Account Analytic Lines"
msgstr "" msgstr "Ver líneas contables analíticas"
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoice_line_ids:0 #: code:_description:0
msgid "Invoice Lines" #: field:account.analytic.invoice.line,analytic_account_id:0
msgstr "" #: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_account
#, python-format
#. module: account_analytic_analysis_recurring msgid "Analytic Account"
#: field:account.analytic.invoice.line,uom_id:0 msgstr "Cuenta analítica"
msgid "Unit of Measure"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Day(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_rule_type:0
msgid "Invoice automatically repeat at specified interval"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,product_id:0
msgid "Product"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,name:0
msgid "Description"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_interval:0
msgid "Repeat Every"
msgstr ""
#. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0
msgid "Recurring Invoices"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoices:0
msgid "Generate recurring invoices automatically"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Year(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Week(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,quantity:0
msgid "Quantity"
msgstr ""
#. module: account_analytic_analysis_recurring
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_invoice_line
msgid "account.analytic.invoice.line"
msgstr ""
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_next_date:0 #: field:account.analytic.account,recurring_next_date:0
msgid "Date of Next Invoice" msgid "Date of Next Invoice"
msgstr "" msgstr "Próximo fecha de factura"
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,analytic_account_id:0 #: selection:account.analytic.account,recurring_rule_type:0
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_account msgid "Day(s)"
msgid "Analytic Account" msgstr "Día(s)"
msgstr ""
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,name:0
msgid "Description"
msgstr "Descripción"
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:165
#, python-format
msgid "Error!"
msgstr "¡Error!"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoices:0
msgid "Generate recurring invoices automatically"
msgstr "Generar facturas recurrentes automáticamente."
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_invoice_line_ids:0
msgid "Invoice Lines"
msgstr "Líneas de factura"
#. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_rule_type:0
msgid "Invoice automatically repeat at specified interval"
msgstr "Repetir factura automáticamente en ese intervalo"
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0 #: selection:account.analytic.account,recurring_rule_type:0
msgid "Month(s)" msgid "Month(s)"
msgstr "" msgstr "Mes(es)"
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:153
#, python-format
msgid "No Customer Defined!"
msgstr "¡No se ha definido un cliente!"
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:166
#, python-format
msgid "Please define a sale journal for the company \"%s\"."
msgstr "Defina por favor un diario de ventas para esta compañía \"%s\"."
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,product_id:0
msgid "Product"
msgstr "Producto"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,quantity:0
msgid "Quantity"
msgstr "Cantidad"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_rule_type:0
msgid "Recurrency"
msgstr "Recurrencia"
#. module: account_analytic_analysis_recurring
#: view:account.analytic.account:0
msgid "Recurring Invoices"
msgstr "Facturas recurrentes"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.account,recurring_interval:0
msgid "Repeat Every"
msgstr "Repetir cada"
#. module: account_analytic_analysis_recurring #. module: account_analytic_analysis_recurring
#: help:account.analytic.account,recurring_interval:0 #: help:account.analytic.account,recurring_interval:0
msgid "Repeat every (Days/Week/Month/Year)" msgid "Repeat every (Days/Week/Month/Year)"
msgstr "" msgstr "Repetir cada (días/semana/mes/año)"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_subtotal:0
msgid "Sub Total"
msgstr "Subtotal"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,price_unit:0
msgid "Unit Price"
msgstr "Precio unidad"
#. module: account_analytic_analysis_recurring
#: field:account.analytic.invoice.line,uom_id:0
msgid "Unit of Measure"
msgstr "Unidad de medida"
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Week(s)"
msgstr "Semana(s)"
#. module: account_analytic_analysis_recurring
#: selection:account.analytic.account,recurring_rule_type:0
msgid "Year(s)"
msgstr "Año(s)"
#. module: account_analytic_analysis_recurring
#: code:addons/account_analytic_analysis_recurring/account_analytic_analysis_recurring.py:154
#, python-format
msgid "You must first select a Customer for Contract %s!"
msgstr "¡Seleccione un cliente para este contrato %s!"
#. module: account_analytic_analysis_recurring
#: code:_description:0
#: model:ir.model,name:account_analytic_analysis_recurring.model_account_analytic_invoice_line
#, python-format
msgid "account.analytic.invoice.line"
msgstr "account.analytic.invoice.line"

View File

@@ -0,0 +1,4 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"account_analytic_invoice_line_manager","Recurring manager","model_account_analytic_invoice_line","base.group_sale_manager",1,1,1,1
"account_analytic_invoice_line_user","Recurring user","model_account_analytic_invoice_line","base.group_sale_salesman",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 account_analytic_invoice_line_manager Recurring manager model_account_analytic_invoice_line base.group_sale_manager 1 1 1 1
3 account_analytic_invoice_line_user Recurring user model_account_analytic_invoice_line base.group_sale_salesman 1 0 0 0