[MERGE] forward port of branch 8.0 up to ed1c173

This commit is contained in:
Christophe Simonis
2014-09-05 15:28:22 +02:00
1375 changed files with 157542 additions and 213489 deletions
+20 -9
View File
@@ -1,9 +1,20 @@
graft debian
graft doc
graft setup
graft openerp
include README.md
include LICENSE
include openerp-*
include odoo*
global-exclude *pyc *~ # Exclude possible garbage from previous graft.
recursive-include * *.css
recursive-include * *.csv
recursive-include * *.gif
recursive-include * *.html
recursive-include * *.jpeg
recursive-include * *.jpg
recursive-include * *.js
recursive-include * *.md
recursive-include * *.png
recursive-include * *.po
recursive-include * *.rng
recursive-include * *.rst
recursive-include * *.sass
recursive-include * *.sql
recursive-include * *.txt
recursive-include * *.ttf
recursive-include * *.woff
recursive-include * *.xml
recursive-include * *.yml
recursive-exclude * *.py[co]
+4 -5
View File
@@ -3,21 +3,20 @@
Odoo
----
Odoo is a suite of web based open source business apps. More info at http://www.odoo.com
Odoo is a suite of web based open source business apps.
The easiest way to play with it is the <a href="https://www.odoo.com/page/start">Odoo free trial</a>, email registration is NOT required, use the "skip this step" link on the registration page to skip it.
It's main apps include an <a href="https://www.odoo.com/page/crm">Open Source CRM</a>, <a href="https://www.odoo.com/page/website-builder">Website Builder</a>, <a href="https://www.odoo.com/page/e-commerce">eCommerce</a>, <a href="https://www.odoo.com/page/project-management">Project Management</a>, <a href="https://www.odoo.com/page/accounting">Billing & Accounting</a>, <a href="https://www.odoo.com/page/point-of-sale">Point of Sale</a>, <a href="https://www.odoo.com/page/employees">Human Resources</a>, Marketing, Manufacturing, Purchase Management, ... Each application is standalone but you get a full featured <a href="https://www.odoo.com">Open Source ERP</a> if you install several apps as they integrate to each others.
Getting started with Odoo development
--------------------------------------
If you are a developer type the following command at your terminal [1]:
If you are a developer type the following command at your terminal:
wget -O- https://raw.githubusercontent.com/odoo/odoo/master/odoo.py | python
Then follow <a href="https://doc.openerp.com/trunk/server/howto/howto_website/">the developer tutorial</a>
[1] You may want to check the content of the <a href="https://raw.githubusercontent.com/odoo/odoo/master/odoo.py">odoo.py file</a> before executing it.
Packages, tarballs and installers
@@ -27,7 +26,7 @@ Packages, tarballs and installers
Add this apt repository to your /etc/apt/sources.list file
deb http://nightly.openerp.com/8.0/deb/ ./
deb http://nightly.openerp.com/8.0/nightly/deb/ ./
Then type:
+68
View File
@@ -0,0 +1,68 @@
Odoo Accounting
---------------
The Odoo <a href="https://www.odoo.com/page/accounting">Open Source Accounting</a> app allows a better way to
collaborate with your accountants, your customers and control your suppliers.
Activate features on demand, from integrated analytic accounting to budget,
assets and multiple companies consolidation.
A Smart User Interface
----------------------
Record transactions in a few clicks and easily manage all financial activities
in one place. Odoo's user interface is designed with productivity in mind.
A Better Way To Work – Together
-------------------------------
Share access to your latest business numbers with your team and your accountant
– so everyone is up to speed. From work, home or on the go.
Connect Your Bank Accounts
--------------------------
Import your bank statements and reconcile them in just a few clicks. Prepare
payment orders based on your supplier invoices and payment terms.
Electronic invoicing and automated follow-ups
---------------------------------------------
Create and send professional invoices & get paid online. Get rid of the stress
of having to constantly remind your debtors. Simply set-up and automate
follow-ups to get paid quickly.
Sales Integration
-----------------
Automatically create invoices from sales orders, delivery orders or base them
on time and material. Re-invoice expenses on projects to your customer in just
a few clicks.
Purchase Integration
--------------------
Control supplier invocies based on purchase orders. Get real-time inventory
valuation reports automatically posted in your accounts.
Multi-Level Analytic Accounting
-------------------------------
Integrate your analytic accounting operations with timesheets, projects,
invoices, expenses, etc. No need to record transactions, all analytic entries
are posted automatically following your business rules.
Everything you need to grow
---------------------------
Manage your assets, track expenses, control budgets, multi-level analytic
accounting; Odoo has all the features you need to sustain all your business
activities.
Scale With Your Organization
----------------------------
Odoo supports multiple currencies, multiple users with different access rights,
multiple companies with real time consolidation and unlimited analytic plans.
+1 -1
View File
@@ -47,7 +47,7 @@ Creates a dashboard for accountants that includes:
Processes like maintaining general ledgers are done through the defined Financial Journals (entry move line or grouping is maintained through a journal)
for a particular financial year and for preparation of vouchers there is a module named account_voucher.
""",
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/billing',
'images' : ['images/accounts.jpeg','images/bank_statement.jpeg','images/cash_register.jpeg','images/chart_of_accounts.jpeg','images/customer_invoice.jpeg','images/journal_entries.jpeg'],
'depends' : ['base_setup', 'product', 'analytic', 'board', 'edi', 'report'],
'data': [
+15 -1
View File
@@ -55,6 +55,19 @@ def check_cycle(self, cr, uid, ids, context=None):
level -= 1
return True
class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'income_currency_exchange_account_id': fields.many2one(
'account.account',
string="Gain Exchange Rate Account",
domain="[('type', '=', 'other')]",),
'expense_currency_exchange_account_id': fields.many2one(
'account.account',
string="Loss Exchange Rate Account",
domain="[('type', '=', 'other')]",),
}
class account_payment_term(osv.osv):
_name = "account.payment.term"
_description = "Payment Term"
@@ -1648,7 +1661,8 @@ class account_move_reconcile(osv.osv):
if not total:
self.pool.get('account.move.line').write(cr, uid,
map(lambda x: x.id, rec.line_partial_ids),
{'reconcile_id': rec.id }
{'reconcile_id': rec.id },
context=context
)
return True
+162 -218
View File
@@ -24,6 +24,8 @@ from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
from openerp.report import report_sxw
import time
class account_bank_statement(osv.osv):
def create(self, cr, uid, vals, context=None):
if vals.get('name', '/') == '/':
@@ -255,8 +257,8 @@ class account_bank_statement(osv.osv):
amt_cur = False
if st_line.statement_id.currency.id != company_currency_id:
amt_cur = st_line.amount
cur_id = st_line.currency_id or st_line.statement_id.currency.id
if st_line.currency_id and st_line.amount_currency:
cur_id = st_line.statement_id.currency.id
elif st_line.currency_id and st_line.amount_currency:
amt_cur = st_line.amount_currency
cur_id = st_line.currency_id.id
return self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit,
@@ -348,7 +350,7 @@ class account_bank_statement(osv.osv):
self.pool.get('account.move').post(cr, uid, move_ids, context=context)
self.message_post(cr, uid, [st.id], body=_('Statement %s confirmed, journal items were created.') % (st.name,), context=context)
self.link_bank_to_partner(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state': 'confirm'}, context=context)
return self.write(cr, uid, ids, {'state': 'confirm', 'closing_date': time.strftime("%Y-%m-%d %H:%M:%S")}, context=context)
def button_cancel(self, cr, uid, ids, context=None):
bnk_st_line_ids = []
@@ -403,31 +405,9 @@ class account_bank_statement(osv.osv):
'context':ctx,
}
def number_of_lines_reconciled(self, cr, uid, id, context=None):
def number_of_lines_reconciled(self, cr, uid, ids, context=None):
bsl_obj = self.pool.get('account.bank.statement.line')
return bsl_obj.search_count(cr, uid, [('statement_id', '=', id), ('journal_entry_id', '!=', False)], context=context)
def get_format_currency_js_function(self, cr, uid, id, context=None):
""" Returns a string that can be used to instanciate a javascript function.
That function formats a number according to the statement line's currency or the statement currency"""
company_currency = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id
st = id and self.browse(cr, uid, id, context=context)
if not st:
return
statement_currency = st.journal_id.currency or company_currency
digits = 2 # TODO : from currency_obj
function = ""
done_currencies = []
for st_line in st.line_ids:
st_line_currency = st_line.currency_id or statement_currency
if st_line_currency.id not in done_currencies:
if st_line_currency.position == 'after':
return_str = "return amount.toFixed(" + str(digits) + ") + ' " + st_line_currency.symbol + "';"
else:
return_str = "return '" + st_line_currency.symbol + " ' + amount.toFixed(" + str(digits) + ");"
function += "if (currency_id === " + str(st_line_currency.id) + "){ " + return_str + " }"
done_currencies.append(st_line_currency.id)
return function
return bsl_obj.search_count(cr, uid, [('statement_id', 'in', ids), ('journal_entry_id', '!=', False)], context=context)
def link_bank_to_partner(self, cr, uid, ids, context=None):
for statement in self.browse(cr, uid, ids, context=context):
@@ -437,6 +417,15 @@ class account_bank_statement(osv.osv):
class account_bank_statement_line(osv.osv):
def unlink(self, cr, uid, ids, context=None):
for item in self.browse(cr, uid, ids, context=context):
if item.journal_entry_id:
raise osv.except_osv(
_('Invalid Action!'),
_('In order to delete a bank statement line, you must first cancel it to delete related journal items.')
)
return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context)
def cancel(self, cr, uid, ids, context=None):
account_move_obj = self.pool.get('account.move')
move_ids = []
@@ -454,100 +443,102 @@ class account_bank_statement_line(osv.osv):
account_move_obj.button_cancel(cr, uid, move_ids, context=context)
account_move_obj.unlink(cr, uid, move_ids, context)
def get_data_for_reconciliations(self, cr, uid, ids, context=None):
""" Used to instanciate a batch of reconciliations in a single request """
# Build a list of reconciliations data
def get_data_for_reconciliations(self, cr, uid, ids, excluded_ids=None, search_reconciliation_proposition=True, context=None):
""" Returns the data required to display a reconciliation, for each statement line id in ids """
ret = []
statement_line_done = {}
mv_line_ids_selected = []
for st_line in self.browse(cr, uid, ids, context=context):
# look for structured communication first
exact_match_id = self.search_structured_com(cr, uid, st_line, context=context)
if exact_match_id:
reconciliation_data = {
'st_line': self.get_statement_line_for_reconciliation(cr, uid, st_line.id, context),
'reconciliation_proposition': self.make_counter_part_lines(cr, uid, st_line, [exact_match_id], context=context)
}
for mv_line in reconciliation_data['reconciliation_proposition']:
mv_line_ids_selected.append(mv_line['id'])
statement_line_done[st_line.id] = reconciliation_data
for st_line_id in ids:
if statement_line_done.get(st_line_id):
ret.append(statement_line_done.get(st_line_id))
else:
reconciliation_data = {
'st_line': self.get_statement_line_for_reconciliation(cr, uid, st_line_id, context),
'reconciliation_proposition': self.get_reconciliation_proposition(cr, uid, st_line_id, mv_line_ids_selected, context)
}
for mv_line in reconciliation_data['reconciliation_proposition']:
mv_line_ids_selected.append(mv_line['id'])
ret.append(reconciliation_data)
if excluded_ids is None:
excluded_ids = []
for st_line in self.browse(cr, uid, ids, context=context):
reconciliation_data = {}
if search_reconciliation_proposition:
reconciliation_proposition = self.get_reconciliation_proposition(cr, uid, st_line, excluded_ids=excluded_ids, context=context)
for mv_line in reconciliation_proposition:
excluded_ids.append(mv_line['id'])
reconciliation_data['reconciliation_proposition'] = reconciliation_proposition
else:
reconciliation_data['reconciliation_proposition'] = []
st_line = self.get_statement_line_for_reconciliation(cr, uid, st_line, context=context)
reconciliation_data['st_line'] = st_line
ret.append(reconciliation_data)
# Check if, now that 'candidate' move lines were selected, there are moves left for statement lines
#for reconciliation_data in ret:
# if not reconciliation_data['st_line']['has_no_partner']:
# st_line = self.browse(cr, uid, reconciliation_data['st_line']['id'], context=context)
# if not self.get_move_lines_counterparts(cr, uid, st_line, excluded_ids=mv_line_ids_selected, count=True, context=context):
# reconciliation_data['st_line']['no_match'] = True
return ret
def get_statement_line_for_reconciliation(self, cr, uid, id, context=None):
""" Returns the data required by the bank statement reconciliation use case """
line = self.browse(cr, uid, id, context=context)
statement_currency = line.journal_id.currency or line.journal_id.company_id.currency_id
amount = line.amount
rml_parser = report_sxw.rml_parse(cr, uid, 'statement_line_widget', context=context)
amount_str = line.amount > 0 and line.amount or -line.amount
amount_str = rml_parser.formatLang(amount_str, currency_obj=statement_currency)
amount_currency_str = ""
if line.amount_currency and line.currency_id:
amount_currency_str = amount_str
amount_str = rml_parser.formatLang(line.amount_currency, currency_obj=line.currency_id)
amount = line.amount_currency
def get_statement_line_for_reconciliation(self, cr, uid, st_line, context=None):
""" Returns the data required by the bank statement reconciliation widget to display a statement line """
if context is None:
context = {}
statement_currency = st_line.journal_id.currency or st_line.journal_id.company_id.currency_id
rml_parser = report_sxw.rml_parse(cr, uid, 'reconciliation_widget_asl', context=context)
if st_line.amount_currency and st_line.currency_id:
amount = st_line.amount_currency
amount_currency = st_line.amount
amount_currency_str = amount_currency > 0 and amount_currency or -amount_currency
amount_currency_str = rml_parser.formatLang(amount_currency_str, currency_obj=statement_currency)
else:
amount = st_line.amount
amount_currency_str = ""
amount_str = amount > 0 and amount or -amount
amount_str = rml_parser.formatLang(amount_str, currency_obj=st_line.currency_id or statement_currency)
data = {
'id': line.id,
'ref': line.ref,
'note': line.note or "",
'name': line.name,
'date': line.date,
'id': st_line.id,
'ref': st_line.ref,
'note': st_line.note or "",
'name': st_line.name,
'date': st_line.date,
'amount': amount,
'amount_str': amount_str,
'currency_id': line.currency_id.id or statement_currency.id,
'no_match': self.get_move_lines_counterparts(cr, uid, line, count=True, context=context) == 0,
'partner_id': line.partner_id.id,
'statement_id': line.statement_id.id,
'account_code': line.journal_id.default_debit_account_id.code,
'account_name': line.journal_id.default_debit_account_id.name,
'partner_name': line.partner_id.name,
'amount_currency_str': amount_currency_str,
'has_no_partner': not line.partner_id.id,
'amount_str': amount_str, # Amount in the statement line currency
'currency_id': st_line.currency_id.id or statement_currency.id,
'partner_id': st_line.partner_id.id,
'statement_id': st_line.statement_id.id,
'account_code': st_line.journal_id.default_debit_account_id.code,
'account_name': st_line.journal_id.default_debit_account_id.name,
'partner_name': st_line.partner_id.name,
'amount_currency_str': amount_currency_str, # Amount in the statement currency
'has_no_partner': not st_line.partner_id.id,
}
if line.partner_id.id:
data['open_balance_account_id'] = line.partner_id.property_account_payable.id
if st_line.partner_id.id:
if amount > 0:
data['open_balance_account_id'] = line.partner_id.property_account_receivable.id
data['open_balance_account_id'] = st_line.partner_id.property_account_receivable.id
else:
data['open_balance_account_id'] = st_line.partner_id.property_account_payable.id
return data
def search_structured_com(self, cr, uid, st_line, context=None):
if not st_line.ref:
return
domain = [('ref', '=', st_line.ref)]
if st_line.partner_id:
domain += [('partner_id', '=', st_line.partner_id.id)]
ids = self.pool.get('account.move.line').search(cr, uid, domain, limit=1, context=context)
return ids and ids[0] or False
def get_reconciliation_proposition(self, cr, uid, id, excluded_ids=[], context=None):
def get_reconciliation_proposition(self, cr, uid, st_line, excluded_ids=None, context=None):
""" Returns move lines that constitute the best guess to reconcile a statement line. """
st_line = self.browse(cr, uid, id, context=context)
if excluded_ids is None:
excluded_ids = []
mv_line_pool = self.pool.get('account.move.line')
# Look for structured communication
if st_line.name:
structured_com_match_domain = [('ref', '=', st_line.name),('reconcile_id', '=', False),('state', '=', 'valid'),('account_id.reconcile', '=', True),('id', 'not in', excluded_ids)]
match_id = mv_line_pool.search(cr, uid, structured_com_match_domain, offset=0, limit=1, context=context)
if match_id:
mv_line_br = mv_line_pool.browse(cr, uid, match_id, context=context)
target_currency = st_line.currency_id or st_line.journal_id.currency or st_line.journal_id.company_id.currency_id
mv_line = mv_line_pool.prepare_move_lines_for_reconciliation_widget(cr, uid, mv_line_br, target_currency=target_currency, target_date=st_line.date, context=context)[0]
mv_line['has_no_partner'] = not bool(st_line.partner_id.id)
# If the structured communication matches a move line that is associated with a partner, we can safely associate the statement line with the partner
if (mv_line['partner_id']):
self.write(cr, uid, st_line.id, {'partner_id': mv_line['partner_id']}, context=context)
mv_line['has_no_partner'] = False
return [mv_line]
# If there is no identified partner or structured communication, don't look further
if not st_line.partner_id.id:
return []
# Look for a move line whose amount matches the statement line's amount
company_currency = st_line.journal_id.company_id.currency_id.id
statement_currency = st_line.journal_id.currency.id or company_currency
# either use the unsigned debit/credit fields or the signed amount_currency field
sign = 1
if statement_currency == company_currency:
amount_field = 'credit'
sign = -1
if st_line.amount > 0:
amount_field = 'debit'
else:
@@ -555,131 +546,74 @@ class account_bank_statement_line(osv.osv):
if st_line.amount < 0:
sign = -1
#we don't propose anything if there is no partner detected
if not st_line.partner_id.id:
return []
# look for exact match
exact_match_id = self.get_move_lines_counterparts(cr, uid, st_line, excluded_ids=excluded_ids, additional_domain=[(amount_field, '=', (sign * st_line.amount))])
if exact_match_id:
return exact_match_id
match_id = self.get_move_lines_for_reconciliation(cr, uid, st_line, excluded_ids=excluded_ids, offset=0, limit=1, additional_domain=[(amount_field, '=', (sign * st_line.amount))])
if match_id:
return [match_id[0]]
# select oldest move lines
if sign == -1:
mv_lines = self.get_move_lines_counterparts(cr, uid, st_line, excluded_ids=excluded_ids, additional_domain=[(amount_field, '<', 0)])
else:
mv_lines = self.get_move_lines_counterparts(cr, uid, st_line, excluded_ids=excluded_ids, additional_domain=[(amount_field, '>', 0)])
ret = []
total = 0
# get_move_lines_counterparts inverts debit and credit
amount_field = 'debit' if amount_field == 'credit' else 'credit'
for line in mv_lines:
if total + line[amount_field] <= abs(st_line.amount):
ret.append(line)
total += line[amount_field]
if total >= abs(st_line.amount):
break
return ret
return []
def get_move_lines_counterparts_id(self, cr, uid, st_line_id, excluded_ids=[], additional_domain=[], count=False, context=None):
def get_move_lines_for_reconciliation_by_statement_line_id(self, cr, uid, st_line_id, excluded_ids=None, str=False, offset=0, limit=None, count=False, additional_domain=None, context=None):
""" Bridge between the web client reconciliation widget and get_move_lines_for_reconciliation (which expects a browse record) """
if excluded_ids is None:
excluded_ids = []
if additional_domain is None:
additional_domain = []
st_line = self.browse(cr, uid, st_line_id, context=context)
return self.get_move_lines_counterparts(cr, uid, st_line, excluded_ids, additional_domain, count, context=context)
return self.get_move_lines_for_reconciliation(cr, uid, st_line, excluded_ids, str, offset, limit, count, additional_domain, context=context)
def get_move_lines_counterparts(self, cr, uid, st_line, excluded_ids=[], additional_domain=[], count=False, context=None):
""" Find the move lines that could be used to reconcile a statement line and returns the counterpart that could be created to reconcile them
If count is true, only returns the count.
def get_move_lines_for_reconciliation(self, cr, uid, st_line, excluded_ids=None, str=False, offset=0, limit=None, count=False, additional_domain=None, context=None):
""" Find the move lines that could be used to reconcile a statement line. If count is true, only returns the count.
:param st_line: the browse record of the statement line
:param integers list excluded_ids: ids of move lines that should not be fetched
:param string filter_str: string to filter lines
:param integer offset: offset of the request
:param integer limit: number of lines to fetch
:param boolean count: just return the number of records
:param tuples list domain: additional domain restrictions
:param tuples list additional_domain: additional domain restrictions
"""
if excluded_ids is None:
excluded_ids = []
if additional_domain is None:
additional_domain = []
mv_line_pool = self.pool.get('account.move.line')
# Make domain
domain = additional_domain + [('reconcile_id', '=', False),('state', '=', 'valid')]
if st_line.partner_id.id:
domain += [('partner_id', '=', st_line.partner_id.id),
'|', ('account_id.type', '=', 'receivable'),
('account_id.type', '=', 'payable')]
else:
domain += [('account_id.reconcile', '=', True)]
#domain += [('account_id.reconcile', '=', True), ('account_id.type', '=', 'other')]
domain += [('account_id.reconcile', '=', True), ('account_id.type', '=', 'other')]
if str:
domain += [('partner_id.name', 'ilike', str)]
if excluded_ids:
domain.append(('id', 'not in', excluded_ids))
line_ids = mv_line_pool.search(cr, uid, domain, order="date_maturity asc, id asc", context=context)
return self.make_counter_part_lines(cr, uid, st_line, line_ids, count=count, context=context)
if str:
domain += ['|', ('move_id.name', 'ilike', str), ('move_id.ref', 'ilike', str)]
def make_counter_part_lines(self, cr, uid, st_line, line_ids, count=False, context=None):
if context is None:
context = {}
mv_line_pool = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
company_currency = st_line.journal_id.company_id.currency_id
statement_currency = st_line.journal_id.currency or company_currency
rml_parser = report_sxw.rml_parse(cr, uid, 'statement_line_counterpart_widget', context=context)
#partially reconciled lines can be displayed only once
reconcile_partial_ids = []
# Get move lines
line_ids = mv_line_pool.search(cr, uid, domain, offset=offset, limit=limit, order="date_maturity asc, id asc", context=context)
lines = mv_line_pool.browse(cr, uid, line_ids, context=context)
# Either return number of lines
if count:
nb_lines = 0
for line in mv_line_pool.browse(cr, uid, line_ids, context=context):
reconcile_partial_ids = [] # for a partial reconciliation, take only one line
for line in lines:
if line.reconcile_partial_id and line.reconcile_partial_id.id in reconcile_partial_ids:
continue
nb_lines += 1
if line.reconcile_partial_id:
reconcile_partial_ids.append(line.reconcile_partial_id.id)
return nb_lines
# Or return list of dicts representing the formatted move lines
else:
ret = []
for line in mv_line_pool.browse(cr, uid, line_ids, context=context):
if line.reconcile_partial_id and line.reconcile_partial_id.id in reconcile_partial_ids:
continue
amount_currency_str = ""
if line.currency_id and line.amount_currency:
amount_currency_str = rml_parser.formatLang(line.amount_currency, currency_obj=line.currency_id)
ret_line = {
'id': line.id,
'name': line.move_id.name,
'ref': line.move_id.ref,
'account_code': line.account_id.code,
'account_name': line.account_id.name,
'account_type': line.account_id.type,
'date_maturity': line.date_maturity,
'date': line.date,
'period_name': line.period_id.name,
'journal_name': line.journal_id.name,
'amount_currency_str': amount_currency_str,
'partner_id': line.partner_id.id,
'partner_name': line.partner_id.name,
'has_no_partner': not bool(st_line.partner_id.id),
}
st_line_currency = st_line.currency_id or statement_currency
if st_line.currency_id and line.currency_id and line.currency_id.id == st_line.currency_id.id:
if line.amount_residual_currency < 0:
ret_line['debit'] = 0
ret_line['credit'] = -line.amount_residual_currency
else:
ret_line['debit'] = line.amount_residual_currency if line.credit != 0 else 0
ret_line['credit'] = line.amount_residual_currency if line.debit != 0 else 0
ret_line['amount_currency_str'] = rml_parser.formatLang(line.amount_residual, currency_obj=company_currency)
else:
if line.amount_residual < 0:
ret_line['debit'] = 0
ret_line['credit'] = -line.amount_residual
else:
ret_line['debit'] = line.amount_residual if line.credit != 0 else 0
ret_line['credit'] = line.amount_residual if line.debit != 0 else 0
ctx = context.copy()
ctx.update({'date': st_line.date})
ret_line['debit'] = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, ret_line['debit'], context=ctx)
ret_line['credit'] = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, ret_line['credit'], context=ctx)
ret_line['debit_str'] = rml_parser.formatLang(ret_line['debit'], currency_obj=st_line_currency)
ret_line['credit_str'] = rml_parser.formatLang(ret_line['credit'], currency_obj=st_line_currency)
ret.append(ret_line)
if line.reconcile_partial_id:
reconcile_partial_ids.append(line.reconcile_partial_id.id)
return ret
target_currency = st_line.currency_id or st_line.journal_id.currency or st_line.journal_id.company_id.currency_id
mv_lines = mv_line_pool.prepare_move_lines_for_reconciliation_widget(cr, uid, lines, target_currency=target_currency, target_date=st_line.date, context=context)
has_no_partner = not bool(st_line.partner_id.id)
for line in mv_lines:
line['has_no_partner'] = has_no_partner
return mv_lines
def get_currency_rate_line(self, cr, uid, st_line, currency_diff, move_id, context=None):
if currency_diff < 0:
@@ -700,6 +634,7 @@ class account_bank_statement_line(osv.osv):
'statement_id': st_line.statement_id.id,
'debit': currency_diff < 0 and -currency_diff or 0,
'credit': currency_diff > 0 and currency_diff or 0,
'amount_currency': 0.0,
'date': st_line.date,
'account_id': account_id
}
@@ -733,22 +668,25 @@ class account_bank_statement_line(osv.osv):
raise osv.except_osv(_('Error!'), _('A selected move line was already reconciled.'))
# Create the move
move_name = st_line.statement_id.name + "/" + str(st_line.sequence)
move_name = (st_line.statement_id.name or st_line.name) + "/" + str(st_line.sequence)
move_vals = bs_obj._prepare_move(cr, uid, st_line, move_name, context=context)
move_id = am_obj.create(cr, uid, move_vals, context=context)
# Create the move line for the statement line
if st_line.statement_id.currency.id != company_currency.id:
ctx = context.copy()
ctx['date'] = st_line.date
amount = currency_obj.compute(cr, uid, st_line.statement_id.currency.id, company_currency.id, st_line.amount_currency, context=ctx)
if st_line.currency_id == company_currency:
amount = st_line.amount_currency
else:
ctx = context.copy()
ctx['date'] = st_line.date
amount = currency_obj.compute(cr, uid, st_line.statement_id.currency.id, company_currency.id, st_line.amount, context=ctx)
else:
amount = st_line.amount
bank_st_move_vals = bs_obj._prepare_bank_move_line(cr, uid, st_line, move_id, amount, company_currency.id, context=context)
aml_obj.create(cr, uid, bank_st_move_vals, context=context)
# Complete the dicts
st_line_currency = st_line.currency_id or statement_currency
st_line_currency_rate = st_line.currency_id and statement_currency.id == company_currency.id and (st_line.amount_currency / st_line.amount) or False
st_line_currency_rate = st_line.currency_id and (st_line.amount_currency / st_line.amount) or False
to_create = []
for mv_line_dict in mv_line_dicts:
if mv_line_dict.get('is_tax_line'):
@@ -763,17 +701,21 @@ class account_bank_statement_line(osv.osv):
mv_line = aml_obj.browse(cr, uid, mv_line_dict['counterpart_move_line_id'], context=context)
mv_line_dict['account_id'] = mv_line.account_id.id
if st_line_currency.id != company_currency.id:
ctx = context.copy()
ctx['date'] = st_line.date
mv_line_dict['amount_currency'] = mv_line_dict['debit'] - mv_line_dict['credit']
mv_line_dict['currency_id'] = st_line_currency.id
if st_line.currency_id and statement_currency.id == company_currency.id and st_line_currency_rate:
debit_at_current_rate = self.pool.get('res.currency').round(cr, uid, company_currency, mv_line_dict['debit'] / st_line_currency_rate)
credit_at_current_rate = self.pool.get('res.currency').round(cr, uid, company_currency, mv_line_dict['credit'] / st_line_currency_rate)
elif st_line.currency_id and st_line_currency_rate:
debit_at_current_rate = currency_obj.compute(cr, uid, statement_currency.id, company_currency.id, mv_line_dict['debit'] / st_line_currency_rate, context=ctx)
credit_at_current_rate = currency_obj.compute(cr, uid, statement_currency.id, company_currency.id, mv_line_dict['credit'] / st_line_currency_rate, context=ctx)
else:
debit_at_current_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['debit'], context=context)
credit_at_current_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['credit'], context=context)
debit_at_current_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['debit'], context=ctx)
credit_at_current_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['credit'], context=ctx)
if mv_line_dict.get('counterpart_move_line_id'):
#post an account line that use the same currency rate than the counterpart (to balance the account) and post the difference in another line
ctx = context.copy()
ctx['date'] = mv_line.date
debit_at_old_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['debit'], context=ctx)
credit_at_old_rate = currency_obj.compute(cr, uid, st_line_currency.id, company_currency.id, mv_line_dict['credit'], context=ctx)
@@ -781,13 +723,17 @@ class account_bank_statement_line(osv.osv):
mv_line_dict['debit'] = debit_at_old_rate
if debit_at_old_rate - debit_at_current_rate:
currency_diff = debit_at_current_rate - debit_at_old_rate
to_create.append(self.get_currency_rate_line(cr, uid, st_line, currency_diff, move_id, context=context))
to_create.append(self.get_currency_rate_line(cr, uid, st_line, -currency_diff, move_id, context=context))
if credit_at_old_rate - credit_at_current_rate:
currency_diff = credit_at_current_rate - credit_at_old_rate
to_create.append(self.get_currency_rate_line(cr, uid, st_line, currency_diff, move_id, context=context))
else:
mv_line_dict['debit'] = debit_at_current_rate
mv_line_dict['credit'] = credit_at_current_rate
elif statement_currency.id != company_currency.id:
#statement is in foreign currency but the transaction is in company currency
prorata_factor = (mv_line_dict['debit'] - mv_line_dict['credit']) / st_line.amount_currency
mv_line_dict['amount_currency'] = prorata_factor * st_line.amount
to_create.append(mv_line_dict)
# Create move lines
move_line_pairs_to_reconcile = []
@@ -799,12 +745,9 @@ class account_bank_statement_line(osv.osv):
new_aml_id = aml_obj.create(cr, uid, mv_line_dict, context=context)
if counterpart_move_line_id != None:
move_line_pairs_to_reconcile.append([new_aml_id, counterpart_move_line_id])
# Reconcile
for pair in move_line_pairs_to_reconcile:
# TODO : too slow
aml_obj.reconcile_partial(cr, uid, pair, context=context)
# Mark the statement line as reconciled
self.write(cr, uid, id, {'journal_entry_id': move_id}, context=context)
@@ -813,14 +756,14 @@ class account_bank_statement_line(osv.osv):
# Unfortunately, that spawns a "no access rights" error ; it shouldn't.
def _needaction_domain_get(self, cr, uid, context=None):
user = self.pool.get("res.users").browse(cr, uid, uid)
return ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('journal_entry_id', '=', False)]
return ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id]), ('journal_entry_id', '=', False)]
_order = "statement_id desc, sequence"
_name = "account.bank.statement.line"
_description = "Bank Statement Line"
_inherit = ['ir.needaction_mixin']
_columns = {
'name': fields.char('Description', required=True),
'name': fields.char('Communication', required=True),
'date': fields.date('Date', required=True),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
'partner_id': fields.many2one('res.partner', 'Partner'),
@@ -828,7 +771,8 @@ class account_bank_statement_line(osv.osv):
'account_id': fields.many2one('account.account', 'Account', help="This technical field can be used at the statement line creation/import time in order to avoid the reconciliation process on it later on. The statement line will simply create a counterpart on this account"),
'statement_id': fields.many2one('account.bank.statement', 'Statement', select=True, required=True, ondelete='cascade'),
'journal_id': fields.related('statement_id', 'journal_id', type='many2one', relation='account.journal', string='Journal', store=True, readonly=True),
'ref': fields.char('Structured Communication'),
'partner_name': fields.char('Partner Name', help="This field is used to record the third party name when importing bank statement in electronic format, when the partner doesn't exist yet in the database (or cannot be found)."),
'ref': fields.char('Reference'),
'note': fields.text('Notes'),
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of bank statement lines."),
'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
@@ -850,13 +794,13 @@ class account_statement_operation_template(osv.osv):
'label': fields.char('Label'),
'amount_type': fields.selection([('fixed', 'Fixed'),('percentage_of_total','Percentage of total amount'),('percentage_of_balance', 'Percentage of open balance')],
'Amount type', required=True),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account'), help="Leave to 0 to ignore."),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account'), help="The amount will count as a debit if it is negative, as a credit if it is positive (except if amount type is 'Percentage of open balance').", required=True),
'tax_id': fields.many2one('account.tax', 'Tax', ondelete='cascade'),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', ondelete='cascade'),
}
_defaults = {
'amount_type': 'fixed',
'amount': 0.0
'amount_type': 'percentage_of_balance',
'amount': 100.0
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+17 -14
View File
@@ -77,7 +77,11 @@ class account_cash_statement(osv.osv):
"""
res = {}
for statement in self.browse(cr, uid, ids, context=context):
if (statement.journal_id.type not in ('cash',)) or (not statement.journal_id.cash_control):
if (statement.journal_id.type not in ('cash',)):
continue
if not statement.journal_id.cash_control:
if statement.balance_end_real <> statement.balance_end:
statement.write({'balance_end_real' : statement.balance_end})
continue
start = end = 0
for line in statement.details_ids:
@@ -295,7 +299,6 @@ class account_cash_statement(osv.osv):
return state=='open'
def button_confirm_cash(self, cr, uid, ids, context=None):
super(account_cash_statement, self).button_confirm_bank(cr, uid, ids, context=context)
absl_proxy = self.pool.get('account.bank.statement.line')
TABLES = ((_('Profit'), 'profit_account_id'), (_('Loss'), 'loss_account_id'),)
@@ -303,27 +306,27 @@ class account_cash_statement(osv.osv):
for obj in self.browse(cr, uid, ids, context=context):
if obj.difference == 0.0:
continue
for item_label, item_account in TABLES:
if getattr(obj.journal_id, item_account):
raise osv.except_osv(_('Error!'),
_('There is no %s Account on the journal %s.') % (item_label, obj.journal_id.name,))
is_profit = obj.difference < 0.0
account = getattr(obj.journal_id, TABLES[is_profit][1])
elif obj.difference < 0.0:
account = obj.journal_id.loss_account_id
name = _('Loss')
if not obj.journal_id.loss_account_id:
raise osv.except_osv(_('Error!'), _('There is no Loss Account on the journal %s.') % (obj.journal_id.name,))
else: # obj.difference > 0.0
account = obj.journal_id.profit_account_id
name = _('Profit')
if not obj.journal_id.profit_account_id:
raise osv.except_osv(_('Error!'), _('There is no Profit Account on the journal %s.') % (obj.journal_id.name,))
values = {
'statement_id' : obj.id,
'journal_id' : obj.journal_id.id,
'account_id' : account.id,
'amount' : obj.difference,
'name' : 'Exceptional %s' % TABLES[is_profit][0],
'name' : name,
}
absl_proxy.create(cr, uid, values, context=context)
return self.write(cr, uid, ids, {'closing_date': time.strftime("%Y-%m-%d %H:%M:%S")}, context=context)
return super(account_cash_statement, self).button_confirm_bank(cr, uid, ids, context=context)
class account_journal(osv.osv):
+22 -28
View File
@@ -83,7 +83,7 @@ class account_invoice(models.Model):
return journal.currency or journal.company_id.currency_id
@api.model
@api.returns('account.analytic.journal')
@api.returns('account.analytic.journal', lambda r: r.id)
def _get_journal_analytic(self, inv_type):
""" Return the analytic journal corresponding to the given invoice type. """
journal_type = TYPE2JOURNAL.get(inv_type, 'sale')
@@ -91,14 +91,12 @@ class account_invoice(models.Model):
if not journal:
raise except_orm(_('No Analytic Journal!'),
_("You must define an analytic journal of type '%s'!") % (journal_type,))
return journal
return journal[0]
@api.one
@api.depends('account_id', 'move_id.line_id.account_id', 'move_id.line_id.reconcile_id')
def _compute_reconciled(self):
self.reconciled = self.test_paid()
if not self.reconciled and self.state == 'paid':
self.signal_workflow('open_test')
@api.model
def _get_reference_type(self):
@@ -116,7 +114,7 @@ class account_invoice(models.Model):
def _compute_residual(self):
nb_inv_in_partial_rec = max_invoice_id = 0
self.residual = 0.0
for line in self.move_id.line_id:
for line in self.sudo().move_id.line_id:
if line.account_id.type in ('receivable', 'payable'):
if line.currency_id == self.currency_id:
self.residual += line.amount_residual_currency
@@ -179,6 +177,8 @@ class account_invoice(models.Model):
def _compute_payments(self):
partial_lines = lines = self.env['account.move.line']
for line in self.move_id.line_id:
if line.account_id != self.account_id:
continue
if line.reconcile_id:
lines |= line.reconcile_id.line_id
elif line.reconcile_partial_id:
@@ -488,7 +488,7 @@ class account_invoice(models.Model):
@api.multi
def onchange_payment_term_date_invoice(self, payment_term_id, date_invoice):
if not date_invoice:
date_invoice = fields.Date.today()
date_invoice = fields.Date.context_today(self)
if not payment_term_id:
# To make sure the invoice due date should contain due date which is
# entered by user when there is no payment term defined
@@ -574,8 +574,8 @@ class account_invoice(models.Model):
if 'journal_id' in journal_defaults:
values['journal_id'] = journal_defaults['journal_id']
if not values.get('journal_id'):
field_desc = journals.fields_get(['journal_id'])
type_label = next(t for t, label in field_desc['journal_id']['selection'] if t == journal_type)
field_desc = journals.fields_get(['type'])
type_label = next(t for t, label in field_desc['type']['selection'] if t == journal_type)
action = self.env.ref('account.action_account_journal_form')
msg = _('Cannot find any account journal of type "%s" for this company, You should create one.\n Please go to Journal Configuration') % type_label
raise RedirectWarning(msg, action.id, _('Go to the configuration panel'))
@@ -645,10 +645,6 @@ class account_invoice(models.Model):
invoice.check_total = invoice.amount_total
return True
@staticmethod
def _convert_ref(ref):
return (ref or '').replace('/','')
@api.multi
def _get_analytic_lines(self):
""" Return a list of dict for creating analytic lines for self[0] """
@@ -661,7 +657,7 @@ class account_invoice(models.Model):
if self.type in ('in_invoice', 'in_refund'):
ref = self.reference
else:
ref = self._convert_ref(self.number)
ref = self.number
if not self.journal_id.analytic_journal_id:
raise except_orm(_('No Analytic Journal!'),
_("You have to define an analytic journal on the '%s' journal!") % (self.journal_id.name,))
@@ -729,7 +725,7 @@ class account_invoice(models.Model):
total_currency = 0
for line in invoice_move_lines:
if self.currency_id != company_currency:
currency = self.currency_id.with_context(date=self.date_invoice or fields.Date.today())
currency = self.currency_id.with_context(date=self.date_invoice or fields.Date.context_today(self))
line['currency_id'] = currency.id
line['amount_currency'] = line['price']
line['price'] = currency.compute(line['price'], company_currency)
@@ -806,8 +802,7 @@ class account_invoice(models.Model):
inv.check_tax_lines(compute_taxes)
# I disabled the check_total feature
group_check_total = self.env.ref('account.group_supplier_inv_check_total')
if self.env.user in group_check_total.users:
if self.env['res.users'].has_group('account.group_supplier_inv_check_total'):
if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding / 2.0):
raise except_orm(_('Bad Total!'), _('Please verify the price of the invoice!\nThe encoded total does not match the computed total.'))
@@ -828,7 +823,7 @@ class account_invoice(models.Model):
if inv.type in ('in_invoice', 'in_refund'):
ref = inv.reference
else:
ref = self._convert_ref(inv.number)
ref = inv.number
diff_currency = inv.currency_id != company_currency
# create one move line for the total and possibly adjust the other lines amount
@@ -892,7 +887,7 @@ class account_invoice(models.Model):
'ref': inv.reference or inv.name,
'line_id': line,
'journal_id': journal.id,
'date': date,
'date': inv.date_invoice,
'narration': inv.comment,
'company_id': inv.company_id.id,
}
@@ -956,11 +951,11 @@ class account_invoice(models.Model):
if inv.type in ('in_invoice', 'in_refund'):
if not inv.reference:
ref = self._convert_ref(inv.number)
ref = inv.number
else:
ref = inv.reference
else:
ref = self._convert_ref(inv.number)
ref = inv.number
self._cr.execute(""" UPDATE account_move SET ref=%s
WHERE id=%s AND (ref IS NULL OR ref = '')""",
@@ -1088,7 +1083,7 @@ class account_invoice(models.Model):
values['journal_id'] = journal.id
values['type'] = TYPE2REFUND[invoice['type']]
values['date_invoice'] = date or fields.Date.today()
values['date_invoice'] = date or fields.Date.context_today(invoice)
values['state'] = 'draft'
values['number'] = False
@@ -1118,7 +1113,7 @@ class account_invoice(models.Model):
SIGN = {'out_invoice': -1, 'in_invoice': 1, 'out_refund': 1, 'in_refund': -1}
direction = SIGN[self.type]
# take the chosen date
date = self._context.get('date_p') or fields.Date.today()
date = self._context.get('date_p') or fields.Date.context_today(self)
# Take the amount in currency and the currency of the payment
if self._context.get('amount_currency') and self._context.get('currency_id'):
@@ -1132,7 +1127,7 @@ class account_invoice(models.Model):
if self.type in ('in_invoice', 'in_refund'):
ref = self.reference
else:
ref = self._convert_ref(self.number)
ref = self.number
partner = self.partner_id._find_accounting_partner(self.partner_id)
name = name or self.invoice_line.name or self.number
# Pay attention to the sign for both debit/credit AND amount_currency
@@ -1397,8 +1392,7 @@ class account_invoice_line(models.Model):
res = []
for line in inv.invoice_line:
mres = self.move_line_get_item(line)
if not mres:
continue
mres['invl_id'] = line.id
res.append(mres)
tax_code_found = False
taxes = line.invoice_line_tax_id.compute_all(
@@ -1507,7 +1501,7 @@ class account_invoice_tax(models.Model):
company = self.env['res.company'].browse(company_id)
if currency_id and company.currency_id:
currency = self.env['res.currency'].browse(currency_id)
currency = currency.with_context(date=date_invoice or fields.Date.today())
currency = currency.with_context(date=date_invoice or fields.Date.context_today(self))
base = currency.compute(base * factor, company.currency_id, round=False)
return {'value': {'base_amount': base}}
@@ -1517,14 +1511,14 @@ class account_invoice_tax(models.Model):
company = self.env['res.company'].browse(company_id)
if currency_id and company.currency_id:
currency = self.env['res.currency'].browse(currency_id)
currency = currency.with_context(date=date_invoice or fields.Date.today())
currency = currency.with_context(date=date_invoice or fields.Date.context_today(self))
amount = currency.compute(amount * factor, company.currency_id, round=False)
return {'value': {'tax_amount': amount}}
@api.v8
def compute(self, invoice):
tax_grouped = {}
currency = invoice.currency_id.with_context(date=invoice.date_invoice or fields.Date.today())
currency = invoice.currency_id.with_context(date=invoice.date_invoice or fields.Date.context_today(invoice))
company_currency = invoice.company_id.currency_id
for line in invoice.invoice_line:
taxes = line.invoice_line_tax_id.compute_all(
+16 -9
View File
@@ -446,6 +446,14 @@
</field>
</record>
<!-- Custom reports (aka filters) -->
<record id="filter_invoice_salespersons" model="ir.filters">
<field name="name">By Salespersons</field>
<field name="model_id">account.invoice</field>
<field name="user_id" eval="False"/>
<field name="context">{'group_by': ['date_invoice:month', 'user_id']}</field>
</record>
<record id="view_account_invoice_filter" model="ir.ui.view">
<field name="name">account.invoice.select</field>
<field name="model">account.invoice</field>
@@ -463,14 +471,13 @@
<separator/>
<filter domain="[('user_id','=',uid)]" help="My Invoices"/>
<group expand="0" string="Group By">
<filter name="group_by_partner_id" string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter name="commercial_partner_id" string="Commercial Partner" domain="[]" context="{'group_by':'commercial_partner_id'}"/>
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id'}"/>
<filter string="Invoice Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_invoice'}"/>
<filter string="Due Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_due'}"/>
<filter name="group_by_partner_id" string="Partner" context="{'group_by':'partner_id'}"/>
<filter string="Salesperson" context="{'group_by':'user_id'}"/>
<filter string="Category of Product" name="category_product" context="{'group_by':'categ_id','residual_invisible':True}"/>
<filter string="Status" context="{'group_by':'state'}"/>
<separator/>
<filter string="Period" context="{'group_by':'period_id'}"/>
<filter string="Due Month" context="{'group_by':'date_due'}"/>
</group>
</search>
</field>
@@ -582,7 +589,7 @@
<field name="search_view_id" ref="view_account_invoice_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a customer refund.
Click to create a customer refund.
</p><p>
A refund is a document that credits an invoice completely or
partially.
+9 -10
View File
@@ -13,14 +13,12 @@
<field name="flow_start">True</field>
<field name="name">draft</field>
</record>
<record id="act_proforma2" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">proforma2</field>
<field name="action">write({'state':'proforma2'})</field>
<field name="kind">function</field>
</record>
<record id="act_open" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">open</field>
@@ -35,7 +33,7 @@ invoice_validate()</field>
<field name="name">re-open</field>
<field name="action">write({'state':'open'})</field>
<field name="kind">function</field>
</record>
</record>
<record id="act_paid" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">paid</field>
@@ -61,9 +59,9 @@ write({'state':'cancel'})</field>
<record id="t8" model="workflow.transition">
<field name="act_from" ref="act_open"/>
<field name="act_to" ref="act_paid"/>
<field name="trigger_model">account.move.line</field>
<field name="trigger_expr_id">move_line_id_payment_get()</field>
<field name="condition">test_paid()</field>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
<field name="condition">reconciled</field>
</record>
<record id="t9" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
@@ -78,7 +76,8 @@ write({'state':'cancel'})</field>
<record id="t13" model="workflow.transition">
<field name="act_from" ref="act_paid"/>
<field name="act_to" ref="act_open_test"/>
<field name="signal">open_test</field>
<field name="signal"/>
<field name="condition">not reconciled</field>
</record>
<record id="t14" model="workflow.transition">
<field name="act_from" ref="act_open_test"/>
@@ -89,9 +88,9 @@ write({'state':'cancel'})</field>
<record id="open_test_to_paid" model="workflow.transition">
<field name="act_from" ref="act_open_test"/>
<field name="act_to" ref="act_paid"/>
<field name="trigger_model">account.move.line</field>
<field name="trigger_expr_id">move_line_id_payment_get()</field>
<field name="condition">test_paid()</field>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
<field name="condition">reconciled</field>
</record>
<record id="draft_to_pro2" model="workflow.transition">
+79 -5
View File
@@ -22,12 +22,12 @@
import time
from datetime import datetime
from openerp import workflow
from openerp.osv import fields, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
from openerp import tools
from openerp.report import report_sxw
import openerp
class account_move_line(osv.osv):
@@ -752,6 +752,74 @@ class account_move_line(osv.osv):
args.append(('partner_id', '=', partner[0]))
return super(account_move_line, self).search(cr, uid, args, offset, limit, order, context, count)
def prepare_move_lines_for_reconciliation_widget(self, cr, uid, lines, target_currency=False, target_date=False, context=None):
""" Returns move lines formatted for the manual/bank reconciliation widget
:param target_currency: curreny you want the move line debit/credit converted into
:param target_date: date to use for the monetary conversion
"""
if not lines:
return []
if context is None:
context = {}
ctx = context.copy()
currency_obj = self.pool.get('res.currency')
company_currency = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id
rml_parser = report_sxw.rml_parse(cr, uid, 'reconciliation_widget_aml', context=context)
reconcile_partial_ids = [] # for a partial reconciliation, take only one line
ret = []
for line in lines:
if line.reconcile_partial_id and line.reconcile_partial_id.id in reconcile_partial_ids:
continue
if line.reconcile_partial_id:
reconcile_partial_ids.append(line.reconcile_partial_id.id)
ret_line = {
'id': line.id,
'name': line.move_id.name,
'ref': line.move_id.ref,
'account_code': line.account_id.code,
'account_name': line.account_id.name,
'account_type': line.account_id.type,
'date_maturity': line.date_maturity,
'date': line.date,
'period_name': line.period_id.name,
'journal_name': line.journal_id.name,
'partner_id': line.partner_id.id,
'partner_name': line.partner_id.name,
}
# Get right debit / credit:
line_currency = line.currency_id or company_currency
amount_currency_str = ""
if line.currency_id and line.amount_currency:
amount_currency_str = rml_parser.formatLang(line.amount_currency, currency_obj=line.currency_id)
if target_currency and line_currency == target_currency and target_currency != company_currency:
debit = line.debit > 0 and line.amount_residual_currency or 0.0
credit = line.credit > 0 and line.amount_residual_currency or 0.0
amount_currency_str = rml_parser.formatLang(line.amount_residual, currency_obj=company_currency)
amount_str = rml_parser.formatLang(debit or credit, currency_obj=target_currency)
else:
debit = line.debit > 0 and line.amount_residual or 0.0
credit = line.credit > 0 and line.amount_residual or 0.0
amount_str = rml_parser.formatLang(debit or credit, currency_obj=company_currency)
if target_currency and target_currency != company_currency:
amount_currency_str = rml_parser.formatLang(debit or credit, currency_obj=line_currency)
ctx = context.copy()
if target_date:
ctx.update({'date': target_date})
debit = currency_obj.compute(cr, uid, target_currency.id, company_currency.id, debit, context=ctx)
credit = currency_obj.compute(cr, uid, target_currency.id, company_currency.id, credit, context=ctx)
amount_str = rml_parser.formatLang(debit or credit, currency_obj=target_currency)
ret_line['credit'] = credit
ret_line['debit'] = debit
ret_line['amount_str'] = amount_str
ret_line['amount_currency_str'] = amount_currency_str
ret.append(ret_line)
return ret
def list_partners_to_reconcile(self, cr, uid, context=None):
cr.execute(
"""SELECT partner_id FROM (
@@ -817,11 +885,14 @@ class account_move_line(osv.osv):
if self.pool.get('res.currency').is_zero(cr, uid, currency_id, total):
res = self.reconcile(cr, uid, merges+unmerge, context=context, writeoff_acc_id=writeoff_acc_id, writeoff_period_id=writeoff_period_id, writeoff_journal_id=writeoff_journal_id)
return res
# marking the lines as reconciled does not change their validity, so there is no need
# to revalidate their moves completely.
reconcile_context = dict(context, novalidate=True)
r_id = move_rec_obj.create(cr, uid, {
'type': type,
'line_partial_ids': map(lambda x: (4,x,False), merges+unmerge)
}, context=context)
move_rec_obj.reconcile_partial_check(cr, uid, [r_id] + merges_rec, context=context)
}, context=reconcile_context)
move_rec_obj.reconcile_partial_check(cr, uid, [r_id] + merges_rec, context=reconcile_context)
return r_id
def reconcile(self, cr, uid, ids, type='auto', writeoff_acc_id=False, writeoff_period_id=False, writeoff_journal_id=False, context=None):
@@ -946,11 +1017,14 @@ class account_move_line(osv.osv):
writeoff_line_ids = [writeoff_line_ids[1]]
ids += writeoff_line_ids
# marking the lines as reconciled does not change their validity, so there is no need
# to revalidate their moves completely.
reconcile_context = dict(context, novalidate=True)
r_id = move_rec_obj.create(cr, uid, {
'type': type,
'line_id': map(lambda x: (4, x, False), ids),
'line_partial_ids': map(lambda x: (3, x, False), ids)
})
}, context=reconcile_context)
# the id of the move.reconcile is written in the move.line (self) by the create method above
# because of the way the line_id are defined: (4, x, False)
for id in ids:
@@ -1297,7 +1371,7 @@ class account_move_line(osv.osv):
self.create(cr, uid, data, context)
del vals['account_tax_id']
if check and not context.get('novalidate') and ((not context.get('no_store_function')) or journal.entry_posted):
if check and not context.get('novalidate') and (context.get('recompute', True) or journal.entry_posted):
tmp = move_obj.validate(cr, uid, [vals['move_id']], context)
if journal.entry_posted and tmp:
move_obj.button_validate(cr,uid, [vals['move_id']], context)
+1 -1
View File
@@ -491,7 +491,7 @@
<record id="action_bank_reconcile_bank_statements" model="ir.actions.client">
<field name="name">Reconciliation on Bank Statements</field>
<field name="tag">bank_statement_reconciliation_view</field>
<field name="context">{'statement_id': active_id}</field>
<field name="context">{'statement_ids': [active_id]}</field>
</record>
<record id="view_account_bank_statement_filter" model="ir.ui.view">
@@ -26,7 +26,7 @@
<field name="partner_id" ref="base.res_partner_9"/>
</record>
<record id="demo_bank_statement_line_2" model="account.bank.statement.line">
<field name="ref">SAJ2014002</field>
<field name="ref"></field>
<field name="statement_id" ref="demo_bank_statement_1"/>
<field name="sequence" eval="2"/>
<field name="company_id" ref="base.main_company"/>
@@ -70,15 +70,15 @@
<field name="name">Bank Fees</field>
<field name="account_id" ref="a_expense"></field>
<field name="label">Bank Fees</field>
<field name="amount_type">fixed</field>
<field name="amount"></field>
<field name="amount_type">percentage_of_balance</field>
<field name="amount">100.0</field>
</record>
<record id="statement_operation_template_3" model="account.statement.operation.template">
<field name="name">Profit / Loss</field>
<field name="account_id" ref="a_sale"></field>
<field name="label">Profit / Loss</field>
<field name="amount_type">fixed</field>
<field name="amount"></field>
<field name="amount_type">percentage_of_balance</field>
<field name="amount">100.0</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -44,7 +44,7 @@
<field name="partner_id" ref="base.res_partner_17"/>
<field name="name">Zed+ Antivirus</field>
</record>
<!-- Some customer invoices used to show the reconciliation process on the bank statement -->
<record id="invoice_1" model="account.invoice">
<field name="currency_id" ref="base.EUR"/>
+1 -1
View File
@@ -23,7 +23,7 @@
<record id="email_template_edi_invoice" model="email.template">
<field name="name">Invoice - Send by Email</field>
<field name="email_from">${(object.user_id.email or object.company_id.email or 'noreply@localhost')|safe}</field>
<field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a'})</field>
<field name="subject">${object.company_id.name|safe} Invoice (Ref ${object.number or 'n/a'})</field>
<field name="partner_to">${object.partner_id.id}</field>
<field name="model_id" ref="account.model_account_invoice"/>
<field name="auto_delete" eval="True"/>
+10032 -9065
View File
File diff suppressed because it is too large Load Diff
+8 -9
View File
@@ -22,7 +22,6 @@
from operator import itemgetter
import time
from openerp import SUPERUSER_ID
from openerp.osv import fields, osv
from openerp import api
@@ -66,16 +65,16 @@ class account_fiscal_position(osv.osv):
result.add(t.id)
return list(result)
@api.v8
@api.v8 # noqa
def map_tax(self, taxes):
result = taxes.browse()
result = self.env['account.tax'].browse()
for tax in taxes:
found = False
for t in self.tax_ids:
if t.tax_src_id == tax:
result |= t.tax_dest_id
found = True
if not found:
if t.tax_dest_id:
result |= t.tax_dest_id
break
else:
result |= tax
return result
@@ -224,8 +223,8 @@ class res_partner(osv.osv):
account_invoice_report = self.pool.get('account.invoice.report')
for partner in self.browse(cr, uid, ids, context=context):
domain = [('partner_id', 'child_of', partner.id)]
invoice_ids = account_invoice_report.search(cr, SUPERUSER_ID, domain, context=context)
invoices = account_invoice_report.browse(cr, SUPERUSER_ID, invoice_ids, context=context)
invoice_ids = account_invoice_report.search(cr, uid, domain, context=context)
invoices = account_invoice_report.browse(cr, uid, invoice_ids, context=context)
result[partner.id] = sum(inv.user_currency_price_total for inv in invoices)
return result
+4 -8
View File
@@ -15,16 +15,12 @@
</group>
<group name="properties">
<group>
<field name="property_account_income" domain="[('type','=','other')]" groups="account.group_account_user"
attrs="{'readonly': [('is_product_variant', '=', True)]}"/>
<field name="taxes_id" colspan="2" widget="many2many_tags"
attrs="{'readonly':[('sale_ok','=',0)]}"/>
<field name="property_account_income" domain="[('type','=','other')]" groups="account.group_account_user"/>
<field name="taxes_id" colspan="2" widget="many2many_tags"/>
</group>
<group>
<field name="property_account_expense" domain="[('type','=','other')]" groups="account.group_account_user"
attrs="{'readonly': [('is_product_variant', '=', True)]}"/>
<field name="supplier_taxes_id" colspan="2" widget="many2many_tags"
attrs="{'readonly': [('is_product_variant', '=', True)]}"/>
<field name="property_account_expense" domain="[('type','=','other')]" groups="account.group_account_user"/>
<field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/>
</group>
</group>
</page>
@@ -40,8 +40,8 @@ class analytic_entries_report(osv.osv):
'product_id': fields.many2one('product.product', 'Product', required=True),
'product_uom_id': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
'amount': fields.float('Amount', readonly=True),
'unit_amount': fields.float('Quantity', readonly=True),
'nbr': fields.integer('#Entries', readonly=True),
'unit_amount': fields.integer('Unit Amount', readonly=True),
'nbr': fields.integer('# Entries', readonly=True), # TDE FIXME master: rename into nbr_entries
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'analytic_entries_report')
@@ -7,20 +7,18 @@
<field name="arch" type="xml">
<search string="Analytic Entries Analysis">
<field name="date"/>
<filter string="My Entries" icon="terp-personal" domain="[('user_id','=',uid)]" help="My Entries"/>
<filter string="My Entries" domain="[('user_id','=',uid)]" help="My Entries"/>
<field name="account_id" groups="analytic.group_analytic_accounting"/>
<field name="product_id" />
<field name="user_id"/>
<group expand="0" string="Group By">
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Analytic Account" name="Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
<filter string="Financial Account" icon="terp-folder-orange" context="{'group_by':'general_account_id'}"/>
<filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
<filter string="Product Unit of Measure" icon="terp-mrp" context="{'group_by':'product_uom_id'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Date" name="Month" icon="terp-go-month" context="{'group_by':'date:month'}"/>
<filter string="Partner" context="{'group_by':'partner_id'}"/>
<filter string="Analytic Account" name="Account" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>
<filter string="Financial Account" context="{'group_by':'general_account_id'}"/>
<filter string="Journal" context="{'group_by':'journal_id'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator/>
<filter string="Month" name="Month" context="{'group_by':'date:month'}"/>
</group>
</search>
</field>
@@ -30,7 +28,8 @@
<field name="model">analytic.entries.report</field>
<field name="arch" type="xml">
<graph string="Analytic Entries Analysis" type="pivot">
<field name="user_id" type="row"/>
<field name="account_id" type="row"/>
<field name="date" interval="month" type="col"/>
<field name="nbr" type="measure"/>
<field name="unit_amount" type="measure"/>
<field name="amount" type="measure"/>
@@ -42,8 +41,8 @@
<field name="res_model">analytic.entries.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="context">{'search_default_year':1,'search_default_month':1, 'group_by_no_leaf':1, 'search_default_Account':1, 'search_default_Month':1, 'group_by':[]}</field>
<field name="search_view_id" ref="view_analytic_entries_report_search"/>
<field name="context">{'group_by_no_leaf':1, 'search_default_Account':1, 'group_by':[]}</field>
<field name="help">From this view, have an analysis of your different analytic entries following the analytic account you defined matching your business need. Use the tool search to analyse information about analytic entries generated in the system.</field>
</record>
@@ -29,7 +29,7 @@ class account_entries_report(osv.osv):
_auto = False
_rec_name = 'date'
_columns = {
'date': fields.date('Effective Date', readonly=True),
'date': fields.date('Effective Date', readonly=True), # TDE FIXME master: rename into date_effective
'date_created': fields.date('Date Created', readonly=True),
'date_maturity': fields.date('Date Maturity', readonly=True),
'ref': fields.char('Reference', readonly=True),
@@ -50,7 +50,7 @@ class account_entries_report(osv.osv):
'reconcile_id': fields.many2one('account.move.reconcile', 'Reconciliation number', readonly=True),
'partner_id': fields.many2one('res.partner','Partner', readonly=True),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
'quantity': fields.float('Products Quantity', digits=(16,2), readonly=True),
'quantity': fields.float('Products Quantity', digits=(16,2), readonly=True), # TDE FIXME master: rename into product_quantity
'user_type': fields.many2one('account.account.type', 'Account Type', readonly=True),
'type': fields.selection([
('receivable', 'Receivable'),
@@ -36,10 +36,11 @@
<field name="model">account.entries.report</field>
<field name="arch" type="xml">
<graph string="Entries Analysis" type="pivot">
<field name="partner_id" type="row"/>
<field name="debit" operator="+"/>
<field name="credit" operator="+"/>
<field name="balance" operator="+"/>
<field name="user_type" type="row"/>
<field name="period_id" type="col"/>
<field name="debit" type="measure"/>
<field name="credit" type="measure"/>
<field name="balance" type="measure"/>
</graph>
</field>
</record>
@@ -63,14 +64,14 @@
<field name="date"/>
<field name="date_created"/>
<field name="date_maturity"/>
<filter icon="terp-go-year" string="This F.Year" name="thisyear" context="{'year':'current_year'}" help="Journal Entries with period in current year"/>
<filter icon="terp-go-month" string="This Period" name="period" context="{'period':'current_period'}" help="Journal Entries with period in current period"/>
<filter string="This F.Year" name="thisyear" domain="['|', ('date', '=', False), '&amp;',('date','&lt;=', time.strftime('%%Y-12-31')),('date','&gt;=',time.strftime('%%Y-01-01'))]" help="Journal Entries with period in current year"/>
<filter string="This Period" name="period" context="{'period':'current_period'}" help="Journal Entries with period in current period"/>
<separator/>
<filter string="Unposted" icon="terp-document-new" domain="[('move_state','=','draft')]" help = "entries"/>
<filter string="Posted" icon="terp-camera_test" domain="[('move_state','=','posted')]" help = "Posted entries"/>
<filter string="Unposted" domain="[('move_state','=','draft')]" help = "entries"/>
<filter string="Posted" domain="[('move_state','=','posted')]" help = "Posted entries"/>
<separator/>
<filter string="Unreconciled" icon="terp-dolar_ok!" domain="[('reconcile_id','=',False), ('account_id.reconcile','=',True)]" help = "Unreconciled entries"/>
<filter string="Reconciled" icon="terp-dolar" domain="[('reconcile_id','!=',False)]" help = "Reconciled entries"/>
<filter string="Unreconciled" domain="[('reconcile_id','=',False), ('account_id.reconcile','=',True)]" help = "Unreconciled entries"/>
<filter string="Reconciled" domain="[('reconcile_id','!=',False)]" help = "Reconciled entries"/>
<field name="account_id"/>
<field name="journal_id"/>
<field name="period_id"/>
@@ -81,17 +82,13 @@
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By">
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':['product_id','product_uom_id'], 'quantity_visible':1}"/>
<filter string="Currency" name="group_currency" icon="terp-dolar" context="{'group_by':'currency_id', 'currency_id_visible':1, 'amount_currency_visible':1}"/>
<filter string="Journal" name="group_journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
<filter string="Account" name="group_account" icon="terp-folder-green" context="{'group_by':'account_id'}"/>
<filter string="Acc.Type" icon="terp-stock_symbol-selection" context="{'group_by':'user_type'}" name="usertype"/>
<filter string="Int.Type" icon="terp-stock_symbol-selection" context="{'group_by':'type'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Entries Month" icon="terp-go-today" context="{'group_by':'date'}" help="Entries Date by Month"/>
<filter string="Period" icon="terp-go-month" name="group_period" context="{'group_by':'period_id'}"/>
<filter string="Fiscal Year" icon="terp-go-year" context="{'group_by':'fiscalyear_id'}"/>
<filter string="Partner" context="{'group_by':'partner_id'}"/>
<filter string="Journal" name="group_journal" context="{'group_by':'journal_id'}"/>
<filter string="Acc.Type" context="{'group_by':'user_type'}" name="usertype"/>
<filter string="Int.Type" context="{'group_by':'type'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator/>
<filter string="Entries Month" context="{'group_by':'date:month'}" help="Entries Date by Month"/>
</group>
</search>
</field>
@@ -56,7 +56,7 @@ class account_invoice_report(osv.osv):
_columns = {
'date': fields.date('Date', readonly=True),
'product_id': fields.many2one('product.product', 'Product', readonly=True),
'product_qty':fields.float('Qty', readonly=True),
'product_qty':fields.float('Product Quantity', readonly=True),
'uom_name': fields.char('Reference Unit of Measure', size=128, readonly=True),
'payment_term': fields.many2one('account.payment.term', 'Payment Term', readonly=True),
'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], readonly=True),
@@ -73,7 +73,7 @@ class account_invoice_report(osv.osv):
'price_average': fields.float('Average Price', readonly=True, group_operator="avg"),
'user_currency_price_average': fields.function(_compute_amounts_in_user_currency, string="Average Price", type='float', digits_compute=dp.get_precision('Account'), multi="_compute_amounts"),
'currency_rate': fields.float('Currency Rate', readonly=True),
'nbr':fields.integer('# of Lines', readonly=True),
'nbr': fields.integer('# of Invoices', readonly=True), # TDE FIXME master: rename into nbr_lines
'type': fields.selection([
('out_invoice','Customer Invoice'),
('in_invoice','Supplier Invoice'),
@@ -226,7 +226,7 @@ class account_invoice_report(osv.osv):
OR (sub.date IS NULL AND cr2.name <= NOW()))
ORDER BY name DESC LIMIT 1)
)""" % (
self._table,
self._table,
self._select(), self._sub_select(), self._from(), self._group_by()))
@@ -6,10 +6,8 @@
<field name="model">account.invoice.report</field>
<field name="arch" type="xml">
<graph string="Invoices Analysis" type="pivot">
<field name="period_id" type="row"/>
<field name="categ_id" type="row"/>
<field name="nbr" type="measure"/>
<field name="product_qty" type="measure"/>
<field name="period_id" type="col"/>
<field name="price_total" type="measure"/>
</graph>
</field>
@@ -58,7 +56,7 @@
<field name="arch" type="xml">
<search string="Invoices Analysis">
<field name="date"/>
<filter string="This Year" name="year" domain="['|', ('date', '=', False), '&amp;',('date','&lt;=', time.strftime('%%Y-12-31')),('date','&gt;=',time.strftime('%%Y-01-01'))]"/>
<filter string="This Year" name="thisyear" domain="['|', ('date', '=', False), '&amp;',('date','&lt;=', time.strftime('%%Y-12-31')),('date','&gt;=',time.strftime('%%Y-01-01'))]" help="Journal invoices with period in current year"/>
<separator/>
<filter string="To Invoice" domain="[('state','=','draft')]" help = "Draft Invoices"/>
<filter string="Pro-forma" domain="['|', ('state','=','proforma'),('state','=','proforma2')]"/>
@@ -69,24 +67,19 @@
<separator/>
<filter string="Invoice" domain="['|', ('type','=','out_invoice'),('type','=','in_invoice')]"/>
<filter string="Refund" domain="['|', ('type','=','out_refund'),('type','=','in_refund')]"/>
<field name="partner_id"/>
<field name="partner_id" operator="child_of"/>
<field name="user_id" />
<field name="categ_id" filter_domain="[('categ_id', 'child_of', self)]"/>
<group expand="1" string="Group By">
<filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/>
<filter string="Commercial Partner" name="commercial_partner_id" context="{'group_by':'commercial_partner_id','residual_visible':True}"/>
<filter string="Commercial Partner's Country" name="country_id" context="{'group_by':'country_id'}"/>
<filter string="Salesperson" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Due Month" icon="terp-go-today" context="{'group_by':'date_due'}"/>
<filter string="Period" icon="terp-go-month" context="{'group_by':'period_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id','set_visible':True,'residual_invisible':True}"/>
<filter string="Category of Product" name="category_product" icon="terp-stock_symbol-selection" context="{'group_by':'categ_id','residual_invisible':True}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" context="{'group_by':'type'}"/>
<filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
<filter string="Account" icon="terp-folder-orange" context="{'group_by':'account_line_id'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Invoice Date" name="month" icon="terp-go-month" context="{'group_by':'date'}" help="Group by month of Invoice Date"/>
<filter string="Salesperson" name='user' context="{'group_by':'user_id'}"/>
<filter string="Sales Team" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Category of Product" name="category_product" context="{'group_by':'categ_id','residual_invisible':True}"/>
<filter string="Status" context="{'group_by':'state'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator orientation="vertical" />
<filter string="Period" context="{'group_by':'period_id'}"/>
<filter string="Due Month" context="{'group_by':'date_due:month'}"/>
</group>
</search>
</field>
@@ -97,7 +90,7 @@
<field name="res_model">account.invoice.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="context">{'search_default_current':1, 'search_default_year': 1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1,}</field>
<field name="context">{'search_default_current':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1, 'search_default_year': 1}</field>
<field name="search_view_id" ref="view_account_invoice_report_search"/>
<field name="help">From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs.</field>
@@ -38,6 +38,9 @@
<field name="fiscalyear_id"/>
<field name="period_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="1" string="Group By">
<filter string="Month" context="{'group_by':'date:month'}"/>
</group>
</search>
</field>
</record>
+22
View File
@@ -131,7 +131,29 @@ class account_config_settings(osv.osv_memory):
help="Allows you to use the analytic accounting."),
'group_check_supplier_invoice_total': fields.boolean('Check the total of supplier invoices',
implied_group="account.group_supplier_inv_check_total"),
'income_currency_exchange_account_id': fields.related(
'company_id', 'income_currency_exchange_account_id',
type='many2one',
relation='account.account',
string="Gain Exchange Rate Account",
domain="[('type', '=', 'other')]"),
'expense_currency_exchange_account_id': fields.related(
'company_id', 'expense_currency_exchange_account_id',
type="many2one",
relation='account.account',
string="Loss Exchange Rate Account",
domain="[('type', '=', 'other')]"),
}
def onchange_company_id(self, cr, uid, ids, company_id, context=None):
res = super(account_config_settings, self).onchange_company_id(cr, uid, ids, company_id, context=context)
if company_id:
company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
res['value'].update({'income_currency_exchange_account_id': company.income_currency_exchange_account_id and company.income_currency_exchange_account_id.id or False,
'expense_currency_exchange_account_id': company.expense_currency_exchange_account_id and company.expense_currency_exchange_account_id.id or False})
else:
res['value'].update({'income_currency_exchange_account_id': False,
'expense_currency_exchange_account_id': False})
return res
def _default_company(self, cr, uid, context=None):
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+8
View File
@@ -123,6 +123,14 @@
<div name="group_multi_currency">
<field name="group_multi_currency" class="oe_inline" on_change="onchange_multi_currency(group_multi_currency)"/>
<label for="group_multi_currency"/>
<group attrs="{'invisible': [('group_multi_currency', '&lt;&gt;', True)]}" col="2">
<group>
<field name="income_currency_exchange_account_id"/>
<field name="expense_currency_exchange_account_id"/>
</group>
<group>
</group>
</group>
</div>
<div>
<field name="module_account_accountant" class="oe_inline"/>
@@ -6,18 +6,29 @@
-o-user-select: none;
user-select: none;
cursor: default;
height: 100%;
/* icons */ }
.openerp .oe_bank_statement_reconciliation .oe_form_sheetbg {
border-bottom: 0;
padding: 0;
height: 100%; }
.openerp .oe_bank_statement_reconciliation .oe_form_sheetbg .oe_form_sheet {
position: relative;
padding: 20px 15px 30px 15px;
border-top: 0;
border-bottom: 0;
height: 100%; }
.openerp .oe_bank_statement_reconciliation h1 {
width: 48%;
padding: 0 0 0 15px;
margin: 0 0 35px 0;
margin: 0 0 25px 0;
float: left;
font-size: 2.3em; }
font-size: 2em; }
.openerp .oe_bank_statement_reconciliation h2 {
font-size: 1.8em; }
.openerp .oe_bank_statement_reconciliation .progress {
width: 49%;
margin: 6px 15px 0 0;
margin: 4px 15px 0 0;
float: right;
position: relative;
display: inline-block; }
@@ -29,9 +40,6 @@
top: 2px;
z-index: 10;
text-shadow: -1px -1px 0 #f5f5f5, 1px -1px 0 #f5f5f5, -1px 1px 0 #f5f5f5, 1px 1px 0 #f5f5f5; }
.openerp .oe_bank_statement_reconciliation .oe_form_sheet {
position: relative;
padding-bottom: 30px; }
.openerp .oe_bank_statement_reconciliation .protip {
margin: 0;
position: absolute;
@@ -100,7 +108,12 @@
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg); }
transform: rotate(0deg);
-webkit-transition-duration: 300ms;
-moz-transition-duration: 300ms;
-ms-transition-duration: 300ms;
-o-transition-duration: 300ms;
transition-duration: 300ms; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .visible_toggle, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line[data-mode="match"] .toggle_match, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line[data-mode="create"] .toggle_create {
visibility: visible !important;
-webkit-transform: rotate(90deg);
@@ -136,24 +149,24 @@
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td {
padding: 1px 8px;
vertical-align: middle; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(1), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(7), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(1), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(7) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_action, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_info_popover, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_action, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_info_popover {
width: 15px;
padding: 0; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(1), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(1) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_action, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_action {
text-align: left; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(2), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(2) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_account_code, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_account_code {
width: 80px;
padding-left: 3px; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(3), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(3) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_due_date, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_due_date {
width: 100px; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(5), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(5) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_debit, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_debit {
text-align: right;
width: 15%; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(6), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(6) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_credit, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_credit {
width: 15%;
text-align: right;
padding-right: 3px; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(7), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td:nth-child(7) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_info_popover, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table td.cell_info_popover {
text-align: right; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view tr.line_open_balance, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match table tr.line_open_balance {
color: #bbb; }
@@ -176,8 +189,13 @@
-webkit-transition-property: background-color;
-moz-transition-property: background-color;
-ms-transition-property: background-color;
transition-property: background-color; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view .initial_line > td:nth-child(1), .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view .initial_line > td:nth-child(7) {
transition-property: background-color;
-webkit-transition-duration: 300ms;
-moz-transition-duration: 300ms;
-ms-transition-duration: 300ms;
-o-transition-duration: 300ms;
transition-duration: 300ms; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view .initial_line > td.cell_action, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view .initial_line > td.cell_info_popover {
border-top: none;
background: white !important;
padding-top: 6px;
@@ -188,9 +206,9 @@
font-weight: bold;
height: 26px;
margin: 0 15px 4px 15px; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption .button_ok {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption button {
float: right; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption .button_ok:disabled {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption button:disabled {
opacity: 0.5; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption > span, .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view caption > input {
position: relative;
@@ -198,7 +216,7 @@
/* meh */
font-weight: bold;
cursor: pointer; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td:nth-child(6) {
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_credit {
border-left: 1px solid black; }
.openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match .match_controls {
padding: 0 0 5px 18px; }
@@ -3,6 +3,8 @@ $mainTableBordersPadding: 3px;
$lightBorder: 1px solid #bbb;
$accountingBorder: 1px solid #000;
$initialLineBackground: #f0f0f0;
// Warning, this value is also specified in the instance.web.account.abstractReconciliation widget
$aestetic_animation_speed: 300ms;
.openerp .oe_bank_statement_reconciliation {
@@ -13,13 +15,28 @@ $initialLineBackground: #f0f0f0;
-o-user-select: none;
user-select: none;
cursor: default;
height: 100%;
.oe_form_sheetbg {
border-bottom: 0;
padding: 0;
height: 100%;
.oe_form_sheet {
position: relative;
padding: 20px 15px 30px 15px;
border-top: 0;
border-bottom: 0;
height: 100%;
}
}
h1 {
width: 48%;
padding: 0 0 0 $actionColWidth;
margin: 0 0 35px 0;
margin: 0 0 25px 0;
float: left;
font-size: 2.3em;
font-size: 2em;
}
h2 {
@@ -28,7 +45,7 @@ $initialLineBackground: #f0f0f0;
.progress {
width: 49%;
margin: 6px $actionColWidth 0 0;
margin: 4px $actionColWidth 0 0;
float: right;
position: relative;
display: inline-block;
@@ -48,11 +65,6 @@ $initialLineBackground: #f0f0f0;
}
}
.oe_form_sheet {
position: relative;
padding-bottom: 30px;
}
.protip {
margin: 0;
position: absolute;
@@ -145,6 +157,11 @@ $initialLineBackground: #f0f0f0;
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition-duration: $aestetic_animation_speed;
-moz-transition-duration: $aestetic_animation_speed;
-ms-transition-duration: $aestetic_animation_speed;
-o-transition-duration: $aestetic_animation_speed;
transition-duration: $aestetic_animation_speed;
}
.visible_toggle {
@@ -228,40 +245,40 @@ $initialLineBackground: #f0f0f0;
vertical-align: middle;
}
td:nth-child(1), td:nth-child(7) {
td.cell_action, td.cell_info_popover {
width: $actionColWidth;
padding: 0;
}
td:nth-child(1) {
td.cell_action {
text-align: left;
}
td:nth-child(2) {
td.cell_account_code {
width: 80px;
padding-left: $mainTableBordersPadding;
}
td:nth-child(3) {
td.cell_due_date {
width: 100px;
}
td:nth-child(4) {
td.cell_label {
}
td:nth-child(5) {
td.cell_debit {
text-align: right;
width: 15%;
}
td:nth-child(6) {
td.cell_credit {
width: 15%;
text-align: right;
padding-right: $mainTableBordersPadding;
}
td:nth-child(7) {
td.cell_info_popover {
text-align: right;
}
@@ -301,8 +318,13 @@ $initialLineBackground: #f0f0f0;
-moz-transition-property: background-color;
-ms-transition-property: background-color;
transition-property: background-color;
-webkit-transition-duration: $aestetic_animation_speed;
-moz-transition-duration: $aestetic_animation_speed;
-ms-transition-duration: $aestetic_animation_speed;
-o-transition-duration: $aestetic_animation_speed;
transition-duration: $aestetic_animation_speed;
&:nth-child(1), &:nth-child(7) {
&.cell_action, &.cell_info_popover {
border-top: none;
background: white !important;
// Hack pour l'alignement au px près
@@ -318,7 +340,7 @@ $initialLineBackground: #f0f0f0;
height: 26px;
margin: 0 $actionColWidth 4px $actionColWidth;
.button_ok {
button {
float: right;
&:disabled {
@@ -334,7 +356,7 @@ $initialLineBackground: #f0f0f0;
}
// accounting "T"
td:nth-child(6) { border-left: $accountingBorder; }
td.cell_credit { border-left: $accountingBorder; }
}
@@ -434,4 +456,4 @@ $initialLineBackground: #f0f0f0;
}
}
}
}
}
@@ -0,0 +1,147 @@
(function () {
'use strict';
var _t = openerp._t;
openerp.Tour.register({
id: 'bank_statement_reconciliation',
name: _t("Reconcile the demo bank statement"),
path: '/web',
mode: 'test',
// TODO : identify menu by data-menu attr or text node ?
steps: [
// Go to the first statement reconciliation
{
title: "go to accounting",
element: '.oe_menu_toggler:contains("Accounting"):visible',
},
{
title: "go to bank statements",
element: '.oe_menu_leaf:contains("Bank Statement"):visible',
},
{
title: "select first bank statement",
element: '.oe_list_content tbody tr:contains("BNK/2014/001")',
},
{
title: "click the reconcile button",
element: '.oe_form_container header button:contains("Reconcile")',
},
// Check mutual exclusion of move lines
{
title: "set second reconciliation in match mode",
element: '.oe_bank_statement_reconciliation_line:nth-child(2) .initial_line'
},
{
title: "deselect SAJ/2014/002 from second reconciliation",
element: '.oe_bank_statement_reconciliation_line:nth-child(2) .accounting_view .mv_line:contains("SAJ/2014/002")'
},
{
title: "check it appeared in first reconciliation's matches list and select SAJ/2014/002 in second reconciliation",
waitNot: '.oe_bank_statement_reconciliation_line:nth-child(2) .accounting_view .mv_line:contains("SAJ/2014/002")',
waitFor: '.oe_bank_statement_reconciliation_line:first-child .mv_line:contains("SAJ/2014/002")',
element: '.oe_bank_statement_reconciliation_line:nth-child(2) .mv_line:contains("SAJ/2014/002")'
},
// Make a partial reconciliation
{
title: "select SAJ/2014/001",
element: '.oe_bank_statement_reconciliation_line:first-child .mv_line:contains("SAJ/2014/001")'
},
{
title: "click on the partial reconciliation button",
element: '.oe_bank_statement_reconciliation_line:first-child .mv_line:contains("SAJ/2014/001") .do_partial_reconcile_button'
},
{
title: "click on the OK button",
element: '.oe_bank_statement_reconciliation_line:first-child .button_ok.oe_highlight'
},
// Test changing the partner
{
title: "change the partner (1)",
waitNot: '.oe_bank_statement_reconciliation_line:nth-child(4)', // wait for the reconciliation to be processed
element: '.oe_bank_statement_reconciliation_line:first-child .partner_name'
},
{
title: "change the partner (2)",
element: '.oe_bank_statement_reconciliation_line:first-child .change_partner_container input',
sampleText: 'Vauxoo',
},
{
title: "change the partner (3)",
element: '.ui-autocomplete .ui-menu-item:contains("Vauxoo")'
},
{
title: "check the reconciliation is reloaded and has no match",
element: '.oe_bank_statement_reconciliation_line:first-child.no_match',
},
{
title: "change the partner back (1)",
element: '.oe_bank_statement_reconciliation_line:first-child .partner_name'
},
{
title: "change the partner back (2)",
element: '.oe_bank_statement_reconciliation_line:first-child .change_partner_container input',
sampleText: 'Best Designers',
},
{
title: "change the partner back (3)",
element: '.ui-autocomplete .ui-menu-item:contains("Best Designers")'
},
{
title: "select SAJ/2014/002",
element: '.oe_bank_statement_reconciliation_line:first-child .mv_line:contains("SAJ/2014/002")'
},
{
title: "click on the OK button",
element: '.oe_bank_statement_reconciliation_line:first-child .button_ok.oe_highlight'
},
// Create a new move line in first reconciliation and validate it
{
title: "check following reconciliation passes in mode create",
waitNot: '.oe_bank_statement_reconciliation_line:nth-child(3)', // wait for the reconciliation to be processed
element: '.oe_bank_statement_reconciliation_line:first-child[data-mode="create"]'
},
{
title: "click the Profit/Loss preset",
element: '.oe_bank_statement_reconciliation_line:first-child button:contains("Profit / Loss")'
},
{
title: "click on the OK button",
element: '.oe_bank_statement_reconciliation_line:first-child .button_ok.oe_highlight'
},
// Leave an open balance
{
title: "select SAJ/2014/003",
waitNot: '.oe_bank_statement_reconciliation_line:nth-child(2)', // wait for the reconciliation to be processed
element: '.oe_bank_statement_reconciliation_line:first-child .mv_line:contains("SAJ/2014/003")'
},
{
title: "click on the Keep Open button",
element: '.oe_bank_statement_reconciliation_line:first-child .button_ok:not(.oe_highlight)'
},
// Be done
{
title: "check 'finish screen' and close the statement",
waitFor: '.done_message',
element: '.button_close_statement'
},
{
title: "check the statement is closed",
element: '.oe_form_container header .label:contains("Closed")'
},
]
});
}());
File diff suppressed because it is too large Load Diff
@@ -53,21 +53,21 @@
<table class="accounting_view">
<caption>
<button class="button_ok"></button>
<span class="partner_name"><t t-esc="line.partner_name"/></span>
<span t-if="! line.has_no_partner" class="partner_name"><t t-esc="line.partner_name"/></span>
<div class="change_partner_container oe_form"></div>
</caption>
<tbody class="tbody_initial_line">
<tr class="initial_line">
<td><span class="toggle_match glyphicon glyphicon-cog"></span></td>
<td><t t-esc="line.account_code"/></td>
<td><t t-esc="line.date"/></td>
<td><t t-esc="line.name"/>
<td class="cell_action"><span class="toggle_match glyphicon glyphicon-cog"></span></td>
<td class="cell_account_code"><t t-esc="line.account_code"/></td>
<td class="cell_due_date"><t t-esc="line.date"/></td>
<td class="cell_label"><t t-if="line.name" t-esc="line.name"/>
<t t-if="line.amount_currency_str"> (<t t-esc="line.amount_currency_str"/>)</t></td>
<td><t t-if="line.amount &gt; 0">
<td class="cell_debit"><t t-if="line.amount &gt; 0">
<t t-esc="line.amount_str"/></t></td>
<td><t t-if="line.amount &lt; 0">
<td class="cell_credit"><t t-if="line.amount &lt; 0">
<t t-esc="line.amount_str"/></t></td>
<td><span class="line_info_button glyphicon glyphicon-info-sign" t-att-data-content="line.q_popover"></span></td>
<td class="cell_info_popover"><span class="line_info_button glyphicon glyphicon-info-sign" t-att-data-content="line.q_popover"></span></td>
</tr>
</tbody>
<tbody class="tbody_matched_lines"></tbody>
@@ -114,7 +114,7 @@
<t t-name="bank_statement_reconciliation_line_details">
<table class='details'>
<tr><td>Date</td><td><t t-esc="line.date"/></td></tr>
<tr><td>Partner</td><td><t t-esc="line.partner_name"/></td></tr>
<tr t-if="line.partner_name"><td>Partner</td><td><t t-esc="line.partner_name"/></td></tr>
<tr t-if="line.ref"><td>Transaction</td><td><t t-esc="line.ref"/></td></tr>
<tr><td>Description</td><td><t t-esc="line.name"/></td></tr>
<tr><td>Amount</td><td><t t-esc="line.amount_str"/><t t-if="line.amount_currency_str"> (<t t-esc="line.amount_currency_str"/>)</t></td></tr>
@@ -122,40 +122,26 @@
</table>
</t>
<t t-name="bank_statement_reconciliation_move_line">
<tr class="mv_line" t-att-data-lineid="line.id" t-att-data-selected="selected">
<td><span class="glyphicon glyphicon-add-remove"></span></td>
<td><t t-esc="line.account_code"/></td>
<td><t t-esc="line.q_due_date"/></td>
<td class="js_qlabel"><t t-esc="line.q_label"/></td>
<td><t t-if="line.debit !== 0">
<t t-if="line.propose_partial_reconcile" t-call="icon_do_partial_reconciliation"></t>
<t t-if="line.partial_reconcile" t-call="icon_undo_partial_reconciliation"></t>
<t t-esc="line.debit_str"/>
</t></td>
<td><t t-if="line.credit !== 0">
<t t-if="line.propose_partial_reconcile"><t t-call="icon_do_partial_reconciliation" /></t>
<t t-if="line.partial_reconcile"><t t-call="icon_undo_partial_reconciliation" /></t>
<t t-esc="line.credit_str"/>
</t></td>
<td><span class="line_info_button glyphicon glyphicon-info-sign" t-att-data-content="line.q_popover"></span></td>
<td class="cell_action"><span class="glyphicon glyphicon-add-remove"></span></td>
<td class="cell_account_code" t-if="line.account_code"><t t-esc="line.account_code"/></td>
<td class="cell_due_date"><t t-esc="line.q_due_date"/></td>
<td class="cell_label js_qlabel"><t t-esc="line.q_label"/></td>
<td class="cell_debit"><t t-if="line.debit !== 0"><t t-if="line.propose_partial_reconcile" t-call="icon_do_partial_reconciliation"></t><t t-if="line.partial_reconcile" t-call="icon_undo_partial_reconciliation"></t><t t-esc="line.debit_str"/></t></td>
<td class="cell_credit"><t t-if="line.credit !== 0"><t t-if="line.propose_partial_reconcile"><t t-call="icon_do_partial_reconciliation" /></t><t t-if="line.partial_reconcile"><t t-call="icon_undo_partial_reconciliation" /></t><t t-esc="line.credit_str"/></t></td>
<td class="cell_info_popover"><span class="line_info_button glyphicon glyphicon-info-sign" t-att-data-content="line.q_popover"></span></td>
</tr>
</t>
<t t-name="icon_do_partial_reconciliation">
<i class="do_partial_reconcile_button fa fa-exclamation-triangle" data-content="This move's amount is higher than the transaction's amount. Click to do a partial reconciliation"></i>
</t>
<t t-name="icon_do_partial_reconciliation"><i class="do_partial_reconcile_button fa fa-exclamation-triangle" data-content="This move's amount is higher than the transaction's amount. Click to do a partial reconciliation"></i></t>
<t t-name="icon_undo_partial_reconciliation">
<i class="undo_partial_reconcile_button fa fa-exclamation-triangle" data-content="Undo the partial reconciliation."></i>
</t>
<t t-name="icon_undo_partial_reconciliation"><i class="undo_partial_reconcile_button fa fa-exclamation-triangle" data-content="Undo the partial reconciliation."></i></t>
<t t-name="bank_statement_reconciliation_move_line_details">
<table class='details'>
<tr><td>ID</td><td><t t-esc="line.id"/></td></tr>
<tr><td>Account</td><td><t t-esc="line.account_code"/> <t t-esc="line.account_name"/></td></tr>
<tr><td>id</td><td><t t-esc="line.id" /></td></tr>
<tr t-if="line.account_code"><td>Account</td><td><t t-esc="line.account_code"/> <t t-esc="line.account_name"/></td></tr>
<tr><td>Journal</td><td><t t-esc="line.journal_name"/></td></tr>
<tr><td>Period</td><td><t t-esc="line.period_name"/></td></tr>
<tr><td>Date</td><td><t t-esc="line.date"/></td></tr>
@@ -167,28 +153,27 @@
</table>
</t>
<t t-name="bank_statement_reconciliation_created_line">
<tr class="created_line" t-att-data-lineid="line.id">
<td><t t-if="! line.no_remove_action"><span class="line_remove_button glyphicon glyphicon-remove"></span></t></td>
<td><t t-esc="line.account_num"/></td>
<td></td>
<td><t t-esc="line.label"/></td>
<td><t t-if="line.amount &lt; 0"><t t-esc="line.amount_str"/></t></td>
<td><t t-if="line.amount &gt; 0"><t t-esc="line.amount_str"/></t></td>
<td></td>
<td class="cell_action"><t t-if="! line.no_remove_action"><span class="line_remove_button glyphicon glyphicon-remove"></span></t></td>
<td class="cell_account_code"><t t-esc="line.account_num"/></td>
<td class="cell_due_date"></td>
<td class="cell_label"><t t-esc="line.label"/></td>
<td class="cell_debit"><t t-if="line.amount &lt; 0"><t t-esc="line.amount_str"/></t></td>
<td class="cell_credit"><t t-if="line.amount &gt; 0"><t t-esc="line.amount_str"/></t></td>
<td class="cell_info_popover"></td>
</tr>
</t>
<t t-name="bank_statement_reconciliation_line_open_balance">
<tr class="line_open_balance">
<td><span class="toggle_create glyphicon glyphicon-play"></span></td>
<td><t t-esc="account_code"/></td>
<td></td>
<td class="js_open_balance">Open balance</td>
<td><t t-esc="debit"/></td>
<td><t t-esc="credit"/></td>
<td></td>
<td class="cell_action"><span class="toggle_create glyphicon glyphicon-play"></span></td>
<td class="cell_account_code"><t t-esc="account_code"/></td>
<td class="cell_due_date"></td>
<td class="cell_label js_open_balance">Open balance</td>
<td class="cell_debit"><t t-esc="debit"/></td>
<td class="cell_credit"><t t-esc="credit"/></td>
<td class="cell_info_popover"></td>
</tr>
</t>
</templates>
+2
View File
@@ -1,7 +1,9 @@
from . import test_tax
from . import test_search
from . import test_reconciliation
fast_suite = [
test_tax,
test_search,
test_reconciliation,
]
@@ -0,0 +1,8 @@
import openerp.tests
@openerp.tests.common.at_install(False)
@openerp.tests.common.post_install(True)
class TestUi(openerp.tests.HttpCase):
def test_01_admin_bank_statement_reconciliation(self):
self.phantom_js("/", "openerp.Tour.run('bank_statement_reconciliation', 'test')", "openerp.Tour.tours.bank_statement_reconciliation", login="admin")
+162
View File
@@ -0,0 +1,162 @@
from openerp.tests.common import TransactionCase
class TestReconciliation(TransactionCase):
"""Tests for reconciliation (account.tax)
Test used to check that when doing a sale or purchase invoice in a different currency,
the result will be balanced.
"""
def setUp(self):
super(TestReconciliation, self).setUp()
self.account_invoice_model = self.registry('account.invoice')
self.account_invoice_line_model = self.registry('account.invoice.line')
self.acc_bank_stmt_model = self.registry('account.bank.statement')
self.acc_bank_stmt_line_model = self.registry('account.bank.statement.line')
self.partner_agrolait_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "base", "res_partner_2")[1]
self.currency_swiss_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "base", "CHF")[1]
self.currency_usd_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "base", "USD")[1]
self.account_rcv_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "account", "a_recv")[1]
self.account_rsa_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "account", "rsa")[1]
self.product_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "product", "product_product_4")[1]
self.bank_journal_usd_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "account", "bank_journal_usd")[1]
self.account_usd_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "account", "usd_bnk")[1]
self.company_id = self.registry("ir.model.data").get_object_reference(self.cr, self.uid, "base", "main_company")[1]
#set expense_currency_exchange_account_id and income_currency_exchange_account_id to a random account
self.registry("res.company").write(self.cr, self.uid, [self.company_id], {'expense_currency_exchange_account_id': self.account_rsa_id, 'income_currency_exchange_account_id':self.account_rsa_id})
def test_balanced_customer_invoice(self):
cr, uid = self.cr, self.uid
#we create an invoice in CHF
invoice_id = self.account_invoice_model.create(cr, uid, {'partner_id': self.partner_agrolait_id,
'reference_type': 'none',
'currency_id': self.currency_swiss_id,
'name': 'invoice to client',
'account_id': self.account_rcv_id,
'type': 'out_invoice'
})
self.account_invoice_line_model.create(cr, uid, {'product_id': self.product_id,
'quantity': 1,
'price_unit': 100,
'invoice_id': invoice_id,
'name': 'product that cost 100',})
#validate purchase
self.registry('account.invoice').signal_workflow(cr, uid, [invoice_id], 'invoice_open')
invoice_record = self.account_invoice_model.browse(cr, uid, [invoice_id])
#we pay half of it on a journal with currency in dollar (bank statement)
bank_stmt_id = self.acc_bank_stmt_model.create(cr, uid, {'journal_id': self.bank_journal_usd_id,})
bank_stmt_line_id = self.acc_bank_stmt_line_model.create(cr, uid, {'name': 'half payment',
'statement_id': bank_stmt_id,
'partner_id': self.partner_agrolait_id,
'amount': 42,
'amount_currency': 50,
'currency_id': self.currency_swiss_id,})
#reconcile the payment with the invoice
for l in invoice_record.move_id.line_id:
if l.account_id.id == self.account_rcv_id:
line_id = l
break
self.acc_bank_stmt_line_model.process_reconciliation(cr, uid, bank_stmt_line_id, [
{'counterpart_move_line_id': line_id.id, 'credit':50, 'debit':0, 'name': line_id.name,}])
#we check that the line is balanced (bank statement line)
move_line_ids = self.acc_bank_stmt_model.browse(cr,uid,bank_stmt_id).move_line_ids
self.assertEquals(len(move_line_ids), 3)
checked_line = 0
for move_line in move_line_ids:
if move_line.account_id.id == self.account_usd_id:
self.assertEquals(move_line.debit, 27.47)
self.assertEquals(move_line.credit, 0.0)
self.assertEquals(move_line.amount_currency, 42)
self.assertEquals(move_line.currency_id.id, self.currency_usd_id)
checked_line += 1
continue
if move_line.account_id.id == self.account_rcv_id:
self.assertEquals(move_line.debit, 0.0)
self.assertEquals(move_line.credit, 38.21)
self.assertEquals(move_line.amount_currency, -50)
self.assertEquals(move_line.currency_id.id, self.currency_swiss_id)
checked_line += 1
continue
if move_line.account_id.id == self.account_rsa_id:
self.assertEquals(move_line.debit, 10.74)
self.assertEquals(move_line.credit, 0.0)
checked_line += 1
continue
self.assertEquals(checked_line, 3)
def test_balanced_supplier_invoice(self):
cr, uid = self.cr, self.uid
#we create a supplier invoice in CHF
invoice_id = self.account_invoice_model.create(cr, uid, {'partner_id': self.partner_agrolait_id,
'reference_type': 'none',
'currency_id': self.currency_swiss_id,
'name': 'invoice to client',
'account_id': self.account_rcv_id,
'type': 'in_invoice'
})
self.account_invoice_line_model.create(cr, uid, {'product_id': self.product_id,
'quantity': 1,
'price_unit': 100,
'invoice_id': invoice_id,
'name': 'product that cost 100',})
#validate purchase
self.registry('account.invoice').signal_workflow(cr, uid, [invoice_id], 'invoice_open')
invoice_record = self.account_invoice_model.browse(cr, uid, [invoice_id])
#we pay half of it on a journal with currency in dollar (bank statement)
bank_stmt_id = self.acc_bank_stmt_model.create(cr, uid, {'journal_id': self.bank_journal_usd_id,})
bank_stmt_line_id = self.acc_bank_stmt_line_model.create(cr, uid, {'name': 'half payment',
'statement_id': bank_stmt_id,
'partner_id': self.partner_agrolait_id,
'amount': -42,
'amount_currency': -50,
'currency_id': self.currency_swiss_id,})
#reconcile the payment with the invoice
for l in invoice_record.move_id.line_id:
if l.account_id.id == self.account_rcv_id:
line_id = l
break
self.acc_bank_stmt_line_model.process_reconciliation(cr, uid, bank_stmt_line_id, [
{'counterpart_move_line_id': line_id.id, 'credit':0, 'debit':50, 'name': line_id.name,}])
#we check that the line is balanced (bank statement line)
move_line_ids = self.acc_bank_stmt_model.browse(cr,uid,bank_stmt_id).move_line_ids
self.assertEquals(len(move_line_ids), 3)
checked_line = 0
for move_line in move_line_ids:
if move_line.account_id.id == self.account_usd_id:
self.assertEquals(move_line.debit, 0.0)
self.assertEquals(move_line.credit, 27.47)
self.assertEquals(move_line.amount_currency, -42)
self.assertEquals(move_line.currency_id.id, self.currency_usd_id)
checked_line += 1
continue
if move_line.account_id.id == self.account_rcv_id:
self.assertEquals(move_line.debit, 38.21)
self.assertEquals(move_line.credit, 0.0)
self.assertEquals(move_line.amount_currency, 50)
self.assertEquals(move_line.currency_id.id, self.currency_swiss_id)
checked_line += 1
continue
if move_line.account_id.id == self.account_rsa_id:
self.assertEquals(move_line.debit, 0.0)
self.assertEquals(move_line.credit, 10.74)
checked_line += 1
continue
self.assertEquals(checked_line, 3)
+1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="/account/static/src/css/account_bank_statement_reconciliation.css"/>
<script type="text/javascript" src="/account/static/src/js/account_widgets.js"></script>
<script type="text/javascript" src="/account/static/src/js/account_move_line_quickadd.js"></script>
<script type="text/javascript" src="/account/static/src/js/account_tour_bank_statement_reconciliation.js"></script>
</xpath>
</template>
</data>
@@ -133,7 +133,7 @@ class account_fiscalyear_close(osv.osv_memory):
FROM account_account a
LEFT JOIN account_account_type t ON (a.user_type = t.id)
WHERE a.active
AND a.type != 'view'
AND a.type not in ('view', 'consolidation')
AND a.company_id = %s
AND t.close_method = %s''', (company_id, 'unreconciled', ))
account_ids = map(lambda x: x[0], cr.fetchall())
@@ -184,7 +184,7 @@ class account_fiscalyear_close(osv.osv_memory):
FROM account_account a
LEFT JOIN account_account_type t ON (a.user_type = t.id)
WHERE a.active
AND a.type != 'view'
AND a.type not in ('view', 'consolidation')
AND a.company_id = %s
AND t.close_method = %s''', (company_id, 'detail', ))
account_ids = map(lambda x: x[0], cr.fetchall())
@@ -213,7 +213,7 @@ class account_fiscalyear_close(osv.osv_memory):
FROM account_account a
LEFT JOIN account_account_type t ON (a.user_type = t.id)
WHERE a.active
AND a.type != 'view'
AND a.type not in ('view', 'consolidation')
AND a.company_id = %s
AND t.close_method = %s''', (company_id, 'balance', ))
account_ids = map(lambda x: x[0], cr.fetchall())
+16 -11
View File
@@ -49,16 +49,19 @@ class CashBoxIn(CashBox):
_columns = CashBox._columns.copy()
_columns.update({
'ref' : fields.char('Reference'),
'ref': fields.char('Reference'),
})
def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):
if not record.journal_id.internal_account_id.id:
raise osv.except_osv(_('Configuration Error'), _("You should have defined an 'Internal Transfer Account' in your cash register's journal!"))
return {
'statement_id' : record.id,
'journal_id' : record.journal_id.id,
'amount' : box.amount or 0.0,
'ref' : '%s' % (box.ref or ''),
'name' : box.name,
'statement_id': record.id,
'journal_id': record.journal_id.id,
'amount': box.amount or 0.0,
'account_id': record.journal_id.internal_account_id.id,
'ref': '%s' % (box.ref or ''),
'name': box.name,
}
@@ -68,11 +71,13 @@ class CashBoxOut(CashBox):
_columns = CashBox._columns.copy()
def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):
if not record.journal_id.internal_account_id.id:
raise osv.except_osv(_('Configuration Error'), _("You should have defined an 'Internal Transfer Account' in your cash register's journal!"))
amount = box.amount or 0.0
return {
'statement_id' : record.id,
'journal_id' : record.journal_id.id,
'amount' : -amount if amount > 0.0 else amount,
'name' : box.name,
'statement_id': record.id,
'journal_id': record.journal_id.id,
'amount': -amount if amount > 0.0 else amount,
'account_id': record.journal_id.internal_account_id.id,
'name': box.name,
}
+1 -1
View File
@@ -32,7 +32,7 @@ It gives the Administrator user access to all accounting features such as journa
It assigns manager and user access rights to the Administrator and only user rights to the Demo user.
""",
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'depends' : ['account_voucher'],
'data': [
'security/account_security.xml',
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-12-21 17:04+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -30,8 +30,8 @@ This module is for modifying account analytic view to show important data to pro
Adds menu to show relevant information to each manager.You can also view the report of account analytic summary user-wise as well as month-wise.
""",
'author': 'Camptocamp',
'website': 'http://www.camptocamp.com/',
'author': 'Camptocamp / Odoo',
'website': 'https://www.odoo.com/page/billing',
'images': ['images/bill_tasks_works.jpeg','images/overpassed_accounts.jpeg'],
'depends': ['hr_timesheet_invoice', 'sale'], #although sale is technically not required to install this module, all menuitems are located under 'Sales' application
'data': [
@@ -403,7 +403,7 @@ class account_analytic_account(osv.osv):
result = dict.fromkeys(ids, 0)
for record in self.browse(cr, uid, ids, context=context):
if record.quantity_max > 0.0:
result[record.id] = int(record.hours_quantity >= record.quantity_max)
result[record.id] = int(record.hours_quantity > record.quantity_max)
else:
result[record.id] = 0
return result
File diff suppressed because it is too large Load Diff
@@ -36,7 +36,7 @@ Allows to automatically select analytic accounts based on criterions:
* Date
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/analytic_defaults.jpeg'],
'depends': ['sale_stock'],
'data': [
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_analytic_default
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,127 +16,83 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_product
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_user
msgid "Analytic Rules"
#: field:product.product,rules_count:0
#: field:product.template,rules_count:0
msgid "# Analytic Rules"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Group By..."
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
msgid "Accounts"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
msgid "Default end date for this Analytic Account."
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,product_id:0
msgid "Select a product which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this product, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Conditions"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,product_id:0
msgid "Product"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,partner_id:0
msgid "Select a partner which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this partner, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,company_id:0
msgid "Company"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,user_id:0
msgid "User"
msgstr ""
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
msgid "Entries"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,date_stop:0
msgid "End Date"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_list
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_default_list
msgid "Analytic Defaults"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,user_id:0
msgid "Select a user which will use analytic account specified in analytic default."
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,company_id:0
msgid "Select a company which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this company, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
#: field:account.analytic.default,analytic_id:0
msgid "Analytic Account"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_tree
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_list
#: model:ir.actions.act_window,name:account_analytic_default.action_product_default_list
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_default_list
msgid "Analytic Defaults"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_analytic_default
msgid "Analytic Distribution"
msgstr ""
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_user
#: view:product.product:account_analytic_default.product_form_view_default_analytic_button
#: view:product.template:account_analytic_default.product_template_view_default_analytic_button
msgid "Analytic Rules"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
#: field:account.analytic.default,company_id:0
msgid "Company"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form
msgid "Conditions"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,create_date:0
msgid "Created on"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
msgid "Default end date for this Analytic Account."
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,date_start:0
msgid "Default start date for this Analytic Account."
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Accounts"
#: field:account.analytic.default,date_stop:0
msgid "End Date"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
#: field:account.analytic.default,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,date_start:0
msgid "Start Date"
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
msgid "Entries"
msgstr ""
#. module: account_analytic_default
@@ -144,8 +100,92 @@ msgstr ""
msgid "Gives the sequence order when displaying a list of analytic distribution"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
msgid "Group By"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,id:0
msgid "ID"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
#: field:account.analytic.default,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
#: field:account.analytic.default,product_id:0
#: model:ir.model,name:account_analytic_default.model_product_product
msgid "Product"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_product_template
msgid "Product Template"
msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,company_id:0
msgid "Select a company which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this company, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,partner_id:0
msgid "Select a partner which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this partner, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,product_id:0
msgid "Select a product which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this product, it will automatically take this as an analytic account)"
msgstr ""
#. module: account_analytic_default
#: help:account.analytic.default,user_id:0
msgid "Select a user which will use analytic account specified in analytic default."
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_analytic_default
#: field:account.analytic.default,date_start:0
msgid "Start Date"
msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:account_analytic_default.view_account_analytic_default_form_search
#: field:account.analytic.default,user_id:0
msgid "User"
msgstr ""
+1 -1
View File
@@ -63,7 +63,7 @@ So when this line of invoice will be confirmed, it will generate 3 analytic line
The analytic plan validates the minimum and maximum percentage at the time of creation of distribution models.
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/analytic_plan.jpeg'],
'depends': ['account', 'account_analytic_default'],
'data': [
@@ -210,7 +210,7 @@ class account_analytic_plan_instance(osv.osv):
ana_plan_instance_obj = self.pool.get('account.analytic.plan.instance')
acct_anal_acct = self.pool.get('account.analytic.account')
acct_anal_plan_line_obj = self.pool.get('account.analytic.plan.line')
if context and 'journal_id' in context:
if context and context.get('journal_id'):
journal = journal_obj.browse(cr, uid, context['journal_id'], context=context)
pids = ana_plan_instance_obj.search(cr, uid, [('name','=',vals['name']), ('code','=',vals['code']), ('plan_id','<>',False)], context=context)
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_analytic_plans
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,16 +16,39 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account4_ids:0
msgid "Account4 Id"
#: code:addons/account_analytic_plans/account_analytic_plans.py:218
#, python-format
msgid "A model with this name and code already exists."
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
#: view:account.crossovered.analytic:0
#: model:ir.actions.act_window,name:account_analytic_plans.action_account_crossovered_analytic
#: model:ir.actions.report.xml,name:account_analytic_plans.account_analytic_account_crossovered_analytic
msgid "Crossovered Analytic"
#: field:account.analytic.plan.instance,account_ids:0
msgid "Account Id"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Account Name"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account1_ids:0
msgid "Account1 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account2_ids:0
msgid "Account2 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account3_ids:0
msgid "Account3 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account4_ids:0
msgid "Account4 Id"
msgstr ""
#. module: account_analytic_plans
@@ -34,23 +57,77 @@ msgid "Account5 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date2:0
msgid "End Date"
#: field:account.analytic.plan.instance,account6_ids:0
msgid "Account6 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,rate:0
msgid "Rate (%)"
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Amount"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#: field:account.analytic.plan.instance.line,analytic_account_id:0
msgid "Analytic Account"
msgstr ""
#. module: account_analytic_plans
#: field:account.crossovered.analytic,ref:0
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Analytic Account Reference"
msgstr ""
#. module: account_analytic_plans
#. openerp-web
#: field:account.analytic.default,analytics_id:0
#: view:account.analytic.plan.instance:account_analytic_plans.account_analytic_plan_instance_form
#: view:account.analytic.plan.instance:account_analytic_plans.account_analytic_plan_instance_tree
#: field:account.analytic.plan.instance,name:0
#: field:account.bank.statement.line,analytics_id:0
#: field:account.invoice.line,analytics_id:0
#: field:account.move.line,analytics_id:0
#: code:addons/account_analytic_plans/static/src/js/account_bank_reconciliation.js:16
#: code:addons/account_analytic_plans/static/src/js/account_bank_reconciliation.js:23
#: model:ir.model,name:account_analytic_plans.model_account_analytic_default
#, python-format
msgid "The total should be between %s and %s."
msgid "Analytic Distribution"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan:0
#: view:account.analytic.plan.instance.line:account_analytic_plans.account_analytic_plan_instance_line_form
msgid "Analytic Distribution Line"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:account_analytic_plans.account_analytic_plan_instance_line_tree
msgid "Analytic Distribution Lines"
msgstr ""
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_instance_action
msgid "Analytic Distribution's Models"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
msgid "Analytic Instance Line"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,journal_id:0
#: view:account.crossovered.analytic:account_analytic_plans.view_account_crossovered_analytic
#: field:account.crossovered.analytic,journal_ids:0
msgid "Analytic Journal"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan:account_analytic_plans.account_analytic_plan_form
#: view:account.analytic.plan:account_analytic_plans.account_analytic_plan_search
#: field:account.analytic.plan,name:0
#: field:account.analytic.plan.line,plan_id:0
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_form_action
@@ -60,127 +137,86 @@ msgid "Analytic Plan"
msgstr ""
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid "This distribution model has been saved.You will be able to reuse it later."
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance
msgid "Analytic Plan Instance"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
msgid "Analytic Instance Line"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
msgid "Analytic Distribution Lines"
msgstr ""
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
msgid "Print"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "To Date"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,plan_id:0
msgid "Plan Id"
msgstr ""
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_instance_action
msgid "Analytic Distribution's Models"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Account Name"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
msgid "Analytic Distribution Line"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,code:0
msgid "Distribution Code"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
#: field:account.analytic.line,percentage:0
msgid "Percentage"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Printing date"
msgstr ""
#. module: account_analytic_plans
#: field:account.crossovered.analytic,empty_line:0
msgid "Dont show empty lines"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account3_ids:0
msgid "Account3 Id"
msgstr ""
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "or"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "100.00%"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Currency"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Analytic Account :"
msgstr ""
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid "Save This Distribution as a Model"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan.line:0
#: view:account.analytic.plan.line:account_analytic_plans.account_analytic_plan_line_form
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_line
msgid "Analytic Plan Line"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Analytic Account Reference:"
#: view:account.analytic.plan.line:account_analytic_plans.account_analytic_plan_line_tree
msgid "Analytic Plan Lines"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan:account_analytic_plans.account_analytic_plan_search
#: view:account.analytic.plan:account_analytic_plans.account_analytic_plan_tree
#: field:account.analytic.plan,plan_ids:0
#: field:account.journal,plan_id:0
msgid "Analytic Plans"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.line,name:0
msgid "Plan Name"
msgid "Axis Name"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement
msgid "Bank Statement"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_analytic_plans
#: view:account.crossovered.analytic:account_analytic_plans.view_account_crossovered_analytic
#: view:analytic.plan.create.model:account_analytic_plans.view_analytic_plan_create_model_msg
msgid "Cancel"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Code"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Company:"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan,create_uid:0
#: field:account.analytic.plan.instance,create_uid:0
#: field:account.analytic.plan.instance.line,create_uid:0
#: field:account.analytic.plan.line,create_uid:0
#: field:account.crossovered.analytic,create_uid:0
#: field:analytic.plan.create.model,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan,create_date:0
#: field:account.analytic.plan.instance,create_date:0
#: field:account.analytic.plan.instance.line,create_date:0
#: field:account.analytic.plan.line,create_date:0
#: field:account.crossovered.analytic,create_date:0
#: field:analytic.plan.create.model,create_date:0
msgid "Created on"
msgstr ""
#. module: account_analytic_plans
#: view:account.crossovered.analytic:account_analytic_plans.view_account_crossovered_analytic
#: model:ir.actions.act_window,name:account_analytic_plans.action_account_crossovered_analytic
#: model:ir.actions.report.xml,name:account_analytic_plans.action_account_analytic_account_crossovered_analytic
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Crossovered Analytic"
msgstr ""
#. module: account_analytic_plans
@@ -189,67 +225,101 @@ msgid "Default Entries"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan:0
#: field:account.analytic.plan,plan_ids:0
#: field:account.journal,plan_id:0
msgid "Analytic Plans"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Perc(%)"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model
msgid "analytic.plan.create.model"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account1_ids:0
msgid "Account1 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.line,max_required:0
msgid "Maximum Allowed (%)"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.line,root_analytic_id:0
msgid "Root Account"
#: field:account.analytic.plan.instance,code:0
msgid "Distribution Code"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:47
#: view:analytic.plan.create.model:0
#: view:analytic.plan.create.model:account_analytic_plans.view_analytic_plan_create_model
#: view:analytic.plan.create.model:account_analytic_plans.view_analytic_plan_create_model_msg
#, python-format
msgid "Distribution Model Saved"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance
msgid "Analytic Plan Instance"
msgstr ""
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_instance_model_open
msgid "Distribution Models"
msgstr ""
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
msgid "Ok"
#: field:account.crossovered.analytic,empty_line:0
msgid "Dont show empty lines"
msgstr ""
#. module: account_analytic_plans
#: view:account.analytic.plan.line:0
msgid "Analytic Plan Lines"
#: field:account.crossovered.analytic,date2:0
msgid "End Date"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:218
#: code:addons/account_analytic_plans/account_analytic_plans.py:231
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "Error!"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "From Date:"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan,id:0
#: field:account.analytic.plan.instance,id:0
#: field:account.analytic.plan.instance.line,id:0
#: field:account.analytic.plan.line,id:0
#: field:account.crossovered.analytic,id:0
#: field:analytic.plan.create.model,id:0
#: field:report.account_analytic_plans.report_crossoveredanalyticplans,id:0
msgid "ID"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan,write_uid:0
#: field:account.analytic.plan.instance,write_uid:0
#: field:account.analytic.plan.instance.line,write_uid:0
#: field:account.analytic.plan.line,write_uid:0
#: field:account.crossovered.analytic,write_uid:0
#: field:analytic.plan.create.model,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan,write_date:0
#: field:account.analytic.plan.instance,write_date:0
#: field:account.analytic.plan.instance.line,write_date:0
#: field:account.analytic.plan.line,write_date:0
#: field:account.crossovered.analytic,write_date:0
#: field:analytic.plan.create.model,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.line,max_required:0
msgid "Maximum Allowed (%)"
msgstr ""
#. module: account_analytic_plans
@@ -263,50 +333,30 @@ msgid "Model's Plan"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account2_ids:0
msgid "Account2 Id"
#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_multi_plan_action
msgid "Multi Plans"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#: code:addons/account_analytic_plans/account_analytic_plans.py:335
#: code:addons/account_analytic_plans/account_analytic_plans.py:469
#, python-format
msgid "Error!"
msgid "No Analytic Journal!"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Amount"
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Perc(%)"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_crossovered_analytic
msgid "Print Crossovered Analytic"
#: field:account.analytic.line,percentage:0
msgid "Percentage"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "User Error!"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account6_ids:0
msgid "Account6 Id"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,journal_id:0
#: view:account.crossovered.analytic:0
#: field:account.crossovered.analytic,journal_ids:0
msgid "Analytic Journal"
#: field:account.analytic.plan.instance.line,plan_id:0
msgid "Plan Id"
msgstr ""
#. module: account_analytic_plans
@@ -316,47 +366,48 @@ msgid "Please put a name and a code before saving the model."
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
#: view:account.crossovered.analytic:account_analytic_plans.view_account_crossovered_analytic
msgid "Print"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_crossovered_analytic
msgid "Print Crossovered Analytic"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Printing Date:"
msgstr ""
#. module: account_analytic_plans
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "Quantity"
msgstr ""
#. module: account_analytic_plans
#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_multi_plan_action
msgid "Multi Plans"
#: field:account.analytic.plan.instance.line,rate:0
msgid "Rate (%)"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,account_ids:0
msgid "Account Id"
#: field:account.analytic.plan.line,root_analytic_id:0
msgid "Root Account"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Code"
#: help:account.analytic.plan.line,root_analytic_id:0
msgid "Root account of this plan."
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_journal
msgid "Journal"
#: model:ir.model,name:account_analytic_plans.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:342
#: code:addons/account_analytic_plans/account_analytic_plans.py:486
#, python-format
msgid "You have to define an analytic journal on the '%s' journal."
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:342
#: code:addons/account_analytic_plans/account_analytic_plans.py:486
#, python-format
msgid "No Analytic Journal !"
msgstr ""
#. module: account_analytic_plans
#: model:ir.actions.act_window,name:account_analytic_plans.action_analytic_plan_create_model
msgid "analytic.plan.create.model.action"
#: view:analytic.plan.create.model:account_analytic_plans.view_analytic_plan_create_model_msg
msgid "Save This Distribution as a Model"
msgstr ""
#. module: account_analytic_plans
@@ -365,8 +416,20 @@ msgid "Sequence"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice_line
msgid "Invoice Line"
#: field:account.crossovered.analytic,date1:0
msgid "Start Date"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:231
#, python-format
msgid "The total should be between %s and %s."
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:62
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr ""
#. module: account_analytic_plans
@@ -376,75 +439,30 @@ msgid "There is no analytic plan defined."
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_bank_statement
msgid "Bank Statement"
#: view:analytic.plan.create.model:account_analytic_plans.view_analytic_plan_create_model
msgid "This distribution model has been saved.You will be able to reuse it later."
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
msgid "Analytic Account"
#: view:website:account_analytic_plans.report_crossoveredanalyticplans
msgid "To Date:"
msgstr ""
#. module: account_analytic_plans
#: field:account.analytic.default,analytics_id:0
#: view:account.analytic.plan.instance:0
#: field:account.analytic.plan.instance,name:0
#: field:account.bank.statement.line,analytics_id:0
#: field:account.invoice.line,analytics_id:0
#: field:account.move.line,analytics_id:0
#: model:ir.model,name:account_analytic_plans.model_account_analytic_default
msgid "Analytic Distribution"
msgstr ""
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:62
#, python-format
msgid "A model with this name and code already exists."
msgid "User Error!"
msgstr ""
#. module: account_analytic_plans
#: help:account.analytic.plan.line,root_analytic_id:0
msgid "Root account of this plan."
#: code:addons/account_analytic_plans/account_analytic_plans.py:335
#: code:addons/account_analytic_plans/account_analytic_plans.py:469
#, python-format
msgid "You have to define an analytic journal on the '%s' journal."
msgstr ""
#. module: account_analytic_plans
#: field:account.crossovered.analytic,ref:0
msgid "Analytic Account Reference"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_analytic_plans
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "Cancel"
msgstr ""
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date1:0
msgid "Start Date"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "at"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "Company"
msgstr ""
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
msgid "From Date"
#: model:ir.actions.act_window,name:account_analytic_plans.action_analytic_plan_create_model
msgid "analytic.plan.create.model.action"
msgstr ""
+1 -1
View File
@@ -22,7 +22,7 @@
'name': 'Anglo-Saxon Accounting',
'version': '1.2',
'author': 'OpenERP SA, Veritos',
'website': 'http://openerp.com - http://veritos.nl',
'website': 'https://www.odoo.com',
'description': """
This module supports the Anglo-Saxon accounting methodology by changing the accounting logic with stock transactions.
=====================================================================================================================
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_anglo_saxon
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,8 +16,13 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_category
msgid "Product Category"
#: help:account.invoice.line,move_id:0
msgid "If the invoice was generated from a stock.picking, reference to the related move line."
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_anglo_saxon
@@ -26,13 +31,13 @@ msgid "Invoice Line"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_purchase_order
msgid "Purchase Order"
#: field:account.invoice.line,move_id:0
msgid "Move line"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_template
msgid "Product Template"
#: model:ir.model,name:account_anglo_saxon.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: account_anglo_saxon
@@ -42,13 +47,18 @@ msgid "Price Difference Account"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice
msgid "Invoice"
#: model:ir.model,name:account_anglo_saxon.model_product_category
msgid "Product Category"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_stock_picking
msgid "Picking List"
#: model:ir.model,name:account_anglo_saxon.model_product_template
msgid "Product Template"
msgstr ""
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: account_anglo_saxon
+11 -7
View File
@@ -22,6 +22,7 @@
##############################################################################
from openerp.osv import osv, fields
from openerp.tools.float_utils import float_round as round
class account_invoice_line(osv.osv):
_inherit = "account.invoice.line"
@@ -36,11 +37,12 @@ class account_invoice_line(osv.osv):
company_currency = inv.company_id.currency_id.id
def get_price(cr, uid, inv, company_currency, i_line, price_unit):
cur_obj = self.pool.get('res.currency')
decimal_precision = self.pool.get('decimal.precision')
if inv.currency_id.id != company_currency:
price = cur_obj.compute(cr, uid, company_currency, inv.currency_id.id, price_unit * i_line.quantity, context={'date': inv.date_invoice})
else:
price = price_unit * i_line.quantity
return price
return round(price, decimal_precision.precision_get(cr, uid, 'Account'))
if inv.type in ('out_invoice','out_refund'):
for i_line in inv.invoice_line:
@@ -118,28 +120,30 @@ class account_invoice_line(osv.osv):
fpos = i_line.invoice_id.fiscal_position or False
a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, oa)
diff_res = []
decimal_precision = self.pool.get('decimal.precision')
account_prec = decimal_precision.precision_get(cr, uid, 'Account')
# calculate and write down the possible price difference between invoice price and product price
for line in res:
if a == line['account_id'] and i_line.product_id.id == line['product_id']:
if line.get('invl_id', 0) == i_line.id and a == line['account_id']:
uom = i_line.product_id.uos_id or i_line.product_id.uom_id
valuation_price_unit = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
if inv.currency_id.id != company_currency:
standard_price = self.pool.get('res.currency').compute(cr, uid, company_currency, inv.currency_id.id, standard_price, context={'date': inv.date_invoice})
if i_line.product_id.cost_method != 'standard' and i_line.purchase_line_id:
#for average/fifo/lifo costing method, fetch real cost price from incomming moves
stock_move_obj = self.pool.get('stock.move')
valuation_stock_move = stock_move_obj.search(cr, uid, [('purchase_line_id', '=', i_line.purchase_line_id.id)], limit=1, context=context)
if valuation_stock_move:
valuation_price_unit = stock_move_obj.browse(cr, uid, valuation_stock_move[0], context=context).price_unit
if inv.currency_id.id != company_currency:
valuation_price_unit = self.pool.get('res.currency').compute(cr, uid, company_currency, inv.currency_id.id, valuation_price_unit, context={'date': inv.date_invoice})
if valuation_price_unit != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
price_diff = i_line.price_unit - valuation_price_unit
line.update({'price': valuation_price_unit * line['quantity']})
price_diff = round(i_line.price_unit - valuation_price_unit, account_prec)
line.update({'price': round(valuation_price_unit * line['quantity'], account_prec)})
diff_res.append({
'type': 'src',
'name': i_line.name[:64],
'price_unit': price_diff,
'quantity': line['quantity'],
'price': price_diff * line['quantity'],
'price': round(price_diff * line['quantity'], account_prec),
'account_id': acc,
'product_id': line['product_id'],
'uos_id': line['uos_id'],
+1 -1
View File
@@ -33,7 +33,7 @@ track of depreciation's occurred on those assets. And it allows to create Move's
of the depreciation lines.
""",
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'category': 'Accounting & Finance',
'sequence': 32,
'demo': [ 'account_asset_demo.xml'],
File diff suppressed because it is too large Load Diff
@@ -7,15 +7,15 @@
<field name="model">asset.asset.report</field>
<field name="arch" type="xml">
<graph string="Assets Analysis" type="pivot">
<field name="asset_id" type="row"/>
<field name="nbr" type="measure"/>
<field name="asset_category_id" type="row"/>
<field name="purchase_date" type="col"/>
<field name="posted_value" type="measure"/>
<field name="gross_value" type="measure"/>
<field name="depreciation_value" type="measure"/>
<field name="posted_value" type="measure"/>
</graph>
</field>
</record>
<record id="view_asset_asset_report_search" model="ir.ui.view">
<field name="name">asset.asset.report.search</field>
<field name="model">asset.asset.report</field>
@@ -23,10 +23,10 @@
<search string="Assets Analysis">
<field name="purchase_date"/>
<field name="depreciation_date"/>
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help="Assets in draft state"/>
<filter string="Running" icon="terp-check" domain="[('state','=','open')]" help="Assets in running state"/>
<filter string="Draft" domain="[('state','=','draft')]" help="Assets in draft state"/>
<filter string="Running" domain="[('state','=','open')]" help="Assets in running state"/>
<separator/>
<filter string="Posted" name="posted" icon="terp-camera_test" domain="[('move_check','=',True)]" help="Posted depreciation lines" context="{'unposted_value_visible': 0}"/>
<filter string="Posted" name="posted" domain="[('move_check','=',True)]" help="Posted depreciation lines" context="{'unposted_value_visible': 0}"/>
<field name="asset_id"/>
<field name="asset_category_id"/>
<group expand="0" string="Extended Filters...">
@@ -35,24 +35,25 @@
</group>
<group expand="1" string="Group By">
<filter string="Asset" name="asset" context="{'group_by':'asset_id'}"/>
<filter string="Asset Category" name="asset_category" icon="terp-stock_symbol-selection" context="{'group_by':'asset_category_id'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Purchase Month" icon="terp-go-month"
domain="[]" context="{'group_by':'purchase_date'}" help="Date of asset purchase"/>
<filter string="Depreciation Month" icon="terp-go-today"
domain="[]" context="{'group_by':'depreciation_date'}" help="Date of depreciation"/>
<filter string="Asset Category" name="asset_category" context="{'group_by':'asset_category_id'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator/>
<filter string="Purchase Month" help="Date of asset purchase"
context="{'group_by':'purchase_date:month'}"/>
<filter string="Depreciation Month" help="Date of depreciation"
context="{'group_by':'depreciation_date:month'}"/>
</group>
</search>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_asset_asset_report">
<record model="ir.actions.act_window" id="action_asset_asset_report">
<field name="name">Assets Analysis</field>
<field name="res_model">asset.asset.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="search_view_id" ref="view_asset_asset_report_search"/>
<field name="context">{'search_default_year':1,'search_default_this_month':1,'search_default_asset_category':1, 'search_default_posted':1, 'group_by':[], 'group_by_no_leaf':1}</field>
<field name="context">{'group_by':[], 'group_by_no_leaf':1}</field>
<field name="help" type="html">
<p>
From this report, you can have an overview on all depreciation. The
@@ -61,7 +62,7 @@
</p>
</field>
</record>
<menuitem action="action_asset_asset_report"
id="menu_action_asset_asset_report"
parent="account.menu_finance_reporting"/>
@@ -58,7 +58,7 @@ class account_bank_statement(osv.osv):
line_ids = [l.id for l in st.line_ids]
cr.execute("UPDATE account_bank_statement_line \
SET state='draft' WHERE id in %s ",
(tuple([line_ids]),))
(tuple(line_ids),))
bank_statement_line_obj.invalidate_cache(cr, uid, ['state'], line_ids, context=context)
return True
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_extensions
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -15,283 +15,21 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line.global,name:0
msgid "Originator to Beneficiary Information"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Confirmed"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement:0
#: view:account.bank.statement.line:0
msgid "Glob. Id"
msgstr ""
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "CODA"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,parent_id:0
msgid "Parent Code"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit"
msgstr ""
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line
msgid "Cancel selected statement lines"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Value Date"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Group By..."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Draft"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
msgid "Confirm selected statement lines"
msgstr ""
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
msgid "Bank Statement Balances Report"
msgstr ""
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Cancel Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global
msgid "Batch Payment Info"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr ""
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Delete operation not allowed. Please go to the associated bank statement in order to delete and/or modify bank statement line."
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "or"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirm Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Transactions"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,type:0
msgid "Type"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: report:bank.statement.balance.report:0
msgid "Journal"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Confirmed Statement Lines."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit Transactions."
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
msgid "cancel selected statement lines."
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_number:0
msgid "Counterparty Number"
msgstr ""
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Closing Balance"
msgstr ""
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Date"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: field:account.bank.statement.line,globalisation_amount:0
msgid "Glob. Amount"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit Transactions."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Extended Filters..."
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirmed lines cannot be changed anymore."
msgstr ""
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
msgstr ""
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Name"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,name:0
msgid "OBI"
msgstr ""
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "ISO 20022"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Notes"
msgstr ""
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "Manual"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Bank Transaction"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,amount:0
msgid "Amount"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Fin.Account"
#: view:cancel.statement.line:account_bank_statement_extensions.view_cancel_statement_line
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_currency:0
msgid "Counterparty Currency"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_bic:0
msgid "Counterparty BIC"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,child_ids:0
msgid "Child Codes"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Search Bank Transactions"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: view:confirm.statement.line:account_bank_statement_extensions.view_confirm_statement_line
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
msgstr ""
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line,globalisation_id:0
msgid "Code to identify transactions belonging to the same globalisation level within a batch payment"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Draft Statement Lines."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Glob. Am."
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,code:0
msgid "Code"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
msgid "Counterparty Name"
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
msgid "Bank Accounts"
@@ -303,13 +41,18 @@ msgid "Bank Statement"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Line"
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.action_bank_statement_balance_report
msgid "Bank Statement Balances"
msgstr ""
#. module: account_bank_statement_extensions
#: sql_constraint:account.bank.statement.line.global:0
msgid "The code must be unique !"
#: view:website:account_bank_statement_extensions.report_bankstatementbalance
msgid "Bank Statement Balances Report"
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_bank_statement_extensions
@@ -320,29 +63,188 @@ msgid "Bank Statement Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Warning!"
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Bank Transaction"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Child Batch Payments"
#: view:account.bank.statement.line.global:account_bank_statement_extensions.view_statement_line_global_form
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global
msgid "Batch Payment Info"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: selection:account.bank.statement.line.global,type:0
msgid "CODA"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:account_bank_statement_extensions.view_confirm_statement_line
msgid "Cancel"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Lines"
#: view:cancel.statement.line:account_bank_statement_extensions.view_cancel_statement_line
msgid "Cancel Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Total Amount"
#: view:cancel.statement.line:account_bank_statement_extensions.view_cancel_statement_line
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line
msgid "Cancel selected statement lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:account_bank_statement_extensions.view_statement_line_global_form
msgid "Child Batch Payments"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,child_ids:0
msgid "Child Codes"
msgstr ""
#. module: account_bank_statement_extensions
#: view:website:account_bank_statement_extensions.report_bankstatementbalance
msgid "Closing Balance"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,code:0
msgid "Code"
msgstr ""
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line,globalisation_id:0
msgid "Code to identify transactions belonging to the same globalisation level within a batch payment"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:account_bank_statement_extensions.view_confirm_statement_line
msgid "Confirm Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:account_bank_statement_extensions.view_confirm_statement_line
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
msgid "Confirm selected statement lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
#: selection:account.bank.statement.line,state:0
msgid "Confirmed"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Confirmed Statement Lines."
msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:account_bank_statement_extensions.view_confirm_statement_line
msgid "Confirmed lines cannot be changed anymore."
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_bic:0
msgid "Counterparty BIC"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_currency:0
msgid "Counterparty Currency"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
msgid "Counterparty Name"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_number:0
msgid "Counterparty Number"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,create_uid:0
#: field:cancel.statement.line,create_uid:0
#: field:confirm.statement.line,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,create_date:0
#: field:cancel.statement.line,create_date:0
#: field:confirm.statement.line,create_date:0
msgid "Created on"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Credit"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Credit Transactions."
msgstr ""
#. module: account_bank_statement_extensions
#: view:website:account_bank_statement_extensions.report_bankstatementbalance
msgid "Date"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Debit"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Debit Transactions."
msgstr ""
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:133
#, python-format
msgid "Delete operation not allowed. Please go to the associated bank statement in order to delete and/or modify bank statement line."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
#: selection:account.bank.statement.line,state:0
msgid "Draft"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Draft Statement Lines."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Extended Filters..."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_list
msgid "Glob. Am."
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
#: field:account.bank.statement.line,globalisation_amount:0
msgid "Glob. Amount"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement:account_bank_statement_extensions.view_bank_statement_form_add_fields
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_list
msgid "Glob. Id"
msgstr ""
#. module: account_bank_statement_extensions
@@ -350,3 +252,132 @@ msgstr ""
msgid "Globalisation ID"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Group By"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,id:0
#: field:cancel.statement.line,id:0
#: field:confirm.statement.line,id:0
#: field:report.account_bank_statement_extensions.report_bankstatementbalance,id:0
msgid "ID"
msgstr ""
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "ISO 20022"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
#: view:website:account_bank_statement_extensions.report_bankstatementbalance
msgid "Journal"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,write_uid:0
#: field:cancel.statement.line,write_uid:0
#: field:confirm.statement.line,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,write_date:0
#: field:cancel.statement.line,write_date:0
#: field:confirm.statement.line,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "Manual"
msgstr ""
#. module: account_bank_statement_extensions
#: view:website:account_bank_statement_extensions.report_bankstatementbalance
msgid "Name"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_form
msgid "Notes"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,name:0
msgid "OBI"
msgstr ""
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line.global,name:0
msgid "Originator to Beneficiary Information"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,parent_id:0
msgid "Parent Code"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Search Bank Transactions"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_filter
msgid "Statement"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_form
msgid "Statement Line"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_list
msgid "Statement Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr ""
#. module: account_bank_statement_extensions
#: sql_constraint:account.bank.statement.line.global:0
msgid "The code must be unique !"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:account_bank_statement_extensions.view_bank_statement_line_list
msgid "Total Amount"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:account_bank_statement_extensions.view_statement_line_global_form
msgid "Transactions"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,type:0
msgid "Type"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Value Date"
msgstr ""
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:133
#, python-format
msgid "Warning!"
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
msgid "cancel selected statement lines."
msgstr ""
+1 -1
View File
@@ -47,7 +47,7 @@ Three reports are available:
the spreading, for the selected Analytic Accounts of Budgets.
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/budget.jpeg','images/budgetary_position.jpeg'],
'depends': ['account'],
'data': [
-4
View File
@@ -118,10 +118,6 @@ class crossovered_budget_lines(osv.osv):
raise osv.except_osv(_('Error!'),_("The Budget '%s' has no accounts!") % ustr(line.general_budget_id.name))
date_to = line.date_to
date_from = line.date_from
if context.has_key('wizard_date_from'):
date_from = context['wizard_date_from']
if context.has_key('wizard_date_to'):
date_to = context['wizard_date_to']
if line.analytic_account_id.id:
cr.execute("SELECT SUM(amount) FROM account_analytic_line WHERE account_id=%s AND (date "
"between to_date(%s,'yyyy-mm-dd') AND to_date(%s,'yyyy-mm-dd')) AND "
+425 -352
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_budget
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -15,338 +15,11 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "Select Dates Period"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,creating_user_id:0
msgid "Responsible User"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Confirmed"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.open_budget_post_form
#: model:ir.ui.menu,name:account_budget.menu_budget_post_form
msgid "Budgetary Positions"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Printed at:"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Confirm"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,validating_user_id:0
msgid "Validate User"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_summary_report
msgid "Print Summary"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,paid_date:0
msgid "Paid Date"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,date_to:0
#: field:account.budget.crossvered.report,date_to:0
#: field:account.budget.crossvered.summary.report,date_to:0
#: field:account.budget.report,date_to:0
msgid "End of period"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
#: selection:crossovered.budget,state:0
msgid "Draft"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "at"
msgstr ""
#. module: account_budget
#: view:account.budget.report:0
#: model:ir.actions.act_window,name:account_budget.action_account_budget_analytic
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_report
msgid "Print Budgets"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Currency:"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_crossvered_report
msgid "Account Budget crossvered report"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Validated"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,percentage:0
msgid "Percentage"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,state:0
msgid "Status"
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "The Budget '%s' has no accounts!"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Description"
msgstr ""
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Currency"
msgstr ""
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Total :"
msgstr ""
#. module: account_budget
#: field:account.budget.post,company_id:0
#: field:crossovered.budget,company_id:0
#: field:crossovered.budget.lines,company_id:0
msgid "Company"
msgstr ""
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "to"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Reset to Draft"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,planned_amount:0
msgid "Planned Amount"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Perc(%)"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
#: selection:crossovered.budget,state:0
msgid "Done"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Practical Amt"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,practical_amount:0
msgid "Practical Amount"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,date_to:0
#: field:crossovered.budget.lines,date_to:0
msgid "End Date"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_analytic
#: model:ir.model,name:account_budget.model_account_budget_report
msgid "Account Budget report for analytic account"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
msgid "Theoritical Amount"
msgstr ""
#. module: account_budget
#: field:account.budget.post,name:0
#: field:crossovered.budget,name:0
msgid "Name"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget_lines
msgid "Budget Line"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,crossovered_budget_id:0
#: report:crossovered.budget.report:0
#: model:ir.actions.report.xml,name:account_budget.account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget
msgid "Budget"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve Budgets"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
#. module: account_budget
#: field:account.budget.post,code:0
#: field:crossovered.budget,code:0
msgid "Code"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
msgid "This wizard is used to print budget"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_view
#: model:ir.actions.act_window,name:account_budget.action_account_budget_report
#: model:ir.actions.report.xml,name:account_budget.report_crossovered_budget
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_view
#: model:ir.ui.menu,name:account_budget.menu_action_account_budget_post_tree
#: model:ir.ui.menu,name:account_budget.next_id_31
#: model:ir.ui.menu,name:account_budget.next_id_pos
msgid "Budgets"
msgstr ""
#. module: account_budget
#: view:account.budget.crossvered.summary.report:0
msgid "This wizard is used to print summary of budgets"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Cancelled"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Approve"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: field:crossovered.budget.lines,general_budget_id:0
#: model:ir.model,name:account_budget.model_account_budget_post
msgid "Budgetary Position"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,date_from:0
#: field:account.budget.crossvered.report,date_from:0
#: field:account.budget.crossvered.summary.report,date_from:0
#: field:account.budget.report,date_from:0
msgid "Start of period"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_crossvered_summary_report
msgid "Account Budget crossvered summary report"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Theoretical Amt"
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "Error!"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "Print"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,theoritical_amount:0
msgid "Theoretical Amount"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
#: model:ir.model,name:account_budget.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Budget :"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,help:account_budget.act_crossovered_budget_view
msgid "<p>\n"
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new budget.\n"
" </p><p>\n"
" A budget is a forecast of your company's income and/or expenses\n"
" expected for a period in the future. A budget is defined on some\n"
" financial accounts and/or analytic accounts (that may represent\n"
@@ -362,25 +35,82 @@ msgid "<p>\n"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Planned Amt"
#: model:ir.model,name:account_budget.model_account_budget_crossvered_summary_report
msgid "Account Budget crossvered summary report"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: model:ir.model,name:account_budget.model_account_budget_crossvered_report
msgid "Account Budget crossvered report"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_analytic
#: model:ir.model,name:account_budget.model_account_budget_report
msgid "Account Budget report for analytic account"
msgstr ""
#. module: account_budget
#: view:account.budget.post:account_budget.view_budget_post_form
#: field:account.budget.post,account_ids:0
msgid "Accounts"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
#: view:website:account_budget.report_analyticaccountbudget
msgid "Analysis from"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Analysis from:"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
#: model:ir.model,name:account_budget.model_account_analytic_account
#: view:website:account_budget.report_analyticaccountbudget
msgid "Analytic Account"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
msgid "Analytic Budget"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
msgid "Approve"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: view:crossovered.budget:account_budget.crossovered_budget_view_tree
#: view:crossovered.budget:account_budget.view_crossovered_budget_search
#: field:crossovered.budget.lines,crossovered_budget_id:0
#: model:ir.actions.report.xml,name:account_budget.action_report_budget
#: model:ir.model,name:account_budget.model_crossovered_budget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Budget"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget_lines
msgid "Budget Line"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:account_budget.view_account_analytic_account_form_inherit_budget
#: field:account.analytic.account,crossovered_budget_line:0
#: view:account.budget.post:0
#: view:account.budget.post:account_budget.view_budget_post_form
#: field:account.budget.post,crossovered_budget_line:0
#: view:crossovered.budget:0
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: field:crossovered.budget,crossovered_budget_line:0
#: view:crossovered.budget.lines:0
#: view:crossovered.budget.lines:account_budget.view_crossovered_budget_line_form
#: view:crossovered.budget.lines:account_budget.view_crossovered_budget_line_search
#: view:crossovered.budget.lines:account_budget.view_crossovered_budget_line_tree
#: model:ir.actions.act_window,name:account_budget.act_account_analytic_account_cb_lines
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_lines_view
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_lines_view
@@ -388,14 +118,292 @@ msgid "Budget Lines"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
#: view:crossovered.budget:0
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Budget:"
msgstr ""
#. module: account_budget
#: view:account.budget.post:account_budget.view_budget_post_form
#: view:account.budget.post:account_budget.view_budget_post_search
#: view:account.budget.post:account_budget.view_budget_post_tree
#: field:crossovered.budget.lines,general_budget_id:0
#: model:ir.model,name:account_budget.model_account_budget_post
msgid "Budgetary Position"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.open_budget_post_form
#: model:ir.ui.menu,name:account_budget.menu_budget_post_form
msgid "Budgetary Positions"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_view
#: model:ir.actions.act_window,name:account_budget.action_account_budget_report
#: model:ir.actions.report.xml,name:account_budget.action_report_analytic_account_budget
#: model:ir.actions.report.xml,name:account_budget.action_report_crossovered_budget
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_view
#: model:ir.ui.menu,name:account_budget.menu_action_account_budget_post_tree
#: model:ir.ui.menu,name:account_budget.next_id_31
#: model:ir.ui.menu,name:account_budget.next_id_pos
msgid "Budgets"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:account_budget.account_budget_analytic_view
#: view:account.budget.crossvered.report:account_budget.account_budget_crossvered_report_view
#: view:account.budget.crossvered.summary.report:account_budget.account_budget_crossvered_summary_report_view
#: view:account.budget.report:account_budget.account_budget_report_view
msgid "Cancel"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
msgid "Cancel Budget"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Cancelled"
msgstr ""
#. module: account_budget
#: field:account.budget.post,code:0
#: field:crossovered.budget,code:0
msgid "Code"
msgstr ""
#. module: account_budget
#: field:account.budget.post,company_id:0
#: field:crossovered.budget,company_id:0
#: field:crossovered.budget.lines,company_id:0
msgid "Company"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
msgid "Confirm"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Confirmed"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,create_uid:0
#: field:account.budget.crossvered.report,create_uid:0
#: field:account.budget.crossvered.summary.report,create_uid:0
#: field:account.budget.post,create_uid:0
#: field:account.budget.report,create_uid:0
#: field:crossovered.budget,create_uid:0
#: field:crossovered.budget.lines,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,create_date:0
#: field:account.budget.crossvered.report,create_date:0
#: field:account.budget.crossvered.summary.report,create_date:0
#: field:account.budget.post,create_date:0
#: field:account.budget.report,create_date:0
#: field:crossovered.budget,create_date:0
#: field:crossovered.budget.lines,create_date:0
msgid "Created on"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
msgid "Currency"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Currency:"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Description"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: selection:crossovered.budget,state:0
msgid "Done"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.view_crossovered_budget_search
#: selection:crossovered.budget,state:0
msgid "Draft"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.view_crossovered_budget_search
msgid "Draft Budgets"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
msgid "Duration"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,date_to:0
#: field:crossovered.budget.lines,date_to:0
msgid "End Date"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,date_to:0
#: field:account.budget.crossvered.report,date_to:0
#: field:account.budget.crossvered.summary.report,date_to:0
#: field:account.budget.report,date_to:0
msgid "End of period"
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:118
#, python-format
msgid "Error!"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,id:0
#: field:account.budget.crossvered.report,id:0
#: field:account.budget.crossvered.summary.report,id:0
#: field:account.budget.post,id:0
#: field:account.budget.report,id:0
#: field:crossovered.budget,id:0
#: field:crossovered.budget.lines,id:0
#: field:report.account_budget.report_analyticaccountbudget,id:0
#: field:report.account_budget.report_budget,id:0
#: field:report.account_budget.report_crossoveredbudget,id:0
msgid "ID"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,write_uid:0
#: field:account.budget.crossvered.report,write_uid:0
#: field:account.budget.crossvered.summary.report,write_uid:0
#: field:account.budget.post,write_uid:0
#: field:account.budget.report,write_uid:0
#: field:crossovered.budget,write_uid:0
#: field:crossovered.budget.lines,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,write_date:0
#: field:account.budget.crossvered.report,write_date:0
#: field:account.budget.crossvered.summary.report,write_date:0
#: field:account.budget.post,write_date:0
#: field:account.budget.report,write_date:0
#: field:crossovered.budget,write_date:0
#: field:crossovered.budget.lines,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_budget
#: field:account.budget.post,name:0
#: field:crossovered.budget,name:0
msgid "Name"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,paid_date:0
msgid "Paid Date"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Perc(%)"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,percentage:0
msgid "Percentage"
msgstr ""
#. module: account_budget
#: view:account.budget.post:account_budget.view_budget_post_form
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: field:crossovered.budget.lines,planned_amount:0
#: view:website:account_budget.report_budget
msgid "Planned Amount"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_crossoveredbudget
msgid "Planned Amt"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:account_budget.view_account_analytic_account_form_inherit_budget
#: view:account.budget.post:account_budget.view_budget_post_form
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: field:crossovered.budget.lines,practical_amount:0
#: view:website:account_budget.report_budget
msgid "Practical Amount"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_crossoveredbudget
msgid "Practical Amt"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:account_budget.account_budget_analytic_view
#: view:account.budget.crossvered.report:account_budget.account_budget_crossvered_report_view
#: view:account.budget.crossvered.summary.report:account_budget.account_budget_crossvered_summary_report_view
#: view:account.budget.report:account_budget.account_budget_report_view
msgid "Print"
msgstr ""
#. module: account_budget
#: view:account.budget.report:account_budget.account_budget_report_view
#: model:ir.actions.act_window,name:account_budget.action_account_budget_analytic
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_report
msgid "Print Budgets"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_summary_report
msgid "Print Summary"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_budget
msgid "Printed at:"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
msgid "Reset to Draft"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,creating_user_id:0
msgid "Responsible User"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:account_budget.account_budget_analytic_view
#: view:account.budget.crossvered.report:account_budget.account_budget_crossvered_report_view
#: view:account.budget.crossvered.summary.report:account_budget.account_budget_crossvered_summary_report_view
#: view:account.budget.report:account_budget.account_budget_report_view
msgid "Select Dates Period"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,date_from:0
#: field:crossovered.budget.lines,date_from:0
@@ -403,13 +411,78 @@ msgid "Start Date"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Analysis from"
#: field:account.budget.analytic,date_from:0
#: field:account.budget.crossvered.report,date_from:0
#: field:account.budget.crossvered.summary.report,date_from:0
#: field:account.budget.report,date_from:0
msgid "Start of period"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Draft Budgets"
#: field:crossovered.budget,state:0
msgid "Status"
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:118
#, python-format
msgid "The Budget '%s' has no accounts!"
msgstr ""
#. module: account_budget
#: view:account.budget.post:account_budget.view_budget_post_form
#: view:crossovered.budget:account_budget.crossovered_budget_view_form
#: field:crossovered.budget.lines,theoritical_amount:0
#: view:website:account_budget.report_budget
msgid "Theoretical Amount"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_crossoveredbudget
msgid "Theoretical Amt"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:account_budget.view_account_analytic_account_form_inherit_budget
msgid "Theoritical Amount"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:account_budget.account_budget_analytic_view
#: view:account.budget.crossvered.report:account_budget.account_budget_crossvered_report_view
msgid "This wizard is used to print budget"
msgstr ""
#. module: account_budget
#: view:account.budget.crossvered.summary.report:account_budget.account_budget_crossvered_summary_report_view
msgid "This wizard is used to print summary of budgets"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.view_crossovered_budget_search
msgid "To Approve"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:account_budget.view_crossovered_budget_search
msgid "To Approve Budgets"
msgstr ""
#. module: account_budget
#: view:website:account_budget.report_analyticaccountbudget
#: view:website:account_budget.report_budget
#: view:website:account_budget.report_crossoveredbudget
msgid "Total:"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,validating_user_id:0
msgid "Validate User"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Validated"
msgstr ""
@@ -86,7 +86,7 @@ class budget_report(report_sxw.rml_parse):
}
result.append(res)
line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', budget_ids), ('analytic_account_id','=',an_ids[i][0])])
line_ids = c_b_lines_obj.search(self.cr, self.uid, [('id', 'in', budget_ids), ('analytic_account_id','=',an_ids[i][0]), ('date_to', '>=', d_from), ('date_from', '<=', d_to)])
line_id = c_b_lines_obj.browse(self.cr, self.uid, line_ids)
tot_theo = tot_pln = tot_prac = tot_perc = 0.00
+1 -1
View File
@@ -31,7 +31,7 @@ Allows canceling accounting entries.
This module adds 'Allow Canceling Entries' field on form view of account journal.
If set to true it allows user to cancel entries & invoices.
""",
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/account_cancel.jpeg'],
'depends' : ['account'],
'data': ['account_cancel_view.xml' ],
+11 -5
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_cancel
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,7 +16,13 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_cancel
#: view:account.invoice:0
#: view:account.bank.statement:account_cancel.bank_statement_cancel_form_inherit
msgid "Cancel"
msgstr ""
#. module: account_cancel
#: view:account.invoice:account_cancel.invoice_form_cancel_inherit
#: view:account.invoice:account_cancel.invoice_supplier_cancel_form_inherit
msgid "Cancel Invoice"
msgstr ""
+1 -1
View File
@@ -31,7 +31,7 @@ Remove minimal account chart.
Deactivates minimal chart of accounts.
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'depends': ['account'],
'data': [],
'demo': [],
+1 -1
View File
@@ -27,7 +27,7 @@
Module for the Check Writing and Check Printing.
================================================
""",
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'depends' : ['account_voucher'],
'data': [
'wizard/account_check_batch_printing_view.xml',
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_check_writing
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,92 +16,22 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new check. \n"
" </p><p>\n"
" The check payment form allows you to track the payment you do\n"
" to your suppliers using checks. When you select a supplier, the\n"
" payment method and an amount for the payment, Odoo will\n"
" propose to reconcile your payment with the open supplier\n"
" invoices or bills.\n"
" </p>\n"
" "
msgstr ""
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
#: view:account.voucher:0
msgid "Print Check"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr ""
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid "Check on top is compatible with Quicken, QuickBooks and Microsoft Money. Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_account_check_write
msgid "Print Check in Batch"
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "One of the printed check already got a number."
msgstr ""
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr ""
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Description"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Discount"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Original Amount"
msgstr ""
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Check Layout"
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr ""
#. module: account_check_writing
@@ -110,46 +40,59 @@ msgid "Allow Check Writing"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr ""
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
#: view:account.check.write:account_check_writing.view_account_check_write
msgid "Cancel"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new check. \n"
" </p><p>\n"
" The check payment form allows you to track the payment you do\n"
" to your suppliers using checks. When you select a supplier, the\n"
" payment method and an amount for the payment, OpenERP will\n"
" propose to reconcile your payment with the open supplier\n"
" invoices or bills.\n"
" </p>\n"
" "
#: view:account.check.write:account_check_writing.view_account_check_write
#: model:ir.actions.report.xml,name:account_check_writing.action_report_check
msgid "Check"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Due Date"
#: field:res.company,check_layout:0
msgid "Check Layout"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
#: help:account.journal,use_preprint_check:0
msgid "Check if you use a preformated sheet for check"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr ""
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid "Check on top is compatible with Quicken, QuickBooks and Microsoft Money. Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr ""
#. module: account_check_writing
@@ -157,6 +100,31 @@ msgstr ""
msgid "Companies"
msgstr ""
#. module: account_check_writing
#: field:account.check.write,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_check_writing
#: field:account.check.write,create_date:0
msgid "Created on"
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Description"
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Discount"
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Due Date"
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
@@ -164,51 +132,24 @@ msgid "Error!"
msgstr ""
#. module: account_check_writing
#: help:account.check.write,check_number:0
msgid "The number of the next check number to be printed."
#: field:account.check.write,id:0
#: field:report.account_check_writing.report_check,id:0
msgid "ID"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
#: field:account.check.write,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Check Amount"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "or"
msgstr ""
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_check_write
msgid "Prin Check in Batch"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "Cancel"
#: field:account.check.write,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_check_writing
@@ -217,7 +158,67 @@ msgid "Next Check Number"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "Check"
#: code:addons/account_check_writing/account_voucher.py:77
#, python-format
msgid "No check selected "
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "One of the printed check already got a number."
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Open Balance"
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Original Amount"
msgstr ""
#. module: account_check_writing
#: view:website:account_check_writing.report_check
msgid "Payment"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_check_write
msgid "Prin Check in Batch"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:account_check_writing.view_account_check_write
#: view:account.voucher:account_check_writing.view_vendor_payment_check_form
msgid "Print Check"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_account_check_write
msgid "Print Check in Batch"
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/account_voucher.py:77
#, python-format
msgid "Printing error"
msgstr ""
#. module: account_check_writing
#: help:account.check.write,check_number:0
msgid "The number of the next check number to be printed."
msgstr ""
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr ""
+1 -1
View File
@@ -44,7 +44,7 @@ Note that if you want to check the follow-up level for a given partner/account e
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/billing',
'images': ['images/follow_ups.jpeg','images/send_followups.jpeg'],
'depends': ['account_accountant', 'mail'],
'data': [
File diff suppressed because it is too large Load Diff
@@ -72,7 +72,7 @@ class report_rappel(report_sxw.rml_parse):
}
lines_per_currency[currency].append(line_data)
return [{'line': lines} for lines in lines_per_currency.values()]
return [{'line': lines, 'currency': currency} for currency, lines in lines_per_currency.items()]
def _get_text(self, stat_line, followup_id, context=None):
context = dict(context or {}, lang=stat_line.partner_id.lang)
@@ -7,7 +7,8 @@
<field name="model">account_followup.stat</field>
<field name="arch" type="xml">
<graph string="Follow-up lines" type="pivot">
<field name="partner_id" type="row"/>
<field name="followup_id" type="row"/>
<field name="date_followup" type="col"/>
<field name="balance" type="measure"/>
</graph>
</field>
@@ -19,19 +20,20 @@
<search string="Follow-ups Sent">
<field name="date_move"/>
<field name="date_move_last"/>
<filter icon="terp-go-year" string="This Fiscal year" name="fiscalyear" domain="[('period_id','in','current_year')]"
<filter string="This Fiscal year" name="fiscalyear" domain="[('period_id','in','current_year')]"
help="Follow-up Entries with period in current year"/>
<separator/>
<filter icon="terp-camera_test" string="Not Litigation" domain="[('blocked','=', False)]"
<filter string="Not Litigation" domain="[('blocked','=', False)]"
help = "Including journal entries marked as a litigation"/>
<field name="partner_id"/>
<field name="balance"/>
<group expand="1" string="Group By">
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}" />
<filter string="Litigation" icon="terp-camera_test" context="{'group_by':'blocked'}" />
<filter string="Follow-up Level" icon="terp-stock_effects-object-colorize" name="followup_level" context="{'group_by':'followup_id'}" />
<filter string="Latest Follow-up Month" icon="terp-go-month" context="{'group_by':'date_followup'}" />
<filter string="Company" groups="base.group_multi_company" icon="terp-go-home" context="{'group_by':'company_id'}" />
<filter string="Partner" context="{'group_by':'partner_id'}" />
<filter string="Litigation" context="{'group_by':'blocked'}" />
<filter string="Follow-up Level" name="followup_level" context="{'group_by':'followup_id'}" />
<filter string="Company" groups="base.group_multi_company" context="{'group_by':'company_id'}" />
<separator/>
<filter string="Latest Follow-up Month" context="{'group_by':'date_followup:month'}" />
</group>
</search>
</field>
@@ -47,7 +47,7 @@
</table>
<t t-set="total" t-value="reduce(lambda x,y: x+y['balance'], cur_lines['line'], 0.00)"/>
<p>Total: <span t-esc="formatLang(total, currency_obj=res_company.currency_id)"/></p>
<p>Total: <span t-esc="formatLang(total, currency_obj=cur_lines['currency'])"/></p>
</t>
</div>
</t>
+1 -1
View File
@@ -51,7 +51,7 @@ class account_move_line(osv.osv):
if bank.state in bank_type:
line2bank[line.id] = bank.id
break
if line.id not in line2bank and line.partner_id.bank_ids:
if not line2bank.get(line.id) and line.partner_id.bank_ids:
line2bank[line.id] = line.partner_id.bank_ids[0].id
else:
raise osv.except_osv(_('Error!'), _('There is no partner defined on the entry line.'))
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -38,7 +38,7 @@ You can customize the following attributes of the sequence:
* Number Padding
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com',
'images': ['images/internal_sequence_number.jpeg'],
'depends': ['account'],
'data': [
+113 -93
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_sequence
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,65 +16,49 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_sequence
#: view:account.sequence.installer:0
#: model:ir.model,name:account_sequence.model_account_move
msgid "Account Entry"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:account_sequence.view_account_sequence_installer
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
msgid "Account Sequence Application Configuration"
msgstr ""
#. module: account_sequence
#: help:account.move,internal_sequence_number:0
#: help:account.move.line,internal_sequence_number:0
msgid "Internal Sequence Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,number_next:0
msgid "Next number of this sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,number_next:0
msgid "Next Number"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,number_increment:0
msgid "Increment Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,number_increment:0
msgid "The next number of the sequence will be incremented by this number"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure Your Account Sequence Application"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,suffix:0
msgid "Suffix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,company_id:0
msgid "Company"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,padding:0
msgid "Number padding"
#: view:account.sequence.installer:account_sequence.view_account_sequence_installer
msgid "Configure"
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move_line
msgid "Journal Items"
#: view:account.sequence.installer:account_sequence.view_account_sequence_installer
msgid "Configure Your Account Sequence Application"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,create_date:0
msgid "Created on"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,id:0
msgid "ID"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,number_increment:0
msgid "Increment Number"
msgstr ""
#. module: account_sequence
@@ -83,54 +67,15 @@ msgstr ""
msgid "Internal Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,padding:0
msgid "OpenERP will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,name:0
msgid "Name"
msgstr ""
#. module: account_sequence
#: field:account.journal,internal_sequence_id:0
msgid "Internal Sequence"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,prefix:0
msgid "Prefix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_move
msgid "Account Entry"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,suffix:0
msgid "Suffix"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "title"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,prefix:0
msgid "Prefix"
msgstr ""
#. module: account_sequence
#: help:account.journal,internal_sequence_id:0
msgid "This sequence will be used to maintain the internal number for the journal entries related to this journal."
msgstr ""
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_sequence_installer
msgid "account.sequence.installer"
#: help:account.move,internal_sequence_number:0
#: help:account.move.line,internal_sequence_number:0
msgid "Internal Sequence Number"
msgstr ""
#. module: account_sequence
@@ -139,7 +84,82 @@ msgid "Journal"
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:0
#: model:ir.model,name:account_sequence.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,name:0
msgid "Name"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,number_next:0
msgid "Next Number"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,number_next:0
msgid "Next number of this sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,padding:0
msgid "Number padding"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,padding:0
msgid "Odoo will automatically adds some '0' on the left of the 'Next Number' to get the required padding size."
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,prefix:0
msgid "Prefix"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,prefix:0
msgid "Prefix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: field:account.sequence.installer,suffix:0
msgid "Suffix"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,suffix:0
msgid "Suffix value of the record for the sequence"
msgstr ""
#. module: account_sequence
#: help:account.sequence.installer,number_increment:0
msgid "The next number of the sequence will be incremented by this number"
msgstr ""
#. module: account_sequence
#: help:account.journal,internal_sequence_id:0
msgid "This sequence will be used to maintain the internal number for the journal entries related to this journal."
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:account_sequence.view_account_sequence_installer
msgid "You can enhance the Account Sequence Application by installing ."
msgstr ""
#. module: account_sequence
#: view:account.sequence.installer:account_sequence.view_account_sequence_installer
msgid "title"
msgstr ""
+1 -1
View File
@@ -25,7 +25,7 @@
'version': '1.0',
'author': 'OpenERP',
'category': 'Accounting & Finance',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/accounting',
'description': """
Asserts on accounting.
======================
+149 -117
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_test
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,7 +16,87 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_test
#: view:accounting.assert.test:0
#: model:ir.actions.act_window,help:account_test.action_accounting_assert
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click to create Accounting Test.\n"
" </p>\n"
" "
msgstr ""
#. module: account_test
#: model:ir.actions.act_window,name:account_test.action_accounting_assert
#: model:ir.actions.report.xml,name:account_test.account_assert_test_report
#: model:ir.ui.menu,name:account_test.menu_action_license
msgid "Accounting Tests"
msgstr ""
#. module: account_test
#: view:website:account_test.report_accounttest
msgid "Accouting tests on"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,active:0
msgid "Active"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_03
msgid "Check if movement lines are balanced and have the same date and period"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_02
msgid "Check if the balance of the new opened fiscal year matches with last year's balance"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_04
msgid "Check if the totally reconciled movements are balanced"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_07
msgid "Check on bank statement that the Closing Balance = Starting Balance + sum of statement lines"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_08
msgid "Check that general accounts and partners on account moves are active"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06
msgid "Check that paid/reconciled invoices are not in 'Open' state"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05_2
msgid "Check that reconciled account moves, that define Payable and Receivable accounts, are belonging to reconciled invoices"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05
msgid "Check that reconciled invoice for Sales/Purchases has reconciled entries for Payable and Receivable Accounts"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06_1
msgid "Check that there's no move for any account with « View » account type"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_01
msgid "Check the balance: Debit sum = Credit sum"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:account_test.account_assert_form
msgid "Code Help"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:account_test.account_assert_form
msgid "Code should always set a variable named `result` with the result of your test, that can be a list or\n"
"a dictionary. If `result` is an empty list, it means that the test was succesful. Otherwise it will\n"
"try to translate and print what is inside `result`.\n"
@@ -40,101 +120,54 @@ msgid "Code should always set a variable named `result` with the result of your
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_02
msgid "Test 2: Opening a fiscal year"
#: field:accounting.assert.test,create_uid:0
msgid "Created by"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05
msgid "Check that reconciled invoice for Sales/Purchases has reconciled entries for Payable and Receivable Accounts"
#: field:accounting.assert.test,create_date:0
msgid "Created on"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_03
msgid "Check if movement lines are balanced and have the same date and period"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,name:0
msgid "Test Name"
msgstr ""
#. module: account_test
#: report:account.test.assert.print:0
msgid "Accouting tests on"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_01
msgid "Test 1: General balance"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06
msgid "Check that paid/reconciled invoices are not in 'Open' state"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_05_2
msgid "Check that reconciled account moves, that define Payable and Receivable accounts, are belonging to reconciled invoices"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Tests"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,desc:0
msgid "Test Description"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
#: view:accounting.assert.test:account_test.account_assert_form
msgid "Description"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_06_1
msgid "Check that there's no move for any account with « View » account type"
#: view:website:account_test.report_accounttest
msgid "Description:"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_08
msgid "Test 9 : Accounts and partners on account moves"
#: view:accounting.assert.test:account_test.account_assert_form
msgid "Expression"
msgstr ""
#. module: account_test
#: model:ir.actions.act_window,name:account_test.action_accounting_assert
#: model:ir.actions.report.xml,name:account_test.account_assert_test_report
#: model:ir.ui.menu,name:account_test.menu_action_license
msgid "Accounting Tests"
#: field:accounting.assert.test,id:0
#: field:report.account_test.report_accounttest,id:0
msgid "ID"
msgstr ""
#. module: account_test
#: code:addons/account_test/report/account_test_report.py:74
#, python-format
msgid "The test was passed successfully"
#: field:accounting.assert.test,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,active:0
msgid "Active"
#: field:accounting.assert.test,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_06
msgid "Test 6 : Invoices status"
#: view:website:account_test.report_accounttest
msgid "Name:"
msgstr ""
#. module: account_test
#: model:ir.model,name:account_test.model_accounting_assert_test
msgid "accounting.assert.test"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05
msgid "Test 5.1 : Payable and Receivable accountant lines of reconciled invoices"
#: view:accounting.assert.test:account_test.account_assert_form
msgid "Python Code"
msgstr ""
#. module: account_test
@@ -143,13 +176,18 @@ msgid "Python code"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_07
msgid "Check on bank statement that the Closing Balance = Starting Balance + sum of statement lines"
#: field:accounting.assert.test,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_07
msgid "Test 8 : Closing balance on bank statements"
#: model:accounting.assert.test,name:account_test.account_test_01
msgid "Test 1: General balance"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_02
msgid "Test 2: Opening a fiscal year"
msgstr ""
#. module: account_test
@@ -157,57 +195,24 @@ msgstr ""
msgid "Test 3: Movement lines"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_05_2
msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Expression"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_04
msgid "Test 4: Totally reconciled mouvements"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_04
msgid "Check if the totally reconciled movements are balanced"
#: model:accounting.assert.test,name:account_test.account_test_05
msgid "Test 5.1 : Payable and Receivable accountant lines of reconciled invoices"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,sequence:0
msgid "Sequence"
#: model:accounting.assert.test,name:account_test.account_test_05_2
msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_02
msgid "Check if the balance of the new opened fiscal year matches with last year's balance"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Python Code"
msgstr ""
#. module: account_test
#: model:ir.actions.act_window,help:account_test.action_accounting_assert
msgid "<p class=\"oe_view_nocontent_create\">\n"
" Click to create Accounting Test.\n"
" </p>\n"
" "
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_01
msgid "Check the balance: Debit sum = Credit sum"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,desc:account_test.account_test_08
msgid "Check that general accounts and partners on account moves are active"
#: model:accounting.assert.test,name:account_test.account_test_06
msgid "Test 6 : Invoices status"
msgstr ""
#. module: account_test
@@ -216,7 +221,34 @@ msgid "Test 7: « View  » account type"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:0
msgid "Code Help"
#: model:accounting.assert.test,name:account_test.account_test_07
msgid "Test 8 : Closing balance on bank statements"
msgstr ""
#. module: account_test
#: model:accounting.assert.test,name:account_test.account_test_08
msgid "Test 9 : Accounts and partners on account moves"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,desc:0
msgid "Test Description"
msgstr ""
#. module: account_test
#: field:accounting.assert.test,name:0
msgid "Test Name"
msgstr ""
#. module: account_test
#: view:accounting.assert.test:account_test.account_assert_form
#: view:accounting.assert.test:account_test.account_assert_tree
msgid "Tests"
msgstr ""
#. module: account_test
#: code:addons/account_test/report/account_test_report.py:78
#, python-format
msgid "The test was passed successfully"
msgstr ""
+41
View File
@@ -0,0 +1,41 @@
Odoo Invoicing
--------------
Send professional invoices & get paid online with the Odoo
<a href="https://www.odoo.com/page/billing">billing software</a>.
Create and send professional looking invoices & get paid online. It
automatically integrates with other apps to bill automatically based on your
activities.
Send Invoices With No Effort
----------------------------
Send invoices directly to your clients in just a click. The invoice is
automatically attached to the email as a PDF file.
Get Paid Faster with Electronic invoicing
-----------------------------------------
Get paid online with paypal or other payment processing service. Get rid of the
stress of having to constantly remind your debtors. Simply set-up and automate
follow-ups to get paid quickly.
Connect Your Bank Accounts
--------------------------
Import your bank statements and reconcile them in just a few clicks. Prepare
payment orders based on your supplier invoices and payment terms.
Analyse Your Sales & Costs
--------------------------
Get direct access to key information with dynamic and customizable dashboards.
Analyse your invoicing by product, customer, salesperson, etc.
Integration With Other Apps
---------------------------
Bill automatically based on sales orders, delivery orders, contracts or on time
and material. Define recurrencies to produce recurring invoice automatically.
+2 -2
View File
@@ -20,7 +20,7 @@
##############################################################################
{
'name' : 'eInvoicing & Payments',
'name' : 'Online Billing',
'version' : '1.0',
'author' : 'OpenERP SA',
'summary': 'Send Invoices and Track Payments',
@@ -41,7 +41,7 @@ This module manages:
""",
'category': 'Accounting & Finance',
'sequence': 4,
'website' : 'http://openerp.com',
'website' : 'https://www.odoo.com/page/billing',
'images' : ['images/customer_payment.jpeg','images/journal_voucher.jpeg','images/sales_receipt.jpeg','images/supplier_voucher.jpeg','images/customer_invoice.jpeg','images/customer_refunds.jpeg'],
'depends' : ['account'],
'demo' : [],
+12 -49
View File
@@ -41,47 +41,6 @@ class res_currency(osv.osv):
return res
class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'income_currency_exchange_account_id': fields.many2one(
'account.account',
string="Gain Exchange Rate Account",
domain="[('type', '=', 'other')]",),
'expense_currency_exchange_account_id': fields.many2one(
'account.account',
string="Loss Exchange Rate Account",
domain="[('type', '=', 'other')]",),
}
class account_config_settings(osv.osv_memory):
_inherit = 'account.config.settings'
_columns = {
'income_currency_exchange_account_id': fields.related(
'company_id', 'income_currency_exchange_account_id',
type='many2one',
relation='account.account',
string="Gain Exchange Rate Account",
domain="[('type', '=', 'other')]"),
'expense_currency_exchange_account_id': fields.related(
'company_id', 'expense_currency_exchange_account_id',
type="many2one",
relation='account.account',
string="Loss Exchange Rate Account",
domain="[('type', '=', 'other')]"),
}
def onchange_company_id(self, cr, uid, ids, company_id, context=None):
res = super(account_config_settings, self).onchange_company_id(cr, uid, ids, company_id, context=context)
if company_id:
company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
res['value'].update({'income_currency_exchange_account_id': company.income_currency_exchange_account_id and company.income_currency_exchange_account_id.id or False,
'expense_currency_exchange_account_id': company.expense_currency_exchange_account_id and company.expense_currency_exchange_account_id.id or False})
else:
res['value'].update({'income_currency_exchange_account_id': False,
'expense_currency_exchange_account_id': False})
return res
class account_voucher(osv.osv):
def _check_paid(self, cr, uid, ids, name, args, context=None):
res = {}
@@ -361,7 +320,7 @@ class account_voucher(osv.osv):
\n* The \'Posted\' status is used when user create voucher,a voucher number is generated and voucher entries are created in account \
\n* The \'Cancelled\' status is used when user cancel voucher.'),
'amount': fields.float('Total', digits_compute=dp.get_precision('Account'), required=True, readonly=True, states={'draft':[('readonly',False)]}),
'tax_amount':fields.float('Tax Amount', digits_compute=dp.get_precision('Account'), readonly=True, states={'draft':[('readonly',False)]}),
'tax_amount':fields.float('Tax Amount', digits_compute=dp.get_precision('Account'), readonly=True),
'reference': fields.char('Ref #', readonly=True, states={'draft':[('readonly',False)]},
help="Transaction reference number.", copy=False),
'number': fields.char('Number', readonly=True, copy=False),
@@ -1044,7 +1003,8 @@ class account_voucher(osv.osv):
'period_id': voucher.period_id.id,
'partner_id': voucher.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': company_currency <> current_currency and sign * voucher.amount or 0.0,
'amount_currency': (sign * abs(voucher.amount) # amount < 0 for refunds
if company_currency != current_currency else 0.0),
'date': voucher.date,
'date_maturity': voucher.date_due
}
@@ -1210,7 +1170,7 @@ class account_voucher(osv.osv):
if line.amount == line.amount_unreconciled:
if not line.move_line_id:
raise osv.except_osv(_('Wrong voucher line'),_("The invoice you are willing to pay is not valid anymore."))
sign = voucher.type in ('payment', 'purchase') and -1 or 1
sign = line.type =='dr' and -1 or 1
currency_rate_difference = sign * (line.move_line_id.amount_residual - amount)
else:
currency_rate_difference = 0.0
@@ -1268,8 +1228,7 @@ class account_voucher(osv.osv):
# otherwise we use the rates of the system
amount_currency = currency_obj.compute(cr, uid, company_currency, line.move_line_id.currency_id.id, move_line['debit']-move_line['credit'], context=ctx)
if line.amount == line.amount_unreconciled:
sign = voucher.type in ('payment', 'purchase') and -1 or 1
foreign_currency_diff = sign * line.move_line_id.amount_residual_currency + amount_currency
foreign_currency_diff = line.move_line_id.amount_residual_currency - abs(amount_currency)
move_line['amount_currency'] = amount_currency
voucher_line = move_line_obj.create(cr, uid, move_line)
@@ -1330,10 +1289,14 @@ class account_voucher(osv.osv):
if voucher.payment_option == 'with_writeoff':
account_id = voucher.writeoff_acc_id.id
write_off_name = voucher.comment
elif voucher.type in ('sale', 'receipt'):
account_id = voucher.partner_id.property_account_receivable.id
elif voucher.partner_id:
if voucher.type in ('sale', 'receipt'):
account_id = voucher.partner_id.property_account_receivable.id
else:
account_id = voucher.partner_id.property_account_payable.id
else:
account_id = voucher.partner_id.property_account_payable.id
# fallback on account of voucher
account_id = voucher.account_id.id
sign = voucher.type == 'payment' and -1 or 1
move_line = {
'name': write_off_name or name,
@@ -159,7 +159,7 @@
<field name="res_model">account.voucher</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="context">{'type':'general'}</field>
<field name="context">{}</field>
<field name="view_id" eval="view_voucher_tree"/>
<field name="search_view_id" ref="view_voucher_filter"/>
</record>
@@ -193,26 +193,6 @@
<field name="context">{'state':'posted'}</field>
<field name="search_view_id" ref="view_voucher_filter"/>
</record>
<!-- res.config form view -->
<record model="ir.ui.view" id="view_account_settings_currency_xchange_form">
<field name="name">account.config.settings.inherit</field>
<field name="inherit_id" ref="account.view_account_config_settings"/>
<field name="model">account.config.settings</field>
<field name="priority">20</field>
<field name="arch" type="xml">
<xpath expr="//div[@name='group_multi_currency']" position="after">
<group attrs="{'invisible': [('group_multi_currency', '&lt;&gt;', True)]}" col="2">
<group>
<field name="income_currency_exchange_account_id"/>
<field name="expense_currency_exchange_account_id"/>
</group>
<group>
</group>
</group>
</xpath>
</field>
</record>
</data>
<data noupdate="1">
File diff suppressed because it is too large Load Diff
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<data>
<record id="view_sale_receipt_report_graph" model="ir.ui.view">
<field name="name">sale.receipt.report.graph</field>
<field name="model">sale.receipt.report</field>
<field name="arch" type="xml">
<graph string="Sales Receipts Analysis" type="pivot">
<field name="account_id"/>
<field name="partner_id" type="row"/>
<field name="date_due" type="col"/>
<field name="price_total" type="measure"/>
</graph>
</field>
@@ -20,9 +20,9 @@
<search string="Sales Receipts Analysis">
<field name="date"/>
<field name="date_due"/>
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help = "Draft Vouchers"/>
<filter string="Pro-forma" icon="terp-gtk-media-pause" domain="[('state','=','proforma')]" help = "Pro-forma Vouchers"/>
<filter string="Posted" name="current" icon="terp-check" domain="[('state','not in', ('draft','cancel'))]" help = "Validated Vouchers"/>
<filter string="Draft" domain="[('state','=','draft')]" help = "Draft Vouchers"/>
<filter string="Pro-forma" domain="[('state','=','proforma')]" help = "Pro-forma Vouchers"/>
<filter string="Posted" name="current" domain="[('state','not in', ('draft','cancel'))]" help = "Validated Vouchers"/>
<field name="partner_id"/>
<group expand="0" string="Extended Filters...">
<field name="journal_id"/>
@@ -31,14 +31,13 @@
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By">
<filter string="Partner" name="partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Salesperson" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" context="{'group_by':'type'}"/>
<filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/>
<filter string="Due Month" icon="terp-go-today" context="{'group_by':'date_due'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Invoice Date" name="month" icon="terp-go-month" context="{'group_by':'date'}" help="Group by month of Invoice Date"/>
<filter string="Partner" name="partner" context="{'group_by':'partner_id'}"/>
<filter string="Status" context="{'group_by':'state'}"/>
<filter string="Type" context="{'group_by':'type'}"/>
<filter string="Journal" context="{'group_by':'journal_id'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator/>
<filter string="Due Month" context="{'group_by':'date_due:month'}"/>
</group>
</search>
</field>
@@ -49,7 +48,7 @@
<field name="res_model">sale.receipt.report</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="context">{'search_default_year':1,'search_default_month':1,'search_default_current':1, 'search_default_partner':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1,}</field>
<field name="context">{'search_default_year':1,'search_default_month':1,'search_default_partner':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1,}</field>
<field name="search_view_id" ref="view_sale_receipt_report_search"/>
<field name="help" type="html">
<p>
@@ -63,6 +62,6 @@
</record>
<menuitem action="action_sale_receipt_report_all" id="menu_action_sale_receipt_report_all" parent="account.menu_finance_reporting" sequence="3"/>
</data>
</openerp>
+1 -1
View File
@@ -23,7 +23,7 @@
'name' : 'Analytic Accounting',
'version': '1.1',
'author' : 'OpenERP SA',
'website' : 'http://www.openerp.com',
'website' : 'https://www.odoo.com/page/accounting',
'category': 'Hidden/Dependency',
'depends' : ['base', 'decimal_precision', 'mail'],
'description': """
+318 -262
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * analytic
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,258 +16,52 @@ msgstr ""
"Plural-Forms: \n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:229
#, python-format
msgid "Contract: "
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "End Date"
msgstr ""
#. module: analytic
#: help:account.analytic.line,unit_amount:0
msgid "Specifies the amount of quantity to count."
msgstr ""
#. module: analytic
#: field:account.analytic.account,debit:0
msgid "Debit"
msgstr ""
#. module: analytic
#: help:account.analytic.account,type:0
msgid "If you select the View Type, it means you won't allow to create journal entries using that account.\n"
"The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"
"If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"
"The special type 'Template of Contract' allows you to define a template with default data that you can reuse easily."
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Once the end date of the contract is\n"
" passed or the maximum number of service\n"
" units (e.g. support contract) is\n"
" reached, the account manager is notified \n"
" by email to renew the contract with the\n"
" customer."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Contract or Project"
msgstr ""
#. module: analytic
#: field:account.analytic.account,name:0
msgid "Account/Contract Name"
msgstr ""
#. module: analytic
#: field:account.analytic.account,manager_id:0
msgid "Account Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Closed"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_pending
msgid "Contract to Renew"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "New"
msgstr ""
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:268
#: code:addons/analytic/analytic.py:277
#, python-format
msgid "%s (copy)"
msgstr ""
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: analytic
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: analytic
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
#. module: analytic
#: field:account.analytic.account,company_id:0
#: field:account.analytic.line,company_id:0
msgid "Company"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Renewal"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_opened
msgid "Stage <b>opened</b>"
msgstr ""
#. module: analytic
#: help:account.analytic.account,quantity_max:0
msgid "Sets the higher limit of time to work on the contract, based on the timesheet. (for instance, number of hours in a limited support contract.)"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid "If you set a company, the currency selected has to be the same as it's currency. \n"
"You can remove the company belonging, and thus change the currency, only on analytic account of type 'view'. This can be really usefull for consolidation purposes of several companies charts with different currencies, for example."
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: analytic
#: field:account.analytic.line,user_id:0
msgid "User"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_pending
msgid "Contract <b>pending</b>"
msgstr ""
#. module: analytic
#: field:account.analytic.line,date:0
msgid "Date"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_closed
msgid "Contract Finished"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Terms and Conditions"
msgstr ""
#. module: analytic
#: help:account.analytic.line,amount:0
msgid "Calculated by multiplying the quantity and the price given in the Product's cost price. Always expressed in the company main currency."
msgstr ""
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Customer"
msgstr ""
#. module: analytic
#: field:account.analytic.account,child_complete_ids:0
msgid "Account Hierarchy"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_ids:0
msgid "Messages"
#: field:account.analytic.account,manager_id:0
msgid "Account Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,parent_id:0
msgid "Parent Analytic Account"
#: field:account.analytic.account,name:0
msgid "Account/Contract Name"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Contract Information"
#: field:account.analytic.line,amount:0
msgid "Amount"
msgstr ""
#. module: analytic
#: field:account.analytic.account,template_id:0
#: view:account.analytic.account:analytic.view_account_analytic_account_form
#: selection:account.analytic.account,type:0
msgid "Template of Contract"
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_summary:0
msgid "Summary"
#: model:res.groups,name:analytic.group_analytic_accounting
msgid "Analytic Accounting"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Prepaid Service Units"
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
msgstr ""
#. module: analytic
#: field:account.analytic.account,credit:0
msgid "Credit"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_opened
msgid "Contract Opened"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_closed
msgid "Contract <b>closed</b>"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Cancelled"
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: analytic
@@ -281,29 +75,132 @@ msgid "Balance"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_unread:0
msgid "If checked new messages require your attention."
#: help:account.analytic.line,amount:0
msgid "Calculated by multiplying the quantity and the price given in the Product's cost price. Always expressed in the company main currency."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "To Renew"
msgid "Cancelled"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr ""
#. module: analytic
#: field:account.analytic.account,date:0
msgid "Date End"
#: selection:account.analytic.account,state:0
msgid "Closed"
msgstr ""
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Reference"
#: field:account.analytic.account,company_id:0
#: field:account.analytic.line,company_id:0
msgid "Company"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_closed
msgid "Contract Finished"
msgstr ""
#. module: analytic
#: view:account.analytic.account:analytic.view_account_analytic_account_form
msgid "Contract Information"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_opened
msgid "Contract Opened"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_closed
msgid "Contract closed"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_opened
msgid "Contract opened"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Contract or Project"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_pending
msgid "Contract pending"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_pending
msgid "Contract to Renew"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:238
#, python-format
msgid "Contract: "
msgstr ""
#. module: analytic
#: field:account.analytic.line,create_date:0
msgid "Create Date"
msgstr ""
#. module: analytic
#: field:account.analytic.account,create_uid:0
#: field:account.analytic.line,create_uid:0
msgid "Created by"
msgstr ""
#. module: analytic
#: field:account.analytic.account,create_date:0
msgid "Created on"
msgstr ""
#. module: analytic
#: field:account.analytic.account,credit:0
msgid "Credit"
msgstr ""
#. module: analytic
#: field:account.analytic.account,currency_id:0
msgid "Currency"
msgstr ""
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Customer"
msgstr ""
#. module: analytic
#: field:account.analytic.line,date:0
msgid "Date"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_last_post:0
msgid "Date of the last message posted on the record."
msgstr ""
#. module: analytic
#: field:account.analytic.account,debit:0
msgid "Debit"
msgstr ""
#. module: analytic
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
msgstr ""
#. module: analytic
#: view:account.analytic.account:analytic.view_account_analytic_account_form
msgid "End Date"
msgstr ""
#. module: analytic
@@ -313,31 +210,23 @@ msgid "Error!"
msgstr ""
#. module: analytic
#: model:res.groups,name:analytic.group_analytic_accounting
msgid "Analytic Accounting"
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
#. module: analytic
#: field:account.analytic.line,amount:0
msgid "Amount"
#: field:account.analytic.account,date:0
msgid "Expiration Date"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr ""
#. module: analytic
#: field:account.analytic.account,complete_name:0
msgid "Full Account Name"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
#: selection:account.analytic.account,type:0
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,currency_id:0
msgid "Currency"
msgid "Full Name"
msgstr ""
#. module: analytic
@@ -346,8 +235,128 @@ msgid "Holds the Chatter summary (number of messages, ...). This summary is dire
msgstr ""
#. module: analytic
#: field:account.analytic.account,type:0
msgid "Type of Account"
#: field:account.analytic.account,id:0
#: field:account.analytic.line,id:0
msgid "ID"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: analytic
#: help:account.analytic.account,type:0
msgid "If you select the View Type, it means you won't allow to create journal entries using that account.\n"
"The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"
"If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"
"The special type 'Template of Contract' allows you to define a template with default data that you can reuse easily."
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid "If you set a company, the currency selected has to be the same as it's currency. \n"
"You can remove the company belonging, and thus change the currency, only on analytic account of type 'view'. This can be really useful for consolidation purposes of several companies charts with different currencies, for example."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_last_post:0
msgid "Last Message Date"
msgstr ""
#. module: analytic
#: field:account.analytic.account,write_uid:0
#: field:account.analytic.line,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: analytic
#: field:account.analytic.account,write_date:0
#: field:account.analytic.line,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_ids:0
msgid "Messages"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "New"
msgstr ""
#. module: analytic
#: view:account.analytic.account:analytic.view_account_analytic_account_form
msgid "Once the end date of the contract is\n"
" passed or the maximum number of service\n"
" units (e.g. support contract) is\n"
" reached, the account manager is notified \n"
" by email to renew the contract with the\n"
" customer."
msgstr ""
#. module: analytic
#: field:account.analytic.account,parent_id:0
msgid "Parent Analytic Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Prepaid Service Units"
msgstr ""
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:271
#, python-format
msgid "Quick account creation disallowed."
msgstr ""
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Reference"
msgstr ""
#. module: analytic
#: view:account.analytic.account:analytic.view_account_analytic_account_form
msgid "Renewal"
msgstr ""
#. module: analytic
#: help:account.analytic.account,quantity_max:0
msgid "Sets the higher limit of time to work on the contract, based on the timesheet. (for instance, number of hours in a limited support contract.)"
msgstr ""
#. module: analytic
#: help:account.analytic.line,unit_amount:0
msgid "Specifies the amount of quantity to count."
msgstr ""
#. module: analytic
@@ -355,13 +364,60 @@ msgstr ""
msgid "Start Date"
msgstr ""
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_summary:0
msgid "Summary"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
msgstr ""
#. module: analytic
#: field:account.analytic.account,template_id:0
#: selection:account.analytic.account,type:0
msgid "Template of Contract"
msgstr ""
#. module: analytic
#: view:account.analytic.account:analytic.view_account_analytic_account_form
msgid "Terms and Conditions"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "To Renew"
msgstr ""
#. module: analytic
#: field:account.analytic.account,type:0
msgid "Type of Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: analytic
#: field:account.analytic.line,user_id:0
msgid "User"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:271
#, python-format
msgid "Warning"
msgstr ""
#. module: analytic
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
#. module: analytic
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
msgstr ""
+1 -1
View File
@@ -307,7 +307,7 @@ class account_analytic_account(osv.osv):
dom = []
for name2 in name.split('/'):
name = name2.strip()
account_ids = self.search(cr, uid, dom + [('name', 'ilike', name)] + args, limit=limit, context=context)
account_ids = self.search(cr, uid, dom + [('name', operator, name)] + args, limit=limit, context=context)
if not account_ids: break
dom = [('parent_id','in',account_ids)]
else:
@@ -29,7 +29,7 @@ This module is for modifying account analytic view to show some data related to
======================================================================================================
""",
'author': 'OpenERP S.A.',
'website': 'http://www.openerp.com/',
'website': 'https://www.odoo.com/',
'depends': ['hr_expense','account_analytic_analysis'],
'data': ['analytic_contract_hr_expense_view.xml'],
'demo': [],
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * analytic_contract_hr_expense
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -15,36 +15,51 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:129
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "Expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "Expenses and Timesheet Invoicing Ratio"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:135
#, python-format
msgid "Expenses of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:143
#, python-format
msgid "Expenses to Invoice of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:121
#, python-format
msgid "Expenses of %s"
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "Nothing to invoice, create"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "or view"
msgstr ""
#. module: analytic_contract_hr_expense
@@ -55,17 +70,22 @@ msgid "unknown"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "{'invisible': [('invoice_on_timesheets','=',False),('charge_expenses','=',False)]}"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "{'required': ['|',('invoice_on_timesheets','=',True),('charge_expenses','=',True)], 'invisible':[('invoice_on_timesheets','=',False), ('charge_expenses','=',False)]}"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "{'required': ['|',('invoice_on_timesheets','=',True),('charge_expenses','=',True)]}"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:analytic_contract_hr_expense.account_analytic_account_form_expense_form
msgid "⇒ Invoice"
msgstr ""
+1 -1
View File
@@ -38,7 +38,7 @@ compatible with older configurations.
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/analytic_user_function.jpeg'],
'depends': ['hr_timesheet_sheet'],
'data': ['analytic_user_function_view.xml', 'security/ir.model.access.csv'],
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * analytic_user_function
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -15,24 +15,73 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: analytic_user_function
#: field:analytic.user.funct.grid,account_id:0
#: model:ir.model,name:analytic_user_function.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:0
#: field:analytic.user.funct.grid,create_uid:0
msgid "Created by"
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,create_date:0
msgid "Created on"
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:analytic_user_function.view_account_analytic_account_form_inherit
msgid "Define a specific service (e.g. Senior Consultant)\n"
" and price for some users to use these data instead\n"
" of the default values when invoicing the customer."
msgstr ""
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:108
#: code:addons/analytic_user_function/analytic_user_function.py:137
#, python-format
msgid "Error!"
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,id:0
msgid "ID"
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:analytic_user_function.view_account_analytic_account_form_inherit
msgid "Invoice Price Rate per User"
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,product_id:0
msgid "Service"
#: view:analytic.user.funct.grid:analytic_user_function.analytic_user_funct_grid_form
#: view:analytic.user.funct.grid:analytic_user_function.analytic_user_funct_grid_tree
msgid "Invoicing Data"
msgstr ""
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Price per User"
#: field:analytic.user.funct.grid,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:analytic_user_function.view_account_analytic_account_form_inherit
msgid "Odoo will recursively search on parent accounts\n"
" to check if specific conditions are defined for a\n"
" specific user. This allows to set invoicing\n"
" conditions for a group of contracts."
msgstr ""
#. module: analytic_user_function
@@ -40,51 +89,26 @@ msgstr ""
msgid "Price"
msgstr ""
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Price per User"
msgstr ""
#. module: analytic_user_function
#: help:analytic.user.funct.grid,price:0
msgid "Price per hour for this user."
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,account_id:0
#: model:ir.model,name:analytic_user_function.model_account_analytic_account
msgid "Analytic Account"
#: field:analytic.user.funct.grid,product_id:0
msgid "Service"
msgstr ""
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:106
#: code:addons/analytic_user_function/analytic_user_function.py:135
#: code:addons/analytic_user_function/analytic_user_function.py:109
#: code:addons/analytic_user_function/analytic_user_function.py:138
#, python-format
msgid "Error!"
msgstr ""
#. module: analytic_user_function
#: view:analytic.user.funct.grid:0
msgid "Invoicing Data"
msgstr ""
#. module: analytic_user_function
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:0
msgid "Define a specific service (e.g. Senior Consultant)\n"
" and price for some users to use these data instead\n"
" of the default values when invoicing the customer."
msgstr ""
#. module: analytic_user_function
#: field:analytic.user.funct.grid,uom_id:0
msgid "Unit of Measure"
msgstr ""
#. module: analytic_user_function
#: code:addons/analytic_user_function/analytic_user_function.py:107
#: code:addons/analytic_user_function/analytic_user_function.py:136
#, python-format
msgid "There is no expense account define for this product: \"%s\" (id:%d)"
msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
msgstr ""
#. module: analytic_user_function
@@ -93,11 +117,8 @@ msgid "Timesheet Line"
msgstr ""
#. module: analytic_user_function
#: view:account.analytic.account:0
msgid "OpenERP will recursively search on parent accounts\n"
" to check if specific conditions are defined for a\n"
" specific user. This allows to set invoicing\n"
" conditions for a group of contracts."
#: field:analytic.user.funct.grid,uom_id:0
msgid "Unit of Measure"
msgstr ""
#. module: analytic_user_function
@@ -105,3 +126,8 @@ msgstr ""
msgid "User"
msgstr ""
#. module: analytic_user_function
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr ""
+1 -1
View File
@@ -38,7 +38,7 @@ team. Once you get back your migrated database, you restore it and reverse the
anonymization process to recover your previous data.
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com',
'depends': ['base'],
'demo': ['anonymization_demo.xml'],
'data': [
+216 -195
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * anonymization
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,94 +16,22 @@ msgstr ""
"Plural-Forms: \n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
msgid "ir.model.fields.anonymize.wizard"
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
#: view:ir.model.fields.anonymization.history:anonymization.view_ir_model_fields_anonymization_history_form
#: view:ir.model.fields.anonymization.history:anonymization.view_ir_model_fields_anonymization_history_tree
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
msgid "Anonymization History"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_id:0
msgid "Object"
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:anonymization.view_ir_model_fields_anonymize_wizard_form
msgid "Anonymize Database"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix
msgid "ir.model.fields.anonymization.migration.fix"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,target_version:0
msgid "Target Version"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "sql"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:91
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to create, write or delete fields."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
#: field:ir.model.fields.anonymization.migration.fix,field_name:0
msgid "Field"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "New"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_import:0
msgid "Import"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
msgid "ir.model.fields.anonymization"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:300
#, python-format
msgid "Before executing the anonymization process, you should make a backup of your database."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "Status"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
msgid "Direction"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
#: view:ir.model.fields.anonymization:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
msgid "Anonymized Fields"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
msgid "Database anonymization"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
msgid "Anonymize database"
msgstr ""
#. module: anonymization
@@ -113,8 +41,15 @@ msgid "Anonymized"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,state:0
msgid "unknown"
#: view:ir.model.fields.anonymization:anonymization.view_ir_model_fields_anonymization_form
msgid "Anonymized Field"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
#: view:ir.model.fields.anonymization:anonymization.view_ir_model_fields_anonymization_tree
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
msgid "Anonymized Fields"
msgstr ""
#. module: anonymization
@@ -124,28 +59,9 @@ msgid "Anonymized value is None. This cannot happens."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,filepath:0
msgid "File path"
msgstr ""
#. module: anonymization
#: help:ir.model.fields.anonymize.wizard,file_import:0
msgid "This is the file created by the anonymization process. It should have the '.pickle' extention."
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,date:0
msgid "Date"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_export:0
msgid "Export"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Reverse the Database Anonymization"
#: code:addons/anonymization/anonymization.py:300
#, python-format
msgid "Before executing the anonymization process, you should make a backup of your database."
msgstr ""
#. module: anonymization
@@ -154,27 +70,6 @@ msgstr ""
msgid "Cannot anonymize fields of these types: binary, many2many, many2one, one2many, reference."
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Database Anonymization"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
msgid "Anonymize database"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "python"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,field_ids:0
msgid "Fields"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
@@ -182,69 +77,44 @@ msgid "Clear"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:533
#, python-format
msgid "It is not possible to reverse the anonymization process without supplying the anonymization export file."
#: field:ir.model.fields.anonymization,create_uid:0
#: field:ir.model.fields.anonymization.history,create_uid:0
#: field:ir.model.fields.anonymization.migration.fix,create_uid:0
#: field:ir.model.fields.anonymize.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,summary:0
msgid "Summary"
#: field:ir.model.fields.anonymization,create_date:0
#: field:ir.model.fields.anonymization.history,create_date:0
#: field:ir.model.fields.anonymization.migration.fix,create_date:0
#: field:ir.model.fields.anonymize.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization:0
msgid "Anonymized Field"
#: view:ir.model.fields.anonymize.wizard:anonymization.view_ir_model_fields_anonymize_wizard_form
msgid "Database Anonymization"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:391
#: code:addons/anonymization/anonymization.py:526
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to do anything."
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
msgid "Database anonymization"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Unstable"
#: field:ir.model.fields.anonymization.history,date:0
msgid "Date"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
msgid "Direction"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Exception occured"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "Not Existing"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_name:0
msgid "Object Name"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
#: view:ir.model.fields.anonymization.history:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
msgid "Anonymization History"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,model_name:0
msgid "Model"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
msgid "ir.model.fields.anonymization.history"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:358
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to do anything else."
msgid "Done"
msgstr ""
#. module: anonymization
@@ -255,9 +125,30 @@ msgid "Error !"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:0
msgid "Anonymize Database"
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Exception occured"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_export:0
msgid "Export"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
#: field:ir.model.fields.anonymization.migration.fix,field_name:0
msgid "Field"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:anonymization.view_ir_model_fields_anonymization_history_form
#: field:ir.model.fields.anonymization.history,field_ids:0
msgid "Fields"
msgstr ""
#. module: anonymization
@@ -266,29 +157,75 @@ msgid "File Name"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,sequence:0
msgid "Sequence"
#: field:ir.model.fields.anonymization.history,filepath:0
msgid "File path"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
#: field:ir.model.fields.anonymization,id:0
#: field:ir.model.fields.anonymization.history,id:0
#: field:ir.model.fields.anonymization.migration.fix,id:0
#: field:ir.model.fields.anonymize.wizard,id:0
msgid "ID"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
#: field:ir.model.fields.anonymize.wizard,file_import:0
msgid "Import"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:389
#: code:addons/anonymization/anonymization.py:533
#, python-format
msgid "The database is currently anonymized, you cannot anonymize it again."
msgid "It is not possible to reverse the anonymization process without supplying the anonymization export file."
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Done"
#: field:ir.model.fields.anonymization,write_uid:0
#: field:ir.model.fields.anonymization.history,write_uid:0
#: field:ir.model.fields.anonymization.migration.fix,write_uid:0
#: field:ir.model.fields.anonymize.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,write_date:0
#: field:ir.model.fields.anonymization.history,write_date:0
#: field:ir.model.fields.anonymization.migration.fix,write_date:0
#: field:ir.model.fields.anonymize.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:anonymization.view_ir_model_fields_anonymization_history_form
#: field:ir.model.fields.anonymization.history,msg:0
#: field:ir.model.fields.anonymize.wizard,msg:0
msgid "Message"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,model_name:0
msgid "Model"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "New"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
msgid "Not Existing"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_id:0
msgid "Object"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_name:0
msgid "Object Name"
msgstr ""
#. module: anonymization
@@ -298,10 +235,69 @@ msgid "Query"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,msg:0
#: field:ir.model.fields.anonymize.wizard,msg:0
msgid "Message"
#: view:ir.model.fields.anonymize.wizard:anonymization.view_ir_model_fields_anonymize_wizard_form
msgid "Reverse the Database Anonymization"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,sequence:0
msgid "Sequence"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "Status"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,summary:0
msgid "Summary"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,target_version:0
msgid "Target Version"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:91
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to create, write or delete fields."
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:358
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to do anything else."
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:391
#: code:addons/anonymization/anonymization.py:526
#, python-format
msgid "The database anonymization is currently in an unstable state. Some fields are anonymized, while some fields are not anonymized. You should try to solve this problem before trying to do anything."
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:389
#, python-format
msgid "The database is currently anonymized, you cannot anonymize it again."
msgstr ""
#. module: anonymization
#: help:ir.model.fields.anonymize.wizard,file_import:0
msgid "This is the file created by the anonymization process. It should have the '.pickle' extention."
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Unstable"
msgstr ""
#. module: anonymization
@@ -311,3 +307,28 @@ msgstr ""
msgid "You cannot have two fields with the same name on the same object!"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "python"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "sql"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,state:0
msgid "unknown"
msgstr ""
+1
View File
@@ -38,5 +38,6 @@ membership products (schemes).
'installable': True,
'auto_install': False,
'images': ['images/association1.jpeg'],
'website': 'https://www.odoo.com'
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -1
View File
@@ -23,7 +23,7 @@
'version': '1.1',
'author': ['OpenERP SA', 'FS3'],
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com',
'category': 'Tools',
'description': """
Ecrypted passwords
+4 -4
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auth_crypt
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
+1 -1
View File
@@ -93,7 +93,7 @@ allows pre-setting the default groups and menus of the first-time users.
user to a username that does not exist in LDAP, and setup its groups
the way you want.
""",
'website' : 'http://www.openerp.com',
'website' : 'https://www.odoo.com',
'category' : 'Authentication',
'data' : [
'users_ldap_view.xml',
+80 -60
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auth_ldap
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,24 +16,13 @@ msgstr ""
"Plural-Forms: \n"
#. module: auth_ldap
#: field:res.company.ldap,user:0
msgid "Template User"
#: help:res.company.ldap,create_user:0
msgid "Automatically create local user accounts for new users authenticating via LDAP"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,ldap_tls:0
msgid "Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail."
msgstr ""
#. module: auth_ldap
#: view:res.company:0
#: view:res.company.ldap:0
msgid "LDAP Configuration"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_binddn:0
msgid "LDAP binddn"
#: model:ir.model,name:auth_ldap.model_res_company
msgid "Companies"
msgstr ""
#. module: auth_ldap
@@ -41,6 +30,38 @@ msgstr ""
msgid "Company"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,create_user:0
msgid "Create user"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,create_uid:0
msgid "Created by"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,create_date:0
msgid "Created on"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,id:0
msgid "ID"
msgstr ""
#. module: auth_ldap
#: view:res.company:auth_ldap.company_form_view
#: view:res.company.ldap:auth_ldap.view_ldap_installer_form
msgid "LDAP Configuration"
msgstr ""
#. module: auth_ldap
#: view:res.company:auth_ldap.company_form_view
#: field:res.company,ldaps:0
msgid "LDAP Parameters"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_server:0
msgid "LDAP Server address"
@@ -51,19 +72,19 @@ msgstr ""
msgid "LDAP Server port"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,create_user:0
msgid "Automatically create local user accounts for new users authenticating via LDAP"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_base:0
msgid "LDAP base"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "User Information"
#: field:res.company.ldap,ldap_binddn:0
msgid "LDAP binddn"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_filter:0
msgid "LDAP filter"
msgstr ""
#. module: auth_ldap
@@ -72,28 +93,28 @@ msgid "LDAP password"
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company
msgid "Companies"
#: field:res.company.ldap,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:0
#: field:res.company.ldap,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:auth_ldap.view_ldap_installer_form
msgid "Login Information"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:auth_ldap.view_ldap_installer_form
msgid "Process Parameter"
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company_ldap
msgid "res.company.ldap"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,user:0
msgid "User to copy when creating new users"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_tls:0
msgid "Use TLS"
#: help:res.company.ldap,ldap_tls:0
msgid "Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail."
msgstr ""
#. module: auth_ldap
@@ -102,12 +123,7 @@ msgid "Sequence"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Login Information"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:0
#: view:res.company.ldap:auth_ldap.view_ldap_installer_form
msgid "Server Information"
msgstr ""
@@ -117,9 +133,8 @@ msgid "Setup your LDAP Server"
msgstr ""
#. module: auth_ldap
#: view:res.company:0
#: field:res.company,ldaps:0
msgid "LDAP Parameters"
#: field:res.company.ldap,user:0
msgid "Template User"
msgstr ""
#. module: auth_ldap
@@ -132,18 +147,23 @@ msgstr ""
msgid "The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously."
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_tls:0
msgid "Use TLS"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:auth_ldap.view_ldap_installer_form
msgid "User Information"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,user:0
msgid "User to copy when creating new users"
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_users
msgid "Users"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_filter:0
msgid "LDAP filter"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,create_user:0
msgid "Create user"
msgstr ""
+1 -1
View File
@@ -237,7 +237,7 @@ class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'ldaps': fields.one2many(
'res.company.ldap', 'company', 'LDAP Parameters', copy=True),
'res.company.ldap', 'company', 'LDAP Parameters', copy=True, groups="base.group_system"),
}
+1 -1
View File
@@ -30,7 +30,7 @@ Allow users to login through OAuth2 Provider.
""",
'author': 'OpenERP s.a.',
'maintainer': 'OpenERP s.a.',
'website': 'http://www.openerp.com',
'website': 'https://www.odoo.com',
'depends': ['base', 'web', 'base_setup', 'auth_signup'],
'data': [
'res_users.xml',
+1
View File
@@ -21,4 +21,5 @@ class auth_oauth_provider(osv.osv):
}
_defaults = {
'enabled' : False,
'css_class' : "zocial",
}
+147 -103
View File
@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auth_oauth
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0alpha\n"
"Project-Id-Version: Odoo Server 8.0rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-21 17:05+0000\n"
"POT-Creation-Date: 2014-08-14 13:08+0000\n"
"PO-Revision-Date: 2014-08-14 13:08+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,80 +16,9 @@ msgstr ""
"Plural-Forms: \n"
#. module: auth_oauth
#: field:auth.oauth.provider,validation_endpoint:0
msgid "Validation URL"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,auth_endpoint:0
msgid "Authentication URL"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_base_config_settings
msgid "base.config.settings"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,name:0
msgid "Provider name"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,scope:0
msgid "Scope"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_provider_id:0
msgid "OAuth Provider"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,css_class:0
msgid "CSS class"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,body:0
msgid "Body"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_res_users
msgid "Users"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,sequence:0
msgid "unknown"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_access_token:0
msgid "OAuth Access Token"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,client_id:0
#: field:base.config.settings,auth_oauth_facebook_client_id:0
#: field:base.config.settings,auth_oauth_google_client_id:0
msgid "Client ID"
msgstr ""
#. module: auth_oauth
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
msgid "OAuth Providers"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_uid:0
msgid "OAuth User ID"
#: code:addons/auth_oauth/controllers/main.py:99
#, python-format
msgid "Access Denied"
msgstr ""
#. module: auth_oauth
@@ -97,31 +26,6 @@ msgstr ""
msgid "Allow users to sign in with Facebook"
msgstr ""
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr ""
#. module: auth_oauth
#: help:res.users,oauth_uid:0
msgid "Oauth Provider user_id"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,data_endpoint:0
msgid "Data URL"
msgstr ""
#. module: auth_oauth
#: view:auth.oauth.provider:0
msgid "arch"
msgstr ""
#. module: auth_oauth
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
msgid "Providers"
msgstr ""
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_google_enabled:0
msgid "Allow users to sign in with Google"
@@ -132,3 +36,143 @@ msgstr ""
msgid "Allowed"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,auth_endpoint:0
msgid "Authentication URL"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,body:0
msgid "Body"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,css_class:0
msgid "CSS class"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,client_id:0
#: field:base.config.settings,auth_oauth_facebook_client_id:0
#: field:base.config.settings,auth_oauth_google_client_id:0
msgid "Client ID"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,create_uid:0
msgid "Created by"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,create_date:0
msgid "Created on"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,data_endpoint:0
msgid "Data URL"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,id:0
msgid "ID"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_access_token:0
msgid "OAuth Access Token"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_provider_id:0
msgid "OAuth Provider"
msgstr ""
#. module: auth_oauth
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
msgid "OAuth Providers"
msgstr ""
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr ""
#. module: auth_oauth
#: field:res.users,oauth_uid:0
msgid "OAuth User ID"
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr ""
#. module: auth_oauth
#: view:res.users:auth_oauth.view_users_form
msgid "Oauth"
msgstr ""
#. module: auth_oauth
#: help:res.users,oauth_uid:0
msgid "Oauth Provider user_id"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,name:0
msgid "Provider name"
msgstr ""
#. module: auth_oauth
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
msgid "Providers"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,scope:0
msgid "Scope"
msgstr ""
#. module: auth_oauth
#: code:addons/auth_oauth/controllers/main.py:97
#, python-format
msgid "Sign up is not allowed on this database."
msgstr ""
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_res_users
msgid "Users"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,validation_endpoint:0
msgid "Validation URL"
msgstr ""
#. module: auth_oauth
#: code:addons/auth_oauth/controllers/main.py:101
#, python-format
msgid "You do not have access to this database or your invitation has expired. Please ask for an invitation and be sure to follow the link in your invitation email."
msgstr ""
#. module: auth_oauth
#: view:auth.oauth.provider:auth_oauth.view_oauth_provider_form
#: view:auth.oauth.provider:auth_oauth.view_oauth_provider_list
msgid "arch"
msgstr ""
#. module: auth_oauth
#: field:auth.oauth.provider,sequence:0
msgid "unknown"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More