[MERGE]Latest trunk

bzr revid: dle@openerp.com-20121128164105-m3hgq38xw6ikewa5
This commit is contained in:
dle@openerp.com 2012-11-28 17:41:05 +01:00
commit 514952bdd3
5210 changed files with 1903639 additions and 1297490 deletions

View File

@ -641,8 +641,7 @@ class account_account(osv.osv):
return True return True
def _check_allow_type_change(self, cr, uid, ids, new_type, context=None): def _check_allow_type_change(self, cr, uid, ids, new_type, context=None):
group1 = ['payable', 'receivable', 'other'] restricted_groups = ['consolidation','view']
group2 = ['consolidation','view']
line_obj = self.pool.get('account.move.line') line_obj = self.pool.get('account.move.line')
for account in self.browse(cr, uid, ids, context=context): for account in self.browse(cr, uid, ids, context=context):
old_type = account.type old_type = account.type
@ -650,14 +649,25 @@ class account_account(osv.osv):
if line_obj.search(cr, uid, [('account_id', 'in', account_ids)]): if line_obj.search(cr, uid, [('account_id', 'in', account_ids)]):
#Check for 'Closed' type #Check for 'Closed' type
if old_type == 'closed' and new_type !='closed': if old_type == 'closed' and new_type !='closed':
raise osv.except_osv(_('Warning!'), _("You cannot change the type of account from 'Closed' to any other type which contains journal items!")) raise osv.except_osv(_('Warning !'), _("You cannot change the type of account from 'Closed' to any other type as it contains journal items!"))
#Check for change From group1 to group2 and vice versa # Forbid to change an account type for restricted_groups as it contains journal items (or if one of its children does)
if (old_type in group1 and new_type in group2) or (old_type in group2 and new_type in group1): if (new_type in restricted_groups):
raise osv.except_osv(_('Warning!'), _("You cannot change the type of account from '%s' to '%s' type as it contains journal items!") % (old_type,new_type,)) raise osv.except_osv(_('Warning !'), _("You cannot change the type of account to '%s' type as it contains journal items!") % (new_type,))
return True
# For legal reason (forbiden to modify journal entries which belongs to a closed fy or period), Forbid to modify
# the code of an account if journal entries have been already posted on this account. This cannot be simply
# 'configurable' since it can lead to a lack of confidence in OpenERP and this is what we want to change.
def _check_allow_code_change(self, cr, uid, ids, context=None):
line_obj = self.pool.get('account.move.line')
for account in self.browse(cr, uid, ids, context=context):
account_ids = self.search(cr, uid, [('id', 'child_of', [account.id])], context=context)
if line_obj.search(cr, uid, [('account_id', 'in', account_ids)], context=context):
raise osv.except_osv(_('Warning !'), _("You cannot change the code of account which contains journal items!"))
return True return True
def write(self, cr, uid, ids, vals, context=None): def write(self, cr, uid, ids, vals, context=None):
if context is None: if context is None:
context = {} context = {}
if not ids: if not ids:
@ -677,6 +687,8 @@ class account_account(osv.osv):
self._check_moves(cr, uid, ids, "write", context=context) self._check_moves(cr, uid, ids, "write", context=context)
if 'type' in vals.keys(): if 'type' in vals.keys():
self._check_allow_type_change(cr, uid, ids, vals['type'], context=context) self._check_allow_type_change(cr, uid, ids, vals['type'], context=context)
if 'code' in vals.keys():
self._check_allow_code_change(cr, uid, ids, context=context)
return super(account_account, self).write(cr, uid, ids, vals, context=context) return super(account_account, self).write(cr, uid, ids, vals, context=context)
def unlink(self, cr, uid, ids, context=None): def unlink(self, cr, uid, ids, context=None):
@ -1393,6 +1405,11 @@ class account_move(osv.osv):
raise osv.except_osv(_('User Error!'), raise osv.except_osv(_('User Error!'),
_('You cannot delete a posted journal entry "%s".') % \ _('You cannot delete a posted journal entry "%s".') % \
move['name']) move['name'])
for line in move.line_id:
if line.invoice:
raise osv.except_osv(_('User Error!'),
_("Move cannot be deleted if linked to an invoice. (Invoice: %s - Move ID:%s)") % \
(line.invoice.number,move.name))
line_ids = map(lambda x: x.id, move.line_id) line_ids = map(lambda x: x.id, move.line_id)
context['journal_id'] = move.journal_id.id context['journal_id'] = move.journal_id.id
context['period_id'] = move.period_id.id context['period_id'] = move.period_id.id
@ -1601,11 +1618,41 @@ class account_move_reconcile(osv.osv):
'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry Lines'), 'line_id': fields.one2many('account.move.line', 'reconcile_id', 'Entry Lines'),
'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'), 'line_partial_ids': fields.one2many('account.move.line', 'reconcile_partial_id', 'Partial Entry lines'),
'create_date': fields.date('Creation date', readonly=True), 'create_date': fields.date('Creation date', readonly=True),
'opening_reconciliation': fields.boolean('Opening Entries Reconciliation', help="Is this reconciliation produced by the opening of a new fiscal year ?."),
} }
_defaults = { _defaults = {
'name': lambda self,cr,uid,ctx=None: self.pool.get('ir.sequence').get(cr, uid, 'account.reconcile', context=ctx) or '/', 'name': lambda self,cr,uid,ctx=None: self.pool.get('ir.sequence').get(cr, uid, 'account.reconcile', context=ctx) or '/',
} }
# You cannot unlink a reconciliation if it is a opening_reconciliation one,
# you should use the generate opening entries wizard for that
def unlink(self, cr, uid, ids, context=None):
for move_rec in self.browse(cr, uid, ids, context=context):
if move_rec.opening_reconciliation:
raise osv.except_osv(_('Error!'), _('You cannot unreconcile journal items if they has been generated by the \
opening/closing fiscal year process.'))
return super(account_move_reconcile, self).unlink(cr, uid, ids, context=context)
# Look in the line_id and line_partial_ids to ensure the partner is the same or empty
# on all lines. We allow that only for opening/closing period
def _check_same_partner(self, cr, uid, ids, context=None):
for reconcile in self.browse(cr, uid, ids, context=context):
move_lines = []
if not reconcile.opening_reconciliation:
if reconcile.line_id:
first_partner = reconcile.line_id[0].partner_id.id
move_lines = reconcile.line_id
elif reconcile.line_partial_ids:
first_partner = reconcile.line_partial_ids[0].partner_id.id
move_lines = reconcile.line_partial_ids
if any([line.partner_id.id != first_partner for line in move_lines]):
return False
return True
_constraints = [
(_check_same_partner, 'You can only reconcile journal items with the same partner.', ['line_id']),
]
def reconcile_partial_check(self, cr, uid, ids, type='auto', context=None): def reconcile_partial_check(self, cr, uid, ids, type='auto', context=None):
total = 0.0 total = 0.0
for rec in self.browse(cr, uid, ids, context=context): for rec in self.browse(cr, uid, ids, context=context):

View File

@ -45,12 +45,12 @@ class bank(osv.osv):
def _prepare_name_get(self, cr, uid, bank_dicts, context=None): def _prepare_name_get(self, cr, uid, bank_dicts, context=None):
"""Add ability to have %(currency_name)s in the format_layout of res.partner.bank.type""" """Add ability to have %(currency_name)s in the format_layout of res.partner.bank.type"""
currency_ids = list(set(data['currency_id'][0] for data in bank_dicts if data['currency_id'])) currency_ids = list(set(data['currency_id'][0] for data in bank_dicts if data.get('currency_id')))
currencies = self.pool.get('res.currency').browse(cr, uid, currency_ids, context=context) currencies = self.pool.get('res.currency').browse(cr, uid, currency_ids, context=context)
currency_name = dict((currency.id, currency.name) for currency in currencies) currency_name = dict((currency.id, currency.name) for currency in currencies)
for data in bank_dicts: for data in bank_dicts:
data['currency_name'] = data['currency_id'] and currency_name[data['currency_id'][0]] or '' data['currency_name'] = data.get('currency_id') and currency_name[data['currency_id'][0]] or ''
return super(bank, self)._prepare_name_get(cr, uid, bank_dicts, context=context) return super(bank, self)._prepare_name_get(cr, uid, bank_dicts, context=context)
def post_write(self, cr, uid, ids, context=None): def post_write(self, cr, uid, ids, context=None):

View File

@ -311,7 +311,7 @@ class account_bank_statement(osv.osv):
'statement_id': st_line.statement_id.id, 'statement_id': st_line.statement_id.id,
'journal_id': st_line.statement_id.journal_id.id, 'journal_id': st_line.statement_id.journal_id.id,
'period_id': st_line.statement_id.period_id.id, 'period_id': st_line.statement_id.period_id.id,
'currency_id': cur_id, 'currency_id': amount_currency and cur_id,
'amount_currency': amount_currency, 'amount_currency': amount_currency,
'analytic_account_id': analytic_id, 'analytic_account_id': analytic_id,
} }

View File

@ -457,7 +457,7 @@ class account_invoice(osv.osv):
invoice_addr_id = res['invoice'] invoice_addr_id = res['invoice']
p = self.pool.get('res.partner').browse(cr, uid, partner_id) p = self.pool.get('res.partner').browse(cr, uid, partner_id)
if company_id: if company_id:
if p.property_account_receivable.company_id.id != company_id and p.property_account_payable.company_id.id != company_id: if (p.property_account_receivable.company_id and (p.property_account_receivable.company_id.id != company_id)) and (p.property_account_payable.company_id and (p.property_account_payable.company_id.id != company_id)):
property_obj = self.pool.get('ir.property') property_obj = self.pool.get('ir.property')
rec_pro_id = property_obj.search(cr,uid,[('name','=','property_account_receivable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)]) rec_pro_id = property_obj.search(cr,uid,[('name','=','property_account_receivable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)])
pay_pro_id = property_obj.search(cr,uid,[('name','=','property_account_payable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)]) pay_pro_id = property_obj.search(cr,uid,[('name','=','property_account_payable'),('res_id','=','res.partner,'+str(partner_id)+''),('company_id','=',company_id)])
@ -958,9 +958,14 @@ class account_invoice(osv.osv):
}) })
date = inv.date_invoice or time.strftime('%Y-%m-%d') date = inv.date_invoice or time.strftime('%Y-%m-%d')
part = inv.partner_id.id
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context=ctx)),iml) #if the chosen partner is not a company and has a parent company, use the parent for the journal entries
#because you want to invoice 'Agrolait, accounting department' but the journal items are for 'Agrolait'
part = inv.partner_id
if part.parent_id and not part.is_company:
part = part.parent_id
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part.id, date, context=ctx)),iml)
line = self.group_lines(cr, uid, iml, line, inv) line = self.group_lines(cr, uid, iml, line, inv)
@ -1068,8 +1073,9 @@ class account_invoice(osv.osv):
self.message_post(cr, uid, [inv_id], body=message, context=context) self.message_post(cr, uid, [inv_id], body=message, context=context)
return True return True
def action_cancel(self, cr, uid, ids, *args): def action_cancel(self, cr, uid, ids, context=None):
context = {} # TODO: Use context from arguments if context is None:
context = {}
account_move_obj = self.pool.get('account.move') account_move_obj = self.pool.get('account.move')
invoices = self.read(cr, uid, ids, ['move_id', 'payment_ids']) invoices = self.read(cr, uid, ids, ['move_id', 'payment_ids'])
move_ids = [] # ones that we will need to remove move_ids = [] # ones that we will need to remove
@ -1239,12 +1245,15 @@ class account_invoice(osv.osv):
ref = invoice.reference ref = invoice.reference
else: else:
ref = self._convert_ref(cr, uid, invoice.number) ref = self._convert_ref(cr, uid, invoice.number)
partner = invoice.partner_id
if partner.parent_id and not partner.is_company:
partner = partner.parent_id
# Pay attention to the sign for both debit/credit AND amount_currency # Pay attention to the sign for both debit/credit AND amount_currency
l1 = { l1 = {
'debit': direction * pay_amount>0 and direction * pay_amount, 'debit': direction * pay_amount>0 and direction * pay_amount,
'credit': direction * pay_amount<0 and - direction * pay_amount, 'credit': direction * pay_amount<0 and - direction * pay_amount,
'account_id': src_account_id, 'account_id': src_account_id,
'partner_id': invoice.partner_id.id, 'partner_id': partner.id,
'ref':ref, 'ref':ref,
'date': date, 'date': date,
'currency_id':currency_id, 'currency_id':currency_id,
@ -1255,7 +1264,7 @@ class account_invoice(osv.osv):
'debit': direction * pay_amount<0 and - direction * pay_amount, 'debit': direction * pay_amount<0 and - direction * pay_amount,
'credit': direction * pay_amount>0 and direction * pay_amount, 'credit': direction * pay_amount>0 and direction * pay_amount,
'account_id': pay_account_id, 'account_id': pay_account_id,
'partner_id': invoice.partner_id.id, 'partner_id': partner.id,
'ref':ref, 'ref':ref,
'date': date, 'date': date,
'currency_id':currency_id, 'currency_id':currency_id,

View File

@ -61,7 +61,7 @@
<group> <group>
<field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)" groups="account.group_account_user"/> <field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)" groups="account.group_account_user"/>
<field name="invoice_line_tax_id" context="{'type':parent.type}" domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]" widget="many2many_tags"/> <field name="invoice_line_tax_id" context="{'type':parent.type}" domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]" widget="many2many_tags"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/> <field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/> <field name="company_id" groups="base.group_multi_company" readonly="1"/>
</group> </group>
</group> </group>
@ -95,7 +95,7 @@
<field name="name"/> <field name="name"/>
<field name="sequence"/> <field name="sequence"/>
<field name="account_id" groups="account.group_account_user"/> <field name="account_id" groups="account.group_account_user"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/> <field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="manual"/> <field name="manual"/>
<field name="amount"/> <field name="amount"/>
<field name="base" readonly="0"/> <field name="base" readonly="0"/>
@ -199,7 +199,7 @@
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting" <field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/> domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
<field name="quantity"/> <field name="quantity"/>
<field name="uos_id" groups="product.group_uom" <field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
@ -229,7 +229,7 @@
<tree editable="bottom" string="Taxes"> <tree editable="bottom" string="Taxes">
<field name="name"/> <field name="name"/>
<field name="account_id" groups="account.group_account_invoice"/> <field name="account_id" groups="account.group_account_invoice"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/> <field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="base" on_change="base_change(base,parent.currency_id,parent.company_id,parent.date_invoice)" readonly="1"/> <field name="base" on_change="base_change(base,parent.currency_id,parent.company_id,parent.date_invoice)" readonly="1"/>
<field name="amount" on_change="amount_change(amount,parent.currency_id,parent.company_id,parent.date_invoice)"/> <field name="amount" on_change="amount_change(amount,parent.currency_id,parent.company_id,parent.date_invoice)"/>
@ -292,7 +292,7 @@
<form string="Invoice" version="7.0"> <form string="Invoice" version="7.0">
<header> <header>
<button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/> <button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/>
<button name="invoice_print" string="Print Invoice" type="object" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/> <button name="invoice_print" string="Print" type="object" attrs="{'invisible':['|',('sent','=',True), ('state', '!=', 'open')]}" class="oe_highlight" groups="base.group_user"/>
<button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/> <button name="action_invoice_sent" type="object" string="Send by Email" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/>
<button name="invoice_print" string="Print Invoice" type="object" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/> <button name="invoice_print" string="Print Invoice" type="object" attrs="{'invisible':['|',('sent','=',False), ('state', '!=', 'open')]}" groups="base.group_user"/>
<button name="invoice_open" states="draft" string="Validate" class="oe_highlight" groups="base.group_user"/> <button name="invoice_open" states="draft" string="Validate" class="oe_highlight" groups="base.group_user"/>
@ -354,7 +354,7 @@
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting" <field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/> domain="[('type','!=','view'), ('company_id', '=', parent.company_id)]"/>
<field name="quantity"/> <field name="quantity"/>
<field name="uos_id" groups="product.group_uom" <field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>

View File

@ -166,28 +166,35 @@ class account_move_line(osv.osv):
del data[f] del data[f]
return data return data
def _prepare_analytic_line(self, cr, uid, obj_line, context=None):
"""
Prepare the values given at the create() of account.analytic.line upon the validation of a journal item having
an analytic account. This method is intended to be extended in other modules.
:param obj_line: browse record of the account.move.line that triggered the analytic line creation
"""
return {'name': obj_line.name,
'date': obj_line.date,
'account_id': obj_line.analytic_account_id.id,
'unit_amount': obj_line.quantity,
'product_id': obj_line.product_id and obj_line.product_id.id or False,
'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False,
'amount': (obj_line.credit or 0.0) - (obj_line.debit or 0.0),
'general_account_id': obj_line.account_id.id,
'journal_id': obj_line.journal_id.analytic_journal_id.id,
'ref': obj_line.ref,
'move_id': obj_line.id,
'user_id': uid,
}
def create_analytic_lines(self, cr, uid, ids, context=None): def create_analytic_lines(self, cr, uid, ids, context=None):
acc_ana_line_obj = self.pool.get('account.analytic.line') acc_ana_line_obj = self.pool.get('account.analytic.line')
for obj_line in self.browse(cr, uid, ids, context=context): for obj_line in self.browse(cr, uid, ids, context=context):
if obj_line.analytic_account_id: if obj_line.analytic_account_id:
if not obj_line.journal_id.analytic_journal_id: if not obj_line.journal_id.analytic_journal_id:
raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, )) raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, ))
amt = (obj_line.credit or 0.0) - (obj_line.debit or 0.0) vals_line = self._prepare_analytic_line(cr, uid, obj_line, context=context)
vals_lines = { acc_ana_line_obj.create(cr, uid, vals_line)
'name': obj_line.name,
'date': obj_line.date,
'account_id': obj_line.analytic_account_id.id,
'unit_amount': obj_line.quantity,
'product_id': obj_line.product_id and obj_line.product_id.id or False,
'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False,
'amount': amt,
'general_account_id': obj_line.account_id.id,
'journal_id': obj_line.journal_id.analytic_journal_id.id,
'ref': obj_line.ref,
'move_id': obj_line.id,
'user_id': uid
}
acc_ana_line_obj.create(cr, uid, vals_lines)
return True return True
def _default_get_move_form_hook(self, cursor, user, data): def _default_get_move_form_hook(self, cursor, user, data):
@ -591,12 +598,34 @@ class account_move_line(osv.osv):
return False return False
return True return True
def _check_currency_and_amount(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if (l.amount_currency and not l.currency_id):
return False
return True
def _check_currency_amount(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if l.amount_currency:
if (l.amount_currency > 0.0 and l.credit > 0.0) or (l.amount_currency < 0.0 and l.debit > 0.0):
return False
return True
def _check_currency_company(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if l.currency_id.id == l.company_id.currency_id.id:
return False
return True
_constraints = [ _constraints = [
(_check_no_view, 'You cannot create journal items on an account of type view.', ['account_id']), (_check_no_view, 'You cannot create journal items on an account of type view.', ['account_id']),
(_check_no_closed, 'You cannot create journal items on closed account.', ['account_id']), (_check_no_closed, 'You cannot create journal items on closed account.', ['account_id']),
(_check_company_id, 'Account and Period must belong to the same company.', ['company_id']), (_check_company_id, 'Account and Period must belong to the same company.', ['company_id']),
(_check_date, 'The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal.', ['date']), (_check_date, 'The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal.', ['date']),
(_check_currency, 'The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal.', ['currency_id']), (_check_currency, 'The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal.', ['currency_id']),
(_check_currency_and_amount, "You cannot create journal items with a secondary currency without recording both 'currency' and 'amount currency' field.", ['currency_id','amount_currency']),
(_check_currency_amount, 'The amount expressed in the secondary currency must be positif when journal item are debit and negatif when journal item are credit.', ['amount_currency']),
(_check_currency_company, "You cannot provide a secondary currency if it is the same than the company one." , ['currency_id']),
] ]
#TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id #TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
@ -967,7 +996,7 @@ class account_move_line(osv.osv):
'has been confirmed.') % res[2]) 'has been confirmed.') % res[2])
return res return res
def _remove_move_reconcile(self, cr, uid, move_ids=None, context=None): def _remove_move_reconcile(self, cr, uid, move_ids=None, opening_reconciliation=False, context=None):
# Function remove move rencocile ids related with moves # Function remove move rencocile ids related with moves
obj_move_line = self.pool.get('account.move.line') obj_move_line = self.pool.get('account.move.line')
obj_move_rec = self.pool.get('account.move.reconcile') obj_move_rec = self.pool.get('account.move.reconcile')
@ -982,6 +1011,8 @@ class account_move_line(osv.osv):
unlink_ids += rec_ids unlink_ids += rec_ids
unlink_ids += part_rec_ids unlink_ids += part_rec_ids
if unlink_ids: if unlink_ids:
if opening_reconciliation:
obj_move_rec.write(cr, uid, unlink_ids, {'opening_reconciliation': False})
obj_move_rec.unlink(cr, uid, unlink_ids) obj_move_rec.unlink(cr, uid, unlink_ids)
return True return True

View File

@ -1139,6 +1139,7 @@
<field name="model">account.move.line</field> <field name="model">account.move.line</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="Search Journal Items"> <search string="Search Journal Items">
<field name="name" filter_domain="['|', ('name','ilike',self), ('ref','ilike',self)]" string="Move"/>
<field name="date"/> <field name="date"/>
<filter icon="terp-document-new" string="Unbalanced" domain="[('state','=','draft')]" help="Unbalanced Journal Items"/> <filter icon="terp-document-new" string="Unbalanced" domain="[('state','=','draft')]" help="Unbalanced Journal Items"/>
<separator/> <separator/>
@ -1557,8 +1558,8 @@
<field name="search_view_id" ref="view_model_search"/> <field name="search_view_id" ref="view_model_search"/>
</record> </record>
<menuitem <menuitem
action="action_model_form" id="menu_action_model_form" sequence="5" action="action_model_form" name="Models" id="menu_action_model_form" sequence="5"
parent="account.menu_configuration_misc"/> parent="account.menu_finance_recurrent_entries"/>
<!-- Payment Terms --> <!-- Payment Terms -->
<record id="view_payment_term_line_tree" model="ir.ui.view"> <record id="view_payment_term_line_tree" model="ir.ui.view">
@ -1808,7 +1809,7 @@
<menuitem <menuitem
id="account_template_folder" id="account_template_folder"
name="Templates" name="Templates"
parent="menu_finance_accounting" parent="account_account_menu"
groups="account.group_account_manager"/> groups="account.group_account_manager"/>
<menuitem <menuitem
id="account_template_taxes" id="account_template_taxes"
@ -1826,28 +1827,23 @@
<field name="model">account.account.template</field> <field name="model">account.account.template</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Account Template" version="7.0"> <form string="Account Template" version="7.0">
<notebook> <group col="4">
<page string="General Information"> <field name="name"/>
<group col="4"> <field name="code"/>
<field name="name"/> <newline/>
<field name="code"/> <field name="parent_id"/>
<newline/> <field name="shortcut"/>
<field name="parent_id"/> <field name="type"/>
<field name="shortcut"/> <field name="user_type"/>
<field name="type"/>
<field name="user_type"/>
<field name="currency_id" groups="base.group_multi_currency"/> <field name="currency_id" groups="base.group_multi_currency"/>
<field name="reconcile"/> <field name="reconcile"/>
<field name="chart_template_id"/> <field name="chart_template_id"/>
</group> </group>
<separator string="Default Taxes"/> <separator string="Default Taxes"/>
<field name="tax_ids"/> <field name="tax_ids"/>
</page> <separator string="Notes"/>
<page string="Notes"> <field name="note" placeholder="Internal notes..."/>
<field name="note"/>
</page>
</notebook>
</form> </form>
</field> </field>
</record> </record>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@
<field name="inherit_id" ref="product.product_normal_form_view"/> <field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<notebook position="inside"> <notebook position="inside">
<page string="Accounting" groups="account.group_account_user"> <page string="Accounting" groups="account.group_account_invoice">
<group name="properties"> <group name="properties">
<group> <group>
<field name="property_account_income" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" attrs="{'readonly':[('sale_ok','=',0)]}"/> <field name="property_account_income" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" groups="account.group_account_user"/>
<field name="taxes_id" colspan="2" attrs="{'readonly':[('sale_ok','=',0)]}" widget="many2many_tags"/> <field name="taxes_id" colspan="2" attrs="{'readonly':[('sale_ok','=',0)]}" widget="many2many_tags"/>
</group> </group>
<group> <group>
<field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" /> <field name="property_account_expense" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]" groups="account.group_account_user"/>
<field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/> <field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/>
</group> </group>
</group> </group>

View File

@ -103,6 +103,6 @@ class journal_print(report_sxw.rml_parse, common_report_header):
return True return True
return data['form']['amount_currency'] return data['form']['amount_currency']
report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='internal') report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='external')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -102,11 +102,11 @@ class account_invoice_report(osv.osv):
'due_delay': fields.float('Avg. Due Delay', readonly=True, group_operator="avg"), 'due_delay': fields.float('Avg. Due Delay', readonly=True, group_operator="avg"),
} }
_order = 'date desc' _order = 'date desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'account_invoice_report')
cr.execute(""" def _select(self):
create or replace view account_invoice_report as ( select_str = """
select min(ail.id) as id, SELECT min(ail.id) as id,
ai.date_invoice as date, ai.date_invoice as date,
to_char(ai.date_invoice, 'YYYY') as year, to_char(ai.date_invoice, 'YYYY') as year,
to_char(ai.date_invoice, 'MM') as month, to_char(ai.date_invoice, 'MM') as month,
@ -183,15 +183,30 @@ class account_invoice_report(osv.osv):
where a.id=ai.id) where a.id=ai.id)
ELSE 1 ELSE 1
END) / cr.rate as residual END) / cr.rate as residual
from account_invoice_line as ail """
return select_str
def _where(self):
where_str = """
WHERE cr.id in (select id from res_currency_rate cr2 where (cr2.currency_id = ai.currency_id)
and ((ai.date_invoice is not null and cr.name <= ai.date_invoice) or (ai.date_invoice is null and cr.name <= NOW())) order by name desc limit 1)
"""
return where_str
def _from(self):
from_str = """
FROM account_invoice_line as ail
left join account_invoice as ai ON (ai.id=ail.invoice_id) left join account_invoice as ai ON (ai.id=ail.invoice_id)
left join product_product pr on (pr.id=ail.product_id) left join product_product pr on (pr.id=ail.product_id)
left join product_template pt on (pt.id=pr.product_tmpl_id) left join product_template pt on (pt.id=pr.product_tmpl_id)
left join product_uom u on (u.id=ail.uos_id), left join product_uom u on (u.id=ail.uos_id),
res_currency_rate cr res_currency_rate cr
where cr.id in (select id from res_currency_rate cr2 where (cr2.currency_id = ai.currency_id) """
and ((ai.date_invoice is not null and cr.name <= ai.date_invoice) or (ai.date_invoice is null and cr.name <= NOW())) order by name desc limit 1) return from_str
group by ail.product_id,
def _group_by(self):
group_by_str = """
GROUP BY ail.product_id,
ai.date_invoice, ai.date_invoice,
ai.id, ai.id,
cr.rate, cr.rate,
@ -218,8 +233,15 @@ class account_invoice_report(osv.osv):
ai.amount_total, ai.amount_total,
u.uom_type, u.uom_type,
u.category_id u.category_id
) """
""") return group_by_str
def init(self, cr):
# self._table = account_invoice_report
tools.drop_view_if_exists(cr, self._table)
cr.execute("CREATE or REPLACE VIEW %s as (%s %s %s %s)" % (
self._table,
self._select(), self._from(), self._where(), self._group_by()))
account_invoice_report() account_invoice_report()

View File

@ -195,7 +195,7 @@ class journal_print(report_sxw.rml_parse, common_report_header):
return 'Reference Number' return 'Reference Number'
return 'Date' return 'Date'
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='internal') report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='external')
report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='internal') report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='external')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -30,10 +30,9 @@
- -
!python {model: account.move.line}: | !python {model: account.move.line}: |
import time import time
date = self._get_date(cr, uid, {'lang': u'en_US', 'normal_view': False, 'active_model': 'ir.ui.menu', date = self._get_date(cr, uid, {
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'journal_id': 1, 'view_mode': False, 'journal_id': 1,
'visible_id': 1, 'period_id': 6, 'tz': False, 'active_ids': [ref('action_account_moves_all_a')], 'period_id': 6,})
'search_default_posted': 0, 'active_id': ref('action_account_moves_all_a')})
partner = self.onchange_partner_id(cr, uid, [], False, ref('base.res_partner_12'), ref('account.cash'), debit=0, credit=2000, date=date, journal=False) partner = self.onchange_partner_id(cr, uid, [], False, ref('base.res_partner_12'), ref('account.cash'), debit=0, credit=2000, date=date, journal=False)
account = self.onchange_account_id(cr, uid, [], account_id=ref('account.a_recv'), partner_id= ref('base.res_partner_12')) account = self.onchange_account_id(cr, uid, [], account_id=ref('account.a_recv'), partner_id= ref('base.res_partner_12'))
vals = { vals = {
@ -62,11 +61,10 @@
!python {model: account.move.line}: | !python {model: account.move.line}: |
ids = self._balance_search(cr, uid, self, 'balance', [('balance', '=', 2000.0)], None, {'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu', ids = self._balance_search(cr, uid, self, 'balance', [('balance', '=', 2000.0)], None, {'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False, 'visible_id': 1, 'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False, 'visible_id': 1,
'active_ids': [ref('action_account_moves_all_a')], 'search_default_posted': 0, 'active_id': ref('action_account_moves_all_a')}) 'search_default_posted': 0})
bal = self._balance(cr, uid, ids[0][2], 'balance', None,{'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu', bal = self._balance(cr, uid, ids[0][2], 'balance', None,{'lang': u'en_US', 'tz': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False, 'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False,
'visible_id': 1, 'active_ids': [ref('action_account_moves_all_a')], 'search_default_posted': 0, 'visible_id': 1, 'search_default_posted': 0})
'active_id': ref('action_account_moves_all_a')})
assert bal, 'Balance has not been computed correctly' assert bal, 'Balance has not been computed correctly'
- -
I check that Initially account move state is "Draft" I check that Initially account move state is "Draft"

View File

@ -56,6 +56,9 @@
<field name="reconciled"/> <field name="reconciled"/>
<field name="unreconciled"/> <field name="unreconciled"/>
</group> </group>
<footer>
<button string="Close" class="oe_highlight" special="cancel"/>
</footer>
</form> </form>
</field> </field>
</record> </record>

View File

@ -60,7 +60,7 @@ class account_fiscalyear_close(osv.osv_memory):
cr.execute('select distinct(company_id) from account_move_line where id in %s',(tuple(ids),)) cr.execute('select distinct(company_id) from account_move_line where id in %s',(tuple(ids),))
if len(cr.fetchall()) > 1: if len(cr.fetchall()) > 1:
raise osv.except_osv(_('Warning!'), _('The entries to reconcile should belong to the same company.')) raise osv.except_osv(_('Warning!'), _('The entries to reconcile should belong to the same company.'))
r_id = self.pool.get('account.move.reconcile').create(cr, uid, {'type': 'auto'}) r_id = self.pool.get('account.move.reconcile').create(cr, uid, {'type': 'auto', 'opening_reconciliation': True})
cr.execute('update account_move_line set reconcile_id = %s where id in %s',(r_id, tuple(ids),)) cr.execute('update account_move_line set reconcile_id = %s where id in %s',(r_id, tuple(ids),))
return r_id return r_id
@ -107,7 +107,7 @@ class account_fiscalyear_close(osv.osv_memory):
('journal_id', '=', new_journal.id), ('period_id', '=', period.id)]) ('journal_id', '=', new_journal.id), ('period_id', '=', period.id)])
if move_ids: if move_ids:
move_line_ids = obj_acc_move_line.search(cr, uid, [('move_id', 'in', move_ids)]) move_line_ids = obj_acc_move_line.search(cr, uid, [('move_id', 'in', move_ids)])
obj_acc_move_line._remove_move_reconcile(cr, uid, move_line_ids, context=context) obj_acc_move_line._remove_move_reconcile(cr, uid, move_line_ids, opening_reconciliation=True, context=context)
obj_acc_move_line.unlink(cr, uid, move_line_ids, context=context) obj_acc_move_line.unlink(cr, uid, move_line_ids, context=context)
obj_acc_move.unlink(cr, uid, move_ids, context=context) obj_acc_move.unlink(cr, uid, move_ids, context=context)

View File

@ -12,51 +12,5 @@
</field> </field>
</record> </record>
<record id="action_account_moves_sale" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'sale','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a customer invoice, select the journal and the period in the search toolbar. Then, start by recording the entry line of the income account. OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account receivable".</field>
</record>
<menuitem action="action_account_moves_sale" sequence="16" id="menu_eaction_account_moves_sale"
parent="menu_finance_receivables" icon="STOCK_JUSTIFY_FILL" groups="group_account_user,group_account_manager"/>
<record id="action_account_moves_purchase" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'purchase','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a supplier invoice, start by recording the line of the expense account, OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account Payable".</field>
</record>
<menuitem action="action_account_moves_purchase"
id="menu_eaction_account_moves_purchase"
parent="menu_finance_payables"
icon="STOCK_JUSTIFY_FILL"
sequence="16"
groups="group_account_user,group_account_manager"/>
<record id="action_account_moves_bank" model="ir.actions.act_window">
<field name="name">Journal Items</field>
<field name="res_model">account.move.journal</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_account_move_journal_form"/>
<field name="context">{'journal_type':'bank','view_mode':False}</field>
<field name="target">new</field>
<field name="help">This view is used by accountants in order to record entries massively in OpenERP. Journal items are created by OpenERP if you use Bank Statements, Cash Registers, or Customer/Supplier payments.</field>
</record>
<menuitem
action="action_account_moves_bank"
icon="STOCK_JUSTIFY_FILL"
id="menu_action_account_moves_bank"
parent="account.menu_finance_bank_and_cash"
sequence="16"
groups="group_account_user,group_account_manager"
/>
</data> </data>
</openerp> </openerp>

View File

@ -19,18 +19,6 @@
</field> </field>
</record> </record>
<record id="action_view_account_use_model" model="ir.actions.act_window">
<field name="name">Manual Recurring</field>
<field name="res_model">account.use.model</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_account_use_model"/>
<field name="target">new</field>
<field name="context">{'model_line':'model_line'}</field>
</record>
<menuitem name="Manual Recurring" action="action_view_account_use_model" id="menu_action_manual_recurring" sequence="10" parent="account.menu_finance_recurrent_entries"/>
<record id="view_account_use_model_create_entry" model="ir.ui.view"> <record id="view_account_use_model_create_entry" model="ir.ui.view">
<field name="name">account.use.model.create.entry.form</field> <field name="name">account.use.model.create.entry.form</field>
<field name="model">account.use.model</field> <field name="model">account.use.model</field>

View File

@ -1,19 +1,22 @@
# Translations template for PROJECT. # Translation of OpenERP Server.
# Copyright (C) 2012 ORGANIZATION # This file contains the translation of the following modules:
# This file is distributed under the same license as the PROJECT project. # * account_accountant
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: OpenERP Server 7.0alpha\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2012-11-24 02:51+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: <>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: \n"
"Generated-By: Babel 0.9.6\n" "Plural-Forms: \n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-18 21:27+0000\n" "PO-Revision-Date: 2011-01-18 21:27+0000\n"
"Last-Translator: bamuhrez <bamuhrez@gmail.com>\n" "Last-Translator: bamuhrez <bamuhrez@gmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n" "Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "محاسب" #~ msgstr "محاسب"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-12-06 05:22+0000\n" "PO-Revision-Date: 2011-12-06 05:22+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Azerbaijani <az@li.org>\n" "Language-Team: Azerbaijani <az@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-31 13:18+0000\n" "PO-Revision-Date: 2011-01-31 13:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian <bg@li.org>\n" "Language-Team: Bulgarian <bg@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "Счетоводител" #~ msgstr "Счетоводител"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-11-21 12:33+0000\n" "PO-Revision-Date: 2011-11-21 12:33+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bengali <bn@li.org>\n" "Language-Team: Bengali <bn@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-05-08 08:24+0000\n" "PO-Revision-Date: 2011-05-08 08:24+0000\n"
"Last-Translator: Bojan Markovic <Unknown>\n" "Last-Translator: Bojan Markovic <Unknown>\n"
"Language-Team: Bosnian <bs@li.org>\n" "Language-Team: Bosnian <bs@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-03-06 23:13+0000\n" "PO-Revision-Date: 2011-03-06 23:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@li.org>\n" "Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "Comptable" #~ msgstr "Comptable"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-26 09:46+0000\n" "PO-Revision-Date: 2011-01-26 09:46+0000\n"
"Last-Translator: Pavel Stejskal <Unknown>\n" "Last-Translator: Pavel Stejskal <Unknown>\n"
"Language-Team: Czech <cs@li.org>\n" "Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "účetní" #~ msgstr "účetní"

View File

@ -7,15 +7,20 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-11-08 10:35+0000\n" "PO-Revision-Date: 2011-11-08 10:35+0000\n"
"Last-Translator: OpenERP Danmark / Mikhael Saxtorph <Unknown>\n" "Last-Translator: OpenERP Danmark / Mikhael Saxtorph <Unknown>\n"
"Language-Team: Danish <da@li.org>\n" "Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "Bogholder" #~ msgstr "Bogholder"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n" "POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2010-12-25 19:02+0000\n" "PO-Revision-Date: 2010-12-25 19:02+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-" "Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n" "consulting.net>\n"
@ -15,8 +15,13 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-30 05:32+0000\n" "X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16206)\n" "X-Generator: Launchpad (build 16293)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
#~ msgid "Accountant" #~ msgid "Accountant"
#~ msgstr "Finanzbuchhaltung Administrator" #~ msgstr "Finanzbuchhaltung Administrator"

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