[MERGE] Sync with trunk.

bzr revid: tde@openerp.com-20121203093454-lf21qlsuse1ve8ro
This commit is contained in:
Thibault Delavallée 2012-12-03 10:34:54 +01:00
commit c3a3492848
419 changed files with 28135 additions and 6503 deletions

View File

@ -73,7 +73,6 @@ for a particular financial year and for preparation of vouchers there is a modul
'wizard/account_fiscalyear_close_state.xml',
'wizard/account_chart_view.xml',
'wizard/account_tax_chart_view.xml',
'wizard/account_move_journal_view.xml',
'wizard/account_move_line_reconcile_select_view.xml',
'wizard/account_open_closed_fiscalyear_view.xml',
'wizard/account_move_line_unreconcile_select_view.xml',
@ -128,9 +127,11 @@ for a particular financial year and for preparation of vouchers there is a modul
],
'js': [
'static/src/js/account_move_reconciliation.js',
'static/src/js/account_move_line_quickadd.js',
],
'qweb' : [
"static/src/xml/account_move_reconciliation.xml",
"static/src/xml/account_move_line_quickadd.xml",
],
'css':['static/src/css/account_move_reconciliation.css'
],

View File

@ -641,8 +641,7 @@ class account_account(osv.osv):
return True
def _check_allow_type_change(self, cr, uid, ids, new_type, context=None):
group1 = ['payable', 'receivable', 'other']
group2 = ['consolidation','view']
restricted_groups = ['consolidation','view']
line_obj = self.pool.get('account.move.line')
for account in self.browse(cr, uid, ids, context=context):
old_type = account.type
@ -650,14 +649,25 @@ class account_account(osv.osv):
if line_obj.search(cr, uid, [('account_id', 'in', account_ids)]):
#Check for 'Closed' type
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!"))
#Check for change From group1 to group2 and vice versa
if (old_type in group1 and new_type in group2) or (old_type in group2 and new_type in group1):
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 from 'Closed' to any other type as it contains journal items!"))
# Forbid to change an account type for restricted_groups as it contains journal items (or if one of its children does)
if (new_type in restricted_groups):
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
def write(self, cr, uid, ids, vals, context=None):
if context is None:
context = {}
if not ids:
@ -677,6 +687,8 @@ class account_account(osv.osv):
self._check_moves(cr, uid, ids, "write", context=context)
if 'type' in vals.keys():
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)
def unlink(self, cr, uid, ids, context=None):
@ -685,44 +697,6 @@ class account_account(osv.osv):
account_account()
class account_journal_view(osv.osv):
_name = "account.journal.view"
_description = "Journal View"
_columns = {
'name': fields.char('Journal View', size=64, required=True, translate=True),
'columns_id': fields.one2many('account.journal.column', 'view_id', 'Columns')
}
_order = "name"
account_journal_view()
class account_journal_column(osv.osv):
def _col_get(self, cr, user, context=None):
result = []
cols = self.pool.get('account.move.line')._columns
for col in cols:
if col in ('period_id', 'journal_id'):
continue
result.append( (col, cols[col].string) )
result.sort()
return result
_name = "account.journal.column"
_description = "Journal Column"
_columns = {
'name': fields.char('Column Name', size=64, required=True),
'field': fields.selection(_col_get, 'Field Name', required=True, size=32),
'view_id': fields.many2one('account.journal.view', 'Journal View', select=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order to journal column.", readonly=True),
'required': fields.boolean('Required'),
'readonly': fields.boolean('Readonly'),
}
_order = "view_id, sequence"
account_journal_column()
class account_journal(osv.osv):
_name = "account.journal"
_description = "Journal"
@ -738,7 +712,6 @@ class account_journal(osv.osv):
" Select 'Opening/Closing Situation' for entries generated for new fiscal years."),
'type_control_ids': fields.many2many('account.account.type', 'account_journal_type_rel', 'journal_id','type_id', 'Type Controls', domain=[('code','<>','view'), ('code', '<>', 'closed')]),
'account_control_ids': fields.many2many('account.account', 'account_account_type_rel', 'journal_id','account_id', 'Account', domain=[('type','<>','view'), ('type', '<>', 'closed')]),
'view_id': fields.many2one('account.journal.view', 'Display Mode', required=True, help="Gives the view used when writing or browsing entries in this journal. The view tells OpenERP which fields should be visible, required or readonly and in which order. You can create your own view for a faster encoding in each journal."),
'default_credit_account_id': fields.many2one('account.account', 'Default Credit Account', domain="[('type','!=','view')]", help="It acts as a default account for credit amount"),
'default_debit_account_id': fields.many2one('account.account', 'Default Debit Account', domain="[('type','!=','view')]", help="It acts as a default account for debit amount"),
'centralisation': fields.boolean('Centralised Counterpart', help="Check this box to determine that each entry of this journal won't create a new counterpart but will share the same counterpart. This is used in fiscal year closing."),
@ -874,37 +847,6 @@ class account_journal(osv.osv):
return self.name_get(cr, user, ids, context=context)
def onchange_type(self, cr, uid, ids, type, currency, context=None):
obj_data = self.pool.get('ir.model.data')
user_pool = self.pool.get('res.users')
type_map = {
'sale':'account_sp_journal_view',
'sale_refund':'account_sp_refund_journal_view',
'purchase':'account_sp_journal_view',
'purchase_refund':'account_sp_refund_journal_view',
'cash':'account_journal_bank_view',
'bank':'account_journal_bank_view',
'general':'account_journal_view',
'situation':'account_journal_view'
}
res = {}
view_id = type_map.get(type, 'account_journal_view')
user = user_pool.browse(cr, uid, uid)
if type in ('cash', 'bank') and currency and user.company_id.currency_id.id != currency:
view_id = 'account_journal_bank_view_multi'
data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=',view_id)])
data = obj_data.browse(cr, uid, data_id[0], context=context)
res.update({
'centralisation':type == 'situation',
'view_id':data.res_id,
})
return {
'value':res
}
account_journal()
class account_fiscalyear(osv.osv):
@ -1384,13 +1326,6 @@ class account_move(osv.osv):
'WHERE id IN %s', ('draft', tuple(ids),))
return True
def onchange_line_id(self, cr, uid, ids, line_ids, context=None):
balance = 0.0
for line in line_ids:
if line[2]:
balance += (line[2].get('debit',0.00)- (line[2].get('credit',0.00)))
return {'value': {'balance': balance}}
def write(self, cr, uid, ids, vals, context=None):
if context is None:
context = {}
@ -1439,9 +1374,9 @@ class account_move(osv.osv):
if 'line_id' in vals:
c = context.copy()
c['novalidate'] = True
c['period_id'] = vals['period_id']
c['period_id'] = vals['period_id'] if 'period_id' in vals else self._get_period(cr, uid, context)
c['journal_id'] = vals['journal_id']
c['date'] = vals['date']
if 'date' in vals: c['date'] = vals['date']
result = super(account_move, self).create(cr, uid, vals, c)
self.validate(cr, uid, [result], context)
else:
@ -1470,6 +1405,11 @@ class account_move(osv.osv):
raise osv.except_osv(_('User Error!'),
_('You cannot delete a posted journal entry "%s".') % \
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)
context['journal_id'] = move.journal_id.id
context['period_id'] = move.period_id.id
@ -1678,11 +1618,41 @@ class account_move_reconcile(osv.osv):
'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'),
'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 = {
'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):
total = 0.0
for rec in self.browse(cr, uid, ids, context=context):
@ -3161,16 +3131,6 @@ class wizard_multi_charts_accounts(osv.osv_memory):
default_account = acc_template_ref.get(template.property_account_income_opening.id)
return default_account
def _get_view_id(journal_type):
# Get the journal views
if journal_type in ('general', 'situation'):
data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_view')
elif journal_type in ('sale_refund', 'purchase_refund'):
data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_refund_journal_view')
else:
data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_journal_view')
return data and data[1] or False
journal_names = {
'sale': _('Sales Journal'),
'purchase': _('Purchase Journal'),
@ -3200,7 +3160,6 @@ class wizard_multi_charts_accounts(osv.osv_memory):
'code': journal_codes[journal_type],
'company_id': company_id,
'centralisation': journal_type == 'situation',
'view_id': _get_view_id(journal_type),
'analytic_journal_id': _get_analytic_journal(journal_type),
'default_credit_account_id': _get_default_account(journal_type, 'credit'),
'default_debit_account_id': _get_default_account(journal_type, 'debit'),
@ -3417,11 +3376,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
'''
obj_data = self.pool.get('ir.model.data')
obj_journal = self.pool.get('account.journal')
# Get the id of journal views
tmp = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view_multi')
view_id_cur = tmp and tmp[1] or False
tmp = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view')
view_id_cash = tmp and tmp[1] or False
# we need to loop again to find next number for journal code
# because we can't rely on the value current_num as,
@ -3447,10 +3402,8 @@ class wizard_multi_charts_accounts(osv.osv_memory):
'default_debit_account_id': default_account_id,
}
if line['currency_id']:
vals['view_id'] = view_id_cur
vals['currency'] = line['currency_id']
else:
vals['view_id'] = view_id_cash
return vals
def _prepare_bank_account(self, cr, uid, line, new_code, acc_template_ref, ref_acc_bank, company_id, context=None):

View File

@ -89,11 +89,6 @@ class bank(osv.osv):
}
acc_bank_id = obj_acc.create(cr,uid,acc,context=context)
# Get the journal view id
data_id = obj_data.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view')])
data = obj_data.browse(cr, uid, data_id[0], context=context)
view_id_cash = data.res_id
jour_obj = self.pool.get('account.journal')
new_code = 1
while True:
@ -112,7 +107,6 @@ class bank(osv.osv):
'analytic_journal_id': False,
'default_credit_account_id': acc_bank_id,
'default_debit_account_id': acc_bank_id,
'view_id': view_id_cash
}
journal_id = jour_obj.create(cr, uid, vals_journal, context=context)

View File

@ -311,7 +311,7 @@ class account_bank_statement(osv.osv):
'statement_id': st_line.statement_id.id,
'journal_id': st_line.statement_id.journal_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,
'analytic_account_id': analytic_id,
}

View File

@ -522,11 +522,11 @@ class account_invoice(osv.osv):
return result
def onchange_payment_term_date_invoice(self, cr, uid, ids, payment_term_id, date_invoice):
res = {}
if not payment_term_id:
return res
res = {}
if not date_invoice:
date_invoice = time.strftime('%Y-%m-%d')
if not payment_term_id:
return {'value':{'date_due': date_invoice}} #To make sure the invoice has a due date when no payment term
pterm_list = self.pool.get('account.payment.term').compute(cr, uid, payment_term_id, value=1, date_ref=date_invoice)
if pterm_list:
pterm_list = [line[0] for line in pterm_list]
@ -1071,8 +1071,9 @@ class account_invoice(osv.osv):
self.message_post(cr, uid, [inv_id], body=message, subtype="account.mt_invoice_validated", context=context)
return True
def action_cancel(self, cr, uid, ids, *args):
context = {} # TODO: Use context from arguments
def action_cancel(self, cr, uid, ids, context=None):
if context is None:
context = {}
account_move_obj = self.pool.get('account.move')
invoices = self.read(cr, uid, ids, ['move_id', 'payment_ids'])
move_ids = [] # ones that we will need to remove
@ -1242,12 +1243,15 @@ class account_invoice(osv.osv):
ref = invoice.reference
else:
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
l1 = {
'debit': direction * pay_amount>0 and direction * pay_amount,
'credit': direction * pay_amount<0 and - direction * pay_amount,
'account_id': src_account_id,
'partner_id': invoice.partner_id.id,
'partner_id': partner.id,
'ref':ref,
'date': date,
'currency_id':currency_id,
@ -1258,7 +1262,7 @@ class account_invoice(osv.osv):
'debit': direction * pay_amount<0 and - direction * pay_amount,
'credit': direction * pay_amount>0 and direction * pay_amount,
'account_id': pay_account_id,
'partner_id': invoice.partner_id.id,
'partner_id': partner.id,
'ref':ref,
'date': date,
'currency_id':currency_id,
@ -1370,8 +1374,8 @@ class account_invoice_line(osv.osv):
'origin': fields.char('Source Document', size=256, help="Reference of the document that produced this invoice."),
'sequence': fields.integer('Sequence', help="Gives the sequence of this line when displaying the invoice."),
'invoice_id': fields.many2one('account.invoice', 'Invoice Reference', ondelete='cascade', select=True),
'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null'),
'product_id': fields.many2one('product.product', 'Product', ondelete='set null'),
'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null', select=True),
'product_id': fields.many2one('product.product', 'Product', ondelete='set null', select=True),
'account_id': fields.many2one('account.account', 'Account', required=True, domain=[('type','<>','view'), ('type', '<>', 'closed')], help="The income or expense account related to the selected product."),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Product Price')),
'price_subtotal': fields.function(_amount_line, string='Subtotal', type="float",

View File

@ -435,7 +435,7 @@
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="message_ids" widget="mail_thread" placeholder="Share a note..."/>
</div>
</form>

View File

@ -220,12 +220,11 @@ class account_move_line(osv.osv):
return context
def _default_get(self, cr, uid, fields, context=None):
#default_get should only do the following:
# -propose the next amount in debit/credit in order to balance the move
# -propose the next account from the journal (default debit/credit account) accordingly
if context is None:
context = {}
if not context.get('journal_id', False):
context['journal_id'] = context.get('search_default_journal_id')
if not context.get('period_id', False):
context['period_id'] = context.get('search_default_period_id')
account_obj = self.pool.get('account.account')
period_obj = self.pool.get('account.period')
journal_obj = self.pool.get('account.journal')
@ -234,134 +233,71 @@ class account_move_line(osv.osv):
fiscal_pos_obj = self.pool.get('account.fiscal.position')
partner_obj = self.pool.get('res.partner')
currency_obj = self.pool.get('res.currency')
if not context.get('journal_id', False):
context['journal_id'] = context.get('search_default_journal_id', False)
if not context.get('period_id', False):
context['period_id'] = context.get('search_default_period_id', False)
context = self.convert_to_period(cr, uid, context)
#pass the right context when search_defaul_journal_id
if context.get('search_default_journal_id',False):
context['journal_id'] = context.get('search_default_journal_id')
# Compute simple values
data = super(account_move_line, self).default_get(cr, uid, fields, context=context)
# Starts: Manual entry from account.move form
if context.get('lines'):
total_new = context.get('balance', 0.00)
if context['journal']:
journal_data = journal_obj.browse(cr, uid, context['journal'], context=context)
if journal_data.type == 'purchase':
if total_new > 0:
account = journal_data.default_credit_account_id
else:
account = journal_data.default_debit_account_id
else:
if total_new > 0:
account = journal_data.default_credit_account_id
else:
account = journal_data.default_debit_account_id
if account and ((not fields) or ('debit' in fields) or ('credit' in fields)) and 'partner_id' in data and (data['partner_id']):
part = partner_obj.browse(cr, uid, data['partner_id'], context=context)
account = fiscal_pos_obj.map_account(cr, uid, part and part.property_account_position or False, account.id)
account = account_obj.browse(cr, uid, account, context=context)
data['account_id'] = account.id
s = -total_new
data['debit'] = s > 0 and s or 0.0
data['credit'] = s < 0 and -s or 0.0
data = self._default_get_move_form_hook(cr, uid, data)
return data
# Ends: Manual entry from account.move form
if not 'move_id' in fields: #we are not in manual entry
return data
# Compute the current move
move_id = False
partner_id = False
if context.get('journal_id', False) and context.get('period_id', False):
if 'move_id' in fields:
cr.execute('SELECT move_id \
FROM \
account_move_line \
WHERE \
journal_id = %s and period_id = %s AND create_uid = %s AND state = %s \
ORDER BY id DESC limit 1',
(context['journal_id'], context['period_id'], uid, 'draft'))
if context.get('journal_id'):
total = 0.0
#in account.move form view, it is not possible to compute total debit and credit using
#a browse record. So we must use the context to pass the whole one2many field and compute the total
if context.get('line_id'):
for move_line_dict in move_obj.resolve_2many_commands(cr, uid, 'line_id', context.get('line_id'), context=context):
data['name'] = data.get('name') or move_line_dict.get('name')
data['partner_id'] = data.get('partner_id') or move_line_dict.get('partner_id')
total += move_line_dict.get('debit', 0.0) - move_line_dict.get('credit', 0.0)
elif context.get('period_id'):
#find the date and the ID of the last unbalanced account.move encoded by the current user in that journal and period
move_id = False
cr.execute('''SELECT move_id, date FROM account_move_line
WHERE journal_id = %s AND period_id = %s AND create_uid = %s AND state = %s
ORDER BY id DESC limit 1''', (context['journal_id'], context['period_id'], uid, 'draft'))
res = cr.fetchone()
move_id = (res and res[0]) or False
if not move_id:
return data
else:
data['move_id'] = move_id
if 'date' in fields:
cr.execute('SELECT date \
FROM \
account_move_line \
WHERE \
journal_id = %s AND period_id = %s AND create_uid = %s \
ORDER BY id DESC',
(context['journal_id'], context['period_id'], uid))
res = cr.fetchone()
if res:
data['date'] = res[0]
else:
period = period_obj.browse(cr, uid, context['period_id'],
context=context)
data['date'] = period.date_start
if not move_id:
return data
total = 0
ref_id = False
move = move_obj.browse(cr, uid, move_id, context=context)
if 'name' in fields:
data.setdefault('name', move.line_id[-1].name)
acc1 = False
for l in move.line_id:
acc1 = l.account_id
partner_id = partner_id or l.partner_id.id
ref_id = ref_id or l.ref
total += (l.debit or 0.0) - (l.credit or 0.0)
move_id = res and res[0] or False
data['date'] = res and res[1] or period_obj.browse(cr, uid, context['period_id'], context=context).date_start
data['move_id'] = move_id
if move_id:
#if there exist some unbalanced accounting entries that match the journal and the period,
#we propose to continue the same move by copying the ref, the name, the partner...
move = move_obj.browse(cr, uid, move_id, context=context)
data.setdefault('name', move.line_id[-1].name)
for l in move.line_id:
data['partner_id'] = data.get('partner_id') or l.partner_id.id
data['ref'] = data.get('ref') or l.ref
total += (l.debit or 0.0) - (l.credit or 0.0)
if 'ref' in fields:
data['ref'] = ref_id
if 'partner_id' in fields:
data['partner_id'] = partner_id
if move.journal_id.type == 'purchase':
if total > 0:
account = move.journal_id.default_credit_account_id
else:
account = move.journal_id.default_debit_account_id
else:
if total > 0:
account = move.journal_id.default_credit_account_id
else:
account = move.journal_id.default_debit_account_id
part = partner_id and partner_obj.browse(cr, uid, partner_id) or False
# part = False is acceptable for fiscal position.
account = fiscal_pos_obj.map_account(cr, uid, part and part.property_account_position or False, account.id)
if account:
account = account_obj.browse(cr, uid, account, context=context)
if account and ((not fields) or ('debit' in fields) or ('credit' in fields)):
data['account_id'] = account.id
# Propose the price Tax excluded, the Tax will be added when confirming line
if account.tax_ids:
taxes = fiscal_pos_obj.map_tax(cr, uid, part and part.property_account_position or False, account.tax_ids)
tax = tax_obj.browse(cr, uid, taxes)
for t in tax_obj.compute_inv(cr, uid, tax, total, 1):
total -= t['amount']
s = -total
data['debit'] = s > 0 and s or 0.0
data['credit'] = s < 0 and -s or 0.0
if account and account.currency_id:
data['currency_id'] = account.currency_id.id
acc = account
if s>0:
acc = acc1
compute_ctx = context.copy()
compute_ctx.update({
'res.currency.compute.account': acc,
'res.currency.compute.account_invert': True,
})
v = currency_obj.compute(cr, uid, account.company_id.currency_id.id, data['currency_id'], s, context=compute_ctx)
data['amount_currency'] = v
#compute the total of current move
data['debit'] = total < 0 and -total or 0.0
data['credit'] = total > 0 and total or 0.0
#pick the good account on the journal accordingly if the next proposed line will be a debit or a credit
journal_data = journal_obj.browse(cr, uid, context['journal_id'], context=context)
account = total > 0 and journal_data.default_credit_account_id or journal_data.default_debit_account_id
#map the account using the fiscal position of the partner, if needed
part = data.get('partner_id') and partner_obj.browse(cr, uid, data['partner_id'], context=context) or False
if account and data.get('partner_id'):
account = fiscal_pos_obj.map_account(cr, uid, part and part.property_account_position or False, account.id)
account = account_obj.browse(cr, uid, account, context=context)
data['account_id'] = account and account.id or False
#compute the amount in secondary currency of the account, if needed
if account and account.currency_id:
data['currency_id'] = account.currency_id.id
#set the context for the multi currency change
compute_ctx = context.copy()
compute_ctx.update({
#the following 2 parameters are used to choose the currency rate, in case where the account
#doesn't work with an outgoing currency rate method 'at date' but 'average'
'res.currency.compute.account': account,
'res.currency.compute.account_invert': True,
})
if data.get('date'):
compute_ctx.update({'date': data['date']})
data['amount_currency'] = currency_obj.compute(cr, uid, account.company_id.currency_id.id, data['currency_id'], -total, context=compute_ctx)
data = self._default_get_move_form_hook(cr, uid, data)
return data
def on_create_write(self, cr, uid, id, context=None):
@ -484,6 +420,15 @@ class account_move_line(osv.osv):
result.append(line.id)
return result
def _get_reconcile(self, cr, uid, ids,name, unknow_none, context=None):
res = dict.fromkeys(ids, False)
for line in self.browse(cr, uid, ids, context=context):
if line.reconcile_id:
res[line.id] = str(line.reconcile_id.name)
elif line.reconcile_partial_id:
res[line.id] = str(line.reconcile_partial_id.name)
return res
_columns = {
'name': fields.char('Name', size=64, required=True),
'quantity': fields.float('Quantity', digits=(16,2), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very useful for some reports."),
@ -498,15 +443,16 @@ class account_move_line(osv.osv):
'statement_id': fields.many2one('account.bank.statement', 'Statement', help="The bank statement used for bank reconciliation", select=1),
'reconcile_id': fields.many2one('account.move.reconcile', 'Reconcile', readonly=True, ondelete='set null', select=2),
'reconcile_partial_id': fields.many2one('account.move.reconcile', 'Partial Reconcile', readonly=True, ondelete='set null', select=2),
'reconcile': fields.function(_get_reconcile, type='char', string='Reconcile'),
'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency if it is a multi-currency entry.", digits_compute=dp.get_precision('Account')),
'amount_residual_currency': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in its currency (maybe different of the company currency)."),
'amount_residual': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in the company currency."),
'currency_id': fields.many2one('res.currency', 'Currency', help="The optional other currency if it is a multi-currency entry."),
'journal_id': fields.related('move_id', 'journal_id', string='Journal', type='many2one', relation='account.journal', required=True, select=True, readonly=True,
'journal_id': fields.related('move_id', 'journal_id', string='Journal', type='many2one', relation='account.journal', required=True, select=True,
store = {
'account.move': (_get_move_lines, ['journal_id'], 20)
}),
'period_id': fields.related('move_id', 'period_id', string='Period', type='many2one', relation='account.period', required=True, select=True, readonly=True,
'period_id': fields.related('move_id', 'period_id', string='Period', type='many2one', relation='account.period', required=True, select=True,
store = {
'account.move': (_get_move_lines, ['period_id'], 20)
}),
@ -529,7 +475,8 @@ class account_move_line(osv.osv):
type='many2one', relation='account.invoice', fnct_search=_invoice_search),
'account_tax_id':fields.many2one('account.tax', 'Tax'),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company',
string='Company', store=True, readonly=True)
}
def _get_date(self, cr, uid, context=None):
@ -537,7 +484,7 @@ class account_move_line(osv.osv):
context or {}
period_obj = self.pool.get('account.period')
dt = time.strftime('%Y-%m-%d')
if ('journal_id' in context) and ('period_id' in context):
if context.get('journal_id') and context.get('period_id'):
cr.execute('SELECT date FROM account_move_line ' \
'WHERE journal_id = %s AND period_id = %s ' \
'ORDER BY id DESC limit 1',
@ -558,6 +505,38 @@ class account_move_line(osv.osv):
cur = self.pool.get('account.journal').browse(cr, uid, context['journal_id']).currency
return cur and cur.id or False
def _get_period(self, cr, uid, context=None):
"""
Return default account period value
"""
context = context or {}
if context.get('period_id', False):
return context['period_id']
account_period_obj = self.pool.get('account.period')
ids = account_period_obj.find(cr, uid, context=context)
period_id = False
if ids:
period_id = ids[0]
return period_id
def _get_journal(self, cr, uid, context=None):
"""
Return journal based on the journal type
"""
context = context or {}
if context.get('journal_id', False):
return context['journal_id']
journal_id = False
journal_pool = self.pool.get('account.journal')
if context.get('journal_type', False):
jids = journal_pool.search(cr, uid, [('type','=', context.get('journal_type'))])
if not jids:
raise osv.except_osv(_('Configuration Error!'), _('Cannot find any account journal of %s type for this company.\n\nYou can create one in the menu: \nConfiguration/Journals/Journals.') % context.get('journal_type'))
journal_id = jids[0]
return journal_id
_defaults = {
'blocked': False,
'centralisation': 'normal',
@ -565,12 +544,12 @@ class account_move_line(osv.osv):
'date_created': fields.date.context_today,
'state': 'draft',
'currency_id': _get_currency,
'journal_id': lambda self, cr, uid, c: c.get('journal_id', False),
'journal_id': _get_journal,
'credit': 0.0,
'debit': 0.0,
'amount_currency': 0.0,
'account_id': lambda self, cr, uid, c: c.get('account_id', False),
'period_id': lambda self, cr, uid, c: c.get('period_id', False),
'period_id': _get_period,
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.move.line', context=c)
}
_order = "date desc, id desc"
@ -620,12 +599,34 @@ class account_move_line(osv.osv):
return False
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 = [
(_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_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_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
@ -653,6 +654,12 @@ class account_move_line(osv.osv):
}
return result
def onchange_account_id(self, cr, uid, ids, account_id, context=None):
res = {'value': {}}
if account_id:
res['value']['account_tax_id'] = [x.id for x in self.pool.get('account.account').browse(cr, uid, account_id, context=context).tax_ids]
return res
def onchange_partner_id(self, cr, uid, ids, move_id, partner_id, account_id=None, debit=0, credit=0, date=False, journal=False):
partner_obj = self.pool.get('res.partner')
payment_term_obj = self.pool.get('account.payment.term')
@ -977,127 +984,6 @@ class account_move_line(osv.osv):
'context':context,
}
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
journal_pool = self.pool.get('account.journal')
if context is None:
context = {}
result = super(account_move_line, self).fields_view_get(cr, uid, view_id, view_type, context=context, toolbar=toolbar, submenu=submenu)
if (view_type != 'tree') or view_id:
#Remove the toolbar from the form view
if view_type == 'form':
if result.get('toolbar', False):
result['toolbar']['action'] = []
#Restrict the list of journal view in search view
if view_type == 'search' and result['fields'].get('journal_id', False):
result['fields']['journal_id']['selection'] = journal_pool.name_search(cr, uid, '', [], context=context)
ctx = context.copy()
#we add the refunds journal in the selection field of journal
if context.get('journal_type', False) == 'sale':
ctx.update({'journal_type': 'sale_refund'})
result['fields']['journal_id']['selection'] += journal_pool.name_search(cr, uid, '', [], context=ctx)
elif context.get('journal_type', False) == 'purchase':
ctx.update({'journal_type': 'purchase_refund'})
result['fields']['journal_id']['selection'] += journal_pool.name_search(cr, uid, '', [], context=ctx)
return result
if context.get('view_mode', False):
return result
fld = []
flds = []
title = _("Accounting Entries") # self.view_header_get(cr, uid, view_id, view_type, context)
ids = journal_pool.search(cr, uid, [], context=context)
journals = journal_pool.browse(cr, uid, ids, context=context)
for journal in journals:
for field in journal.view_id.columns_id:
# sometimes, it's possible that a defined column is not loaded (the module containing
# this field is not loaded) when we make an update.
if field.field not in self._columns:
continue
if not field.field in flds:
fld.append((field.field, field.sequence))
flds.append(field.field)
default_columns = {
'period_id': 3,
'journal_id': 10,
'state': sys.maxint,
}
for d in default_columns:
if d not in flds:
fld.append((d, default_columns[d]))
flds.append(d)
fld = sorted(fld, key=itemgetter(1))
widths = {
'statement_id': 50,
'state': 60,
'tax_code_id': 50,
'move_id': 40,
}
document = etree.Element('tree', string=title, editable="top",
on_write="on_create_write",
colors="red:state=='draft';black:state=='valid'")
fields_get = self.fields_get(cr, uid, flds, context)
for field, _seq in fld:
# TODO add string to element
f = etree.SubElement(document, 'field', name=field)
if field == 'debit':
f.set('sum', _("Total debit"))
elif field == 'credit':
f.set('sum', _("Total credit"))
elif field == 'move_id':
f.set('required', 'False')
elif field == 'account_tax_id':
f.set('domain', "[('parent_id', '=' ,False)]")
f.set('context', "{'journal_id': journal_id}")
elif field == 'account_id' and journal.id:
f.set('domain', "[('journal_id', '=', journal_id),('type','!=','view'), ('type','!=','closed')]")
f.set('on_change', 'onchange_account_id(account_id, partner_id)')
elif field == 'partner_id':
f.set('on_change', 'onchange_partner_id(move_id, partner_id, account_id, debit, credit, date, journal_id)')
elif field == 'journal_id':
f.set('context', "{'journal_id': journal_id}")
elif field == 'statement_id':
f.set('domain', "[('state', '!=', 'confirm'),('journal_id.type', '=', 'bank')]")
f.set('invisible', 'True')
elif field == 'date':
f.set('on_change', 'onchange_date(date)')
elif field == 'analytic_account_id':
# Currently it is not working due to being executed by superclass's fields_view_get
# f.set('groups', 'analytic.group_analytic_accounting')
pass
if field in ('amount_currency', 'currency_id'):
f.set('on_change', 'onchange_currency(account_id, amount_currency, currency_id, date, journal_id)')
f.set('attrs', "{'readonly': [('state', '=', 'valid')]}")
if field in widths:
f.set('width', str(widths[field]))
if field in ('journal_id',):
f.set("invisible", "context.get('journal_id', False)")
elif field in ('period_id',):
f.set("invisible", "context.get('period_id', False)")
orm.setup_modifiers(f, fields_get[field], context=context,
in_tree_view=True)
result['arch'] = etree.tostring(document, pretty_print=True)
result['fields'] = fields_get
return result
def _check_moves(self, cr, uid, context=None):
# use the first move ever created for this journal and period
if context is None:
@ -1111,7 +997,7 @@ class account_move_line(osv.osv):
'has been confirmed.') % res[2])
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
obj_move_line = self.pool.get('account.move.line')
obj_move_rec = self.pool.get('account.move.reconcile')
@ -1126,6 +1012,8 @@ class account_move_line(osv.osv):
unlink_ids += rec_ids
unlink_ids += part_rec_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)
return True
@ -1390,6 +1278,19 @@ class account_move_line(osv.osv):
move_obj.button_validate(cr,uid, [vals['move_id']], context)
return result
def list_periods(self, cr, uid, context=None):
ids = self.pool.get('account.period').search(cr,uid,[])
return self.pool.get('account.period').name_get(cr, uid, ids, context=context)
def list_journals(self, cr, uid, context=None):
ng = dict(self.pool.get('account.journal').name_search(cr,uid,'',[]))
ids = ng.keys()
result = []
for journal in self.pool.get('account.journal').browse(cr, uid, ids, context=context):
result.append((journal.id,ng[journal.id],journal.type,
bool(journal.currency),bool(journal.analytic_journal_id)))
return result
account_move_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

File diff suppressed because it is too large Load Diff

View File

@ -59,412 +59,6 @@
<field eval="account_payment_term_advance" name="payment_id"/>
</record>
<!--
Account Journal View
-->
<record id="account_journal_bank_view" model="account.journal.view">
<field name="name">Bank/Cash Journal View</field>
</record>
<record id="bank_col1" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Date</field>
<field name="field">date</field>
<field eval="True" name="required"/>
<field eval="3" name="sequence"/>
</record>
<record id="bank_col2" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Journal Entry</field>
<field name="field">move_id</field>
<field eval="False" name="required"/>
<field eval="1" name="sequence"/>
</record>
<record id="bank_col7" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Name</field>
<field name="field">name</field>
<field eval="7" name="sequence"/>
<field eval="True" name="required"/>
</record>
<record id="bank_col4" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Statement</field>
<field name="field">statement_id</field>
<field eval="4" name="sequence"/>
</record>
<record id="bank_col6" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Partner</field>
<field name="field">partner_id</field>
<field eval="5" name="sequence"/>
</record>
<record id="bank_col5" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Account</field>
<field name="field">account_id</field>
<field eval="True" name="required"/>
<field eval="6" name="sequence"/>
</record>
<record id="bank_col9" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Debit</field>
<field name="field">debit</field>
<field eval="11" name="sequence"/>
</record>
<record id="bank_col10" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Credit</field>
<field name="field">credit</field>
<field eval="12" name="sequence"/>
</record>
<record id="bank_col3" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Ref</field>
<field name="field">ref</field>
<field eval="2" name="sequence"/>
</record>
<record id="bank_col23" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Status</field>
<field name="field">state</field>
<field eval="19" name="sequence"/>
</record>
<record id="bank_col20" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Reconcile</field>
<field name="field">reconcile_id</field>
<field eval="20" name="sequence"/>
</record>
<record id="account_journal_bank_view_multi" model="account.journal.view">
<field name="name">Bank/Cash Journal (Multi-Currency) View</field>
</record>
<record id="bank_col1_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Date</field>
<field name="field">date</field>
<field eval="True" name="required"/>
<field eval="3" name="sequence"/>
</record>
<record id="bank_col2_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Journal Entry</field>
<field name="field">move_id</field>
<field eval="False" name="required"/>
<field eval="1" name="sequence"/>
</record>
<record id="bank_col7_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Name</field>
<field name="field">name</field>
<field eval="7" name="sequence"/>
<field eval="True" name="required"/>
</record>
<record id="bank_col4_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Statement</field>
<field name="field">statement_id</field>
<field eval="4" name="sequence"/>
</record>
<record id="bank_col6_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Partner</field>
<field name="field">partner_id</field>
<field eval="5" name="sequence"/>
</record>
<record id="bank_col5_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Account</field>
<field name="field">account_id</field>
<field eval="True" name="required"/>
<field eval="6" name="sequence"/>
</record>
<record id="bank_col17_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Currency Amt.</field>
<field name="field">amount_currency</field>
<field eval="9" name="sequence"/>
</record>
<record id="bank_col18_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Currency</field>
<field name="field">currency_id</field>
<field eval="10" name="sequence"/>
</record>
<record id="bank_col9_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Debit</field>
<field name="field">debit</field>
<field eval="11" name="sequence"/>
</record>
<record id="bank_col10_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Credit</field>
<field name="field">credit</field>
<field eval="12" name="sequence"/>
</record>
<record id="bank_col3_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Ref</field>
<field name="field">ref</field>
<field eval="2" name="sequence"/>
</record>
<record id="bank_col23_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Status</field>
<field name="field">state</field>
<field eval="19" name="sequence"/>
</record>
<record id="bank_col20_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Reconcile</field>
<field name="field">reconcile_id</field>
<field eval="20" name="sequence"/>
</record>
<record id="account_journal_view" model="account.journal.view">
<field name="name">Journal View</field>
</record>
<record id="journal_col1" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Date</field>
<field name="field">date</field>
<field eval="True" name="required"/>
<field eval="3" name="sequence"/>
</record>
<record id="journal_col2" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Journal Entry</field>
<field name="field">move_id</field>
<field eval="False" name="required"/>
<field eval="1" name="sequence"/>
</record>
<record id="journal_col3" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Ref</field>
<field name="field">ref</field>
<field eval="2" name="sequence"/>
</record>
<record id="journal_col5" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Partner</field>
<field name="field">partner_id</field>
<field eval="5" name="sequence"/>
</record>
<record id="journal_col4" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Account</field>
<field name="field">account_id</field>
<field eval="True" name="required"/>
<field eval="6" name="sequence"/>
</record>
<record id="journal_col6" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Name</field>
<field name="field">name</field>
<field eval="7" name="sequence"/>
<field eval="True" name="required"/>
</record>
<record id="journal_col8" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Debit</field>
<field name="field">debit</field>
<field eval="11" name="sequence"/>
</record>
<record id="journal_col9" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Credit</field>
<field name="field">credit</field>
<field eval="12" name="sequence"/>
</record>
<record id="journal_col11" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="14" name="sequence"/>
</record>
<record id="journal_col24" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Status</field>
<field name="field">state</field>
<field eval="19" name="sequence"/>
</record>
<record id="account_sp_journal_view" model="account.journal.view">
<field name="name">Sale/Purchase Journal View</field>
</record>
<record id="sp_journal_col1" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Date</field>
<field name="field">date</field>
<field eval="True" name="required"/>
<field eval="3" name="sequence"/>
</record>
<record id="sp_journal_col2" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Journal Entry</field>
<field name="field">move_id</field>
<field eval="False" name="required"/>
<field eval="1" name="sequence"/>
</record>
<record id="sp_journal_col3" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Ref</field>
<field name="field">ref</field>
<field eval="2" name="sequence"/>
</record>
<record id="sp_journal_col4" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Account</field>
<field name="field">account_id</field>
<field eval="True" name="required"/>
<field eval="6" name="sequence"/>
</record>
<record id="sp_journal_col5" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Partner</field>
<field name="field">partner_id</field>
<field eval="5" name="sequence"/>
</record>
<record id="sp_journal_col6" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Name</field>
<field name="field">name</field>
<field eval="7" name="sequence"/>
<field eval="True" name="required"/>
</record>
<record id="sp_journal_col7" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Due Date</field>
<field name="field">date_maturity</field>
<field eval="8" name="sequence"/>
</record>
<record id="sp_journal_col8" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Debit</field>
<field name="field">debit</field>
<field eval="11" name="sequence"/>
</record>
<record id="sp_journal_col9" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Credit</field>
<field name="field">credit</field>
<field eval="12" name="sequence"/>
</record>
<record id="sp_journal_col10" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Tax</field>
<field name="field">account_tax_id</field>
<field eval="13" name="sequence"/>
</record>
<record id="sp_journal_col11" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="14" name="sequence"/>
</record>
<record id="sp_journal_col24" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Status</field>
<field name="field">state</field>
<field eval="19" name="sequence"/>
</record>
<record id="sp_journal_col20" model="account.journal.column">
<field name="view_id" ref="account_sp_journal_view"/>
<field name="name">Reconcile</field>
<field name="field">reconcile_id</field>
<field eval="20" name="sequence"/>
</record>
<record id="account_sp_refund_journal_view" model="account.journal.view">
<field name="name">Sale/Purchase Refund Journal View</field>
</record>
<record id="sp_refund_journal_col1" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Date</field>
<field name="field">date</field>
<field eval="True" name="required"/>
<field eval="3" name="sequence"/>
</record>
<record id="sp_refund_journal_col2" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Journal Entry</field>
<field name="field">move_id</field>
<field eval="False" name="required"/>
<field eval="1" name="sequence"/>
</record>
<record id="sp_refund_journal_col3" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Ref</field>
<field name="field">ref</field>
<field eval="2" name="sequence"/>
</record>
<record id="sp_refund_journal_col4" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Account</field>
<field name="field">account_id</field>
<field eval="True" name="required"/>
<field eval="6" name="sequence"/>
</record>
<record id="sp_refund_journal_col5" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Partner</field>
<field name="field">partner_id</field>
<field eval="5" name="sequence"/>
</record>
<record id="sp_refund_journal_col6" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Name</field>
<field name="field">name</field>
<field eval="7" name="sequence"/>
<field eval="True" name="required"/>
</record>
<record id="sp_refund_journal_col7" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Due Date</field>
<field name="field">date_maturity</field>
<field eval="8" name="sequence"/>
</record>
<record id="sp_refund_journal_col8" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Debit</field>
<field name="field">debit</field>
<field eval="11" name="sequence"/>
</record>
<record id="sp_refund_journal_col9" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Credit</field>
<field name="field">credit</field>
<field eval="12" name="sequence"/>
</record>
<record id="sp_refund_journal_col10" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Tax</field>
<field name="field">account_tax_id</field>
<field eval="13" name="sequence"/>
</record>
<record id="sp_refund_journal_col11" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="14" name="sequence"/>
</record>
<record id="sp_refund_journal_col24" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Status</field>
<field name="field">state</field>
<field eval="19" name="sequence"/>
</record>
<record id="sp_refund_journal_col20" model="account.journal.column">
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="name">Reconcile</field>
<field name="field">reconcile_id</field>
<field eval="20" name="sequence"/>
</record>
<!--
Account Journal Sequences
-->

View File

@ -312,7 +312,6 @@
<field name="name">Sales Journal - (test)</field>
<field name="code">TSAJ</field>
<field name="type">sale</field>
<field name="view_id" ref="account_sp_journal_view"/>
<field name="sequence_id" ref="sequence_sale_journal"/>
<field model="account.account" name="default_credit_account_id" ref="a_sale"/>
<field model="account.account" name="default_debit_account_id" ref="a_sale"/>
@ -323,7 +322,6 @@
<field name="name">Sales Credit Note Journal - (test)</field>
<field name="code">TSCNJ</field>
<field name="type">sale_refund</field>
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="sequence_id" ref="sequence_refund_sales_journal"/>
<field model="account.account" name="default_credit_account_id" ref="a_sale"/>
<field model="account.account" name="default_debit_account_id" ref="a_sale"/>
@ -335,7 +333,6 @@
<field name="name">Expenses Journal - (test)</field>
<field name="code">TEXJ</field>
<field name="type">purchase</field>
<field name="view_id" ref="account_sp_journal_view"/>
<field name="sequence_id" ref="sequence_purchase_journal"/>
<field model="account.account" name="default_debit_account_id" ref="a_expense"/>
<field model="account.account" name="default_credit_account_id" ref="a_expense"/>
@ -346,7 +343,6 @@
<field name="name">Expenses Credit Notes Journal - (test)</field>
<field name="code">TECNJ</field>
<field name="type">purchase_refund</field>
<field name="view_id" ref="account_sp_refund_journal_view"/>
<field name="sequence_id" ref="sequence_refund_purchase_journal"/>
<field model="account.account" name="default_debit_account_id" ref="a_expense"/>
<field model="account.account" name="default_credit_account_id" ref="a_expense"/>
@ -358,7 +354,6 @@
<field name="name">Bank Journal - (test)</field>
<field name="code">TBNK</field>
<field name="type">bank</field>
<field name="view_id" ref="account_journal_bank_view"/>
<field name="sequence_id" ref="sequence_bank_journal"/>
<field model="account.account" name="default_debit_account_id" ref="bnk"/>
<field model="account.account" name="default_credit_account_id" ref="bnk"/>
@ -369,7 +364,6 @@
<field name="name">Checks Journal - (test)</field>
<field name="code">TCHK</field>
<field name="type">bank</field>
<field name="view_id" ref="account_journal_bank_view"/>
<field name="sequence_id" ref="sequence_check_journal"/>
<field model="account.account" name="default_debit_account_id" ref="cash"/>
<field model="account.account" name="default_credit_account_id" ref="cash"/>
@ -390,7 +384,6 @@
that test OpenERP arrive directly in the touchscreen UI.
-->
<field name="cash_control" eval="False"/>
<field name="view_id" ref="account_journal_bank_view"/>
<field name="sequence_id" ref="sequence_cash_journal"/>
<field model="account.account" name="default_debit_account_id" ref="cash"/>
<field model="account.account" name="default_credit_account_id" ref="cash"/>
@ -401,7 +394,6 @@
<field name="name">Miscellaneous Journal - (test)</field>
<field name="code">TMIS</field>
<field name="type">general</field>
<field name="view_id" ref="account_journal_view"/>
<field name="sequence_id" ref="sequence_miscellaneous_journal"/>
<field name="analytic_journal_id" ref="sit"/>
<field name="user_id" ref="base.user_root"/>
@ -410,7 +402,6 @@
<field name="name">Opening Entries Journal - (test)</field>
<field name="code">TOEJ</field>
<field name="type">situation</field>
<field name="view_id" ref="account_journal_view"/>
<field name="sequence_id" ref="sequence_opening_journal"/>
<field model="account.account" name="default_debit_account_id" ref="o_income"/>
<field model="account.account" name="default_credit_account_id" ref="o_expense"/>
@ -422,7 +413,6 @@
<field name="name">USD Bank Journal - (test)</field>
<field name="code">TUBK</field>
<field name="type">bank</field>
<field name="view_id" ref="account_journal_bank_view"/>
<field model="account.account" name="default_debit_account_id" ref="usd_bnk"/>
<field model="account.account" name="default_credit_account_id" ref="usd_bnk"/>
<field name="currency" ref="base.USD"/>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 17:34+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-12-01 17:09+0000\n"
"Last-Translator: kifcaliph <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:53+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:37+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -85,7 +85,7 @@ msgstr "إستيراد من فاتورة أو دفعة"
#: code:addons/account/account_move_line.py:1303
#, python-format
msgid "Bad Account!"
msgstr ""
msgstr "حساب غير صالح!"
#. module: account
#: view:account.move:0
@ -107,6 +107,8 @@ msgid ""
"Error!\n"
"You cannot create recursive account templates."
msgstr ""
"خطأ!\n"
"لا يمكنك انشاء قوالب حساب متداخلة"
#. module: account
#. openerp-web
@ -236,7 +238,7 @@ msgstr "دفتر اليومية: %s"
#. module: account
#: help:account.config.settings,code_digits:0
msgid "No. of digits to use for account code"
msgstr ""
msgstr "عدد الأرقام التي يتم استخدامها لرمز الحساب"
#. module: account
#: help:account.analytic.journal,type:0
@ -374,7 +376,7 @@ msgstr "إلغاء موازنة الحساب"
#. module: account
#: field:account.config.settings,module_account_budget:0
msgid "Budget management"
msgstr ""
msgstr "ادارة الميزانية"
#. module: account
#: view:product.template:0
@ -394,7 +396,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,group_multi_currency:0
msgid "Allow multi currencies"
msgstr ""
msgstr "السماح لأكثر من عملة"
#. module: account
#: code:addons/account/account_invoice.py:73
@ -415,12 +417,12 @@ msgstr "يونيو/حزيران"
#: code:addons/account/wizard/account_automatic_reconcile.py:148
#, python-format
msgid "You must select accounts to reconcile."
msgstr ""
msgstr "يجب اختيار الحسابات لتسويتها"
#. module: account
#: help:account.config.settings,group_analytic_accounting:0
msgid "Allows you to use the analytic accounting."
msgstr ""
msgstr "يسمح لك باستخدام المحاسبة التحليلية"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_moves_bank
@ -439,7 +441,7 @@ msgstr ""
#: view:account.invoice.report:0
#: field:account.invoice.report,user_id:0
msgid "Salesperson"
msgstr ""
msgstr "موظف مبيعات"
#. module: account
#: model:ir.model,name:account.model_account_tax_template
@ -588,7 +590,7 @@ msgstr "الهدف الرئيسي"
#. module: account
#: help:account.invoice.line,sequence:0
msgid "Gives the sequence of this line when displaying the invoice."
msgstr ""
msgstr "يعطي التسلسل لهذا الخط عند اظهار الفاتورة"
#. module: account
#: field:account.bank.statement,account_id:0
@ -662,7 +664,7 @@ msgstr "الحساب يؤكد الكشف"
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:31
#, python-format
msgid "Nothing to reconcile"
msgstr ""
msgstr "لا يوجد شيء لتسويته"
#. module: account
#: field:account.config.settings,decimal_precision:0
@ -724,12 +726,12 @@ msgstr "المسلسل الرئيسي لابد أن يختلف من الحالي
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "العملة الحالية غير مكونة بطريقة صحيحة"
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "حساب الأرباح"
#. module: account
#: code:addons/account/account_move_line.py:1249
@ -740,7 +742,7 @@ msgstr "لا توجد نقطة فاصلة في التاريخ أو توجد أك
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view_multi
msgid "Bank/Cash Journal (Multi-Currency) View"
msgstr ""
msgstr "عرض يومية النقدية/البنك (متعدد العملات)"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
@ -760,7 +762,7 @@ msgstr ""
#: code:addons/account/account.py:1606
#, python-format
msgid "Cannot create move with currency different from .."
msgstr ""
msgstr "لا يمكن التحريك بعملة غير .."
#. module: account
#: model:email.template,report_name:account.email_template_edi_invoice
@ -818,7 +820,7 @@ msgstr "حسابات مدينة"
#. module: account
#: view:account.config.settings:0
msgid "Configure your company bank accounts"
msgstr ""
msgstr "قم بضبط الحسابات البنكية للشركة"
#. module: account
#: constraint:account.move.line:0
@ -856,6 +858,8 @@ msgid ""
"Cannot %s invoice which is already reconciled, invoice should be "
"unreconciled first. You can only refund this invoice."
msgstr ""
"لايمكنك %s فاتورة قد تم تسويتها, الفاتورة يجب ان تلغى تسويتها أولا. يمكنك "
"استرداد هذه الفاتورة فقط"
#. module: account
#: selection:account.financial.report,display_detail:0
@ -933,7 +937,7 @@ msgstr "فواتير المورد و المردودات المالية"
#: code:addons/account/account_move_line.py:833
#, python-format
msgid "Entry is already reconciled."
msgstr ""
msgstr "تم تسوية المدخل"
#. module: account
#: view:account.move.line.unreconcile.select:0
@ -956,7 +960,7 @@ msgstr "يومية حساب تحليلي"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "إرسال كرسالة بالبريد الالكتروني"
#. module: account
#: help:account.central.journal,amount_currency:0
@ -967,6 +971,7 @@ msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
"اطبع التقرير مع خانة العملة اذا كانت العملة تختلف عن العملة الافتراضية للشركة"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -976,7 +981,7 @@ msgstr "نقل اسم/ j.c."
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "رمز و رقم الحساب"
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
@ -1044,7 +1049,7 @@ msgstr "مستحق"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "يومية المشتريات"
#. module: account
#: code:addons/account/account.py:1374
@ -1070,7 +1075,7 @@ msgstr "إجمالي المبلغ"
#. module: account
#: help:account.invoice,supplier_invoice_number:0
msgid "The reference of this invoice as provided by the supplier."
msgstr ""
msgstr "المرجع لهذه الفاتورة كما هوا معطى من المورد"
#. module: account
#: selection:account.account,type:0
@ -1158,7 +1163,7 @@ msgstr "رمز"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "مزايا"
#. module: account
#: code:addons/account/account.py:2323
@ -1203,7 +1208,7 @@ msgstr "اسم الحساب"
#. module: account
#: field:account.journal,with_last_closing_balance:0
msgid "Opening With Last Closing Balance"
msgstr ""
msgstr "الافتتاح بآخر رصيد"
#. module: account
#: view:account.state.open:0
@ -1246,12 +1251,12 @@ msgstr ""
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "استرداد "
#. module: account
#: help:account.config.settings,company_footer:0
msgid "Bank accounts as printed in the footer of each printed document"
msgstr ""
msgstr "حسابات البنك كما هو مطبوع على أسفل الوثائق المطبوعة"
#. module: account
#: view:account.tax:0
@ -1273,7 +1278,7 @@ msgstr "سجلات النقدية"
#. module: account
#: field:account.config.settings,sale_refund_journal_id:0
msgid "Sale refund journal"
msgstr ""
msgstr "يومية استرداد المبيعات"
#. module: account
#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
@ -1309,7 +1314,7 @@ msgstr "بداية الفترة"
#. module: account
#: view:account.tax:0
msgid "Refunds"
msgstr ""
msgstr "الاستردادات المالية"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -1392,6 +1397,8 @@ msgid ""
"Set the account that will be set by default on invoice tax lines for "
"refunds. Leave empty to use the expense account."
msgstr ""
"استخدم الحساب الذي سوف يستخدم افتراضيا للمستردات على ضريبة الأصناف(الخطوط) "
"في الفاتورة. اتركه خاليا لاستخدام حساب المصاريف."
#. module: account
#: field:account.move.line.reconcile,trans_nbr:0
@ -1478,7 +1485,7 @@ msgstr "مستوى"
#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice."
msgstr ""
msgstr "يمكنك تغيير العملة للفواتير المسودة"
#. module: account
#: report:account.invoice:0
@ -1549,7 +1556,7 @@ msgstr "خيارات التقرير"
#. module: account
#: field:account.fiscalyear.close.state,fy_id:0
msgid "Fiscal Year to Close"
msgstr ""
msgstr "السنة المالية للإغلاق"
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
@ -1573,11 +1580,13 @@ msgid ""
"And after getting confirmation from the bank it will be in 'Confirmed' "
"status."
msgstr ""
"عند انشاء قائمة تكون الحالة 'مسودة'\n"
"و بعد الحصول على التأكيد من البنك ستتغير الحالة الى 'مؤكد'"
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice Status"
msgstr ""
msgstr "حالة الفاتورة"
#. module: account
#: view:account.invoice.report:0
@ -1610,6 +1619,8 @@ msgid ""
"There is no default debit account defined \n"
"on journal \"%s\"."
msgstr ""
"لا يوجد حساب مدين افتراضي معرف\n"
"على يومية \"%s\"."
#. module: account
#: view:account.tax:0
@ -1644,6 +1655,8 @@ msgid ""
"There is nothing to reconcile. All invoices and payments\n"
" have been reconciled, your partner balance is clean."
msgstr ""
"لا يوجد مدخلات ليتم تسويتها. كل الفواتير والدفعات \n"
" قد تم تسويتها, رصيد شريكك نظيف"
#. module: account
#: field:account.chart.template,code_digits:0
@ -1662,17 +1675,17 @@ msgstr "تخطي حالة \"المسودة\" للقيود اليدوية"
#: code:addons/account/wizard/account_report_common.py:159
#, python-format
msgid "Not implemented."
msgstr ""
msgstr "غير مطبّق."
#. module: account
#: view:account.invoice.refund:0
msgid "Credit Note"
msgstr ""
msgstr "اخطار بالرصيد"
#. module: account
#: view:account.config.settings:0
msgid "eInvoicing & Payments"
msgstr ""
msgstr "فواتير الكترونيه و دفعات ماليه"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -1705,7 +1718,7 @@ msgstr "رد مال للمورد"
#. module: account
#: field:account.config.settings,company_footer:0
msgid "Bank accounts footer preview"
msgstr ""
msgstr "معاينة تذييل حسابات البنك"
#. module: account
#: selection:account.account,type:0
@ -1835,7 +1848,7 @@ msgstr "فاتورة"
#. module: account
#: field:account.move,balance:0
msgid "balance"
msgstr ""
msgstr "الرصيد"
#. module: account
#: model:process.node,note:account.process_node_analytic0
@ -1851,7 +1864,7 @@ msgstr "مسلسل السنة المالية"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "المحاسبة التحليلية"
#. module: account
#: report:account.overdue:0
@ -1900,7 +1913,7 @@ msgstr ""
#: code:addons/account/account_move_line.py:836
#, python-format
msgid "Some entries are already reconciled."
msgstr ""
msgstr "بعض القيود قد تم تسويتها مسبقا."
#. module: account
#: model:email.template,body_html:account.email_template_edi_invoice
@ -2031,12 +2044,12 @@ msgstr "حسابات معلقة"
#. module: account
#: view:account.open.closed.fiscalyear:0
msgid "Cancel Fiscal Year Opening Entries"
msgstr ""
msgstr "الغاء القيود الافتتاحية السنة المالية الأولية"
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view
msgid "Bank/Cash Journal View"
msgstr ""
msgstr "عرض قيود البنك/ اليومية"
#. module: account
#: report:account.journal.period.print.sale.purchase:0
@ -2064,7 +2077,7 @@ msgstr "المدينون و الدائنون"
#. module: account
#: field:account.config.settings,module_account_payment:0
msgid "Manage payment orders"
msgstr ""
msgstr "ادارة طلبات الدفع"
#. module: account
#: view:account.period:0
@ -2075,7 +2088,7 @@ msgstr ""
#: view:account.bank.statement:0
#: field:account.bank.statement,last_closing_balance:0
msgid "Last Closing Balance"
msgstr ""
msgstr "آخر رصيد اغلاق"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
@ -2113,7 +2126,7 @@ msgstr "مرجع العميل"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
msgstr ""
msgstr "استخدم هذا الرمز للإقرار الضريبي"
#. module: account
#: help:account.period,special:0
@ -2128,7 +2141,7 @@ msgstr "قائمة مؤقتة"
#. module: account
#: field:account.config.settings,module_account_check_writing:0
msgid "Pay your suppliers by check"
msgstr ""
msgstr "ادفع للمورد/ الشريك بالشيك"
#. module: account
#: field:account.move.line.reconcile,credit:0
@ -2237,7 +2250,7 @@ msgstr "تحليل الفواتير"
#. module: account
#: model:ir.model,name:account.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "معالج تكوين رسالة بريد الالكتروني"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@ -2251,6 +2264,8 @@ msgid ""
"This journal already contains items for this period, therefore you cannot "
"modify its company field."
msgstr ""
"هذه اليومية تحتوي على أصناف لهذه الفترة، لذا لا يمكن تغيير حقول الشركة "
"الخاصة بها."
#. module: account
#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
@ -2283,7 +2298,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,currency_id:0
msgid "Default company currency"
msgstr ""
msgstr "العملة الافتراضية للشركة"
#. module: account
#: field:account.invoice,move_id:0
@ -2357,7 +2372,7 @@ msgstr "ميزان المراجعة للحسابات المعمرة"
#. module: account
#: view:account.fiscalyear.close.state:0
msgid "Close Fiscal Year"
msgstr ""
msgstr "اغلاق السنة المالية"
#. module: account
#: model:process.node,note:account.process_node_reconciliation0
@ -2380,12 +2395,12 @@ msgstr "تعريف الضريبة"
#: view:account.config.settings:0
#: model:ir.actions.act_window,name:account.action_account_config
msgid "Configure Accounting"
msgstr ""
msgstr "إعدادت المحاسبة"
#. module: account
#: field:account.invoice.report,uom_name:0
msgid "Reference Unit of Measure"
msgstr ""
msgstr "مرجع وحدة القياس (UOM)"
#. module: account
#: help:account.journal,allow_date:0
@ -2404,7 +2419,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,module_account_asset:0
msgid "Assets management"
msgstr ""
msgstr "إدارة الأصول"
#. module: account
#: view:account.account:0
@ -2457,7 +2472,7 @@ msgstr "نص مائل (أصغر)"
msgid ""
"If you want the journal should be control at opening/closing, check this "
"option"
msgstr ""
msgstr "اذا كنت تريد التحكم باليومية عند الفتح/اللإغلاق، اختر هذا الخيار."
#. module: account
#: view:account.bank.statement:0
@ -2492,7 +2507,7 @@ msgstr "فتح القيود"
#. module: account
#: field:account.config.settings,purchase_refund_sequence_next:0
msgid "Next supplier credit note number"
msgstr ""
msgstr "رقم إشعار رصيد المورد التالي"
#. module: account
#: field:account.automatic.reconcile,account_ids:0
@ -2532,7 +2547,7 @@ msgstr "خريطة حساب الضرائب"
#: code:addons/account/account_cash_statement.py:256
#, python-format
msgid "You do not have rights to open this %s journal !"
msgstr ""
msgstr "ليس لديك الصلاحيات لفتح هذه %s اليومية!"
#. module: account
#: model:res.groups,name:account.group_supplier_inv_check_total

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-07-02 15:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-11-29 20:54+0000\n"
"Last-Translator: Jose Ernesto Mendez <tecnologia@obsdr.com>\n"
"Language-Team: Spanish (Dominican Republic) <es_DO@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:00+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -3736,7 +3736,7 @@ msgstr ""
#. module: account
#: report:account.overdue:0
msgid "VAT:"
msgstr ""
msgstr "ITBIS:"
#. module: account
#: constraint:account.invoice:0
@ -3979,7 +3979,7 @@ msgstr ""
#. module: account
#: report:account.invoice:0
msgid "VAT :"
msgstr ""
msgstr "ITBIS:"
#. module: account
#: report:account.central.journal:0
@ -5349,7 +5349,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_vat_declaration
msgid "Account Vat Declaration"
msgstr ""
msgstr "Cuenta Declaración de ITBIS"
#. module: account
#: help:account.config.settings,module_account_accountant:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-26 11:52+0000\n"
"PO-Revision-Date: 2012-11-30 08:25+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-27 05:23+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: code:addons/account/wizard/account_fiscalyear_close.py:41
@ -108,7 +108,7 @@ msgstr ""
#. module: account
#: view:account.move.reconcile:0
msgid "Journal Entry Reconcile"
msgstr "Lettrage des écritures comptables"
msgstr "Lettrage d'écritures comptables"
#. module: account
#: view:account.account:0
@ -1914,7 +1914,7 @@ msgstr "Facture"
#. module: account
#: field:account.move,balance:0
msgid "balance"
msgstr ""
msgstr "solde"
#. module: account
#: model:process.node,note:account.process_node_analytic0
@ -2411,7 +2411,7 @@ msgstr "Merci de vérifier le compte défini dans le journal"
#. module: account
#: selection:account.entries.report,move_line_state:0
msgid "Valid"
msgstr "Valide"
msgstr "Equilibrée"
#. module: account
#: field:account.bank.statement,message_follower_ids:0
@ -2428,7 +2428,7 @@ msgstr "Impression de journal comptable"
#. module: account
#: model:ir.model,name:account.model_product_category
msgid "Product Category"
msgstr "Catégorie de produits"
msgstr "Catégorie d'articles"
#. module: account
#: model:ir.model,name:account.model_account_aged_trial_balance
@ -2702,7 +2702,7 @@ msgstr "Le numéro du RIB et/ou IBAN n'est pas correct."
#. module: account
#: help:account.config.settings,default_sale_tax:0
msgid "This sale tax will be assigned by default on new products."
msgstr ""
msgstr "Cette taxe de vente sera attribuée par défaut aux nouveaux articles"
#. module: account
#: report:account.general.ledger_landscape:0
@ -2719,12 +2719,12 @@ msgstr "Changer en"
#. module: account
#: view:account.entries.report:0
msgid "# of Products Qty "
msgstr "Qté de produits "
msgstr "Nb de qté. d'articles "
#. module: account
#: model:ir.model,name:account.model_product_template
msgid "Product Template"
msgstr "Modèle de produit"
msgstr "Modèle d'article"
#. module: account
#: report:account.account.balance:0
@ -3381,7 +3381,7 @@ msgstr "Août"
#. module: account
#: field:accounting.report,debit_credit:0
msgid "Display Debit/Credit Columns"
msgstr ""
msgstr "Afficher les colonnes de débit/crédit"
#. module: account
#: selection:account.entries.report,month:0
@ -4096,7 +4096,7 @@ msgstr "Continuer"
#: view:account.invoice.report:0
#: field:account.invoice.report,categ_id:0
msgid "Category of Product"
msgstr "Catégorie de produits"
msgstr "Catégorie d'article"
#. module: account
#: code:addons/account/account.py:987
@ -4142,7 +4142,7 @@ msgstr "Détail"
#: help:account.config.settings,default_purchase_tax:0
msgid "This purchase tax will be assigned by default on new products."
msgstr ""
"Cette taxe d'achat sera attribuée par défaut à tous les nouveaux produits."
"Cette taxe d'achat sera attribuée par défaut à tous les nouveaux articles."
#. module: account
#: report:account.invoice:0
@ -4419,7 +4419,7 @@ msgstr "Nom"
#: code:addons/account/installer.py:94
#, python-format
msgid "No unconfigured company !"
msgstr ""
msgstr "Pas de société non configurée !"
#. module: account
#: field:res.company,expects_chart_of_accounts:0
@ -5255,7 +5255,7 @@ msgstr "Facture "
#. module: account
#: field:account.chart.template,property_account_income:0
msgid "Income Account on Product Template"
msgstr "Modèle d'imputation des charges"
msgstr "Compte de revenu sur les modèles d'articles"
#. module: account
#: help:account.journal.period,state:0
@ -6853,7 +6853,7 @@ msgstr "Exercice comptable"
#. module: account
#: view:account.move.reconcile:0
msgid "Partial Reconcile Entries"
msgstr "Lettrage partiel d'écritures"
msgstr "Lettrage partiel d'écriture"
#. module: account
#: view:account.aged.trial.balance:0
@ -7275,7 +7275,7 @@ msgstr "Catégorie de compte de dépenses"
#. module: account
#: sql_constraint:account.tax:0
msgid "Tax Name must be unique per company!"
msgstr ""
msgstr "Le nom d'une taxe doit être unique par société !"
#. module: account
#: view:account.bank.statement:0
@ -7761,6 +7761,7 @@ msgstr "Document d'origine"
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)."
msgstr ""
"Aucun compte de dépense n'a été défini pour cet article : \"%s\" ( id. : %d)."
#. module: account
#: constraint:account.account:0
@ -11120,6 +11121,8 @@ msgstr "Manuellement"
msgid ""
"This is a field only used for internal purpose and shouldn't be displayed"
msgstr ""
"Ceci est un champ uniquement utilisé pour un usage interne et ne devrait pas "
"être affiché"
#. module: account
#: selection:account.entries.report,month:0
@ -11140,6 +11143,7 @@ msgstr "Grouper les factures par mois"
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)."
msgstr ""
"Aucun compte de revenu n'a été défini pour cet article : \"%s\" ( id. : %d)."
#. module: account
#: model:ir.actions.act_window,name:account.action_aged_receivable_graph
@ -11202,6 +11206,8 @@ msgid ""
"The selected unit of measure is not compatible with the unit of measure of "
"the product."
msgstr ""
"L'unité de mesure choisie n'est pas compatible avec l'unité de mesure de "
"l'article."
#. module: account
#: view:account.fiscal.position:0

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 17:52+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-11-29 13:22+0000\n"
"Last-Translator: Andrius Preimantas <andrius.preimantas@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:56+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -1750,7 +1750,7 @@ msgstr "Kreditorių sąskaita"
#: field:account.tax,account_paid_id:0
#: field:account.tax.template,account_paid_id:0
msgid "Refund Tax Account"
msgstr "Grąžintino mokesčio sąskaita"
msgstr "Grąžinimų mokesčio sąskaita"
#. module: account
#: model:ir.model,name:account.model_ir_sequence
@ -5832,7 +5832,7 @@ msgstr ""
#: field:account.bank.statement.line,name:0
#: field:account.invoice,reference:0
msgid "Communication"
msgstr ""
msgstr "Komunikacija"
#. module: account
#: view:account.config.settings:0
@ -6356,7 +6356,7 @@ msgstr ""
#: field:account.tax,account_collected_id:0
#: field:account.tax.template,account_collected_id:0
msgid "Invoice Tax Account"
msgstr "Mokėtino mokesčio sąskaita"
msgstr "Sąsk. fakt. mokesčių sąskaitą"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_general_journal

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-27 20:06+0000\n"
"PO-Revision-Date: 2012-11-28 13:31+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:40+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:14+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -5220,7 +5220,7 @@ msgstr "Fakturaer"
#. module: account
#: help:account.config.settings,expects_chart_of_accounts:0
msgid "Check this box if this company is a legal entity."
msgstr ""
msgstr "Kryss av denne boksen hvis dette selskapet er en juridisk enhet."
#. module: account
#: model:account.account.type,name:account.conf_account_type_chk
@ -5453,7 +5453,7 @@ msgstr ""
#. module: account
#: model:res.groups,name:account.group_account_manager
msgid "Financial Manager"
msgstr ""
msgstr "Finansiell ledelse."
#. module: account
#: field:account.journal,group_invoice_lines:0
@ -5469,7 +5469,7 @@ msgstr "Bevegelser"
#: field:account.bank.statement,details_ids:0
#: view:account.journal:0
msgid "CashBox Lines"
msgstr ""
msgstr "Kontontboks linjer."
#. module: account
#: model:ir.model,name:account.model_account_vat_declaration
@ -5515,6 +5515,8 @@ msgid ""
"There is no period defined for this date: %s.\n"
"Please create one."
msgstr ""
"Det er ingen periode definert for denne datoen:% s.\n"
"Vennligst opprette en."
#. module: account
#: help:account.tax,price_include:0
@ -5616,7 +5618,7 @@ msgstr ""
#: code:addons/account/account_invoice.py:1326
#, python-format
msgid "%s <b>paid</b>."
msgstr ""
msgstr "%s <b>Betalt</b>."
#. module: account
#: view:account.financial.report:0
@ -5759,7 +5761,7 @@ msgstr "Beregningskode (dersom type=kode)"
#, python-format
msgid ""
"Cannot find a chart of accounts for this company, you should create one."
msgstr ""
msgstr "Kan ikke finne en kontoplan for dette selskapet, du bør opprette en."
#. module: account
#: selection:account.analytic.journal,type:0
@ -5894,7 +5896,7 @@ msgstr "Inkludert i basisbeløpet"
#. module: account
#: field:account.invoice,supplier_invoice_number:0
msgid "Supplier Invoice Number"
msgstr ""
msgstr "Leverandør faktura nummer."
#. module: account
#: help:account.payment.term.line,days:0
@ -5915,6 +5917,8 @@ msgstr "Beregning"
#, python-format
msgid "You can not add/modify entries in a closed period %s of journal %s."
msgstr ""
"Du kan ikke legge til / endre oppføringer i en lukket periode% s av "
"tidsskriftet% s."
#. module: account
#: view:account.journal:0
@ -5939,7 +5943,7 @@ msgstr "Periodestart"
#. module: account
#: model:account.account.type,name:account.account_type_asset_view1
msgid "Asset View"
msgstr ""
msgstr "Eiendel Vis."
#. module: account
#: model:ir.model,name:account.model_account_common_account_report
@ -6012,12 +6016,12 @@ msgstr "Årsavslutningsjournal"
#. module: account
#: view:account.invoice:0
msgid "Draft Refund "
msgstr ""
msgstr "Utkast refusjon. "
#. module: account
#: view:cash.box.in:0
msgid "Fill in this form if you put money in the cash register:"
msgstr ""
msgstr "Fyll ut dette skjemaet hvis du setter penger i kasse apparatet:"
#. module: account
#: field:account.payment.term.line,value_amount:0
@ -6094,7 +6098,7 @@ msgstr "Kundefakturaer og kreditnotaer"
#: code:addons/account/wizard/account_move_journal.py:161
#, python-format
msgid "This period is already closed."
msgstr ""
msgstr "Denne perioden er allerede lukket."
#. module: account
#: field:account.analytic.line,amount_currency:0
@ -6107,7 +6111,7 @@ msgstr "Valutabeløp"
#. module: account
#: selection:res.company,tax_calculation_rounding_method:0
msgid "Round per Line"
msgstr ""
msgstr "Runde per. linje."
#. module: account
#: model:ir.actions.act_window,name:account.action_view_move_line
@ -6168,7 +6172,7 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
#, python-format
msgid "You must set a period length greater than 0."
msgstr ""
msgstr "Du må angi en periode lengde større enn 0."
#. module: account
#: view:account.fiscal.position.template:0
@ -6179,7 +6183,7 @@ msgstr "Regnskapsstatus Mal"
#. module: account
#: view:account.invoice:0
msgid "Draft Refund"
msgstr ""
msgstr "Utkast refusjon."
#. module: account
#: view:account.analytic.chart:0
@ -6216,7 +6220,7 @@ msgstr "Avstem med nedskriving"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "Du kan ikke opprette journal elementer på en konto av typen visning."
#. module: account
#: selection:account.payment.term.line,value:0
@ -6291,7 +6295,7 @@ msgstr "Flytt navn (id): %s (%s)"
#. module: account
#: view:account.move.journal:0
msgid "Standard Entries"
msgstr ""
msgstr "Standard oppføringer."
#. module: account
#: view:account.move.line.reconcile:0
@ -6364,7 +6368,7 @@ msgstr "Avgiftskartlegging"
#. module: account
#: view:account.config.settings:0
msgid "Select Company"
msgstr ""
msgstr "Velg Firma."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_state_open
@ -6438,7 +6442,7 @@ msgstr "Antall linjer"
#. module: account
#: view:account.invoice:0
msgid "(update)"
msgstr ""
msgstr "(Oppdatering)"
#. module: account
#: field:account.aged.trial.balance,filter:0
@ -6480,7 +6484,7 @@ msgstr ""
#. module: account
#: field:account.journal,loss_account_id:0
msgid "Loss Account"
msgstr ""
msgstr "Tap konto."
#. module: account
#: field:account.tax,account_collected_id:0
@ -6742,7 +6746,7 @@ msgstr ""
#. module: account
#: view:account.config.settings:0
msgid "Bank & Cash"
msgstr ""
msgstr "Bank og kontant."
#. module: account
#: help:account.fiscalyear.close.state,fy_id:0
@ -6828,7 +6832,7 @@ msgstr "Fordring"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Du kan ikke opprette journal enmer i en lukker konto."
#. module: account
#: code:addons/account/account_invoice.py:594

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-25 13:43+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"PO-Revision-Date: 2012-12-01 16:00+0000\n"
"Last-Translator: Thomas Pot (Open2bizz) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-26 04:41+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:37+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#, python-format
#~ msgid "Integrity Error !"
@ -114,6 +114,7 @@ msgid ""
"Error!\n"
"You cannot create recursive account templates."
msgstr ""
"Fout! Het is niet toegestaan on een recursief grootboekschema aan te maken."
#. module: account
#. openerp-web
@ -155,6 +156,19 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik om de zichtbare kolommen van een dagboek te "
"specificeren.\n"
" </p><p>\n"
" Dagboekweergaves bepalen de manier waarop boekingen \n"
" ingevoerd kunnen worden. Selecteer de velden welke zichtbaar "
"\n"
" moeten zijn en bepaald de volgorde daarvan.\n"
" </p><p>\n"
" In de dagboekinstellingen kan bepaald worden welke gegevens\n"
" zichtbaar zijn bij boekingen in het betreffende dagboek.\n"
" </p>\n"
" "
#. module: account
#: help:account.payment.term,active:0
@ -205,6 +219,8 @@ msgid ""
"which is set after generating opening entries from 'Generate Opening "
"Entries'."
msgstr ""
"U dient het 'Jaarafsluiting dagboek' te definiëren voor het fiscale jaar, "
"nadat u een openingsbalans heeft gemaakt"
#. module: account
#: field:account.fiscal.position.account,account_src_id:0
@ -223,6 +239,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" klik hier om een fiscale periode toe te voegen.\n"
" </p><p>\n"
" Een fiscale periode is vaak een maand of een kwartaal. "
"Normaal\n"
" zal dit gelijk zijn met de periode van uw Belasting "
"aangifte.\n"
" </p>\n"
" "
#. module: account
#: model:ir.actions.act_window,name:account.action_view_created_invoice_dashboard
@ -243,7 +268,7 @@ msgstr "Dagboek: %s"
#. module: account
#: help:account.config.settings,code_digits:0
msgid "No. of digits to use for account code"
msgstr ""
msgstr "Aantal cijfers voor de rekening code"
#. module: account
#: help:account.analytic.journal,type:0
@ -263,6 +288,9 @@ msgid ""
"lines for invoices. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
"Geef de kostenplaats welke standaard gebruikt moet worden bij BTW factuur "
"regels. Als u dit veld niet invuld, wordt er standaard geen kostenplaats "
"gebruikt."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
@ -298,7 +326,7 @@ msgstr "Belgische overzichten"
#. module: account
#: model:account.account.type,name:account.account_type_income_view1
msgid "Income View"
msgstr ""
msgstr "View opbrengsten"
#. module: account
#: help:account.account,user_type:0
@ -314,7 +342,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,sale_refund_sequence_next:0
msgid "Next credit note number"
msgstr ""
msgstr "Volgend nummer creditnota"
#. module: account
#: help:account.config.settings,module_account_voucher:0
@ -323,6 +351,10 @@ msgid ""
"sales, purchase, expense, contra, etc.\n"
" This installs the module account_voucher."
msgstr ""
"Deze module bevat alle voorzieningen voor registratie van "
"(bank)afschriften.\n"
" "
"hiermee installeert u de module 'account_voucher'"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
@ -361,6 +393,18 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik hier om een creditnota te maken. \n"
" </p><p>\n"
" Een creditnota is een factuur, waarbij u een bestaande "
"factuur volledig of gedeeltelijk \n"
" crediteert.\n"
" </p><p>\n"
" In plaats van handmatig kunt u hiermee een creditnota maken "
"\n"
" direct vanaf de originele factuur.\n"
" </p>\n"
" "
#. module: account
#: field:account.journal.column,field:0
@ -426,12 +470,12 @@ msgstr "Juni"
#: code:addons/account/wizard/account_automatic_reconcile.py:148
#, python-format
msgid "You must select accounts to reconcile."
msgstr ""
msgstr "Selecteer de grootboekrekeningen die afgeletterd moeten worden."
#. module: account
#: help:account.config.settings,group_analytic_accounting:0
msgid "Allows you to use the analytic accounting."
msgstr ""
msgstr "stelt u in staat kostenplaatsen te gebruiken"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_moves_bank
@ -510,6 +554,13 @@ msgid ""
"this box, you will be able to do invoicing & payments,\n"
" but not accounting (Journal Items, Chart of Accounts, ...)"
msgstr ""
"Stelt u in staat activa te beheren voor een bedrijf/persoon.\n"
" Het registreert afschrijvingen voor activa, en creëert "
"journaalposten voor afschrijvingen.\n"
" Hiermee installeert u de module 'account_asset'. Als u "
"dit niet aanvinkt, kunt u wel facturen en betalingen\n"
" registreren, maar geen financiële administratie voeren "
"(Rekeningschema, Journaalboekingen, ....)"
#. module: account
#: field:account.account.template,chart_template_id:0
@ -531,6 +582,18 @@ msgid ""
"should choose 'Round per line' because you certainly want the sum of your "
"tax-included line subtotals to be equal to the total amount with taxes."
msgstr ""
"Als u 'afronden per regel' selecteert: voor elke BTW rekening , wordt het "
"BTW bedrag eerst berekend en afgerond voor elke factuur regel en vervolgens "
"worden deze afgeronde bedragen opgeteld, wat leidt tot het totale bedrag "
"voor deze belasting. \r\n"
"\r\n"
"Als u 'afronden globaal' selecteert: voor elke BTW rekening wordt het BTW "
"bedrag berekend voor elke factuur regel. vervolgens zullen deze bedragen "
"worden opgeteld en uiteindelijk wordt dit totale BTW bedrag afgerond. \r\n"
"\r\n"
"Als u verkoopt met BTW inbegrepen, moet u kiezen voor 'afronden per regel', "
"omdat U zeker wil zijn dat de subtotalen van \r\n"
"uw (BTW inbegrepen) regels gelijk zijn aan het totale bedrag met BTW."
#. module: account
#: model:ir.model,name:account.model_wizard_multi_charts_accounts
@ -600,7 +663,7 @@ msgstr "Bovenliggend doel"
#. module: account
#: help:account.invoice.line,sequence:0
msgid "Gives the sequence of this line when displaying the invoice."
msgstr ""
msgstr "Geeft de volgorde van de factuur regel bij het tonen van de factuur"
#. module: account
#: field:account.bank.statement,account_id:0
@ -679,7 +742,7 @@ msgstr "Niets af te letteren"
#. module: account
#: field:account.config.settings,decimal_precision:0
msgid "Decimal precision on journal entries"
msgstr ""
msgstr "Aantal decimalen van journaalposten"
#. module: account
#: selection:account.config.settings,period:0
@ -713,7 +776,7 @@ msgstr "Rapport waarde"
msgid ""
"Specified journal does not have any account move entries in draft state for "
"this period."
msgstr ""
msgstr "Geselecteerd dagboek heeft geen 'concept'boekingen"
#. module: account
#: view:account.fiscal.position:0
@ -736,12 +799,12 @@ msgstr "Hoofdvolgorde moet afwijken van de huidige !"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "De huidige valuta-soort is niet juist geconfigureerd."
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "Winst & Verlies rekeneing"
#. module: account
#: code:addons/account/account_move_line.py:1249
@ -753,7 +816,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view_multi
msgid "Bank/Cash Journal (Multi-Currency) View"
msgstr ""
msgstr "Bank / kas dagboek (multi-valuta) overzicht"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
@ -768,12 +831,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Geen journaalposten gevonden.\n"
" </p>\n"
" "
#. module: account
#: code:addons/account/account.py:1606
#, python-format
msgid "Cannot create move with currency different from .."
msgstr ""
msgstr "U kunt geen boeking doen met een andere valuta dan ..."
#. module: account
#: model:email.template,report_name:account.email_template_edi_invoice
@ -781,6 +848,8 @@ msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
"Factuur_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
#. module: account
#: view:account.period:0
@ -807,7 +876,7 @@ msgstr "Dagboek periode"
#: constraint:account.move:0
msgid ""
"You cannot create more than one move per period on a centralized journal."
msgstr ""
msgstr "U kunt niet meerdere boekingen doen bij een centraal journaal"
#. module: account
#: help:account.tax,account_analytic_paid_id:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 17:57+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-12-01 21:27+0000\n"
"Last-Translator: Ayhan KIZILTAN <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:59+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -26,6 +26,7 @@ msgstr "Sistem ödemesi"
msgid ""
"An account fiscal position could be defined only once time on same accounts."
msgstr ""
"Bir hesabın mali durumu aynı hesapüzerinde yalnız bir kez tanımlanabilir."
#. module: account
#: view:account.unreconcile:0
@ -85,7 +86,7 @@ msgstr "Fatura ya da ödemeden içeaktar"
#: code:addons/account/account_move_line.py:1303
#, python-format
msgid "Bad Account!"
msgstr ""
msgstr "Hatalı Hesap!"
#. module: account
#: view:account.move:0
@ -107,6 +108,8 @@ msgid ""
"Error!\n"
"You cannot create recursive account templates."
msgstr ""
"Hata!\n"
"Yinelemeli hesap şablonları oluşturamazsınız."
#. module: account
#. openerp-web

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-01 08:44+0000\n"
"PO-Revision-Date: 2012-11-30 17:32+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:01+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -83,7 +83,7 @@ msgstr "从发票或付款单导入"
#: code:addons/account/account_move_line.py:1303
#, python-format
msgid "Bad Account!"
msgstr ""
msgstr "坏账"
#. module: account
#: view:account.move:0
@ -246,7 +246,7 @@ msgid ""
"Set the analytic account that will be used by default on the invoice tax "
"lines for invoices. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
msgstr "设置辅助核算项,用于退款时发票上默认项目。如果默认不要在发票的税上 使用辅助核算项,留空。"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
@ -282,7 +282,7 @@ msgstr "比利时报表"
#. module: account
#: model:account.account.type,name:account.account_type_income_view1
msgid "Income View"
msgstr ""
msgstr "收入视图"
#. module: account
#: help:account.account,user_type:0
@ -363,7 +363,7 @@ msgstr "科目反核销"
#. module: account
#: field:account.config.settings,module_account_budget:0
msgid "Budget management"
msgstr ""
msgstr "预算管理"
#. module: account
#: view:product.template:0
@ -381,7 +381,7 @@ msgstr "这里可以设置你想要记录显示格式.如果保留自动,它将
#. module: account
#: field:account.config.settings,group_multi_currency:0
msgid "Allow multi currencies"
msgstr ""
msgstr "允许多种货币"
#. module: account
#: code:addons/account/account_invoice.py:73
@ -402,12 +402,12 @@ msgstr "6"
#: code:addons/account/wizard/account_automatic_reconcile.py:148
#, python-format
msgid "You must select accounts to reconcile."
msgstr ""
msgstr "你必须选择要核销的账簿 。"
#. module: account
#: help:account.config.settings,group_analytic_accounting:0
msgid "Allows you to use the analytic accounting."
msgstr ""
msgstr "允许使用辅助核算"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_moves_bank
@ -423,7 +423,7 @@ msgstr "本视图供财务人员在系统中录入单据。如果您在系统里
#: view:account.invoice.report:0
#: field:account.invoice.report,user_id:0
msgid "Salesperson"
msgstr ""
msgstr "销售员"
#. module: account
#: model:ir.model,name:account.model_account_tax_template
@ -517,7 +517,7 @@ msgstr "备选币种所示金额"
#. module: account
#: view:account.journal:0
msgid "Available Coins"
msgstr ""
msgstr "有效的硬币"
#. module: account
#: field:accounting.report,enable_filter:0
@ -646,7 +646,7 @@ msgstr "财务人员确认的报表"
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:31
#, python-format
msgid "Nothing to reconcile"
msgstr ""
msgstr "没有什么被核销"
#. module: account
#: field:account.config.settings,decimal_precision:0
@ -683,7 +683,7 @@ msgstr "报表数值"
msgid ""
"Specified journal does not have any account move entries in draft state for "
"this period."
msgstr ""
msgstr "这个期间内,指定的分类账没有任何会计凭证分录在草稿状态。"
#. module: account
#: view:account.fiscal.position:0
@ -706,12 +706,12 @@ msgstr "序列号必须唯一"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "当前的币种配置不正确。"
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "利润科目"
#. module: account
#: code:addons/account/account_move_line.py:1249
@ -722,7 +722,7 @@ msgstr "根据输入的凭证日期没有找到期间或找到了多个期间"
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view_multi
msgid "Bank/Cash Journal (Multi-Currency) View"
msgstr ""
msgstr "银行/现金分类账(多币种)视图"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
@ -742,7 +742,7 @@ msgstr ""
#: code:addons/account/account.py:1606
#, python-format
msgid "Cannot create move with currency different from .."
msgstr ""
msgstr "不能不同币种的凭证"
#. module: account
#: model:email.template,report_name:account.email_template_edi_invoice
@ -750,6 +750,8 @@ msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and '草稿' or ''}"
#. module: account
#: view:account.period:0
@ -784,7 +786,7 @@ msgid ""
"Set the analytic account that will be used by default on the invoice tax "
"lines for refunds. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
msgstr "设置辅助核算项,用于退款时发票上默认税科目。如果默认不要在发票的税上 使用辅助核算项,留空。"
#. module: account
#: view:account.account:0
@ -800,7 +802,7 @@ msgstr "应收款科目"
#. module: account
#: view:account.config.settings:0
msgid "Configure your company bank accounts"
msgstr ""
msgstr "配置你公司银行账户"
#. module: account
#: constraint:account.move.line:0
@ -835,7 +837,7 @@ msgstr "打印发票"
msgid ""
"Cannot %s invoice which is already reconciled, invoice should be "
"unreconciled first. You can only refund this invoice."
msgstr ""
msgstr "不能 %s 已经核销的发票, 发票必须被首先反核销.。只能退还这张发票。"
#. module: account
#: selection:account.financial.report,display_detail:0
@ -911,7 +913,7 @@ msgstr "供应商发票和退款"
#: code:addons/account/account_move_line.py:833
#, python-format
msgid "Entry is already reconciled."
msgstr ""
msgstr "分录已经核销。"
#. module: account
#: view:account.move.line.unreconcile.select:0
@ -934,7 +936,7 @@ msgstr "辅助核算账簿"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "以邮件发送"
#. module: account
#: help:account.central.journal,amount_currency:0
@ -944,7 +946,7 @@ msgstr ""
msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
msgstr "如果币种跟公司本位币不同,带币种打印报表。"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -954,12 +956,12 @@ msgstr "J.C.(成本)凭证名称"
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "科目代码和名称"
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
msgid "created"
msgstr ""
msgstr "已创建"
#. module: account
#: selection:account.entries.report,month:0
@ -1022,7 +1024,7 @@ msgstr "到期"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "采购分类账"
#. module: account
#: code:addons/account/account.py:1374
@ -1030,7 +1032,7 @@ msgstr ""
msgid ""
"You cannot validate this journal entry because account \"%s\" does not "
"belong to chart of accounts \"%s\"."
msgstr ""
msgstr "你不能核准这个分类账分录,因为科目 \"%s\" 不属于科目表 \"%s\"."
#. module: account
#: view:validate.account.move:0
@ -1048,7 +1050,7 @@ msgstr "总金额"
#. module: account
#: help:account.invoice,supplier_invoice_number:0
msgid "The reference of this invoice as provided by the supplier."
msgstr ""
msgstr "这个发票的编号由供应商提供。"
#. module: account
#: selection:account.account,type:0
@ -1133,7 +1135,7 @@ msgstr "编码"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "特性"
#. module: account
#: code:addons/account/account.py:2323
@ -1178,7 +1180,7 @@ msgstr "科目名称"
#. module: account
#: field:account.journal,with_last_closing_balance:0
msgid "Opening With Last Closing Balance"
msgstr ""
msgstr "用末期的期终余额打开"
#. module: account
#: view:account.state.open:0
@ -1218,12 +1220,12 @@ msgstr "根据您国家定义这些类型,该类型包含有关科目及其具
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "退款 "
#. module: account
#: help:account.config.settings,company_footer:0
msgid "Bank accounts as printed in the footer of each printed document"
msgstr ""
msgstr "银行帐号被打印在每个输出单据的页脚。"
#. module: account
#: view:account.tax:0
@ -1245,7 +1247,7 @@ msgstr "现金记录"
#. module: account
#: field:account.config.settings,sale_refund_journal_id:0
msgid "Sale refund journal"
msgstr ""
msgstr "销售退货分类账"
#. module: account
#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
@ -1281,7 +1283,7 @@ msgstr "会计期间开始于"
#. module: account
#: view:account.tax:0
msgid "Refunds"
msgstr ""
msgstr "退款"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -1349,7 +1351,7 @@ msgstr "兑出汇率"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "模版"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1361,7 +1363,7 @@ msgstr "状况"
msgid ""
"Set the account that will be set by default on invoice tax lines for "
"refunds. Leave empty to use the expense account."
msgstr ""
msgstr "设置科目,用于退款时发票上默认税科目。留空使用费用科目。"
#. module: account
#: field:account.move.line.reconcile,trans_nbr:0
@ -1519,12 +1521,12 @@ msgstr "报表选项"
#. module: account
#: field:account.fiscalyear.close.state,fy_id:0
msgid "Fiscal Year to Close"
msgstr ""
msgstr "财政年度结束"
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
msgid "Invoice sequence"
msgstr ""
msgstr "发票序列"
#. module: account
#: model:ir.model,name:account.model_account_entries_report
@ -1543,11 +1545,13 @@ msgid ""
"And after getting confirmation from the bank it will be in 'Confirmed' "
"status."
msgstr ""
"当新的对账单被创建,状态是“草稿”。\n"
"从银行确认后,是“已经确认状态”。"
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice Status"
msgstr ""
msgstr "发票状态"
#. module: account
#: view:account.invoice.report:0
@ -1579,7 +1583,7 @@ msgstr "余额不为0"
msgid ""
"There is no default debit account defined \n"
"on journal \"%s\"."
msgstr ""
msgstr "在分类账 \"%s\" 没有默认借方科目定义。"
#. module: account
#: view:account.tax:0
@ -1614,6 +1618,8 @@ msgid ""
"There is nothing to reconcile. All invoices and payments\n"
" have been reconciled, your partner balance is clean."
msgstr ""
"没有需要核销的。\n"
"所有发票和付款已经被核销,合作伙伴余额已经结清。"
#. module: account
#: field:account.chart.template,code_digits:0
@ -1632,7 +1638,7 @@ msgstr "如果是手工分录的话就跳过“草稿”状态"
#: code:addons/account/wizard/account_report_common.py:159
#, python-format
msgid "Not implemented."
msgstr ""
msgstr "未执行。"
#. module: account
#: view:account.invoice.refund:0
@ -1642,7 +1648,7 @@ msgstr "冲销发票"
#. module: account
#: view:account.config.settings:0
msgid "eInvoicing & Payments"
msgstr ""
msgstr "电子发票和支付"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -1675,7 +1681,7 @@ msgstr "供应商红字发票"
#. module: account
#: field:account.config.settings,company_footer:0
msgid "Bank accounts footer preview"
msgstr ""
msgstr "银行帐号页脚预览"
#. module: account
#: selection:account.account,type:0
@ -1722,7 +1728,7 @@ msgstr "未完税"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "高级选项"
#. module: account
#: view:account.bank.statement:0
@ -1821,7 +1827,7 @@ msgstr "会计年度序列"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "辅助核算"
#. module: account
#: report:account.overdue:0
@ -1864,13 +1870,13 @@ msgstr "未确定业务伙伴"
msgid ""
"The journal must have centralized counterpart without the Skipping draft "
"state option checked."
msgstr ""
msgstr "这个分类账簿的“合并对方科目”必须被选中,“跳过草稿状态”不能选中。"
#. module: account
#: code:addons/account/account_move_line.py:836
#, python-format
msgid "Some entries are already reconciled."
msgstr ""
msgstr "有些分录已经被核销。"
#. module: account
#: model:email.template,body_html:account.email_template_edi_invoice
@ -1991,7 +1997,7 @@ msgstr "该向导将改变发票的币种"
msgid ""
"Select a configuration package to setup automatically your\n"
" taxes and chart of accounts."
msgstr ""
msgstr "选择一个配置包来自动化安装你的税和科目表"
#. module: account
#: view:account.analytic.account:0
@ -2006,7 +2012,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view
msgid "Bank/Cash Journal View"
msgstr ""
msgstr "银行/现金 分类账视图"
#. module: account
#: report:account.journal.period.print.sale.purchase:0
@ -2034,18 +2040,18 @@ msgstr "应收&应付"
#. module: account
#: field:account.config.settings,module_account_payment:0
msgid "Manage payment orders"
msgstr ""
msgstr "管理付款单"
#. module: account
#: view:account.period:0
msgid "Duration"
msgstr ""
msgstr "持续时间"
#. module: account
#: view:account.bank.statement:0
#: field:account.bank.statement,last_closing_balance:0
msgid "Last Closing Balance"
msgstr ""
msgstr "期终余额"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
@ -2083,7 +2089,7 @@ msgstr "客户关联:"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
msgstr ""
msgstr "用这个代码做纳税申报"
#. module: account
#: help:account.period,special:0
@ -2098,7 +2104,7 @@ msgstr "银行单据草稿"
#. module: account
#: field:account.config.settings,module_account_check_writing:0
msgid "Pay your suppliers by check"
msgstr ""
msgstr "用支票支付你的供应商"
#. module: account
#: field:account.move.line.reconcile,credit:0
@ -2109,7 +2115,7 @@ msgstr "贷方金额"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "消息"
#. module: account
#: view:account.vat.declaration:0
@ -2121,6 +2127,9 @@ msgid ""
"useful because it enables you to preview at any time the tax that you owe at "
"the start and end of the month or quarter."
msgstr ""
"这个菜单基于发票或者支付打印一个纳税申报。选择财务年度的一个或几个会计期间。\r\n"
"纳税申报需要的信息由Openerp自动从发票或者在有些国家是付款单生成。数据是实时更新的。\r\n"
"这非常有用,他使你任何时间可预览 在月份(或季度)的开始和结束欠了多少税。"
#. module: account
#: code:addons/account/account.py:408
@ -2207,7 +2216,7 @@ msgstr "发票分析"
#. module: account
#: model:ir.model,name:account.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "Email撰写向导"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@ -2253,7 +2262,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,currency_id:0
msgid "Default company currency"
msgstr ""
msgstr "公司本位币"
#. module: account
#: field:account.invoice,move_id:0
@ -2306,7 +2315,7 @@ msgstr "生效"
#: field:account.bank.statement,message_follower_ids:0
#: field:account.invoice,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_print_journal
@ -2327,7 +2336,7 @@ msgstr "过期的试算表"
#. module: account
#: view:account.fiscalyear.close.state:0
msgid "Close Fiscal Year"
msgstr ""
msgstr "关闭财政年度"
#. module: account
#: model:process.node,note:account.process_node_reconciliation0
@ -2338,7 +2347,7 @@ msgstr "比较会计和支付项"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
msgid "A tax fiscal position could be defined only once time on same taxes."
msgstr ""
msgstr "同样的税 上面一次只能定义一个财务结构。"
#. module: account
#: view:account.tax:0
@ -2350,12 +2359,12 @@ msgstr "税定义"
#: view:account.config.settings:0
#: model:ir.actions.act_window,name:account.action_account_config
msgid "Configure Accounting"
msgstr ""
msgstr "设置会计模块"
#. module: account
#: field:account.invoice.report,uom_name:0
msgid "Reference Unit of Measure"
msgstr ""
msgstr "参考计量单位"
#. module: account
#: help:account.journal,allow_date:0
@ -2369,12 +2378,12 @@ msgstr "如果设为True当分录的日期不在会计周期内将不接受
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:8
#, python-format
msgid "Good job!"
msgstr ""
msgstr "做得好!"
#. module: account
#: field:account.config.settings,module_account_asset:0
msgid "Assets management"
msgstr ""
msgstr "固定资产管理"
#. module: account
#: view:account.account:0
@ -2424,7 +2433,7 @@ msgstr "斜体(小一些)"
msgid ""
"If you want the journal should be control at opening/closing, check this "
"option"
msgstr ""
msgstr "如果你要这个分类账在开启和结账时被控制,选中此项。"
#. module: account
#: view:account.bank.statement:0
@ -2459,7 +2468,7 @@ msgstr "打开分录"
#. module: account
#: field:account.config.settings,purchase_refund_sequence_next:0
msgid "Next supplier credit note number"
msgstr ""
msgstr "下个供应商信用记录编号"
#. module: account
#: field:account.automatic.reconcile,account_ids:0
@ -2499,12 +2508,12 @@ msgstr "纳税明细表"
#: code:addons/account/account_cash_statement.py:256
#, python-format
msgid "You do not have rights to open this %s journal !"
msgstr ""
msgstr "你没有权限打开 %s 分类账。"
#. module: account
#: model:res.groups,name:account.group_supplier_inv_check_total
msgid "Check Total on supplier invoices"
msgstr ""
msgstr "检查供应商发票合计"
#. module: account
#: selection:account.invoice,state:0
@ -2579,7 +2588,7 @@ msgstr "RIB/IBAN 无效"
#. module: account
#: help:account.config.settings,default_sale_tax:0
msgid "This sale tax will be assigned by default on new products."
msgstr ""
msgstr "在新产品上,销项税将被指定为默认值"
#. module: account
#: report:account.general.ledger_landscape:0
@ -2718,7 +2727,7 @@ msgstr "财务结构"
#: code:addons/account/account_move_line.py:592
#, python-format
msgid "You cannot create journal items on a closed account %s %s."
msgstr ""
msgstr "你不能在关闭的科目%s %s 上面创建分类账分录。"
#. module: account
#: field:account.period.close,sure:0
@ -2753,7 +2762,7 @@ msgstr "草稿状态的发票"
#. module: account
#: view:product.category:0
msgid "Account Properties"
msgstr ""
msgstr "科目属性"
#. module: account
#: view:account.partner.reconcile.process:0
@ -2840,7 +2849,7 @@ msgstr "EXJ"
#. module: account
#: view:account.invoice.refund:0
msgid "Create Credit Note"
msgstr ""
msgstr "产生一张红字发票"
#. module: account
#: field:product.template,supplier_taxes_id:0
@ -2888,7 +2897,7 @@ msgstr ""
#: code:addons/account/wizard/account_state_open.py:37
#, python-format
msgid "Invoice is already reconciled."
msgstr ""
msgstr "发票已经被核销"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -2936,7 +2945,7 @@ msgstr "辅助核算项"
#: field:account.config.settings,default_purchase_tax:0
#: field:account.config.settings,purchase_tax:0
msgid "Default purchase tax"
msgstr ""
msgstr "默认进项税"
#. module: account
#: view:account.account:0
@ -3153,13 +3162,13 @@ msgstr ""
msgid ""
"Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
"Forma' state."
msgstr ""
msgstr "选择的发票不能被确认,因为它们不是“草稿”或者“形式发票”状态"
#. module: account
#: code:addons/account/account.py:1114
#, python-format
msgid "You should choose the periods that belong to the same company."
msgstr ""
msgstr "你要选择属于同一个公司的会计区间"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_sales_tree_all
@ -3172,17 +3181,17 @@ msgstr "销售科目"
#: code:addons/account/account.py:1471
#, python-format
msgid "You cannot delete a posted journal entry \"%s\"."
msgstr ""
msgstr "你不能删除已经登帐的分类账分录\"%s\"."
#. module: account
#: view:account.invoice:0
msgid "Accounting Period"
msgstr ""
msgstr "会计期间"
#. module: account
#: field:account.config.settings,sale_journal_id:0
msgid "Sale journal"
msgstr ""
msgstr "销售分类帐"
#. module: account
#: code:addons/account/account.py:2323
@ -3198,7 +3207,7 @@ msgstr "您必须定义这 '%s' 的辅助核算账簿!"
msgid ""
"This journal already contains items, therefore you cannot modify its company "
"field."
msgstr ""
msgstr "这个分类账已经包含了分录,因此不能修改他的公司字段"
#. module: account
#: code:addons/account/account.py:408
@ -3206,7 +3215,7 @@ msgstr ""
msgid ""
"You need an Opening journal with centralisation checked to set the initial "
"balance."
msgstr ""
msgstr "你需要一个打开的分类账,集中设置初始余额。"
#. module: account
#: model:ir.actions.act_window,name:account.action_tax_code_list
@ -3275,7 +3284,7 @@ msgstr "必需的"
#. module: account
#: field:wizard.multi.charts.accounts,only_one_chart_template:0
msgid "Only One Chart Template Available"
msgstr ""
msgstr "只有一个图表模版可用。"
#. module: account
#: view:account.chart.template:0
@ -3288,7 +3297,7 @@ msgstr "费用科目"
#: field:account.bank.statement,message_summary:0
#: field:account.invoice,message_summary:0
msgid "Summary"
msgstr ""
msgstr "摘要"
#. module: account
#: help:account.invoice,period_id:0
@ -3387,7 +3396,7 @@ msgstr "试算平衡"
#: code:addons/account/account.py:430
#, python-format
msgid "Unable to adapt the initial balance (negative value)."
msgstr ""
msgstr "不能适应初始余额(负数)"
#. module: account
#: selection:account.invoice,type:0
@ -3406,7 +3415,7 @@ msgstr "选择会计年度"
#: view:account.config.settings:0
#: view:account.installer:0
msgid "Date Range"
msgstr ""
msgstr "日期范围"
#. module: account
#: view:account.period:0
@ -3454,7 +3463,7 @@ msgstr ""
#: code:addons/account/account.py:2650
#, python-format
msgid "There is no parent code for the template account."
msgstr ""
msgstr "模版科目没有上级代码"
#. module: account
#: help:account.chart.template,code_digits:0
@ -3481,7 +3490,7 @@ msgstr "总是"
#: field:account.config.settings,module_account_accountant:0
msgid ""
"Full accounting features: journals, legal statements, chart of accounts, etc."
msgstr ""
msgstr "全部会计特性:分类账,税务报表,会计科目表 等等"
#. module: account
#: view:account.analytic.line:0
@ -3538,12 +3547,12 @@ msgstr "电子文件"
#. module: account
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "错误:无效的(EAN)条码"
#. module: account
#: field:account.config.settings,has_chart_of_accounts:0
msgid "Company has a chart of accounts"
msgstr ""
msgstr "公司有一个会计科目表"
#. module: account
#: view:account.payment.term.line:0
@ -3559,7 +3568,7 @@ msgstr "业务伙伴会计帐本(往来帐)"
#: code:addons/account/account_invoice.py:1321
#, python-format
msgid "%s <b>created</b>."
msgstr ""
msgstr "%s <b>被创建</b>."
#. module: account
#: help:account.journal.column,sequence:0
@ -3569,7 +3578,7 @@ msgstr "指定账簿栏目的序列"
#. module: account
#: view:account.period:0
msgid "Account Period"
msgstr ""
msgstr "会计期间"
#. module: account
#: help:account.account,currency_id:0
@ -3594,7 +3603,7 @@ msgstr "科目一览表模板"
#. module: account
#: view:account.bank.statement:0
msgid "Transactions"
msgstr ""
msgstr "交易"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
@ -3691,7 +3700,7 @@ msgstr "会计应用程序设置"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_vat_declaration
msgid "Account Tax Declaration"
msgstr ""
msgstr "会计税务申报"
#. module: account
#: view:account.payment.term.line:0
@ -3705,7 +3714,7 @@ msgid ""
"You cannot create an invoice on a centralized journal. Uncheck the "
"centralized counterpart box in the related journal from the configuration "
"menu."
msgstr ""
msgstr "你不能在汇总账簿上面创建发票。在配置菜单中 相关的 分类账簿表单里不要选中“合并对方科目”。"
#. module: account
#: field:account.bank.statement,balance_start:0
@ -3730,7 +3739,7 @@ msgstr "关闭一个会计期间"
#: view:account.bank.statement:0
#: field:account.cashbox.line,subtotal_opening:0
msgid "Opening Subtotal"
msgstr ""
msgstr "期初小计"
#. module: account
#: field:account.financial.report,display_detail:0
@ -4381,7 +4390,9 @@ msgid ""
"entries of all fiscal years. Note that you should define it with default "
"debit/credit accounts, of type 'situation' and with a centralized "
"counterpart."
msgstr "最好使用一个专用的账簿去控制所有会计年度的开账分录。注意您应该设定默认的借方/贷方科目,“状态”的类型和能汇总账簿对应。"
msgstr ""
"最好使用一个专用的账簿去控制所有会计年度的开账分录。\r\n"
"注意您应该设定默认的借方/贷方科目,类型是 “期初/期末状态”,并且选中“合并对方科目”。"
#. module: account
#: view:account.installer:0
@ -5229,7 +5240,7 @@ msgstr "发票草稿已生效。 "
msgid ""
"Set the account that will be set by default on invoice tax lines for "
"invoices. Leave empty to use the expense account."
msgstr ""
msgstr "设置科目,用于退款时发票上默认税科目。留空使用费用科目。"
#. module: account
#: code:addons/account/account.py:947
@ -5577,6 +5588,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击以注册一个新的账簿\n"
" </p><p>\n"
" 这个视图给会计人员使用为了在Openerp中快速登记分录。\n"
" 如果要登记供应商发票从记录费用科目行开始。Openerp将\n"
" 建议你自动处理科目相关的税,以及对方科目 \"应付帐款\"。\n"
" </p>\n"
" "
#. module: account
#: view:account.move.line:0
@ -6098,7 +6117,7 @@ msgstr "固定金额"
#: code:addons/account/account_move_line.py:1151
#, python-format
msgid "You cannot change the tax, you should remove and recreate lines."
msgstr ""
msgstr "你不能修改税,你需要删去并且重建这一行"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_automatic_reconcile
@ -7686,7 +7705,7 @@ msgid ""
"Check this box to determine that each entry of this journal won't create a "
"new counterpart but will share the same counterpart. This is used in fiscal "
"year closing."
msgstr "勾选此项,在会计年度关闭时, 确定每个账簿的分录不会产生新副本, 而是共享同一副本。"
msgstr "选中此项,在年终结转时,确定每个分类账簿的分录不会产生新的对方科目, 而是共享同一对方科目。"
#. module: account
#: field:account.bank.statement,closing_date:0

View File

@ -98,150 +98,124 @@ class account_invoice_report(osv.osv):
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
'residual': fields.float('Total Residual', readonly=True),
'user_currency_residual': fields.function(_compute_amounts_in_user_currency, string="Total Residual", type='float', digits_compute=dp.get_precision('Account'), multi="_compute_amounts"),
'delay_to_pay': fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),
'due_delay': fields.float('Avg. Due Delay', readonly=True, group_operator="avg"),
}
_order = 'date desc'
def _select(self):
select_str = """
SELECT min(ail.id) as id,
ai.date_invoice as date,
to_char(ai.date_invoice, 'YYYY') as year,
to_char(ai.date_invoice, 'MM') as month,
to_char(ai.date_invoice, 'YYYY-MM-DD') as day,
ail.product_id,
ai.partner_id as partner_id,
ai.payment_term as payment_term,
ai.period_id as period_id,
(case when u.uom_type not in ('reference') then
(select name from product_uom where uom_type='reference' and active and category_id=u.category_id LIMIT 1)
else
u.name
end) as uom_name,
ai.currency_id as currency_id,
ai.journal_id as journal_id,
ai.fiscal_position as fiscal_position,
ai.user_id as user_id,
ai.company_id as company_id,
count(ail.*) as nbr,
ai.type as type,
ai.state,
pt.categ_id,
ai.date_due as date_due,
ai.account_id as account_id,
ail.account_id as account_line_id,
ai.partner_bank_id as partner_bank_id,
sum(case when ai.type in ('out_refund','in_invoice') then
-ail.quantity / u.factor
else
ail.quantity / u.factor
end) as product_qty,
sum(case when ai.type in ('out_refund','in_invoice') then
-ail.price_subtotal
else
ail.price_subtotal
end) / cr.rate as price_total,
(case when ai.type in ('out_refund','in_invoice') then
sum(-ail.price_subtotal)
else
sum(ail.price_subtotal)
end) / (CASE WHEN sum(ail.quantity/u.factor) <> 0
THEN
(case when ai.type in ('out_refund','in_invoice')
then sum(-ail.quantity/u.factor)
else sum(ail.quantity/u.factor) end)
ELSE 1
END)
/ cr.rate as price_average,
cr.rate as currency_rate,
sum((select extract(epoch from avg(date_trunc('day',aml.date_created)-date_trunc('day',l.create_date)))/(24*60*60)::decimal(16,2)
from account_move_line as aml
left join account_invoice as a ON (a.move_id=aml.move_id)
left join account_invoice_line as l ON (a.id=l.invoice_id)
where a.id=ai.id)) as delay_to_pay,
sum((select extract(epoch from avg(date_trunc('day',a.date_due)-date_trunc('day',a.date_invoice)))/(24*60*60)::decimal(16,2)
from account_move_line as aml
left join account_invoice as a ON (a.move_id=aml.move_id)
left join account_invoice_line as l ON (a.id=l.invoice_id)
where a.id=ai.id)) as due_delay,
(case when ai.type in ('out_refund','in_invoice') then
-ai.residual
else
ai.residual
end)/ (CASE WHEN
(select count(l.id) from account_invoice_line as l
left join account_invoice as a ON (a.id=l.invoice_id)
where a.id=ai.id) <> 0
THEN
(select count(l.id) from account_invoice_line as l
left join account_invoice as a ON (a.id=l.invoice_id)
where a.id=ai.id)
ELSE 1
END) / cr.rate as residual
SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id,
sub.payment_term, sub.period_id, sub.uom_name, sub.currency_id, sub.journal_id,
sub.fiscal_position, sub.user_id, sub.company_id, sub.nbr, sub.type, sub.state,
sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id,
sub.product_qty, sub.price_total / cr.rate as price_total, sub.price_average /cr.rate as price_average,
cr.rate as currency_rate, sub.residual / cr.rate as residual
"""
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)
def _sub_select(self):
select_str = """
SELECT min(ail.id) AS id,
ai.date_invoice AS date,
to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text) AS year,
to_char(ai.date_invoice::timestamp with time zone, 'MM'::text) AS month,
to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text) AS day,
ail.product_id, ai.partner_id, ai.payment_term, ai.period_id,
CASE
WHEN u.uom_type::text <> 'reference'::text
THEN ( SELECT product_uom.name
FROM product_uom
WHERE product_uom.uom_type::text = 'reference'::text
AND product_uom.active
AND product_uom.category_id = u.category_id LIMIT 1)
ELSE u.name
END AS uom_name,
ai.currency_id, ai.journal_id, ai.fiscal_position, ai.user_id, ai.company_id,
count(ail.*) AS nbr,
ai.type, ai.state, pt.categ_id, ai.date_due, ai.account_id, ail.account_id AS account_line_id,
ai.partner_bank_id,
SUM(CASE
WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
THEN (- ail.quantity) / u.factor
ELSE ail.quantity / u.factor
END) AS product_qty,
SUM(CASE
WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
THEN - ail.price_subtotal
ELSE ail.price_subtotal
END) AS price_total,
CASE
WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
THEN SUM(- ail.price_subtotal)
ELSE SUM(ail.price_subtotal)
END / CASE
WHEN SUM(ail.quantity / u.factor) <> 0::numeric
THEN CASE
WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
THEN SUM((- ail.quantity) / u.factor)
ELSE SUM(ail.quantity / u.factor)
END
ELSE 1::numeric
END AS price_average,
CASE
WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
THEN - ai.residual
ELSE ai.residual
END / CASE
WHEN (( SELECT count(l.id) AS count
FROM account_invoice_line l
LEFT JOIN account_invoice a ON a.id = l.invoice_id
WHERE a.id = ai.id)) <> 0
THEN ( SELECT count(l.id) AS count
FROM account_invoice_line l
LEFT JOIN account_invoice a ON a.id = l.invoice_id
WHERE a.id = ai.id)
ELSE 1::bigint
END::numeric AS residual
"""
return where_str
return select_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 product_product pr on (pr.id=ail.product_id)
left join product_template pt on (pt.id=pr.product_tmpl_id)
left join product_uom u on (u.id=ail.uos_id),
res_currency_rate cr
FROM account_invoice_line ail
JOIN account_invoice ai ON ai.id = ail.invoice_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_uom u ON u.id = ail.uos_id
"""
return from_str
def _group_by(self):
group_by_str = """
GROUP BY ail.product_id,
ai.date_invoice,
ai.id,
cr.rate,
to_char(ai.date_invoice, 'YYYY'),
to_char(ai.date_invoice, 'MM'),
to_char(ai.date_invoice, 'YYYY-MM-DD'),
ai.partner_id,
ai.payment_term,
ai.period_id,
u.name,
ai.currency_id,
ai.journal_id,
ai.fiscal_position,
ai.user_id,
ai.company_id,
ai.type,
ai.state,
pt.categ_id,
ai.date_due,
ai.account_id,
ail.account_id,
ai.partner_bank_id,
ai.residual,
ai.amount_total,
u.uom_type,
u.category_id
GROUP BY ail.product_id, ai.date_invoice, ai.id,
to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text),
to_char(ai.date_invoice::timestamp with time zone, 'MM'::text),
to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text),
ai.partner_id, ai.payment_term, ai.period_id, u.name, ai.currency_id, ai.journal_id,
ai.fiscal_position, ai.user_id, ai.company_id, ai.type, ai.state, pt.categ_id,
ai.date_due, ai.account_id, ail.account_id, ai.partner_bank_id, ai.residual,
ai.amount_total, u.uom_type, 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)" % (
cr.execute("""CREATE or REPLACE VIEW %s as (
%s
FROM (
%s %s %s
) AS sub
JOIN res_currency_rate cr ON (cr.currency_id = sub.currency_id)
WHERE
cr.id IN (SELECT id
FROM res_currency_rate cr2
WHERE (cr2.currency_id = sub.currency_id)
AND ((sub.date IS NOT NULL AND cr.name <= sub.date)
OR (sub.date IS NULL AND cr.name <= NOW()))
ORDER BY name DESC LIMIT 1)
)""" % (
self._table,
self._select(), self._from(), self._where(), self._group_by()))
self._select(), self._sub_select(), self._from(), self._group_by()))
account_invoice_report()

View File

@ -30,8 +30,6 @@
<!-- <field name="reconciled" sum="# Reconciled"/> -->
<field name="user_currency_price_total" sum="Total Without Tax"/>
<field name="user_currency_residual" sum="Total Residual" invisible="context.get('residual_invisible',False)"/>
<field name="due_delay" sum="Avg. Due Delay" invisible="context.get('residual_invisible',False)"/>
<field name="delay_to_pay" sum="Avg. Delay To Pay" invisible="context.get('residual_invisible',False)"/>
</tree>
</field>
</record>
@ -93,7 +91,7 @@
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_period':1,'search_default_current':1, 'search_default_year': 1, 'search_default_category_product':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':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 as well as payment delays. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs.</field>
<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>
</record>

View File

@ -211,7 +211,7 @@
<para style="terp_default_Right_9">[[ (line['account_id']['type'] == 'receivable' and formatLang(line['credit']) or 0) or (line['account_id']['type'] == 'payable' and formatLang(line['debit'] * -1) or 0) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ time.strftime('%Y-%m-%d') &gt; formatLang((line['date_maturity'])) and formatLang(line['debit'] - line['credit'], currency_obj = company.currency_id) ]]</para>
<para style="terp_default_Right_9">[[ (time.strftime('%Y-%m-%d') &gt; line['date_maturity']) and formatLang(line['debit'] - line['credit'], currency_obj = company.currency_id) ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ line['blocked'] and 'X' or '' ]]</para>

View File

@ -29,6 +29,7 @@ class res_currency_account(osv.osv):
if context is None:
context = {}
rate = super(res_currency_account, self)._get_conversion_rate(cr, uid, from_currency, to_currency, context=context)
#process the case where the account doesn't work with an outgoing currency rate method 'at date' but 'average'
account = context.get('res.currency.compute.account')
account_invert = context.get('res.currency.compute.account_invert')
if account and account.currency_mode == 'average' and account.currency_id:

View File

@ -7,8 +7,6 @@ access_account_tax_internal_user,account.tax internal user,model_account_tax,bas
access_account_account,account.account,model_account_account,account.group_account_user,1,0,0,0
access_account_account_user,account.account user,model_account_account,base.group_user,1,0,0,0
access_account_account_partner_manager,account.account partner manager,model_account_account,base.group_partner_manager,1,0,0,0
access_account_journal_view,account.journal.view,model_account_journal_view,account.group_account_user,1,0,0,0
access_account_journal_column,account.journal.column,model_account_journal_column,account.group_account_user,1,0,0,0
access_account_journal_period_manager,account.journal.period manager,model_account_journal_period,account.group_account_manager,1,0,0,0
access_account_tax_code,account.tax.code,model_account_tax_code,account.group_account_invoice,1,0,0,0
access_account_tax,account.tax,model_account_tax,account.group_account_invoice,1,0,0,0
@ -83,8 +81,6 @@ access_account_entries_report_employee,account.entries.report employee,model_acc
access_analytic_entries_report_manager,analytic.entries.report,model_analytic_entries_report,account.group_account_manager,1,0,0,0
access_account_cashbox_line,account.cashbox.line,model_account_cashbox_line,account.group_account_user,1,1,1,1
access_account_journal_cashbox_line,account.journal.cashbox.line,model_account_journal_cashbox_line,account.group_account_user,1,1,1,0
access_account_journal_view_invoice,account.journal.view invoice,model_account_journal_view,account.group_account_invoice,1,1,1,1
access_account_journal_column_invoice,account.journal.column invoice,model_account_journal_column,account.group_account_invoice,1,1,1,1
access_account_invoice_tax_accountant,account.invoice.tax accountant,model_account_invoice_tax,account.group_account_user,1,0,0,0
access_account_move_reconcile_manager,account.move.reconcile manager,model_account_move_reconcile,account.group_account_manager,1,0,0,0
access_account_analytic_line_invoice,account.analytic.line invoice,model_account_analytic_line,account.group_account_invoice,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
7 access_account_account account.account model_account_account account.group_account_user 1 0 0 0
8 access_account_account_user account.account user model_account_account base.group_user 1 0 0 0
9 access_account_account_partner_manager account.account partner manager model_account_account base.group_partner_manager 1 0 0 0
access_account_journal_view account.journal.view model_account_journal_view account.group_account_user 1 0 0 0
access_account_journal_column account.journal.column model_account_journal_column account.group_account_user 1 0 0 0
10 access_account_journal_period_manager account.journal.period manager model_account_journal_period account.group_account_manager 1 0 0 0
11 access_account_tax_code account.tax.code model_account_tax_code account.group_account_invoice 1 0 0 0
12 access_account_tax account.tax model_account_tax account.group_account_invoice 1 0 0 0
81 access_analytic_entries_report_manager analytic.entries.report model_analytic_entries_report account.group_account_manager 1 0 0 0
82 access_account_cashbox_line account.cashbox.line model_account_cashbox_line account.group_account_user 1 1 1 1
83 access_account_journal_cashbox_line account.journal.cashbox.line model_account_journal_cashbox_line account.group_account_user 1 1 1 0
access_account_journal_view_invoice account.journal.view invoice model_account_journal_view account.group_account_invoice 1 1 1 1
access_account_journal_column_invoice account.journal.column invoice model_account_journal_column account.group_account_invoice 1 1 1 1
84 access_account_invoice_tax_accountant account.invoice.tax accountant model_account_invoice_tax account.group_account_user 1 0 0 0
85 access_account_move_reconcile_manager account.move.reconcile manager model_account_move_reconcile account.group_account_manager 1 0 0 0
86 access_account_analytic_line_invoice account.analytic.line invoice model_account_analytic_line account.group_account_invoice 1 1 1 1

View File

@ -0,0 +1,99 @@
openerp.account.quickadd = function (instance) {
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
instance.web.account = instance.web.account || {};
instance.web.views.add('tree_account_move_line_quickadd', 'instance.web.account.QuickAddListView');
instance.web.account.QuickAddListView = instance.web.ListView.extend({
init: function() {
this._super.apply(this, arguments);
this.journals = [];
this.periods = [];
this.current_journal = null;
this.current_period = null;
this.default_period = null;
this.default_journal = null;
this.current_journal_type = null;
this.current_journal_currency = null;
this.current_journal_analytic = null;
},
start:function(){
var tmp = this._super.apply(this, arguments);
var self = this;
this.$el.parent().prepend(QWeb.render("AccountMoveLineQuickAdd", {widget: this}));
this.$el.parent().find('.oe_account_select_journal').change(function() {
self.current_journal = this.value === '' ? null : parseInt(this.value);
self.do_search(self.last_domain, self.last_context, self.last_group_by);
});
this.$el.parent().find('.oe_account_select_period').change(function() {
self.current_period = this.value === '' ? null : parseInt(this.value);
self.do_search(self.last_domain, self.last_context, self.last_group_by);
});
this.on('edit:after', this, function () {
self.$el.parent().find('.oe_account_select_journal').attr('disabled', 'disabled');
self.$el.parent().find('.oe_account_select_period').attr('disabled', 'disabled');
});
this.on('save:after cancel:after', this, function () {
self.$el.parent().find('.oe_account_select_journal').removeAttr('disabled');
self.$el.parent().find('.oe_account_select_period').removeAttr('disabled');
});
var mod = new instance.web.Model("account.move.line", self.dataset.context, self.dataset.domain);
mod.call("default_get", [['journal_id','period_id'],self.dataset.context]).then(function(result) {
self.current_period = result['period_id'];
self.current_journal = result['journal_id'];
});
return tmp;
},
do_search: function(domain, context, group_by) {
var self = this;
this.last_domain = domain;
this.last_context = context;
this.last_group_by = group_by;
this.old_search = _.bind(this._super, this);
var mod = new instance.web.Model("account.move.line", context, domain);
return $.when(mod.call("list_journals", []).then(function(result) {
self.journals = result;
}),mod.call("list_periods", []).then(function(result) {
self.periods = result;
})).then(function () {
var o;
self.$el.parent().find('.oe_account_select_journal').children().remove().end();
self.$el.parent().find('.oe_account_select_journal').append(new Option('', ''));
for (var i = 0;i < self.journals.length;i++){
o = new Option(self.journals[i][1], self.journals[i][0]);
if (self.journals[i][0] === self.current_journal){
self.current_journal_type = self.journals[i][2];
self.current_journal_currency = self.journals[i][3];
self.current_journal_analytic = self.journals[i][4];
$(o).attr('selected',true);
}
self.$el.parent().find('.oe_account_select_journal').append(o);
}
self.$el.parent().find('.oe_account_select_period').children().remove().end();
self.$el.parent().find('.oe_account_select_period').append(new Option('', ''));
for (var i = 0;i < self.periods.length;i++){
o = new Option(self.periods[i][1], self.periods[i][0]);
self.$el.parent().find('.oe_account_select_period').append(o);
}
self.$el.parent().find('.oe_account_select_period').val(self.current_period).attr('selected',true);
return self.search_by_journal_period();
});
},
search_by_journal_period: function() {
var self = this;
var domain = [];
if (self.current_journal !== null) domain.push(["journal_id", "=", self.current_journal]);
if (self.current_period !== null) domain.push(["period_id", "=", self.current_period]);
self.last_context["journal_id"] = self.current_journal === null ? false : self.current_journal;
if (self.current_period === null) delete self.last_context["period_id"];
else self.last_context["period_id"] = self.current_period;
self.last_context["journal_type"] = self.current_journal_type;
self.last_context["currency"] = self.current_journal_currency;
self.last_context["analytic_journal_id"] = self.current_journal_analytic;
return self.old_search(new instance.web.CompoundDomain(self.last_domain, domain), self.last_context, self.last_group_by);
},
});
};

View File

@ -1,9 +1,10 @@
openerp.account = function (instance) {
openerp.account.quickadd(instance);
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
instance.web.account = {};
instance.web.account = instance.web.account || {};
instance.web.views.add('tree_account_reconciliation', 'instance.web.account.ReconciliationListView');
instance.web.account.ReconciliationListView = instance.web.ListView.extend({

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="AccountMoveLineQuickAdd">
<div class="oe_account_quickadd ui-toolbar" style="margin-bottom:0px;">
<div class="oe_form_dropdown_section">
<h4>Period :</h4>
<select class="oe_account_select_period">
</select>
</div>
<div class="oe_form_dropdown_section">
<h4>Journal :</h4>
<select class="oe_account_select_journal" >
</select>
</div>
</div>
</t>
</templates>

View File

@ -29,7 +29,6 @@
default_debit_account_id: cash
default_credit_account_id: cash
company_id: base.main_company
view_id: account_journal_bank_view
centralisation: 1
-
I called the Generate Fiscalyear Opening Entries wizard
@ -47,47 +46,4 @@
!python {model: account.fiscalyear.close}: |
self.data_save(cr, uid, [ref("account_fiscalyear_close_0")], {"lang": 'en_US',
"active_model": "ir.ui.menu", "active_ids": [ref("account.menu_wizard_fy_close")],
"tz": False, "active_id": ref("account.menu_wizard_fy_close"), })
-
I check the opening entries By using "Entries by Line wizard"
-
!record {model: account.move.journal, id: account_move_journal_0}:
{}
-
I clicked on Open Journal Button to check the entries
-
!python {model: account.move.journal}: |
self.action_open_window(cr, uid, [ref("account_move_journal_0")], {"lang": 'en_US',
"active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_move_journal_line_form")],
"tz": False, "active_id": ref("account.menu_action_move_journal_line_form"),
})
#-
# In order to test Cancel Opening Entries I cancelled the opening entries created for "Fiscal Year 2011"
#-
# !record {model: account.open.closed.fiscalyear, id: account_open_closed_fiscalyear_1}:
# fyear_id: account.data_fiscalyear
#-
# I clicked on Open button
#-
# !python {model: account.open.closed.fiscalyear}: |
# self.remove_entries(cr, uid, [ref("account_open_closed_fiscalyear_1")], {"lang":
# 'en_US', "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_wizard_open_closed_fy")],
# "tz": False, "active_id": ref("account.menu_wizard_open_closed_fy"), })
#-
# I check the opening entries By using "Entries by Line wizard"
#-
# !record {model: account.move.journal, id: account_move_journal_2}:
# journal_id: account.sales_journal
# period_id: account_period_jan11
#
#-
# I checked the Opening entries are cancelled successfully
#-
# !python {model: account.move.journal}: |
# self.action_open_window(cr, uid, [ref("account_move_journal_2")], {"lang": 'en_US',
# "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_move_journal_line_form")],
# "tz": False, "active_id": ref("account.menu_action_move_journal_line_form"),
# })
"tz": False, "active_id": ref("account.menu_wizard_fy_close"), })

View File

@ -30,10 +30,9 @@
-
!python {model: account.move.line}: |
import time
date = self._get_date(cr, uid, {'lang': u'en_US', 'normal_view': False, 'active_model': 'ir.ui.menu',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'journal_id': 1, 'view_mode': False,
'visible_id': 1, 'period_id': 6, 'tz': False, 'active_ids': [ref('menu_action_account_moves_all')],
'search_default_posted': 0, 'active_id': ref('menu_action_account_moves_all')})
date = self._get_date(cr, uid, {
'journal_id': 1,
'period_id': 6,})
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'))
vals = {
@ -62,11 +61,10 @@
!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',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False, 'visible_id': 1,
'active_ids': [ref('menu_action_account_moves_all')], 'search_default_posted': 0, 'active_id': ref('menu_action_account_moves_all')})
'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',
'search_default_journal_id': 1, 'journal_type': 'sale', 'search_default_period_id': 6, 'view_mode': False,
'visible_id': 1, 'active_ids': [ref('menu_action_account_moves_all')], 'search_default_posted': 0,
'active_id': ref('menu_action_account_moves_all')})
'visible_id': 1, 'search_default_posted': 0})
assert bal, 'Balance has not been computed correctly'
-
I check that Initially account move state is "Draft"

View File

@ -31,7 +31,6 @@ import account_reconcile_partner_process
import account_reconcile
import account_unreconcile
import account_invoice_refund
import account_move_journal
import account_journal_select
import account_move_bank_reconcile
import account_subscription_generate

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),))
if len(cr.fetchall()) > 1:
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),))
return r_id
@ -107,7 +107,7 @@ class account_fiscalyear_close(osv.osv_memory):
('journal_id', '=', new_journal.id), ('period_id', '=', period.id)])
if 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.unlink(cr, uid, move_ids, context=context)

View File

@ -1,194 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from lxml import etree
from osv import osv, fields
from tools.translate import _
import tools
class account_move_journal(osv.osv_memory):
_name = "account.move.journal"
_description = "Move journal"
_columns = {
'target_move': fields.selection([('posted', 'All Posted Entries'),
('all', 'All Entries'),
], 'Target Moves', required=True),
}
_defaults = {
'target_move': 'all'
}
def _get_period(self, cr, uid, context=None):
"""
Return default account period value
"""
account_period_obj = self.pool.get('account.period')
ids = account_period_obj.find(cr, uid, context=context)
period_id = False
if ids:
period_id = ids[0]
return period_id
def _get_journal(self, cr, uid, context=None):
"""
Return journal based on the journal type
"""
journal_id = False
journal_pool = self.pool.get('account.journal')
if context.get('journal_type', False):
jids = journal_pool.search(cr, uid, [('type','=', context.get('journal_type'))])
if not jids:
raise osv.except_osv(_('Configuration Error!'), _('Cannot find any account journal of %s type for this company.\n\nYou can create one in the menu: \nConfiguration/Journals/Journals.') % context.get('journal_type'))
journal_id = jids[0]
return journal_id
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
"""
Returns views and fields for current model where view will depend on {view_type}.
@param cr: A database cursor
@param user: ID of the user currently logged in
@param view_id: list of fields, which required to read signatures
@param view_type: defines a view type. it can be one of (form, tree, graph, calender, gantt, search, mdx)
@param context: context arguments, like lang, time zone
@param toolbar: contains a list of reports, wizards, and links related to current model
@return: Returns a dict that contains definition for fields, views, and toolbars
"""
if context is None:context = {}
res = super(account_move_journal, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
if context:
if not view_id:
return res
period_pool = self.pool.get('account.period')
journal_pool = self.pool.get('account.journal')
journal_id = self._get_journal(cr, uid, context)
period_id = self._get_period(cr, uid, context)
journal = False
if journal_id:
journal = journal_pool.read(cr, uid, journal_id, ['name'], context=context).get('name',False)
journal_string = _("Journal: %s") % tools.ustr(journal)
else:
journal_string = _("Journal: All")
period = False
if period_id:
period = period_pool.browse(cr, uid, period_id, context=context).name
period_string = _("Period: %s") % tools.ustr(period)
open_string = _("Open")
view = """<?xml version="1.0" encoding="utf-8"?>
<form string="Standard entries" version="7.0">
<group>
<field name="target_move"/>
</group>
%s: <label string="%s"/>
%s: <label string="%s"/>
<footer>
<button string="%s" name="action_open_window" default_focus="1" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>""" % (_('Journal'), journal_string, _('Period'), period_string, open_string)
view = etree.fromstring(view.encode('utf8'))
xarch, xfields = self._view_look_dom_arch(cr, uid, view, view_id, context=context)
view = xarch
res.update({
'arch': view
})
return res
def action_open_window(self, cr, uid, ids, context=None):
"""
This function Open action move line window on given period and Journal/Payment Mode
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: account move journals ID or list of IDs
@return: dictionary of Open action move line window on given period and Journal/Payment Mode
"""
period_pool = self.pool.get('account.journal.period')
data_pool = self.pool.get('ir.model.data')
journal_pool = self.pool.get('account.journal')
account_period_obj = self.pool.get('account.period')
if context is None:
context = {}
journal_id = self._get_journal(cr, uid, context)
period_id = self._get_period(cr, uid, context)
target_move = self.read(cr, uid, ids, ['target_move'], context=context)[0]['target_move']
name = _("Journal Items")
if journal_id:
ids = period_pool.search(cr, uid, [('journal_id', '=', journal_id), ('period_id', '=', period_id)], context=context)
if not ids:
journal = journal_pool.browse(cr, uid, journal_id, context=context)
period = account_period_obj.browse(cr, uid, period_id, context=context)
name = journal.name
state = period.state
if state == 'done':
raise osv.except_osv(_('User Error!'), _('This period is already closed.'))
company = period.company_id.id
res = {
'name': name,
'period_id': period_id,
'journal_id': journal_id,
'company_id': company
}
period_pool.create(cr, uid, res,context=context)
ids = period_pool.search(cr, uid, [('journal_id', '=', journal_id), ('period_id', '=', period_id)], context=context)
period = period_pool.browse(cr, uid, ids[0], context=context)
name = (period.journal_id.code or '') + ':' + (period.period_id.code or '')
result = data_pool.get_object_reference(cr, uid, 'account', 'view_account_move_line_filter')
res_id = result and result[1] or False
move = 0
if target_move == 'posted':
move = 1
return {
'name': name,
'view_type': 'form',
'view_mode': 'tree,graph,form',
'res_model': 'account.move.line',
'view_id': False,
'context': "{'search_default_posted': %d, 'search_default_journal_id':%d, 'search_default_period_id':%d}" % (move, journal_id, period_id),
'type': 'ir.actions.act_window',
'search_view_id': res_id
}
account_move_journal()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_account_move_journal_form" model="ir.ui.view">
<field name="name">account.move.journal.form</field>
<field name="model">account.move.journal</field>
<field name="arch" type="xml">
<form string="Standard Entries">
<field name="target_move"/>
</form>
</field>
</record>
</data>
</openerp>

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-18 21:27+0000\n"
"Last-Translator: bamuhrez <bamuhrez@gmail.com>\n"
"PO-Revision-Date: 2012-12-01 17:31+0000\n"
"Last-Translator: gehad shaat <gehad.shaath@gmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
msgstr "افتح قائمة المحاسبة"
#~ msgid "Accountant"
#~ msgstr "محاسب"

View File

@ -0,0 +1,23 @@
# Spanish (Dominican Republic) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-29 20:23+0000\n"
"Last-Translator: Jose Ernesto Mendez <tecnologia@obsdr.com>\n"
"Language-Team: Spanish (Dominican Republic) <es_DO@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr "Abrir Menú de Contabilidad"

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2011-01-17 07:34+0000\n"
"Last-Translator: Nicola Riolini - Micronaet <Unknown>\n"
"PO-Revision-Date: 2012-11-28 19:50+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:28+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr ""
msgstr "Apri Menù Contabilità"
#~ msgid "Accountant"
#~ msgstr "Contabile"

View File

@ -21,6 +21,7 @@
import account_analytic_analysis
import cron_account_analytic_account
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -40,6 +40,7 @@ Adds menu to show relevant information to each manager.You can also view the rep
'account_analytic_analysis_view.xml',
'account_analytic_analysis_menu.xml',
'account_analytic_analysis_cron.xml',
'res_config_view.xml',
],
'css': [
'static/src/css/analytic.css'

View File

@ -75,15 +75,21 @@ class account_analytic_account(osv.osv):
res[id][f] = 0.0
res2 = {}
for account in accounts:
cr.execute("SELECT product_id, user_id, to_invoice, sum(unit_amount), product_uom_id, name " \
"FROM account_analytic_line as line " \
"WHERE account_id = %s " \
"AND invoice_id is NULL AND to_invoice IS NOT NULL " \
"GROUP BY product_id, user_id, to_invoice, product_uom_id, name", (account.id,))
cr.execute("""
SELECT product_id, sum(amount), user_id, to_invoice, sum(unit_amount), product_uom_id, line.name
FROM account_analytic_line line
LEFT JOIN account_analytic_journal journal ON (journal.id = line.journal_id)
WHERE account_id = %s
AND journal.type != 'purchase'
AND invoice_id IS NULL
AND to_invoice IS NOT NULL
GROUP BY product_id, user_id, to_invoice, product_uom_id, line.name""", (account.id,))
res[account.id][f] = 0.0
for product_id, user_id, factor_id, qty, uom, line_name in cr.fetchall():
price = self.pool.get('account.analytic.line')._get_invoice_price(cr, uid, account, product_id, user_id, qty, context)
for product_id, price, user_id, factor_id, qty, uom, line_name in cr.fetchall():
price = -price
if product_id:
price = self.pool.get('account.analytic.line')._get_invoice_price(cr, uid, account, product_id, user_id, qty, context)
factor = self.pool.get('hr_timesheet_invoice.factor').browse(cr, uid, factor_id, context=context)
res[account.id][f] += price * qty * (100-factor.factor or 0.0) / 100.0

View File

@ -147,6 +147,18 @@
</field>
</record>
<record id="view_account_analytic_account_template_required" model="ir.ui.view">
<field name="name">account.analytic.account.form.template.required</field>
<field name="model">account.analytic.account</field>
<field name="groups_id" eval="[(6, 0, [ref('group_template_required')])]"/>
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
<field name="arch" type="xml">
<field name="template_id" position="attributes">
<attribute name="attrs">{'required': [('type','=','contract')], 'invisible': [('type','in',['view', 'normal','template'])]}</attribute>
</field>
</field>
</record>
<record id="template_of_contract_action" model="ir.actions.act_window">
<field name="name">Template of Contract</field>
<field name="type">ir.actions.act_window</field>

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:14+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-08-23 11:12+0000\n"
"Last-Translator: Rolv Råen <Unknown>\n"
"PO-Revision-Date: 2012-12-02 20:45+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:06+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-03 04:36+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "No order to invoice, create"
msgstr ""
msgstr "Ingen ordre til å fakturere, opprett."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -30,12 +30,12 @@ msgstr "Grupper etter ..."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "To Invoice"
msgstr ""
msgstr "Å fakturere."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Remaining"
msgstr ""
msgstr "Gjenstår."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -74,7 +74,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr ""
msgstr "⇒ Faktura."
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_invoiced:0
@ -99,7 +99,7 @@ msgstr "Totalt beløp fakturert kunde for denne kontoen"
#. module: account_analytic_analysis
#: help:account.analytic.account,timesheet_ca_invoiced:0
msgid "Sum of timesheet lines invoiced for this contract."
msgstr ""
msgstr "Summen av timeliste linjer fakturert for denne kontrakten."
#. module: account_analytic_analysis
#: help:account.analytic.account,revenue_per_hour:0
@ -109,12 +109,12 @@ msgstr "Beregnet ved hjelp av formelen: Fakturert beløp / Total tid"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts not assigned"
msgstr ""
msgstr "Kontrakter som ikke er tilordnet."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Partner"
msgstr ""
msgstr "Partner."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -162,7 +162,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Expected"
msgstr ""
msgstr "Forventet."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -185,7 +185,7 @@ msgstr "Fakturert tid"
#. module: account_analytic_analysis
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "Feil! Du kan ikke opprette rekursive analytiske kontoer."
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin_rate:0
@ -209,18 +209,18 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
msgstr "Ikke noe å fakturere, opprett."
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action
#: model:ir.ui.menu,name:account_analytic_analysis.menu_template_of_contract_action
msgid "Template of Contract"
msgstr ""
msgstr "Mal av kontrakt."
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_quantity:0
msgid "Total Worked Time"
msgstr ""
msgstr "Totalt arbeids tid."
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin:0
@ -240,7 +240,7 @@ msgstr "Beregnet etter formelen: (Virkelig margin / Totale kostnader) * 100"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
msgstr "Eller vis."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -257,7 +257,7 @@ msgstr "Måned"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
msgid "Time & Materials to Invoice"
msgstr ""
msgstr "Tid og materialer til å fakturere."
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
@ -268,7 +268,7 @@ msgstr "Kontrakter"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Start Date"
msgstr ""
msgstr "Startdato."
#. module: account_analytic_analysis
#: help:account.analytic.account,total_cost:0
@ -296,13 +296,13 @@ msgstr "Ventende kontrakter til å fornye med dine kunder"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Timesheets"
msgstr ""
msgstr "Timelister."
#. module: account_analytic_analysis
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:452
#, python-format
msgid "Sale Order Lines of %s"
msgstr ""
msgstr "Salgs ordre linjer av %s."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -317,7 +317,7 @@ msgstr "Forfalt Antall"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Status"
msgstr ""
msgstr "Status."
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_theorical:0
@ -339,7 +339,7 @@ msgstr ""
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order
msgid "Sales Orders"
msgstr ""
msgstr "Salgsordre."
#. module: account_analytic_analysis
#: help:account.analytic.account,last_invoice_date:0
@ -391,7 +391,7 @@ msgstr "Kontrakt"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Invoiced"
msgstr ""
msgstr "Fakturert."
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_qtt_invoiced:0
@ -426,12 +426,12 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,toinvoice_total:0
msgid "Total to Invoice"
msgstr ""
msgstr "Totalt å fakturere."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Sale Orders"
msgstr ""
msgstr "Salgs ordre."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -441,7 +441,7 @@ msgstr "Åpen"
#. module: account_analytic_analysis
#: field:account.analytic.account,invoiced_total:0
msgid "Total Invoiced"
msgstr ""
msgstr "Totalt fakturert."
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_ca:0
@ -451,7 +451,7 @@ msgstr "Beregnet med formelen: Maks. fakturapris - fakturert beløp"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Responsible"
msgstr ""
msgstr "Ansvarlig."
#. module: account_analytic_analysis
#: field:account.analytic.account,last_invoice_date:0
@ -504,7 +504,7 @@ msgstr "Kontrakter til å fornye"
#. module: account_analytic_analysis
#: help:account.analytic.account,toinvoice_total:0
msgid " Sum of everything that could be invoiced for this contract."
msgstr ""
msgstr " Summen av alt som kunne blitt fakturert for denne kontrakten."
#. module: account_analytic_analysis
#: field:account.analytic.account,theorical_margin:0
@ -514,7 +514,7 @@ msgstr "Teoretisk margin"
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_total:0
msgid "Total Remaining"
msgstr ""
msgstr "Totalt gjenværende."
#. module: account_analytic_analysis
#: help:account.analytic.account,real_margin:0
@ -529,7 +529,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_invoices:0
msgid "Fixed Price"
msgstr ""
msgstr "Fikset pris."
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_date:0

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-24 22:04+0000\n"
"PO-Revision-Date: 2012-12-01 15:59+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:06+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "No order to invoice, create"
msgstr ""
msgstr "Geen order om te factureren, aanmaken"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -69,6 +69,11 @@ msgid ""
"to\n"
" define the customer invoice price rate."
msgstr ""
"Bij het factureren van urenstaten, OpenERP gebruikt de\n"
" prijslijst van het contract, welke weer de prijs "
"\n"
" gebruikt van het gekoppelde product aan de\n"
" werknemer, om de klant factuurprijs bepalen."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -88,7 +93,7 @@ msgstr "Datum van laatste gefactureerde kosten"
#. module: account_analytic_analysis
#: help:account.analytic.account,fix_price_to_invoice:0
msgid "Sum of quotations for this contract."
msgstr ""
msgstr "Totaal van de offertes voor dit contract"
#. module: account_analytic_analysis
#: help:account.analytic.account,ca_invoiced:0
@ -98,7 +103,7 @@ msgstr "Total gefactureerd bedrag voor deze kostenplaats"
#. module: account_analytic_analysis
#: help:account.analytic.account,timesheet_ca_invoiced:0
msgid "Sum of timesheet lines invoiced for this contract."
msgstr ""
msgstr "Totaal aan urenstaatregels gefactureerd voor dit contract"
#. module: account_analytic_analysis
#: help:account.analytic.account,revenue_per_hour:0
@ -109,7 +114,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts not assigned"
msgstr ""
msgstr "Niet toegewezen contracten"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -139,6 +144,21 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik hier om een nieuw contract aan te maken\n"
" </p><p>\n"
" Hier vind u de contracten welke moeten worden vernieuwd\n"
" omdat de einddatum is verlopen of het totaal aantal uren is "
"\n"
" hoger dan het maximaal toegestane aantal uren\n"
" </p><p>\n"
" OpenERP zet contracten welke moeten worden vernieuwd "
"automatisch\n"
" in de stand \"in afwachting\". Na onderhandeling kan de "
"verkoper het contract\n"
" afsluiten of vernieuwen.\n"
" </p>\n"
" "
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -157,7 +177,7 @@ msgstr ""
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours_to_invoice:0
msgid "Computed using the formula: Maximum Time - Total Invoiced Time"
msgstr ""
msgstr "Berekend met de formule: Maximum tijd - Totaal gefactureerde tijd"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -175,7 +195,7 @@ msgstr "Kostenplaats"
#. module: account_analytic_analysis
#: help:account.analytic.account,theorical_margin:0
msgid "Computed using the formula: Theoretical Revenue - Total Costs"
msgstr ""
msgstr "Berekend met de formule: Theoretische opbrengst - Totale kosten"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_invoiced:0
@ -185,7 +205,7 @@ msgstr "Gefactureerde tijd"
#. module: account_analytic_analysis
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "Fout! Het is niet toegestaan om recursieve kostenplaatsen te maken."
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin_rate:0
@ -195,7 +215,7 @@ msgstr "Werkelijke marge (%)"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours:0
msgid "Computed using the formula: Maximum Time - Total Worked Time"
msgstr ""
msgstr "Berekend met de formule: Maximun tijd - Totaal gewerkte tijd"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_quantity:0
@ -209,7 +229,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
msgstr "Niets te factureren, aanmaken"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action
@ -220,7 +240,7 @@ msgstr "Sjabloon van een contract"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_quantity:0
msgid "Total Worked Time"
msgstr ""
msgstr "Totaal gewerkte tijd"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin:0
@ -240,7 +260,7 @@ msgstr "Berekend met de formule: (werkelijke marge / totale kosten) * 100."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
msgstr "of bekijk"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -257,7 +277,7 @@ msgstr "Maand"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
msgid "Time & Materials to Invoice"
msgstr ""
msgstr "Te factureren tijd en materialen"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
@ -303,7 +323,7 @@ msgstr "Urenstaten"
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:452
#, python-format
msgid "Sale Order Lines of %s"
msgstr ""
msgstr "Verkooporderregels van %s"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -379,6 +399,18 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik hier om een nieuw contractsjabloon aan te maken.\n"
" </p><p>\n"
" Sjablonen worden gebruikt om contracten/projecten voor "
"te \n"
" configureren, zodat deze eenvoudig kunnen worden "
"gebruikt \n"
" door verkopers, en zij alleen maar de verdere "
"voorwaarden van\n"
" het contract hoeven in te geven.\n"
" </p>\n"
" "
#. module: account_analytic_analysis
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user
@ -424,6 +456,18 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik hier om een nieuw contract aan te maken\n"
" </p><p>\n"
" Gebruik contracten om taken, issues, urenstaten of "
"facturatie gebaseerd \n"
" op gereed werk, declaraties en/of verkooporders te "
"volgen. OpenERP zal\n"
" automatisch meldingen geven, aan de juiste verkoper, "
"indien een \n"
" contract moet worden vernieuwd.\n"
" </p>\n"
" "
#. module: account_analytic_analysis
#: field:account.analytic.account,toinvoice_total:0
@ -473,6 +517,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Hier vind u de urenstaten en inkopen welke u heeft gedaan\n"
" op contracten welke worden doorberekend aan de klant.\n"
" Indien u nieuwe activiteiten wilt boeken voor facturatie, "
"dient\n"
" u gebruik te maken van het urenstaten menu.\n"
" </p>\n"
" "
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_non_invoiced:0
@ -496,6 +548,9 @@ msgid ""
"remaining subtotals which, in turn, are computed as the maximum between "
"'(Estimation - Invoiced)' and 'To Invoice' amounts"
msgstr ""
"Verwachting van de resterende inkomsten voor dit contract. Berekend als de "
"som van de resterende subtotalen die op hun beurt, worden berekend als de "
"maximum tussen '(Verwacht - Gefactureerd)' en 'Te factureren' bedragen"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue
@ -507,6 +562,7 @@ msgstr "Te vernieuwen contracten"
#: help:account.analytic.account,toinvoice_total:0
msgid " Sum of everything that could be invoiced for this contract."
msgstr ""
" Totaal van alles wat gefactureerd zou kunnen worden op dit contrcat."
#. module: account_analytic_analysis
#: field:account.analytic.account,theorical_margin:0
@ -526,7 +582,7 @@ msgstr "Berekend met de formule: gefactureerd bedrag - totale kosten."
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_est:0
msgid "Estimation of Hours to Invoice"
msgstr ""
msgstr "Verwachte uren te factureren"
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_invoices:0
@ -541,12 +597,12 @@ msgstr "Datum van de laatste werkzaamheden geboekt op deze rekening"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts Having a Partner"
msgstr ""
msgstr "Contracten met een gekoppelde klant"
#. module: account_analytic_analysis
#: field:account.analytic.account,est_total:0
msgid "Total Estimation"
msgstr ""
msgstr "Totaal verwacht"
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_ca:0
@ -571,7 +627,7 @@ msgstr "Totale tijd"
#. module: account_analytic_analysis
#: field:account.analytic.account,invoice_on_timesheets:0
msgid "On Timesheets"
msgstr ""
msgstr "Op urenstaat"
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_to_invoice:0
@ -584,7 +640,7 @@ msgstr "Resterende tijd"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Total"
msgstr ""
msgstr "Totaal"
#~ msgid ""
#~ "Number of hours that can be invoiced plus those that already have been "

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-09 02:53+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-29 10:29+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:06+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "No order to invoice, create"
msgstr ""
msgstr "没有订单被开票,创建"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -29,12 +29,12 @@ msgstr "分组..."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "To Invoice"
msgstr ""
msgstr "开票"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Remaining"
msgstr ""
msgstr "剩余"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -71,7 +71,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr ""
msgstr "=> 开票"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_invoiced:0
@ -86,7 +86,7 @@ msgstr "最近的已发票日期"
#. module: account_analytic_analysis
#: help:account.analytic.account,fix_price_to_invoice:0
msgid "Sum of quotations for this contract."
msgstr ""
msgstr "合同的报价单汇总"
#. module: account_analytic_analysis
#: help:account.analytic.account,ca_invoiced:0
@ -96,7 +96,7 @@ msgstr "这科目的客户发票合计"
#. module: account_analytic_analysis
#: help:account.analytic.account,timesheet_ca_invoiced:0
msgid "Sum of timesheet lines invoiced for this contract."
msgstr ""
msgstr "合同已开票的计工单行的汇总"
#. module: account_analytic_analysis
#: help:account.analytic.account,revenue_per_hour:0
@ -106,12 +106,12 @@ msgstr "计算公式:已开票金额 / 总时数"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Contracts not assigned"
msgstr ""
msgstr "合同没指定"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Partner"
msgstr ""
msgstr "业务伙伴"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -157,7 +157,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Expected"
msgstr ""
msgstr "预期"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -170,7 +170,7 @@ msgstr "辅助核算项"
#. module: account_analytic_analysis
#: help:account.analytic.account,theorical_margin:0
msgid "Computed using the formula: Theoretical Revenue - Total Costs"
msgstr ""
msgstr "用此公式计算:理论收入 - 总成本"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_invoiced:0
@ -180,7 +180,7 @@ msgstr "已开票的工时"
#. module: account_analytic_analysis
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "错误!你不能循环创建辅助核算项"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin_rate:0
@ -190,7 +190,7 @@ msgstr "实际利润(%)"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours:0
msgid "Computed using the formula: Maximum Time - Total Worked Time"
msgstr ""
msgstr "用下列公式计算:最大工时 - 总工作时间"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_quantity:0
@ -202,7 +202,7 @@ msgstr "你在这个成本科目上花费的时间总数(数据来自计工单
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
msgstr "尚未开票,创建"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action
@ -213,7 +213,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_quantity:0
msgid "Total Worked Time"
msgstr ""
msgstr "总工作时间"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin:0
@ -233,7 +233,7 @@ msgstr "计算公式为:(实际利润/总成本×100)"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
msgstr "或 视图"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -250,7 +250,7 @@ msgstr "月"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
msgid "Time & Materials to Invoice"
msgstr ""
msgstr "要开票的工时和材料"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
@ -261,7 +261,7 @@ msgstr "合同"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Start Date"
msgstr ""
msgstr "开始日期"
#. module: account_analytic_analysis
#: help:account.analytic.account,total_cost:0
@ -285,13 +285,13 @@ msgstr "需要与客户续签的合同"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Timesheets"
msgstr ""
msgstr "计工单"
#. module: account_analytic_analysis
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:452
#, python-format
msgid "Sale Order Lines of %s"
msgstr ""
msgstr "销售单行 %s"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -306,7 +306,7 @@ msgstr "超期数量"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_theorical:0
@ -327,7 +327,7 @@ msgstr "OpenERP中的合同是指一个被指定了业务伙伴的成本科目
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order
msgid "Sales Orders"
msgstr ""
msgstr "销售订单"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_invoice_date:0
@ -375,7 +375,7 @@ msgstr "合同"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Invoiced"
msgstr ""
msgstr "已开票"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_qtt_invoiced:0
@ -413,7 +413,7 @@ msgstr ""
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Sale Orders"
msgstr ""
msgstr "销售订单"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -423,7 +423,7 @@ msgstr "使用中"
#. module: account_analytic_analysis
#: field:account.analytic.account,invoiced_total:0
msgid "Total Invoiced"
msgstr ""
msgstr "已开发票数量"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_ca:0
@ -433,7 +433,7 @@ msgstr "计算公式为:最大发票价格 - 已开票金额"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Responsible"
msgstr ""
msgstr "负责人"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_invoice_date:0
@ -511,7 +511,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_invoices:0
msgid "Fixed Price"
msgstr ""
msgstr "固定价格"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_date:0
@ -526,7 +526,7 @@ msgstr ""
#. module: account_analytic_analysis
#: field:account.analytic.account,est_total:0
msgid "Total Estimation"
msgstr ""
msgstr "总的估值"
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_ca:0
@ -549,7 +549,7 @@ msgstr "总时间"
#. module: account_analytic_analysis
#: field:account.analytic.account,invoice_on_timesheets:0
msgid "On Timesheets"
msgstr ""
msgstr "在计工单上"
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_to_invoice:0
@ -562,7 +562,7 @@ msgstr "剩余时间"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Total"
msgstr ""
msgstr "合计"
#~ msgid "Invalid model name in the action definition."
#~ msgstr "在动作定义中输入的对象名称错误"

View File

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class sale_configuration(osv.osv_memory):
_inherit = 'sale.config.settings'
_columns = {
'group_template_required': fields.boolean("Mandatory use of templates.",
implied_group='account_analytic_analysis.group_template_required',
help="Allows you to set the template field as required when creating an analytic account or a contract."),
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_sales_config" model="ir.ui.view">
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="inherit_id" ref="sale.view_sales_config"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='module_analytic_user_function']" position="inside">
<div>
<field name="group_template_required" class="oe_inline"/>
<label for="group_template_required"/>
</div>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@ -6,5 +6,12 @@
<field eval="[(4,ref('sale.group_analytic_accounting'))]" name="groups_id"/>
</record>
<record id="group_template_required" model="res.groups">
<field name="name">Mandatory use of templates in contracts</field>
<field name="category_id" ref="base.module_category_sales_management"/>
<field name="comment">the field template of the analytic accounts and contracts will be required.</field>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
</data>
</openerp>
</openerp>

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-18 23:16+0000\n"
"Last-Translator: Pierre Burnier <Unknown>\n"
"PO-Revision-Date: 2012-11-29 15:09+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:10+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
@ -55,7 +55,7 @@ msgstr ""
#: view:account.analytic.default:0
#: field:account.analytic.default,product_id:0
msgid "Product"
msgstr "Produit"
msgstr "Article"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_analytic_default

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-10 11:08+0000\n"
"PO-Revision-Date: 2012-12-01 16:06+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:10+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
@ -31,7 +31,7 @@ msgstr "Groepeer op..."
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
msgid "Default end date for this Analytic Account."
msgstr ""
msgstr "Standaard einddatum voor deze kostenplaats"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
@ -50,6 +50,10 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"partner, it will automatically take this as an analytic account)"
msgstr ""
"Selecteer een relatie welke gebruik zal maken van de kostenplaats, zoals "
"gespecificeerd in de kostenplaats standaarden. (bijv. maak een nieuwe "
"klantfactuur of verkooporder, wanneer we deze relatie selecteren. Het "
"gebruikt automatisch deze kostenplaats."
#. module: account_analytic_default
#: view:account.analytic.default:0
@ -86,6 +90,10 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"product, it will automatically take this as an analytic account)"
msgstr ""
"Selecteer een product welke gebruik zal maken van de kostenplaats, zoals "
"gespecificeerd in de kostenplaats standaarden. (bijv. maak een nieuwe "
"klantfactuur of verkooporder, wanneer we deze relatie selecteren. Het "
"gebruikt automatisch deze kostenplaats."
#. module: account_analytic_default
#: field:account.analytic.default,date_stop:0
@ -116,12 +124,18 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"company, it will automatically take this as an analytic account)"
msgstr ""
"Selecteer een bedrijf welke gebruik zal maken van de kostenplaats, zoals "
"gespecificeerd in de kostenplaats standaarden. (bijv. maak een nieuwe "
"klantfactuur of verkooporder, wanneer we deze relatie selecteren. Het "
"gebruikt automatisch deze kostenplaats."
#. 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 ""
"Selecteer een gebruiker welke gebruik zal maken van de kostenplaats, zoals "
"gespecificeerd in de kostenplaats standaarden."
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_invoice_line
@ -137,7 +151,7 @@ msgstr "Kostenplaats"
#. module: account_analytic_default
#: help:account.analytic.default,date_start:0
msgid "Default start date for this Analytic Account."
msgstr ""
msgstr "Standaard startdatum voor deze kostenplaats."
#. module: account_analytic_default
#: view:account.analytic.default:0

View File

@ -29,15 +29,6 @@
</field>
</record>
<record id="journal_col11" model="account.journal.column">
<field eval="&quot;&quot;&quot;Analytic Distribution&quot;&quot;&quot;" name="name"/>
<field eval="15" name="sequence"/>
<field name="view_id" ref="account.account_journal_view"/>
<field eval="0" name="required"/>
<field eval="&quot;&quot;&quot;analytics_id&quot;&quot;&quot;" name="field"/>
<field eval="0" name="readonly"/>
</record>
<record model="ir.ui.view" id="view_move_line_form_inherit">
<field name="name">account.move.line.form.inherit</field>
<field name="model">account.move.line</field>

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-09-02 09:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-02 20:44+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:07+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-03 04:36+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
@ -97,7 +97,7 @@ msgstr "Konto ID"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "Error!"
msgstr ""
msgstr "Feil!"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -138,7 +138,7 @@ msgstr "Ugyldig BBA Strukturert Kommunikasjon!"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "There is no analytic plan defined."
msgstr ""
msgstr "Det er ikke noe analytisk plan definert."
#. module: account_analytic_plans
#: constraint:account.move.line:0
@ -191,7 +191,7 @@ msgstr "Prosentdel"
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr ""
msgstr "Det er ikke noe analytiske linjer relatert til konto %s."
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
@ -233,7 +233,7 @@ msgstr "Analytisk plan linjer"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Konto og periode må tilhøre samme selskap."
#. module: account_analytic_plans
#: constraint:account.bank.statement:0
@ -264,7 +264,7 @@ msgstr "Valuta"
#. module: account_analytic_plans
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
msgstr "Du kan ikke opprette en analytisk linje på vis konto."
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -279,7 +279,7 @@ msgstr "Konto5 ID"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Du kan ikke opprette journal enmer i en lukker konto."
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
@ -301,7 +301,7 @@ msgstr "Til Dato."
#: 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 ""
msgstr "Du må definere en analytisk journal på %s journal."
#. module: account_analytic_plans
#: field:account.crossovered.analytic,empty_line:0
@ -415,7 +415,7 @@ msgstr "Konto4 ID"
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#, python-format
msgid "The total should be between %s and %s."
msgstr ""
msgstr "Totalen burde være mellom %s og %s."
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
@ -469,6 +469,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"Konfigurasjons feil!\n"
"Valutaen valgt bør deles av standard kontoer også."
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model
@ -488,19 +490,19 @@ msgstr "Distribusjons modeller"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "Du kan ikke opprette journal elementer på en konto av typen visning."
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "User Error!"
msgstr ""
msgstr "Bruker feil!"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#, python-format
msgid "Please put a name and a code before saving the model."
msgstr ""
msgstr "Kan du sette et navn og en kode før du lagrer modellen."
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date1:0
@ -528,13 +530,13 @@ msgstr "Navnet på journalen må være unikt per firma !"
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "or"
msgstr ""
msgstr "Eller."
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#, python-format
msgid "A model with this name and code already exists."
msgstr ""
msgstr "En modell med dette navnet og kode fins allerede."
#, python-format
#~ msgid "User Error"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-12 11:32+0000\n"
"PO-Revision-Date: 2012-12-01 16:15+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:07+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
@ -96,7 +96,7 @@ msgstr "Account Id"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fout!"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -137,7 +137,7 @@ msgstr "Ongeldige BBA gestructureerde communicatie!"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "There is no analytic plan defined."
msgstr ""
msgstr "Er is geen kostenplaatplan gedefinieerd"
#. module: account_analytic_plans
#: constraint:account.move.line:0
@ -190,7 +190,7 @@ msgstr "Perc(%)"
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr ""
msgstr "Er zijn geen kostenplaatsregels gekoppeld aan deze kostenplaats %s."
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
@ -232,7 +232,7 @@ msgstr "Kostenplaatsboekingen"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Kostenplaats en periode moeten behoren tot hetzelfde bedrijf."
#. module: account_analytic_plans
#: constraint:account.bank.statement:0
@ -264,6 +264,8 @@ msgstr "Valuta"
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
"Het is niet mogelijk om kostenplaatsregels te maken op een kostenplaats van "
"het type 'weergave'"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -279,6 +281,7 @@ msgstr "Rekening5 Id"
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een gesloten rekenening"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
@ -300,7 +303,7 @@ msgstr "T/m datum"
#: 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 ""
msgstr "U dient een kostenplaats te definiëren op het '%s' dagboek."
#. module: account_analytic_plans
#: field:account.crossovered.analytic,empty_line:0
@ -414,7 +417,7 @@ msgstr "Rekening4 Id"
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#, python-format
msgid "The total should be between %s and %s."
msgstr ""
msgstr "Het totaal moet liggen tussen %s en %s."
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
@ -468,6 +471,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"Configurariefout!\n"
"De gekozen valuta moet ook worden gedeeld door de standaard kostenplaatsen."
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model
@ -488,18 +493,20 @@ msgstr "Kostenverdelingsmodellen"
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een rekening van het type "
"'weergave'"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "User Error!"
msgstr ""
msgstr "Gebruikersfout!"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#, python-format
msgid "Please put a name and a code before saving the model."
msgstr ""
msgstr "Geef een naam en code in voordat u het model opslaat."
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date1:0
@ -512,6 +519,7 @@ msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line."
msgstr ""
"Het bedrag van de bon moet gelijk zijn met het bedrag op de afschriftregel."
#. module: account_analytic_plans
#: field:account.analytic.plan.line,sequence:0
@ -527,13 +535,13 @@ msgstr "De naam van het dagboek moet uniek zijn per bedrijf !"
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "or"
msgstr ""
msgstr "of"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#, python-format
msgid "A model with this name and code already exists."
msgstr ""
msgstr "Een model met deze naam en code bestaat al."
#, python-format
#~ msgid "A model having this name and code already exists !"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-08 04:10+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-28 07:38+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:07+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:14+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_analytic_plans
#: view:analytic.plan.create.model:0
@ -95,7 +95,7 @@ msgstr "项 ID"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "Error!"
msgstr ""
msgstr "错误!"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -136,7 +136,7 @@ msgstr "BBA传输结构有误"
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41
#, python-format
msgid "There is no analytic plan defined."
msgstr ""
msgstr "没有辅助核算计划定义"
#. module: account_analytic_plans
#: constraint:account.move.line:0
@ -187,7 +187,7 @@ msgstr "百分比"
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "There are no analytic lines related to account %s."
msgstr ""
msgstr "没有辅助核算行关联到科目%s."
#. module: account_analytic_plans
#: field:account.analytic.plan.instance.line,analytic_account_id:0
@ -229,7 +229,7 @@ msgstr "辅助核算方案明细"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "科目和会计周期必须属于同一个公司"
#. module: account_analytic_plans
#: constraint:account.bank.statement:0
@ -257,7 +257,7 @@ msgstr "币别"
#. module: account_analytic_plans
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
msgstr "你不能视图科目上面创建辅助核算行。"
#. module: account_analytic_plans
#: report:account.analytic.account.crossovered.analytic:0
@ -272,7 +272,7 @@ msgstr "项5 ID"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "你不能在关闭的科目创建账目项目"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line
@ -294,7 +294,7 @@ msgstr "日期到"
#: 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 ""
msgstr "你必须在'%s' 分类账定义一个辅助核算分类账"
#. module: account_analytic_plans
#: field:account.crossovered.analytic,empty_line:0
@ -408,7 +408,7 @@ msgstr "项4 ID"
#: code:addons/account_analytic_plans/account_analytic_plans.py:234
#, python-format
msgid "The total should be between %s and %s."
msgstr ""
msgstr "总计在 %s 和 %s 之间。"
#. module: account_analytic_plans
#: view:account.analytic.plan.instance.line:0
@ -461,7 +461,7 @@ msgstr "账簿"
msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
msgstr "配置错误"
#. module: account_analytic_plans
#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model
@ -481,19 +481,19 @@ msgstr "分摊模型"
#. module: account_analytic_plans
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "你不能在视图类型的科目创建账目项目"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61
#, python-format
msgid "User Error!"
msgstr ""
msgstr "用户错误!"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38
#, python-format
msgid "Please put a name and a code before saving the model."
msgstr ""
msgstr "保存模型前请输入名称和代码"
#. module: account_analytic_plans
#: field:account.crossovered.analytic,date1:0
@ -505,7 +505,7 @@ msgstr "开始日期"
msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line."
msgstr ""
msgstr "单据的金额必须跟对账单其中一行金额相同。"
#. module: account_analytic_plans
#: field:account.analytic.plan.line,sequence:0
@ -521,13 +521,13 @@ msgstr "每个公司的账簿名称必须唯一!"
#: view:account.crossovered.analytic:0
#: view:analytic.plan.create.model:0
msgid "or"
msgstr ""
msgstr "or"
#. module: account_analytic_plans
#: code:addons/account_analytic_plans/account_analytic_plans.py:221
#, python-format
msgid "A model with this name and code already exists."
msgstr ""
msgstr "这个名称和代码的模型已经存在。"
#~ msgid "Select Information"
#~ msgstr "选择信息"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_anglo_saxon
#: sql_constraint:purchase.order:0

View File

@ -8,15 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-01-13 19:32+0000\n"
"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) "
"<maxime.chambreuil@savoirfairelinux.com>\n"
"PO-Revision-Date: 2012-11-29 15:33+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:19+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_anglo_saxon
#: sql_constraint:purchase.order:0
@ -31,7 +30,7 @@ msgstr "Le numéro de facture doit être unique par société !"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_category
msgid "Product Category"
msgstr "Catégorie de produit"
msgstr "Catégorie d'articles"
#. module: account_anglo_saxon
#: sql_constraint:stock.picking:0
@ -68,7 +67,7 @@ msgstr "Bon de commande"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_template
msgid "Product Template"
msgstr "Modèle de produit"
msgstr "Modèle d'article"
#. module: account_anglo_saxon
#: field:product.category,property_account_creditor_price_difference_categ:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_asset
#: view:account.asset.asset:0

View File

@ -0,0 +1,781 @@
# Italian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 00:08+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in draft and open states"
msgstr "Immobili in stato bozza e aperto"
#. module: account_asset
#: field:account.asset.category,method_end:0
#: field:account.asset.history,method_end:0
#: field:asset.modify,method_end:0
msgid "Ending date"
msgstr "Data finale"
#. module: account_asset
#: field:account.asset.asset,value_residual:0
msgid "Residual Value"
msgstr "Valore residuo"
#. module: account_asset
#: field:account.asset.category,account_expense_depreciation_id:0
msgid "Depr. Expense Account"
msgstr "Conto Ammortamento"
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute Asset"
msgstr "Calcola Ammortamenti"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Group By..."
msgstr "Raggruppa per..."
#. module: account_asset
#: field:asset.asset.report,gross_value:0
msgid "Gross Amount"
msgstr "Valore Iniziale"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.depreciation.line,asset_id:0
#: field:account.asset.history,asset_id:0
#: field:account.move.line,asset_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,asset_id:0
#: model:ir.model,name:account_asset.model_account_asset_asset
msgid "Asset"
msgstr "Immobilizzazione"
#. module: account_asset
#: help:account.asset.asset,prorata:0
#: help:account.asset.category,prorata:0
msgid ""
"Indicates that the first depreciation entry for this asset have to be done "
"from the purchase date instead of the first January"
msgstr ""
"Indica che il primo ammortamento di questo immobile sarà calcolato dalla "
"data di acquisto invece che dal primo Gennaio."
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Linear"
msgstr "Costante"
#. module: account_asset
#: field:account.asset.asset,company_id:0
#: field:account.asset.category,company_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,company_id:0
msgid "Company"
msgstr "Azienda"
#. module: account_asset
#: view:asset.modify:0
msgid "Modify"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Running"
msgstr "In esecuzione"
#. module: account_asset
#: field:account.asset.depreciation.line,amount:0
msgid "Depreciation Amount"
msgstr "Importo Ammortamento"
#. module: account_asset
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_asset_asset_report
#: model:ir.model,name:account_asset.model_asset_asset_report
#: model:ir.ui.menu,name:account_asset.menu_action_asset_asset_report
msgid "Assets Analysis"
msgstr "Analisi Immobilizzazioni"
#. module: account_asset
#: field:asset.modify,name:0
msgid "Reason"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_progress_factor:0
#: field:account.asset.category,method_progress_factor:0
msgid "Degressive Factor"
msgstr "Tasso Degressivo"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal
msgid "Asset Categories"
msgstr "Categorie Immobilizzazioni"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,account_move_line_ids:0
#: field:account.move.line,entry_ids:0
#: model:ir.actions.act_window,name:account_asset.act_entries_open
msgid "Entries"
msgstr "Registrazioni"
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,depreciation_line_ids:0
msgid "Depreciation Lines"
msgstr "Righe Ammortamento"
#. module: account_asset
#: help:account.asset.asset,salvage_value:0
msgid "It is the amount you plan to have that you cannot depreciate."
msgstr "E' l'ammontare che si prevede di non poter ammortizzare."
#. module: account_asset
#: field:account.asset.depreciation.line,depreciation_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_date:0
msgid "Depreciation Date"
msgstr "Data Ammortamento"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You cannot create recursive assets."
msgstr "Errore ! Non è possibile creare immobilizzazioni ricorsive."
#. module: account_asset
#: field:asset.asset.report,posted_value:0
msgid "Posted Amount"
msgstr "Importo Contabilizzato"
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_finance_assets
#: model:ir.ui.menu,name:account_asset.menu_finance_config_assets
msgid "Assets"
msgstr "Immobilizzazioni"
#. module: account_asset
#: field:account.asset.category,account_depreciation_id:0
msgid "Depreciation Account"
msgstr "F.do Ammortamento"
#. module: account_asset
#: view:account.asset.asset:0
#: view:account.asset.category:0
#: view:account.asset.history:0
#: view:asset.modify:0
#: field:asset.modify,note:0
msgid "Notes"
msgstr "Note"
#. module: account_asset
#: field:account.asset.depreciation.line,move_id:0
msgid "Depreciation Entry"
msgstr ""
#. module: account_asset
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
msgstr "Valore di credito o debito errato nella registrazione contabile !"
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,nbr:0
msgid "# of Depreciation Lines"
msgstr "# di Righe Ammortamento"
#. module: account_asset
#: field:account.asset.asset,method_period:0
msgid "Number of Months in a Period"
msgstr "Numero di Mesi in un Periodo"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in draft state"
msgstr "Immobilizzazioni in stato \"bozza\""
#. module: account_asset
#: field:account.asset.asset,method_end:0
#: selection:account.asset.asset,method_time:0
#: selection:account.asset.category,method_time:0
#: selection:account.asset.history,method_time:0
msgid "Ending Date"
msgstr "Data finale"
#. module: account_asset
#: field:account.asset.asset,code:0
msgid "Reference"
msgstr "Riferimento"
#. module: account_asset
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr "Comunicazione strutturata BBA non valida !"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Account Asset"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard
#: model:ir.ui.menu,name:account_asset.menu_asset_depreciation_confirmation_wizard
msgid "Compute Assets"
msgstr "Calcola Ammortamenti"
#. module: account_asset
#: field:account.asset.category,method_period:0
#: field:account.asset.history,method_period:0
#: field:asset.modify,method_period:0
msgid "Period Length"
msgstr "Durata del Periodo"
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Draft"
msgstr "Bozza"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of asset purchase"
msgstr "Data di acquisto dell'immobilizzazione"
#. module: account_asset
#: help:account.asset.asset,method_number:0
msgid "Calculates Depreciation within specified interval"
msgstr "Calcola l'Ammortamento all'interno del periodo indicato"
#. module: account_asset
#: field:account.asset.asset,active:0
msgid "Active"
msgstr "Attivo"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change Duration"
msgstr "Modifica Durata"
#. module: account_asset
#: view:account.asset.category:0
msgid "Analytic Information"
msgstr "Informazioni Analitiche"
#. module: account_asset
#: field:account.asset.category,account_analytic_id:0
msgid "Analytic account"
msgstr "Conto analitico"
#. module: account_asset
#: field:account.asset.asset,method:0
#: field:account.asset.category,method:0
msgid "Computation Method"
msgstr "Metodo di calcolo"
#. module: account_asset
#: help:account.asset.asset,method_period:0
msgid "State here the time during 2 depreciations, in months"
msgstr "Indicare l'intervallo tra 2 ammortamenti, in mesi"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid ""
"Prorata temporis can be applied only for time method \"number of "
"depreciations\"."
msgstr ""
#. module: account_asset
#: help:account.asset.history,method_time:0
msgid ""
"The method to use to compute the dates and number of depreciation lines.\n"
"Number of Depreciations: Fix the number of depreciation lines and the time "
"between 2 depreciations.\n"
"Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
#. module: account_asset
#: help:account.asset.history,method_period:0
msgid "Time in month between two depreciations"
msgstr "Tempo in mesi tra due ammortamenti"
#. module: account_asset
#: view:asset.modify:0
#: model:ir.actions.act_window,name:account_asset.action_asset_modify
#: model:ir.model,name:account_asset.model_asset_modify
msgid "Modify Asset"
msgstr "Modifica Immobilizzazione"
#. module: account_asset
#: field:account.asset.asset,salvage_value:0
msgid "Salvage Value"
msgstr "Valore di Realizzo"
#. module: account_asset
#: field:account.asset.asset,category_id:0
#: view:account.asset.category:0
#: field:account.invoice.line,asset_category_id:0
#: view:asset.asset.report:0
msgid "Asset Category"
msgstr "Categoria Immobilizzazione"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in closed state"
msgstr "Immobilizzazioni in stato \"chiuso\""
#. module: account_asset
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
#. module: account_asset
#: field:account.asset.asset,parent_id:0
msgid "Parent Asset"
msgstr ""
#. module: account_asset
#: view:account.asset.history:0
#: model:ir.model,name:account_asset.model_account_asset_history
msgid "Asset history"
msgstr "Storico immobilizzazione"
#. module: account_asset
#: view:account.asset.category:0
msgid "Search Asset Category"
msgstr "Ricerca Categoria Immobilizzazioni"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice_line
msgid "Invoice Line"
msgstr "Riga fattura"
#. module: account_asset
#: constraint:account.move.line:0
msgid ""
"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."
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation Board"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_asset
#: field:asset.asset.report,unposted_value:0
msgid "Unposted Amount"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_time:0
#: field:account.asset.category,method_time:0
#: field:account.asset.history,method_time:0
msgid "Time Method"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "or"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
#. module: account_asset
#: field:account.asset.asset,note:0
#: field:account.asset.category,note:0
#: field:account.asset.history,note:0
msgid "Note"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method:0
#: help:account.asset.category,method:0
msgid ""
"Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Remaining Value * Degressive Factor"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_time:0
#: help:account.asset.category,method_time:0
msgid ""
"Choose the method to use to compute the dates and number of depreciation "
"lines.\n"
" * Number of Depreciations: Fix the number of depreciation lines and the "
"time between 2 depreciations.\n"
" * Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in running state"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Closed"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,state:0
msgid ""
"When an asset is created, the status is 'Draft'.\n"
"If the asset is confirmed, the status goes in 'Running' and the depreciation "
"lines can be posted in the accounting.\n"
"You can manually close an asset when the depreciation is over. If the last "
"line of depreciation is posted, the asset automatically goes in that status."
msgstr ""
#. module: account_asset
#: field:account.asset.asset,state:0
#: field:asset.asset.report,state:0
msgid "Status"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,partner_id:0
#: field:asset.asset.report,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Posted depreciation lines"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,child_ids:0
msgid "Children Assets"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of depreciation"
msgstr ""
#. module: account_asset
#: field:account.asset.history,user_id:0
msgid "User"
msgstr ""
#. module: account_asset
#: field:account.asset.history,date:0
msgid "Date"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Extended Filters..."
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute"
msgstr ""
#. module: account_asset
#: view:account.asset.history:0
msgid "Asset History"
msgstr ""
#. module: account_asset
#: field:asset.asset.report,name:0
msgid "Year"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_asset_depreciation_confirmation_wizard
msgid "asset.depreciation.confirmation.wizard"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_asset_id:0
msgid "Asset Account"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,parent_state:0
msgid "State of Asset"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,name:0
msgid "Depreciation Name"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,history_ids:0
msgid "History"
msgstr ""
#. module: account_asset
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: account_asset
#: field:asset.depreciation.confirmation.wizard,period_id:0
msgid "Period"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "General"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,prorata:0
#: field:account.asset.category,prorata:0
msgid "Prorata Temporis"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Close"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "Cancel"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: selection:asset.asset.report,state:0
msgid "Close"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Method"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
msgid "Asset Durations to Modify"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,purchase_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,purchase_date:0
msgid "Purchase Date"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Degressive"
msgstr ""
#. module: account_asset
#: help:asset.depreciation.confirmation.wizard,period_id:0
msgid ""
"Choose the period for which you want to automatically post the depreciation "
"lines of running assets"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Current"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,remaining_value:0
msgid "Amount to Depreciate"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,name:0
msgid "Asset Name"
msgstr ""
#. module: account_asset
#: field:account.asset.category,open_asset:0
msgid "Skip Draft State"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Dates"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,currency_id:0
msgid "Currency"
msgstr ""
#. module: account_asset
#: field:account.asset.category,journal_id:0
msgid "Journal"
msgstr ""
#. module: account_asset
#: field:account.asset.history,name:0
msgid "History name"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,depreciated_value:0
msgid "Amount Already Depreciated"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,move_check:0
#: view:asset.asset.report:0
#: field:asset.asset.report,move_check:0
msgid "Posted"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report
msgid ""
"<p>\n"
" From this report, you can have an overview on all depreciation. "
"The\n"
" tool search can also be used to personalise your Assets reports "
"and\n"
" so, match this analysis to your needs;\n"
" </p>\n"
" "
msgstr ""
#. module: account_asset
#: field:account.asset.asset,purchase_value:0
msgid "Gross Value"
msgstr ""
#. module: account_asset
#: field:account.asset.category,name:0
msgid "Name"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
#. module: account_asset
#: help:account.asset.category,open_asset:0
msgid ""
"Check this if you want to automatically confirm the assets of this category "
"when created by invoices."
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Draft"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_asset_depreciation_line
msgid "Asset depreciation line"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
#: field:asset.asset.report,asset_category_id:0
#: model:ir.model,name:account_asset.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_value:0
msgid "Amount of Depreciation Lines"
msgstr ""
#. module: account_asset
#: code:addons/account_asset/wizard/wizard_asset_compute.py:49
#, python-format
msgid "Created Asset Moves"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_asset
#: help:account.asset.category,method_period:0
msgid "State here the time between 2 depreciations, in months"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_number:0
#: selection:account.asset.asset,method_time:0
#: field:account.asset.category,method_number:0
#: selection:account.asset.category,method_time:0
#: field:account.asset.history,method_number:0
#: selection:account.asset.history,method_time:0
#: field:asset.modify,method_number:0
msgid "Number of Depreciations"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Create Move"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Confirm Asset"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree
msgid "Asset Hierarchy"
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-06-28 12:49+0000\n"
"PO-Revision-Date: 2012-12-01 16:19+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_asset
#: view:account.asset.asset:0
@ -161,7 +161,7 @@ msgstr "Afschrijvingsdatum"
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You cannot create recursive assets."
msgstr ""
msgstr "Fout! Het is niet toegestaan om recursieve activa aan te maken."
#. module: account_asset
#: field:asset.asset.report,posted_value:0
@ -211,7 +211,7 @@ msgstr "# afschrijvingsregels"
#. module: account_asset
#: field:account.asset.asset,method_period:0
msgid "Number of Months in a Period"
msgstr ""
msgstr "Aantal maanden in de periode"
#. module: account_asset
#: view:asset.asset.report:0
@ -369,7 +369,7 @@ msgstr "Activa in gesloten status"
#. module: account_asset
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Kostenplaats en periode moeten behoren tot hetzelfde bedrijf."
#. module: account_asset
#: field:account.asset.asset,parent_id:0
@ -429,12 +429,13 @@ msgstr "Tijdmethode"
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "or"
msgstr ""
msgstr "of"
#. module: account_asset
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een gesloten rekenening"
#. module: account_asset
#: field:account.asset.asset,note:0
@ -498,7 +499,7 @@ msgstr ""
#: field:account.asset.asset,state:0
#: field:asset.asset.report,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: account_asset
#: field:account.asset.asset,partner_id:0
@ -545,7 +546,7 @@ msgstr "Bereken"
#. module: account_asset
#: view:account.asset.history:0
msgid "Asset History"
msgstr ""
msgstr "Activa historie"
#. module: account_asset
#: field:asset.asset.report,name:0
@ -666,7 +667,7 @@ msgstr "Bedrag voor waardevermindering"
#. module: account_asset
#: field:account.asset.asset,name:0
msgid "Asset Name"
msgstr ""
msgstr "Activa naam"
#. module: account_asset
#: field:account.asset.category,open_asset:0
@ -717,11 +718,19 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Met deze rapportage heeft u een overzicht van alle "
"afschrijvingen. Het\n"
"             hulpmiddel zoeken kan ook worden gebruikt om uw activa \n"
" rapporten te personaliseren om zo deze analyses aan te passen \n"
" aan uw behoeften.\n"
" </p>\n"
" "
#. module: account_asset
#: field:account.asset.asset,purchase_value:0
msgid "Gross Value"
msgstr ""
msgstr "Bruto Waarde"
#. module: account_asset
#: field:account.asset.category,name:0
@ -732,6 +741,8 @@ msgstr "Naam"
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een rekening van het type "
"'weergave'"
#. module: account_asset
#: help:account.asset.category,open_asset:0
@ -774,7 +785,7 @@ msgstr "Maak activa mutaties"
#. module: account_asset
#: field:account.asset.depreciation.line,sequence:0
msgid "Sequence"
msgstr ""
msgstr "Reeks"
#. module: account_asset
#: help:account.asset.category,method_period:0

View File

@ -43,10 +43,10 @@
<field name="arch" type="xml">
<data>
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/tree/field[@name='date']" position="after">
<field name="val_date"/>
</xpath>
<field name="val_date" invisible="1"/>
</xpath>
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/tree/field[@name='amount']" position="after">
<field name="globalisation_id" string="Glob. Id"/>
<field name="globalisation_id" string="Glob. Id" invisible="1"/>
<field name="state" invisible="1"/>
</xpath>
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/form/group/field[@name='date']" position="after">

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-03-09 13:28+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-01 18:23+0000\n"
"Last-Translator: gehad shaat <gehad.shaath@gmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
@ -109,7 +109,7 @@ msgstr "معلومات دفعة السداد"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr ""
msgstr "الحالة"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
@ -122,7 +122,7 @@ msgstr ""
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "or"
msgstr ""
msgstr "أو"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
@ -235,7 +235,7 @@ msgstr "يدوي"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Bank Transaction"
msgstr ""
msgstr "معاملة بنكية"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
@ -353,7 +353,7 @@ msgstr "خطوط بيان المصرف"
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Warning!"
msgstr ""
msgstr "تحذير!"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-09 14:55+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-28 06:46+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
@ -59,7 +59,7 @@ msgstr "取消所选的表行"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Value Date"
msgstr ""
msgstr "起息日"
#. module: account_bank_statement_extensions
#: constraint:res.partner.bank:0
@ -109,7 +109,7 @@ msgstr "批量付款信息"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
@ -117,12 +117,12 @@ msgstr ""
msgid ""
"Delete operation not allowed. Please go to the associated bank "
"statement in order to delete and/or modify bank statement line."
msgstr ""
msgstr "不允许删除。为了删除和(或)修改银行对账单行,请到关联的银行对账单操作。"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "or"
msgstr ""
msgstr "or"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
@ -234,7 +234,7 @@ msgstr "手工"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Bank Transaction"
msgstr ""
msgstr "银行交易"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
@ -303,7 +303,7 @@ msgstr "编号"
msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line."
msgstr ""
msgstr "单据的金额必须跟对账单其中一行金额相同。"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
@ -351,7 +351,7 @@ msgstr "银行单据行"
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Warning!"
msgstr ""
msgstr "警告!"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2009-02-03 06:24+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2012-12-01 17:45+0000\n"
"Last-Translator: gehad shaat <gehad.shaath@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:16+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@ -239,7 +239,7 @@ msgstr "للموافقة علي الميزانية"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
msgstr "المدة"
#. module: account_budget
#: field:account.budget.post,code:0
@ -337,7 +337,7 @@ msgstr "الكمية النظرية"
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
msgstr "أو"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-28 04:41+0000\n"
"X-Generator: Launchpad (build 16309)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_budget
#: view:account.budget.analytic:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-13 21:08+0000\n"
"Last-Translator: t.o <Unknown>\n"
"PO-Revision-Date: 2012-11-29 16:58+0000\n"
"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:16+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@ -141,7 +141,7 @@ msgstr "Total :"
#. module: account_budget
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "Erreur! Vous ne pouvez pas créer de comptes analytiques récursifs."
#. module: account_budget
#: field:account.budget.post,company_id:0
@ -239,7 +239,7 @@ msgstr "Budgets à approuver"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
msgstr "Durée"
#. module: account_budget
#: field:account.budget.post,code:0
@ -337,7 +337,7 @@ msgstr "Montant Théorique"
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
msgstr "ou"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2010-09-09 07:05+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2012-11-28 16:01+0000\n"
"Last-Translator: Andrius Preimantas <andrius.preimantas@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:16+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@ -27,7 +27,7 @@ msgstr ""
#. module: account_budget
#: field:crossovered.budget,creating_user_id:0
msgid "Responsible User"
msgstr ""
msgstr "Atsakingas naudotojas"
#. module: account_budget
#: selection:crossovered.budget,state:0
@ -38,12 +38,12 @@ msgstr "Patvirtinta"
#: 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 ""
msgstr "Biudžeto pozicija"
#. module: account_budget
#: report:account.budget:0
msgid "Printed at:"
msgstr ""
msgstr "Atspausdinta:"
#. module: account_budget
#: view:crossovered.budget:0
@ -53,17 +53,17 @@ msgstr "Patvirtinti"
#. module: account_budget
#: field:crossovered.budget,validating_user_id:0
msgid "Validate User"
msgstr ""
msgstr "Patvirtinti vartotoją"
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_summary_report
msgid "Print Summary"
msgstr ""
msgstr "Spausdinti suvestinę"
#. module: account_budget
#: field:crossovered.budget.lines,paid_date:0
msgid "Paid Date"
msgstr ""
msgstr "Apmokėjimo data"
#. module: account_budget
#: field:account.budget.analytic,date_to:0
@ -82,7 +82,7 @@ msgstr "Juodraštis"
#. module: account_budget
#: report:account.budget:0
msgid "at"
msgstr ""
msgstr "ties"
#. module: account_budget
#: view:account.budget.report:0
@ -104,12 +104,12 @@ msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Validated"
msgstr ""
msgstr "Patvirtintas"
#. module: account_budget
#: field:crossovered.budget.lines,percentage:0
msgid "Percentage"
msgstr ""
msgstr "Procentai"
#. module: account_budget
#: field:crossovered.budget,state:0
@ -120,7 +120,7 @@ msgstr "Būsena"
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "The Budget '%s' has no accounts!"
msgstr ""
msgstr "Biudžetui '%s' nepriskirtos sąskaitos!"
#. module: account_budget
#: report:account.budget:0
@ -131,24 +131,24 @@ msgstr "Aprašas"
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Currency"
msgstr ""
msgstr "Valiuta"
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Total :"
msgstr ""
msgstr "Iš viso:"
#. module: account_budget
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "Klaida! Negalima kurti rekursivių analitinių sąskaitų"
#. 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 ""
msgstr "Įmonė"
#. module: account_budget
#: report:crossovered.budget.report:0
@ -158,20 +158,20 @@ msgstr "iki"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Reset to Draft"
msgstr ""
msgstr "Atstatyti į juodraštį"
#. module: account_budget
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,planned_amount:0
msgid "Planned Amount"
msgstr ""
msgstr "Suplanuota suma"
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Perc(%)"
msgstr ""
msgstr "Procentai (%)"
#. module: account_budget
#: view:crossovered.budget:0
@ -183,7 +183,7 @@ msgstr "Atlikta"
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Practical Amt"
msgstr ""
msgstr "Praktinė suma"
#. module: account_budget
#: view:account.analytic.account:0
@ -191,7 +191,7 @@ msgstr ""
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,practical_amount:0
msgid "Practical Amount"
msgstr ""
msgstr "Praktinė suma"
#. module: account_budget
#: field:crossovered.budget,date_to:0
@ -203,12 +203,12 @@ msgstr "Pabaigos data"
#: 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 ""
msgstr "Biudžeto ataskaita analitinei sąskaitai"
#. module: account_budget
#: view:account.analytic.account:0
msgid "Theoritical Amount"
msgstr ""
msgstr "Teorinė suma"
#. module: account_budget
#: field:account.budget.post,name:0
@ -219,7 +219,7 @@ msgstr "Pavadinimas"
#. module: account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget_lines
msgid "Budget Line"
msgstr ""
msgstr "Biudžeto eilutė"
#. module: account_budget
#: report:account.budget:0
@ -234,12 +234,12 @@ msgstr "Biudžetas"
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve Budgets"
msgstr ""
msgstr "Patvirtinti biudžetą"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
msgstr "Trukmė"
#. module: account_budget
#: field:account.budget.post,code:0
@ -251,7 +251,7 @@ msgstr "Kodas"
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
msgid "This wizard is used to print budget"
msgstr ""
msgstr "Šis vedlys naudojamas atspausdinti biudžetui"
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_view
@ -267,7 +267,7 @@ msgstr "Biudžetai"
#. module: account_budget
#: view:account.budget.crossvered.summary.report:0
msgid "This wizard is used to print summary of budgets"
msgstr ""
msgstr "Šis vedlys naudojamas atspausdinti biudžetų suvestinei"
#. module: account_budget
#: selection:crossovered.budget,state:0
@ -277,19 +277,19 @@ msgstr "Nutrauktas"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Approve"
msgstr ""
msgstr "Patvirtinti"
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve"
msgstr ""
msgstr "Patvirtinti"
#. 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 ""
msgstr "Biudžeto pozicija"
#. module: account_budget
#: field:account.budget.analytic,date_from:0
@ -308,13 +308,13 @@ msgstr ""
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Theoretical Amt"
msgstr ""
msgstr "Teorinė suma"
#. module: account_budget
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "Error!"
msgstr ""
msgstr "Klaida!"
#. module: account_budget
#: view:account.budget.analytic:0
@ -329,7 +329,7 @@ msgstr "Spausdinti"
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,theoritical_amount:0
msgid "Theoretical Amount"
msgstr ""
msgstr "Teorinė suma"
#. module: account_budget
#: view:account.budget.analytic:0
@ -337,7 +337,7 @@ msgstr ""
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
msgstr "arba"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
@ -348,7 +348,7 @@ msgstr "Analitinė sąskaita"
#. module: account_budget
#: report:account.budget:0
msgid "Budget :"
msgstr ""
msgstr "Biudžetas:"
#. module: account_budget
#: model:ir.actions.act_window,help:account_budget.act_crossovered_budget_view
@ -377,7 +377,7 @@ msgstr ""
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Planned Amt"
msgstr ""
msgstr "Planuojama suma"
#. module: account_budget
#: view:account.budget.post:0
@ -397,7 +397,7 @@ msgstr "Sąskaitos"
#: 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
msgid "Budget Lines"
msgstr ""
msgstr "Biudžeto eilutės"
#. module: account_budget
#: view:account.budget.analytic:0
@ -418,12 +418,12 @@ msgstr "Pradžios data"
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Analysis from"
msgstr ""
msgstr "Analizė nuo"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Draft Budgets"
msgstr ""
msgstr "Nepatvirtinti biudžetai"
#~ msgid "% performance"
#~ msgstr "% vykdymas"

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-08 03:50+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-28 06:47+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:16+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@ -141,7 +141,7 @@ msgstr "合计:"
#. module: account_budget
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "错误!你不能递归创建辅助核算项"
#. module: account_budget
#: field:account.budget.post,company_id:0
@ -239,7 +239,7 @@ msgstr "待审核的预算"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
msgstr ""
msgstr "持续时间"
#. module: account_budget
#: field:account.budget.post,code:0
@ -337,7 +337,7 @@ msgstr "理论金额"
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
msgstr ""
msgstr "or"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2010-11-21 07:53+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2012-11-28 19:46+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:24+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr "Cancella"
msgstr "Annulla"
#~ msgid "Account Cancel"
#~ msgstr "Account Cancel"

View File

@ -11,7 +11,7 @@
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.view_account_journal_form" />
<field name="arch" type="xml">
<field name="type" on_change="onchange_type(type, currency)" />
<field name="type" />
<field name="entry_posted" position="after">
<field name="allow_check_writing" attrs="{'readonly':[('type','!=','bank')]}" />
<field name="use_preprint_check" attrs="{'readonly':[('type','!=','bank')]}" />

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-04-06 00:34+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-01 18:24+0000\n"
"Last-Translator: gehad shaat <gehad.shaath@gmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
@ -130,7 +130,7 @@ msgstr "استخدام الصكوك المطبوعة مسبقاً"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr ""
msgstr "اطبع الشيك (أسفل)"
#. module: account_check_writing
#: sql_constraint:res.company:0
@ -147,7 +147,7 @@ msgstr "تاريخ الإستحقاق"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr ""
msgstr "اطبع الشيك (وسط)"
#. module: account_check_writing
#: constraint:account.journal:0
@ -155,6 +155,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"خطأ في التكوين!\n"
"العملة المختارة يجب أن تكون مستخدمة من الحساب الافتراضي أيضا"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
@ -170,7 +172,7 @@ msgstr "الرصيد المستحق"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr ""
msgstr "اطبع الشيك (أعلى)"
#. module: account_check_writing
#: report:account.print.check.bottom:0

View File

@ -0,0 +1,228 @@
# Spanish (Mexico) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-29 18:20+0000\n"
"Last-Translator: OscarAlca <oscarolar@hotmail.com>\n"
"Language-Team: Spanish (Mexico) <es_MX@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr "Cheque en la parte de arriba"
#. module: account_check_writing
#: view:account.voucher:0
msgid "Print Check"
msgstr "Imprimir cheque"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr "Cheque en el centro"
#. 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 ""
"Cheque en la parte de arriba es compatible con Quicken, Quickbooks y "
"Microsoft Money. Cheque en el medio es compatible con PeachTree, ACCPAC y "
"DacEasy. Cheque en la parte de abajo es compatible con Peachtree, ACCPAC y "
"DacEasy exclusivamente"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr "Cheque en la parte de abajo"
#. module: account_check_writing
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "¡Error! No puede crear compañías recursivas."
#. 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 "Revise si el diario es usado para registrar cheques."
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr "Permitir escribir cheques"
#. 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 "Descripción"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr "Diário"
#. 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 "Escribir cheques"
#. 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 "Descuento"
#. 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 "Importe original"
#. 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"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click para crear un nuevo cheque.\n"
" </p><p>\n"
" El formulario de pago de cheques le permite dar seguimiento "
"al pago que \n"
" emite a sus proveedores usando cheques. Cuando selecciona un "
"proveedor, el\n"
" metodo de pago y un monto para el pago, OpenERP propondrá \n"
" conciliar su pago con las facturas abiertas o cuentas "
"abiertas del proveedor.\n"
" </p>\n"
" "
#. module: account_check_writing
#: field:account.voucher,allow_check:0
msgid "Allow Check Writing"
msgstr "Permitir escribir cheques"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
msgstr "Pago"
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr "Usar cheque preimpreso"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr "Imprimir cheque (Abajo)"
#. module: account_check_writing
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "¡El nombre de la compañía debe ser único!"
#. 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"
msgstr "Fecha de vencimiento"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr "Imprimir Cheque (Al Centro)"
#. module: account_check_writing
#: constraint:account.journal:0
msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"¡Error de confuguración!\n"
"La moneda seleccionada también tiene que ser la que está en las cuentas por "
"defecto."
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
msgstr "Saldo pendiente"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr "Imprimir Cheque (Arriba)"
#. 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 "Importe del cheque"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr "Comprobante contable"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The name of the journal must be unique per company !"
msgstr "¡El nombre del diaro debe ser único por compañía!"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The code of the journal must be unique per company !"
msgstr "¡El código del diario debe ser único por compañía!"
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr "Cantidad en letra"
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr "Saldo Inicial"
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Choose Check layout"
msgstr "Elija el formato del cheque."

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 18:06+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-28 06:58+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
@ -110,6 +110,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击 创建一个新的支票。\n"
" </p><p>\n"
" 支票支付表单允许跟踪用支票支付给供应商的过程。\n"
" 当年选择了一个供应商Openerp 将自动提供 支付\n"
" 方法和支付金额,用于核销待支付的供应商发票和\n"
" 单据。\n"
" </p>\n"
" "
#. module: account_check_writing
#: field:account.voucher,allow_check:0
@ -131,7 +140,7 @@ msgstr "用预先打印的支票"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr ""
msgstr "打印支票(底部)"
#. module: account_check_writing
#: sql_constraint:res.company:0
@ -148,14 +157,14 @@ msgstr "到期日期"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr ""
msgstr "打印支票(中间)"
#. module: account_check_writing
#: constraint:account.journal:0
msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
msgstr "配置错误!"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
@ -171,7 +180,7 @@ msgstr "截止余额"
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr ""
msgstr "打印支票(顶部)"
#. module: account_check_writing
#: report:account.print.check.bottom:0

View File

@ -20,7 +20,7 @@
##############################################################################
{
'name': 'Follow-up Management',
'name': 'Payment Follow-up Management',
'version': '1.0',
'category': 'Accounting & Finance',
'description': """
@ -29,19 +29,18 @@ Module to automate letters for unpaid invoices, with multi-level recalls.
You can define your multiple levels of recall through the menu:
---------------------------------------------------------------
**Invoicing** / **Configuration** / **Miscellaneous** / **Follow-ups**
Configuration / Follow-Up Levels
Once it is defined, you can automatically print recalls every day through simply clicking on the menu:
------------------------------------------------------------------------------------------------------
**Invoicing** / **Periodical Processing** / **Billing** / **Send follow-ups**
Payment Follow-Up / Send Email and letters
It will generate a PDF with all the letters according to the the different levels
of recall defined. You can define different policies for different companies. You
can also send mail to the customer.
It will generate a PDF / send emails / set manual actions according to the the different levels
of recall defined. You can define different policies for different companies.
Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:
------------------------------------------------------------------------------------------------------------------
**Invoicing** / **Reporting** / **Generic Reporting** / **Partners** / **Follow-ups Sent**
Reporting / Accounting / **Follow-ups Analysis
""",
'author': 'OpenERP SA',
@ -51,16 +50,16 @@ Note that if you want to check the follow-up level for a given partner/account e
'data': [
'security/account_followup_security.xml',
'security/ir.model.access.csv',
'wizard/account_followup_print_view.xml',
'report/account_followup_report.xml',
'account_followup_demo.xml', # Defined by default
'account_followup_view.xml',
'account_followup_data.xml',
'account_followup_view.xml',
'account_followup_customers.xml',
'wizard/account_followup_print_view.xml',
],
'demo': [],
'demo': ['account_followup_demo.xml'],
'test': [
'test/account_followup.yml',
'test/account_followup_report.yml',
#TODO 'test/account_followup_report.yml', --> Need to wait for second step in order to check report (expects after first)
],
'installable': True,
'auto_install': False,

View File

@ -20,37 +20,66 @@
##############################################################################
from osv import fields, osv
from lxml import etree
from tools.translate import _
class followup(osv.osv):
_name = 'account_followup.followup'
_description = 'Account Follow-up'
_rec_name = 'name'
_columns = {
'name': fields.char('Name', size=64, required=True),
'description': fields.text('Description'),
'followup_line': fields.one2many('account_followup.followup.line', 'followup_id', 'Follow-up'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'name': fields.related('company_id', 'name', string = "Name"),
}
_defaults = {
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account_followup.followup', context=c),
}
followup()
_sql_constraints = [('company_uniq', 'unique(company_id)', 'Only one follow-up per company is allowed')]
class followup_line(osv.osv):
def _get_default_template(self, cr, uid, ids, context=None):
dummy, templ = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_followup', 'email_template_account_followup_default')
return templ
_name = 'account_followup.followup.line'
_description = 'Follow-up Criteria'
_columns = {
'name': fields.char('Name', size=64, required=True),
'name': fields.char('Follow-Up Action', size=64, required=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of follow-up lines."),
'delay': fields.integer('Days of delay'),
'start': fields.selection([('days','Net Days'),('end_of_month','End of Month')], 'Type of Term', size=64, required=True),
'delay': fields.integer('Due Days', help="The number of days after the due date of the invoice to wait before sending the reminder. Could be negative if you want to send a polite alert beforehand.", required=True),
'followup_id': fields.many2one('account_followup.followup', 'Follow Ups', required=True, ondelete="cascade"),
'description': fields.text('Printed Message', translate=True),
'send_email':fields.boolean('Send an Email', help="When processing, it will send an email"),
'send_letter':fields.boolean('Send a Letter', help="When processing, it will print a letter"),
'manual_action':fields.boolean('Manual Action', help="When processing, it will set the manual action to be taken for that customer. "),
'manual_action_note':fields.text('Action To Do', placeholder="e.g. Give a phone call, check with others , ..."),
'manual_action_responsible_id':fields.many2one('res.users', 'Assign a Responsible', ondelete='set null'),
'email_template_id':fields.many2one('email.template', 'Email Template', ondelete='set null'),
}
_order = 'delay'
_sql_constraints = [('days_uniq', 'unique(followup_id, delay)', 'Days of the follow-up levels must be different')]
_defaults = {
'start': 'days',
'send_email': True,
'send_letter': True,
'manual_action':False,
'description': """
Dear %(partner_name)s,
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
""",
'email_template_id': _get_default_template,
}
def _check_description(self, cr, uid, ids, context=None):
for line in self.browse(cr, uid, ids, context=context):
if line.description:
@ -64,40 +93,193 @@ class followup_line(osv.osv):
(_check_description, 'Your description is invalid, use the right legend or %% if you want to use the percent character.', ['description']),
]
followup_line()
class account_move_line(osv.osv):
def _get_result(self, cr, uid, ids, name, arg, context=None):
res = {}
for aml in self.browse(cr, uid, ids, context=context):
res[aml.id] = aml.debit - aml.credit
return res
_inherit = 'account.move.line'
_columns = {
'followup_line_id': fields.many2one('account_followup.followup.line', 'Follow-up Level'),
'followup_line_id': fields.many2one('account_followup.followup.line', 'Follow-up Level',
ondelete='restrict'), #restrict deletion of the followup line
'followup_date': fields.date('Latest Follow-up', select=True),
'result':fields.function(_get_result, type='float', method=True,
string="Balance") #'balance' field is not the same
}
account_move_line()
class res_company(osv.osv):
_inherit = "res.company"
class email_template(osv.osv):
_inherit = 'email.template'
# Adds current_date to the context. That way it can be used to put
# the account move lines in bold that are overdue in the email
def render_template(self, cr, uid, template, model, res_id, context=None):
context['current_date'] = fields.date.context_today(cr, uid, context)
return super(email_template, self).render_template(cr, uid, template, model, res_id, context=context)
class res_partner(osv.osv):
def fields_view_get(self, cr, uid, view_id=None, view_type=None, context=None, toolbar=False, submenu=False):
res = super(res_partner, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context,
toolbar=toolbar, submenu=submenu)
context = context or {}
if view_type == 'form' and context.get('Followupfirst'):
doc = etree.XML(res['arch'], parser=None, base_url=None)
first_node = doc.xpath("//page[@name='followup_tab']")
root = first_node[0].getparent()
root.insert(0, first_node[0])
res['arch'] = etree.tostring(doc, encoding="utf-8")
return res
def _get_latest(self, cr, uid, ids, names, arg, context=None, company_id=None):
res={}
if company_id == None:
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
else:
company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
for partner in self.browse(cr, uid, ids, context=context):
amls = partner.unreconciled_aml_ids
latest_date = False
latest_level = False
latest_days = False
latest_level_without_lit = False
latest_days_without_lit = False
for aml in amls:
if (aml.company_id == company) and (aml.followup_line_id != False) and (not latest_days or latest_days < aml.followup_line_id.delay):
latest_days = aml.followup_line_id.delay
latest_level = aml.followup_line_id.id
if (aml.company_id == company) and (not latest_date or latest_date < aml.followup_date):
latest_date = aml.followup_date
if (aml.company_id == company) and (aml.blocked == False) and (aml.followup_line_id != False and
(not latest_days_without_lit or latest_days_without_lit < aml.followup_line_id.delay)):
latest_days_without_lit = aml.followup_line_id.delay
latest_level_without_lit = aml.followup_line_id.id
res[partner.id] = {'latest_followup_date': latest_date,
'latest_followup_level_id': latest_level,
'latest_followup_level_id_without_lit': latest_level_without_lit}
return res
def do_partner_manual_action(self, cr, uid, partner_ids, context=None):
#partner_ids -> res.partner
for partner in self.browse(cr, uid, partner_ids, context=context):
#Check action: check if the action was not empty, if not add
action_text= ""
if partner.payment_next_action:
action_text = (partner.payment_next_action or '') + "\n" + (partner.latest_followup_level_id_without_lit.manual_action_note or '')
else:
action_text = partner.latest_followup_level_id_without_lit.manual_action_note or ''
#Check date: put the minimum date if it existed already
action_date = (partner.payment_next_action_date and min(partner.payment_next_action_date, fields.date.context_today(cr, uid, context))
) or fields.date.context_today(cr, uid, context)
# Check responsible: if partner has not got a responsible already, take from follow-up
responsible_id = False
if partner.payment_responsible_id:
responsible_id = partner.payment_responsible_id.id
else:
p = partner.latest_followup_level_id_without_lit.manual_action_responsible_id
responsible_id = p and p.id or False
self.write(cr, uid, [partner.id], {'payment_next_action_date': action_date,
'payment_next_action': action_text,
'payment_responsible_id': responsible_id})
def do_partner_print(self, cr, uid, wizard_partner_ids, data, context=None):
#wizard_partner_ids are ids from special view, not from res.partner
if not wizard_partner_ids:
return {}
data['partner_ids'] = wizard_partner_ids
datas = {
'ids': [],
'model': 'account_followup.followup',
'form': data
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account_followup.followup.print',
'datas': datas,
}
def do_partner_mail(self, cr, uid, partner_ids, context=None):
#partner_ids are res.partner ids
# If not defined by latest follow-up level, it will be the default template if it can find it
mtp = self.pool.get('email.template')
unknown_mails = 0
for partner in self.browse(cr, uid, partner_ids, context=context):
if partner.email and partner.email.strip():
level = partner.latest_followup_level_id_without_lit
if level and level.send_email and level.email_template_id and level.email_template_id.id:
mtp.send_mail(cr, uid, level.email_template_id.id, partner.id, context=context)
else:
mail_template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,
'account_followup', 'email_template_account_followup_default')
mtp.send_mail(cr, uid, mail_template_id[1], partner.id, context=context)
else:
unknown_mails = unknown_mails + 1
action_text = _("Email not sent because of email address of partner not filled in")
if partner.payment_next_action_date:
payment_action_date = min(fields.date.context_today(cr, uid, context), partner.payment_next_action_date)
else:
payment_action_date = fields.date.context_today(cr, uid, context)
if partner.payment_next_action:
payment_next_action = partner.payment_next_action + " + " + action_text
else:
payment_next_action = action_text
self.write(cr, uid, [partner.id], {'payment_next_action_date': payment_action_date,
'payment_next_action': payment_next_action}, context=context)
return unknown_mails
def action_done(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'payment_next_action_date': False, 'payment_next_action':'', 'payment_responsible_id': False}, context=context)
def do_button_print(self, cr, uid, ids, context=None):
assert(len(ids) == 1)
self.message_post(cr, uid, [ids[0]], body=_('Printed overdue payments report'), context=context)
datas = {
'ids': ids,
'model': 'res.partner',
'form': self.read(cr, uid, ids[0], context=context)
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account.overdue',
'datas': datas,
'nodestroy' : True
}
_inherit = "res.partner"
_columns = {
'follow_up_msg': fields.text('Follow-up Message', translate=True),
}
_defaults = {
'follow_up_msg': '''
Date: %(date)s
Dear %(partner_name)s,
Please find in attachment a reminder of all your unpaid invoices, for a total amount due of:
%(followup_amount).2f %(company_currency)s
Thanks,
--
%(user_signature)s
%(company_name)s
'''
}
res_company()
'payment_responsible_id':fields.many2one('res.users', ondelete='set null', string='Follow-up Responsible',
help="Responsible for making sure the action happens."),
'payment_note':fields.text('Customer Payment Promise', help="Payment Note"),
'payment_next_action':fields.text('Next Action',
help="This is the next action to be taken by the user. It will automatically be set when the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
'payment_next_action_date':fields.date('Next Action Date',
help="This is when further follow-up is needed. The date will have been set to the current date if the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
'unreconciled_aml_ids':fields.one2many('account.move.line', 'partner_id', domain=['&', ('reconcile_id', '=', False), '&',
('account_id.active','=', True), '&', ('account_id.type', '=', 'receivable'), ('state', '!=', 'draft')]),
'latest_followup_date':fields.function(_get_latest, method=True, type='date', string="Latest Follow-up Date",
help="Latest date that the follow-up level of the partner was changed",
store=False,
multi="latest"),
'latest_followup_level_id':fields.function(_get_latest, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Follow-up Level",
help="The maximum follow-up level",
store=False,
multi="latest"),
'latest_followup_level_id_without_lit':fields.function(_get_latest, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Follow-up Level without litigation",
help="The maximum follow-up level without taking into account the account move lines with litigation",
store=False,
multi="latest"),
'payment_amount_due':fields.related('credit', type='float', string="Total amount due", readonly=True),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- followup of customers views -->
<record id="customer_followup_tree" model="ir.ui.view">
<field name="name">res.partner.followup.inherit.tree</field>
<field name="model">res.partner</field>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<tree string="Customer Followup">
<field name="name"/>
<field name="payment_next_action_date"/>
<field name="payment_next_action"/>
<field name="user_id" invisible="1"/>
<field name="parent_id" invisible="1"/>
<field name="payment_responsible_id"/>
<field name="credit"/>
</tree>
</field>
</record>
<record id="customer_followup_search_view" model="ir.ui.view">
<field name="name">Search</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<search string="Search Partner" position="inside">
<group string="Follow-up">
<filter string="Partners with Credits" domain="[('credit', '>', 0.0)]" name="credits"/>
<separator/>
<filter string="Follow-ups To Do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]" name="todo"/>
<filter string="Future Follow-ups" domain="[('payment_next_action_date', '&gt;', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]"/>
<separator/>
<filter string="No Responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="My Follow-ups" domain="[('payment_responsible_id','=', uid)]"/>
</group>
<group expand="1" string="Group By...">
<filter string="Responsible" context="{'group_by':'payment_responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="customer_followup_search_view2" model="ir.ui.view">
<field name="name">Search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Search view">
<field name="name"/>
<field name="payment_next_action"/>
<!--<filter string="Actions to be taken with overdue amount" domain="['&amp;', ('payment_amount_outstanding', '>', 0.0), ('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>-->
<filter string="Overdue amount" domain="[('credit', '>', 0.0)]"/>
<separator/>
<filter string="Follow-ups to do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>
<!--filter string="Future follow-ups" domain="['&', ('payment_next_action', '!=', ''), ('payment_next_action_date', '>', time.strftime('%%Y-%%m-%%d'))]"/>-->
<separator/>
<filter string="Without responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="I am responsible" domain="[('payment_responsible_id','=', uid)]"/>
<group expand="1" string="Group by">
<filter string="Responsible" context="{'group_by':'payment_responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_customer_followup" model="ir.actions.act_window">
<field name="name">Manual Follow-Ups</field>
<field name="view_id" ref="customer_followup_tree"/>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{} </field>
<field name="context">{'Followupfirst':True, 'search_default_todo': True} </field>
<field name="search_view_id" ref="customer_followup_search_view"/>
</record>
<!--Inherited view -->
<record id="view_partner_inherit_followup_form" model="ir.ui.view">
<field name="name">res.partner.followup.form.inherit</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="model">res.partner</field>
<field name="arch" type="xml" >
<page string="Accounting" position="before" version="7.0">
<page string="Payment Follow-up" groups="account.group_account_invoice" name="followup_tab">
<div class="oe_right oe_button_box" name="followup_button">
<button name="do_button_print" type="object" string="Print Overdue Payments" groups="account.group_account_user"
help="Print overdue payments report independent of follow-up line" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}" />
<button name="do_partner_mail" type="object" string="Send Overdue Email" groups="account.group_account_user"
help="If not specified by the latest follow-up level, it will send from the default follow-up of overdue invoices template" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}"/>
</div>
<p attrs="{'invisible':[('latest_followup_date','=', False)]}">
The <field name="latest_followup_date" class = "oe_inline"/>, the latest payment follow-up
was: <field name="latest_followup_level_id" class="oe_inline"/>
</p>
<group>
<field name="payment_responsible_id" placeholder="Responsible of credit collection" class="oe_inline"/>
<label for="payment_next_action"/>
<div>
<field name="payment_next_action_date" class="oe_inline"/>
<button name="action_done" type="object" string="⇾ Mark as Done"
help="Click to mark the action as done." class="oe_link"
attrs="{'invisible':[('payment_next_action_date','=', False)]}"
groups="base.group_partner_manager"/>
<field name="payment_next_action" placeholder="e.g. Give a phonecall, Check if it's paid, ..."/>
</div>
</group>
<label for="payment_note" class="oe_edit_only"/>
<field name="payment_note" placeholder="e.g. 50%% before 15th of May, balance before 1st of July."/>
<p class="oe_grey">
Below is the history of the transactions of this
customer. You can set an invoice in litigation in
order to not include it in the next payment
follow-ups.
</p>
<field name="unreconciled_aml_ids">
<tree string="Account Move line" editable="bottom" create="false" delete="false" colors="red:(not date_maturity or date_maturity&lt;=current_date) and result&gt;0">
<field name="date" readonly="True"/>
<field name="move_id" readonly="True"/>
<field name="blocked" string="Litigation"/>
<field name="date_maturity" readonly="True"/>
<field name="reconcile_partial_id" readonly="True"/>
<field name="result" readonly="True"/>
<field name="followup_line_id" invisible='1'/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right">
<field name="payment_amount_due"/>
</group>
<div class="oe_clear"/>
</page>
</page>
</field>
</record>
<record id="action_view_customer_followup_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_partner_inherit_followup_form"/>
<field name="act_window_id" ref="action_customer_followup"/>
</record>
<record id="action_view_customer_followup_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="customer_followup_tree"/>
<field name="act_window_id" ref="action_customer_followup"/>
</record>
<!-- Menus about followup of customers -->
<menuitem id="account_followup_s" action="action_customer_followup"
parent="menu_finance_followup" name="Do Manual Follow-Ups" sequence="3"/>
</data>
</openerp>

View File

@ -1,19 +1,378 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="res.company" id="base.main_company">
<field name="follow_up_msg">Date : %(date)s
<!-- Mail template is done in a NOUPDATE block
so users can freely customize/delete them -->
<data noupdate="1">
<!--Mail template level 0-->
<record id="email_template_account_followup_level0" model="email.template">
<field name="name">Follow-up of overdue invoices level 0</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!--Mail template level 1 -->
<record id="email_template_account_followup_level1" model="email.template">
<field name="name">Follow-up of overdue invoices level 1</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account
which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting
department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!--Email template -->
<record id="email_template_account_followup_level2" model="email.template">
<field name="name">Follow-up of overdue invoices level 2</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, legal action for the recovery of the debt will be taken without
further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!-- Default follow up message -->
<record id="email_template_account_followup_default" model="email.template">
<field name="name">Default follow-up of overdue invoices</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
</br>
</br>
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<record id="demo_followup1" model="account_followup.followup">
<field name="company_id" ref="base.main_company"/>
</record>
<record id="demo_followup_line1" model="account_followup.followup.line">
<field name="name">Send first reminder email</field>
<field name="sequence">0</field>
<field name="delay">15</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="send-email">True</field>
<field name="description">
Dear %(partner_name)s,
Please find in attachment a reminder of all your unpaid invoices, for a total amount due of:
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
%(followup_amount).2f %(company_currency)s
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Thanks,
--
%(user_signature)s
%(company_name)s</field>
Best Regards,
</field>
<field name="email_template_id" ref="email_template_account_followup_level0"/>
</record>
<record id="demo_followup_line2" model="account_followup.followup.line">
<field name="name">Send reminder letter and email</field>
<field name="sequence">1</field>
<field name="delay">30</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="email_template_id" ref="email_template_account_followup_level1"/>
<field name="send_email">True</field>
<field name="send_letter">True</field>
<field name="description">
Dear %(partner_name)s,
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<field name="name">Call the customer on the phone</field>
<field name="sequence">3</field>
<field name="delay">40</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field eval="False" name="send_email"/>
<field name="manual_action">True</field>
<field name="manual_action_note">Call the customer on the phone! </field>
<field name="description">
Dear %(partner_name)s,
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, then legal action for the recovery of the debt will be taken without further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
</data>
</openerp>

View File

@ -1,58 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="demo_followup1" model="account_followup.followup">
<field name="name">Default Follow-up</field>
<field name="company_id" ref="base.main_company"/>
<field name="description">First letter after 15 net days, 30 net days and 45 days end of month levels.</field>
</record>
<record id="demo_followup_line1" model="account_followup.followup.line">
<field name="name">Level 0 : 15 net days</field>
<field name="sequence">0</field>
<field name="start">days</field>
<field name="delay">15</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="description">
Dear %(partner_name)s,
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
<record id="demo_followup_line2" model="account_followup.followup.line">
<field name="name">Level 1 : 30 net days</field>
<field name="sequence">1</field>
<field name="start">days</field>
<field name="delay">30</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="description">
Dear %(partner_name)s,
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<field name="name">Level 2 : 45 days end of month</field>
<field name="sequence">2</field>
<field name="start">end_of_month</field>
<field name="delay">45</field>
<data noupdate="1">
<record id="demo_followup_line4" model="account_followup.followup.line">
<field name="name">Urging reminder email</field>
<field name="sequence">4</field>
<field name="delay">50</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="send_email">True</field>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field name="description">
Dear %(partner_name)s,
@ -65,8 +20,29 @@ I trust that this action will prove unnecessary and details of due payments is p
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</field>
</record>
<record id="demo_followup_line5" model="account_followup.followup.line">
<field name="name">Urging reminder letter</field>
<field name="sequence">5</field>
<field name="delay">60</field>
<field name="followup_id" ref="demo_followup1"/>
<field eval="False" name="send_email"/>
<field name="send_letter">True</field>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field name="description">
Dear %(partner_name)s,
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, then legal action for the recovery of the debt will be taken without further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
</data>
</openerp>

View File

@ -1,14 +1,16 @@
<openerp>
<data>
<record id="view_account_followup_followup_line_tree" model="ir.ui.view">
<field name="name">account_followup.followup.line.tree</field>
<field name="model">account_followup.followup.line</field>
<field name="arch" type="xml">
<tree string="Follow-up Steps">
<tree string="Follow-up Steps" >
<field name="name"/>
<field name="delay"/>
<field name="start"/>
<field name="send_email"/>
<field name="send_letter"/>
<field name="manual_action"/>
</tree>
</field>
</record>
@ -18,19 +20,47 @@
<field name="model">account_followup.followup.line</field>
<field name="arch" type="xml">
<form string="Follow-up Steps" version="7.0">
<group col="4">
<field name="name"/>
<field name="delay"/>
<field name="start"/>
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<div class="oe_inline">
After <field name="delay" class="oe_inline"/> days overdue, do the following actions:
</div>
<div>
<field name="manual_action" class="oe_inline"/>
<label for="manual_action"/>
</div><div>
<field name="send_email" class="oe_inline"/>
<label for="send_email"/>
</div><div>
<field name="send_letter" class="oe_inline"/>
<label for="send_letter"/>
</div>
<group string="Manual Action" attrs="{'invisible': [('manual_action', '=', False)]}">
<field name="manual_action_responsible_id"/>
<field name="manual_action_note" attrs="{'required': [('manual_action', '&lt;&gt;', False)]}"
placeholder="e.g. Call the customer, check if it's paid, ..."/>
</group>
<separator string="Message"/>
<field name="description"/>
<separator string="Legend"/>
<group>
<label string="%%(partner_name)s: Partner Name"/>
<label string="%%(date)s: Current Date"/>
<label string="%%(user_signature)s: User Name"/>
<label string="%%(company_name)s: User's Company Name"/>
<group string="Send an Email" attrs="{'invisible': [('send_email', '=', False)]}">
<field name="email_template_id" attrs="{'required': [('send_email', '&lt;&gt;', False)]}"/>
</group>
<group string="Send a Letter" attrs="{'invisible': [('send_letter', '=', False)]}">
<p colspan="2" class="oe_grey">
Write here the introduction in the letter,
according to the level of the follow-up. You can
use the following keywords in the text. Don't
forget to translate in all languages you installed
using to top right icon.
<group class="oe_grey">
<b>%%(partner_name)s</b>: Partner Name
<b>%%(date)s</b>: Current Date
<b>%%(user_signature)s</b>: User Name
<b>%%(company_name)s</b>: User's Company Name
</group>
</p>
<field name="description" nolabel="1" colspan="2"/>
</group>
</form>
</field>
@ -39,12 +69,18 @@
<record id="view_account_followup_followup_form" model="ir.ui.view">
<field name="name">account_followup.followup.form</field>
<field name="model">account_followup.followup</field>
<!-- <field name="group_ids" groups="base.group_multi_company"/>-->
<field name="arch" type="xml">
<form string="Follow-up" version="7.0">
<group col="4">
<field name="name"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
<h1><field name="company_id" widget="selection" class="oe_inline"/></h1>
<p class="oe_grey">
To remind customers of paying their invoices, you can
define different actions depending on how severely
overdue the customer is. These actions are bundled
into folow-up levels that are triggered when the due
date of the most overdue invoice has passed a certain
amount of days.
</p>
<field name="followup_line"/>
</form>
</field>
@ -55,8 +91,7 @@
<field name="model">account_followup.followup</field>
<field name="arch" type="xml">
<tree string="Follow-up">
<field name="name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="company_id" /> <!--groups="base.group_multi_company"-->
</tree>
</field>
</record>
@ -66,31 +101,50 @@
<field name="model">account_followup.followup</field>
<field name="arch" type="xml">
<search string="Search Follow-up">
<field name="name" string="Follow-up"/>
<field name="company_id" groups="base.group_multi_company"/>
</search>
</field>
</record>
<record id="action_account_followup_definition_form" model="ir.actions.act_window">
<field name="name">Follow-ups</field>
<field name="name">Payment Follow-ups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account_followup.followup</field>
<field name="search_view_id" ref="view_account_followup_filter"/>
<field name="view_type">form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define follow-up levels and their related messages.
Click to define follow-up levels and their related actions.
</p><p>
For each step, specify the message and the day of delay. Use
the legend to know the using code to adapt the email content to
the good context (good name, good date) and you can manage the
multi language of messages.
For each step, specify the actions to be taken and delay in days. It is
possible to use print and e-mail templates to send specific messages to
the customer.
</p>
</field>
</record>
<record id="action_account_manual_reconcile_receivable" model="ir.actions.act_window">
<field name="name">Reconcile Invoices &amp; Payments</field>
<field name="search_view_id" ref="view_account_followup_filter"/>
<field name="context">{'search_default_unreconciled': 1,'view_mode':True}</field>
<field name="domain">[('account_id.type', '=', 'receivable')]</field>
<field name="res_model">account.move.line</field>
<field name="view_id" ref="account.view_move_line_tree_reconcile"/>
<field name="view_mode">tree_account_reconciliation</field>
<field name="help" type="html">
<p>
No journal items found.
</p>
</field>
</record>
<menuitem action="action_account_followup_definition_form" id="account_followup_menu" parent="account.menu_configuration_misc"/>
<menuitem
name="Reconcile Invoices &amp; Payments"
action="action_account_manual_reconcile_receivable"
parent="menu_finance_followup"
sequence="0"
id="menu_manual_reconcile_followup"/>
<menuitem action="action_account_followup_definition_form" id="account_followup_menu" parent="account.menu_finance_configuration" name="Follow-up Levels"/>
<report auto="False" id="account_followup_followup_report" menu="False" model="account_followup.followup" name="account_followup.followup.print" rml="account_followup/report/account_followup_print.rml" string="Follow-up Report"/>
<record id="account_move_line_partner_tree" model="ir.ui.view">
@ -127,7 +181,7 @@
</field>
</record>
<record id="view_move_line_tree" model="ir.ui.view">
<!-- <record id="view_move_line_tree" model="ir.ui.view">
<field name="name">account.move.line.tree.followup</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree"/>
@ -137,27 +191,7 @@
<field name="followup_line_id"/>
</field>
</field>
</record>
</record> -->
<act_window domain="[('reconcile_id', '=', False),('account_id.type','=','receivable')]" id="act_account_partner_account_move_all" name="Receivable Items" res_model="account.move.line" src_model="" view_id="account_move_line_partner_tree"/>
<!--<menuitem action="act_account_partner_account_move_all" id="menu_account_move_open_unreconcile" parent="account_followup.menu_action_followup_stat"/> -->
<act_window domain="[('reconcile_id', '=', False), ('account_id.type','=','payable')]" id="act_account_partner_account_move_payable_all" name="Payable Items" res_model="account.move.line" src_model="" view_id="account_move_line_partner_tree"/>
<!-- <menuitem action="act_account_partner_account_move_payable_all" id="menu_account_move_open_unreconcile_payable" parent="account_followup.menu_action_followup_stat"/> -->
<record model="ir.ui.view" id="view_company_inherit_followup_form">
<field name="name">res.company.followup.form.inherit</field>
<field name="inherit_id" ref="account.view_company_inherit_form"/>
<field name="model">res.company</field>
<field name="arch" type="xml">
<field name="overdue_msg" nolabel="1" colspan="4" position="after">
<separator string="Follow-up Message" colspan="4"/>
<field name="follow_up_msg" nolabel="1" colspan="4"/>
</field>
</field>
</record>
</data>
</openerp>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-10-08 15:59+0000\n"
"Last-Translator: waleed bazaza <waleed_bazaza@yahoo.com>\n"
"PO-Revision-Date: 2012-12-01 18:26+0000\n"
"Last-Translator: kifcaliph <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:51+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:37+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_followup
#: view:account_followup.stat:0
@ -219,7 +219,7 @@ msgstr "وتعطي امر المتتابعة عند عرض قائمة خطوط
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "لا يمكنك إنشاء يوميات لحساب من نوع 'عرض'"
#. module: account_followup
#: field:account.move.line,followup_line_id:0
@ -304,7 +304,7 @@ msgstr "شريك للتذكير"
#. module: account_followup
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "الحساب و المدة يجب أن تنتمي لنفس الشركة."
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
@ -353,7 +353,7 @@ msgstr "الرسالة"
#: view:account.followup.print:0
#: view:account.followup.print.all:0
msgid "or"
msgstr ""
msgstr "أو"
#. module: account_followup
#: field:account_followup.stat,blocked:0
@ -363,7 +363,7 @@ msgstr "محظور"
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "لا يمكنك إنشاء عناصر يوميه لحساب مغلق"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:291

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-11-11 15:21+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2012-11-29 13:37+0000\n"
"Last-Translator: Kaare Pettersen <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:52+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:06+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_followup
#: view:account_followup.stat:0
@ -97,7 +97,7 @@ msgstr "E-post Emne"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "Follow-up Steps"
msgstr ""
msgstr "Oppfølging trinn."
#. module: account_followup
#: field:account_followup.followup.line,start:0
@ -113,7 +113,7 @@ msgstr "Forklaring"
#. module: account_followup
#: field:account.followup.print.all,email_body:0
msgid "Email Body"
msgstr ""
msgstr "E-post kropp."
#. module: account_followup
#: view:account.followup.print.all:0
@ -121,7 +121,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account_followup.action_account_followup_print_all
#: model:ir.ui.menu,name:account_followup.account_followup_print_menu
msgid "Send Follow-Ups"
msgstr ""
msgstr "Send oppfølgninger."
#. module: account_followup
#: report:account_followup.followup.print:0
@ -214,7 +214,7 @@ msgstr "%(user_signature)s: Brukernavn"
#. module: account_followup
#: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report
msgid "Follow-up Report"
msgstr ""
msgstr "Oppfølging rapport."
#. module: account_followup
#: field:account_followup.stat,debit:0
@ -224,12 +224,12 @@ msgstr "Debet"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat
msgid "Follow-up Statistics"
msgstr ""
msgstr "Oppfølging statistikk."
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup_line
msgid "Follow-up Criteria"
msgstr ""
msgstr "Oppfølging kriterier."
#. module: account_followup
#: help:account_followup.followup.line,sequence:0
@ -239,7 +239,7 @@ msgstr "Gir rekkefølgen av når du viser en liste over oppfølging linjer."
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "Du kan ikke opprette journal elementer på en konto av typen visning."
#. module: account_followup
#: field:account.move.line,followup_line_id:0
@ -256,7 +256,7 @@ msgstr "Siste oppfølging"
#: model:ir.model,name:account_followup.model_account_followup_print
#: model:ir.model,name:account_followup.model_account_followup_print_all
msgid "Print Follow-up & Send Mail to Customers"
msgstr ""
msgstr "Skriv ut oppfølging og send e-post til kundene."
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:292
@ -268,6 +268,11 @@ msgid ""
"\n"
"%s"
msgstr ""
"\n"
"\n"
"E-post sendt til følgende partnere er vellykket. !\n"
"\n"
"% s"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -277,12 +282,12 @@ msgstr "Li."
#. module: account_followup
#: field:account.followup.print.all,email_conf:0
msgid "Send Email Confirmation"
msgstr ""
msgstr "Send e-post Bekreftelse."
#. module: account_followup
#: field:account_followup.stat.by.partner,date_followup:0
msgid "Latest follow-up"
msgstr ""
msgstr "Siste oppfølging."
#. module: account_followup
#: field:account.followup.print.all,partner_lang:0
@ -336,7 +341,7 @@ msgstr "Partner til Påminnelse"
#. module: account_followup
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Konto og periode må tilhøre samme selskap."
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
@ -347,7 +352,7 @@ msgstr "Oppfølginger"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup
msgid "Account Follow-up"
msgstr ""
msgstr "Oppfølgings konto"
#. module: account_followup
#: constraint:account_followup.followup.line:0
@ -377,7 +382,7 @@ msgstr "Send E-poster"
#. module: account_followup
#: view:account_followup.followup:0
msgid "Search Follow-up"
msgstr ""
msgstr "Søk oppfølging."
#. module: account_followup
#: view:account_followup.followup.line:0
@ -388,7 +393,7 @@ msgstr "Beskjed"
#: view:account.followup.print:0
#: view:account.followup.print.all:0
msgid "or"
msgstr ""
msgstr "Eller."
#. module: account_followup
#: field:account_followup.stat,blocked:0
@ -398,7 +403,7 @@ msgstr "Blokkert"
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Du kan ikke opprette journal enmer i en lukker konto."
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:291
@ -408,6 +413,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"E-post er ikke sendt til følgende Partnere, e-post er ikke tilgjengelig!\n"
"\n"
"% s"
#. module: account_followup
#: help:account.followup.print,date:0
@ -441,7 +449,7 @@ msgstr "Skriv ut Oppfølginger"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up Entries with period in current year"
msgstr ""
msgstr "Oppfølging oppføringer med perioden i inneværende år."
#. module: account_followup
#: field:account.move.line,followup_date:0
@ -457,7 +465,7 @@ msgstr "%(Brukers_signatur)s: bruker navn"
#: help:account.followup.print.all,test_print:0
msgid ""
"Check if you want to print follow-ups without changing follow-ups level."
msgstr ""
msgstr "Sjekk om du vil skrive ut oppfølging uten å endre oppfølginger nivå."
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_move_line
@ -468,7 +476,7 @@ msgstr "Journal Elementer"
#: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form
#: model:ir.ui.menu,name:account_followup.account_followup_menu
msgid "Follow-ups"
msgstr ""
msgstr "Oppfølginger."
#. module: account_followup
#: report:account_followup.followup.print:0
@ -498,6 +506,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"Alle e-poster har blitt vellykket sendt til Partnere:.\n"
"\n"
"% s"
#. module: account_followup
#: field:account_followup.stat,credit:0
@ -517,7 +528,7 @@ msgstr "% (Partner_Navn) s: Partner Navn"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Latest Follow-up Date"
msgstr ""
msgstr "Siste Oppfølging Dato."
#. module: account_followup
#: view:account.followup.print.all:0
@ -627,7 +638,7 @@ msgstr "Partner oppføringer"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up lines"
msgstr ""
msgstr "Oppfølging linjer."
#. module: account_followup
#: help:account.followup.print.all,partner_lang:0
@ -670,7 +681,7 @@ msgstr "Første bevegelse"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat_by_partner
msgid "Follow-up Statistics by Partner"
msgstr ""
msgstr "Oppfølging statistikk av partner."
#. module: account_followup
#: view:account.followup.print:0
@ -696,7 +707,7 @@ msgstr "Dokument: Kundens kontoutskrift"
#. module: account_followup
#: view:account.followup.print:0
msgid "Send follow-ups"
msgstr ""
msgstr "send oppfølging."
#. module: account_followup
#: view:account.move.line:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-18 15:14+0000\n"
"PO-Revision-Date: 2012-12-01 16:25+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:51+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:37+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_followup
#: view:account_followup.stat:0
@ -97,7 +97,7 @@ msgstr "E-mail onderwerp"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "Follow-up Steps"
msgstr ""
msgstr "Betalingsherinneringen stappen"
#. module: account_followup
#: field:account_followup.followup.line,start:0
@ -113,7 +113,7 @@ msgstr "Legenda"
#. module: account_followup
#: field:account.followup.print.all,email_body:0
msgid "Email Body"
msgstr ""
msgstr "Email bericht"
#. module: account_followup
#: view:account.followup.print.all:0
@ -121,7 +121,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account_followup.action_account_followup_print_all
#: model:ir.ui.menu,name:account_followup.account_followup_print_menu
msgid "Send Follow-Ups"
msgstr ""
msgstr "Verstuur Betalingsherinneringen"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -214,7 +214,7 @@ msgstr "%(user_signature)s: Gebruikersnaam"
#. module: account_followup
#: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report
msgid "Follow-up Report"
msgstr ""
msgstr "Betalingsherinneringen rapportage"
#. module: account_followup
#: field:account_followup.stat,debit:0
@ -224,12 +224,12 @@ msgstr "Debet"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat
msgid "Follow-up Statistics"
msgstr ""
msgstr "Betalingsherinneringen analyses"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup_line
msgid "Follow-up Criteria"
msgstr ""
msgstr "Betalingsherinneringen creteria"
#. module: account_followup
#: help:account_followup.followup.line,sequence:0
@ -241,6 +241,8 @@ msgstr ""
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een rekening van het type "
"'weergave'"
#. module: account_followup
#: field:account.move.line,followup_line_id:0
@ -257,7 +259,7 @@ msgstr "Laatste betalingsherinnering"
#: model:ir.model,name:account_followup.model_account_followup_print
#: model:ir.model,name:account_followup.model_account_followup_print_all
msgid "Print Follow-up & Send Mail to Customers"
msgstr ""
msgstr "Betalingsherinneringen afdrukken & E-mails naar klanten versturen"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:292
@ -269,6 +271,11 @@ msgid ""
"\n"
"%s"
msgstr ""
"\n"
"\n"
"E-mails succesvol verzonden naar de navolgende relaties:\n"
"\n"
"%s"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -278,12 +285,12 @@ msgstr "Bt."
#. module: account_followup
#: field:account.followup.print.all,email_conf:0
msgid "Send Email Confirmation"
msgstr ""
msgstr "Stuur e-mail bevestiging"
#. module: account_followup
#: field:account_followup.stat.by.partner,date_followup:0
msgid "Latest follow-up"
msgstr ""
msgstr "Laatste betalingsherinnering"
#. module: account_followup
#: field:account.followup.print.all,partner_lang:0
@ -337,7 +344,7 @@ msgstr "Relatie voor betalingsherinnering"
#. module: account_followup
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Kostenplaats en periode moeten behoren tot hetzelfde bedrijf."
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
@ -348,7 +355,7 @@ msgstr "Betalingsherinneringen"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup
msgid "Account Follow-up"
msgstr ""
msgstr "Betalingsherinneringen"
#. module: account_followup
#: constraint:account_followup.followup.line:0
@ -378,7 +385,7 @@ msgstr "E-mails versturen"
#. module: account_followup
#: view:account_followup.followup:0
msgid "Search Follow-up"
msgstr ""
msgstr "Zoek betalingsherinnering"
#. module: account_followup
#: view:account_followup.followup.line:0
@ -389,7 +396,7 @@ msgstr "Bericht"
#: view:account.followup.print:0
#: view:account.followup.print.all:0
msgid "or"
msgstr ""
msgstr "of"
#. module: account_followup
#: field:account_followup.stat,blocked:0
@ -400,6 +407,7 @@ msgstr "Geblokkeerd"
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
"Het is niet mogelijk om journaalposten te maken in een gesloten rekenening"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:291
@ -409,6 +417,10 @@ msgid ""
"\n"
"%s"
msgstr ""
"E-mail naar de navolgende relaties niet verzonden. geen e-mail adres "
"beschikbaar.\n"
"\n"
"%s"
#. module: account_followup
#: help:account.followup.print,date:0
@ -442,7 +454,7 @@ msgstr "Betalingsherinneringen afdrukken"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up Entries with period in current year"
msgstr ""
msgstr "Betalingsherinneringen met refels in het huidige jaar"
#. module: account_followup
#: field:account.move.line,followup_date:0
@ -459,6 +471,8 @@ msgstr "%(user_signature)s: Gebruikersnaam"
msgid ""
"Check if you want to print follow-ups without changing follow-ups level."
msgstr ""
"Vink dit aan indien u een betalingsherinneringen wilt afdrukken, zonder het "
"Betalingsherinnering niveau te wijzigen."
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_move_line
@ -469,7 +483,7 @@ msgstr "Boekingen"
#: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form
#: model:ir.ui.menu,name:account_followup.account_followup_menu
msgid "Follow-ups"
msgstr ""
msgstr "Betalingsherinneringen"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -499,6 +513,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"Alle e-mails zijn succesvol verzonden naar de navolgende relaties:\n"
"\n"
"%s"
#. module: account_followup
#: field:account_followup.stat,credit:0
@ -518,7 +535,7 @@ msgstr "%(partner_name)s: Relatienaam"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Latest Follow-up Date"
msgstr ""
msgstr "Laaste betalingsherinnering datum"
#. module: account_followup
#: view:account.followup.print.all:0
@ -628,7 +645,7 @@ msgstr "Boekingen relatie"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up lines"
msgstr ""
msgstr "Betalingsherinneringregels"
#. module: account_followup
#: help:account.followup.print.all,partner_lang:0
@ -671,7 +688,7 @@ msgstr "Eerste boeking"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat_by_partner
msgid "Follow-up Statistics by Partner"
msgstr ""
msgstr "Betalingsherinnering analyses per relatie"
#. module: account_followup
#: view:account.followup.print:0
@ -697,7 +714,7 @@ msgstr "Document: Rekeningoverzicht klant"
#. module: account_followup
#: view:account.followup.print:0
msgid "Send follow-ups"
msgstr ""
msgstr "Verstuur Betalingsherinneringen"
#. module: account_followup
#: view:account.move.line:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-09 03:49+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-30 12:07+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:52+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_followup
#: view:account_followup.stat:0
@ -91,12 +91,12 @@ msgstr "电子邮件主题"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "Follow-up Steps"
msgstr ""
msgstr "催款步骤"
#. module: account_followup
#: field:account_followup.followup.line,start:0
msgid "Type of Term"
msgstr "条类型"
msgstr "条类型"
#. module: account_followup
#: view:account.followup.print.all:0
@ -107,7 +107,7 @@ msgstr "图表"
#. module: account_followup
#: field:account.followup.print.all,email_body:0
msgid "Email Body"
msgstr ""
msgstr "电子邮件正文"
#. module: account_followup
#: view:account.followup.print.all:0
@ -115,7 +115,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account_followup.action_account_followup_print_all
#: model:ir.ui.menu,name:account_followup.account_followup_print_menu
msgid "Send Follow-Ups"
msgstr ""
msgstr "发送催款"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -125,7 +125,7 @@ msgstr "金额"
#. module: account_followup
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
msgstr "错误的分录"
msgstr "错误的出纳会计分录"
#. module: account_followup
#: selection:account_followup.followup.line,start:0
@ -206,7 +206,7 @@ msgstr "%(user_signature)s用户名"
#. module: account_followup
#: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report
msgid "Follow-up Report"
msgstr ""
msgstr "催款报告"
#. module: account_followup
#: field:account_followup.stat,debit:0
@ -216,12 +216,12 @@ msgstr "借方"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat
msgid "Follow-up Statistics"
msgstr ""
msgstr "催款统计"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup_line
msgid "Follow-up Criteria"
msgstr ""
msgstr "催款准则"
#. module: account_followup
#: help:account_followup.followup.line,sequence:0
@ -231,7 +231,7 @@ msgstr "输入序列用于显示催款列表"
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "你不能在视图类型的科目创建账目项目"
#. module: account_followup
#: field:account.move.line,followup_line_id:0
@ -248,7 +248,7 @@ msgstr "最近的催款"
#: model:ir.model,name:account_followup.model_account_followup_print
#: model:ir.model,name:account_followup.model_account_followup_print_all
msgid "Print Follow-up & Send Mail to Customers"
msgstr ""
msgstr "打印催款并发送邮件给客户"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:292
@ -260,6 +260,11 @@ msgid ""
"\n"
"%s"
msgstr ""
"\n"
"\n"
"Email 成功发送给下列客户:!\n"
"\n"
"%s"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -269,12 +274,12 @@ msgstr "Li."
#. module: account_followup
#: field:account.followup.print.all,email_conf:0
msgid "Send Email Confirmation"
msgstr ""
msgstr "发送邮件确认"
#. module: account_followup
#: field:account_followup.stat.by.partner,date_followup:0
msgid "Latest follow-up"
msgstr ""
msgstr "最新的催款"
#. module: account_followup
#: field:account.followup.print.all,partner_lang:0
@ -324,7 +329,7 @@ msgstr "提醒合作伙伴"
#. module: account_followup
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "科目和会计周期必须属于同一个公司"
#. module: account_followup
#: field:account_followup.followup.line,followup_id:0
@ -335,14 +340,14 @@ msgstr "催款"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_followup
msgid "Account Follow-up"
msgstr ""
msgstr "催款"
#. module: account_followup
#: constraint:account_followup.followup.line:0
msgid ""
"Your description is invalid, use the right legend or %% if you want to use "
"the percent character."
msgstr "描述有,请使用正确的标识或百分数。"
msgstr "描述有,请使用正确的标识或百分数。"
#. module: account_followup
#: constraint:account.move.line:0
@ -360,18 +365,18 @@ msgstr "发送邮件"
#. module: account_followup
#: view:account_followup.followup:0
msgid "Search Follow-up"
msgstr ""
msgstr "搜索催款"
#. module: account_followup
#: view:account_followup.followup.line:0
msgid "Message"
msgstr "息"
msgstr "息"
#. module: account_followup
#: view:account.followup.print:0
#: view:account.followup.print.all:0
msgid "or"
msgstr ""
msgstr "or"
#. module: account_followup
#: field:account_followup.stat,blocked:0
@ -381,7 +386,7 @@ msgstr "已封锁"
#. module: account_followup
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "你不能在关闭的科目创建分类账条目"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:291
@ -391,6 +396,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"Email 没有发送给下来业务伙伴,Email不可用!\n"
"\n"
"%s"
#. module: account_followup
#: help:account.followup.print,date:0
@ -422,7 +430,7 @@ msgstr "打印催款"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up Entries with period in current year"
msgstr ""
msgstr "本年度的催款明细"
#. module: account_followup
#: field:account.move.line,followup_date:0
@ -438,7 +446,7 @@ msgstr "%(user_signature)s: 用户名"
#: help:account.followup.print.all,test_print:0
msgid ""
"Check if you want to print follow-ups without changing follow-ups level."
msgstr ""
msgstr "选中 如果你要打印催款而不改变催款级别。"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_move_line
@ -449,7 +457,7 @@ msgstr "账簿明细"
#: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form
#: model:ir.ui.menu,name:account_followup.account_followup_menu
msgid "Follow-ups"
msgstr ""
msgstr "催款"
#. module: account_followup
#: report:account_followup.followup.print:0
@ -459,7 +467,7 @@ msgstr "合计:"
#. module: account_followup
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "错误!您不能创建递归公司."
msgstr "错误!您不能创建循环的公司。"
#. module: account_followup
#: view:account.followup.print.all:0
@ -479,6 +487,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"所有邮件被成功发送给业务伙伴:\n"
"\n"
"%s"
#. module: account_followup
#: field:account_followup.stat,credit:0
@ -498,7 +509,7 @@ msgstr "%(partner_name)s: 业务伙伴名称"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Latest Follow-up Date"
msgstr ""
msgstr "最新的催款日期"
#. module: account_followup
#: view:account.followup.print.all:0
@ -529,12 +540,19 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击定义催款级别和他们相关的信息\n"
" </p><p>\n"
" 每个步骤可指定消息和延时天数。\n"
" 能管理多种语言的消息。\n"
" </p>\n"
" "
#. module: account_followup
#: field:account_followup.stat,date_move_last:0
#: field:account_followup.stat.by.partner,date_move_last:0
msgid "Last move"
msgstr "最近"
msgstr "最近的凭证"
#. module: account_followup
#: field:account_followup.stat,period_id:0
@ -556,7 +574,7 @@ msgstr "取消"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Litigation"
msgstr "有议"
msgstr "有议"
#. module: account_followup
#: field:account_followup.stat.by.partner,max_followup_id:0
@ -608,7 +626,7 @@ msgstr "业务伙伴凭证"
#. module: account_followup
#: view:account_followup.stat:0
msgid "Follow-up lines"
msgstr ""
msgstr "催款明细"
#. module: account_followup
#: help:account.followup.print.all,partner_lang:0
@ -644,12 +662,12 @@ msgstr "名称"
#: field:account_followup.stat,date_move:0
#: field:account_followup.stat.by.partner,date_move:0
msgid "First move"
msgstr "首先"
msgstr "第一个凭证"
#. module: account_followup
#: model:ir.model,name:account_followup.model_account_followup_stat_by_partner
msgid "Follow-up Statistics by Partner"
msgstr ""
msgstr "按合作伙伴的催款统计"
#. module: account_followup
#: view:account.followup.print:0
@ -675,7 +693,7 @@ msgstr "文档: 客户帐户对帐单"
#. module: account_followup
#: view:account.followup.print:0
msgid "Send follow-ups"
msgstr ""
msgstr "发送催款"
#. module: account_followup
#: view:account.move.line:0

View File

@ -25,7 +25,7 @@ import pooler
from report import report_sxw
class report_rappel(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
def __init__(self, cr, uid, name, context=None):
super(report_rappel, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
@ -43,14 +43,17 @@ class report_rappel(report_sxw.rml_parse):
return all_lines
def _lines_get(self, stat_by_partner_line):
return self._lines_get_with_partner(stat_by_partner_line.partner_id, stat_by_partner_line.company_id.id)
def _lines_get_with_partner(self, partner, company_id):
pool = pooler.get_pool(self.cr.dbname)
moveline_obj = pool.get('account.move.line')
company_obj = pool.get('res.company')
obj_currency = pool.get('res.currency')
movelines = moveline_obj.search(self.cr, self.uid,
[('partner_id', '=', stat_by_partner_line.partner_id.id),
[('partner_id', '=', partner.id),
('account_id.type', '=', 'receivable'),
('reconcile_id', '=', False), ('state', '<>', 'draft'),('company_id','=', stat_by_partner_line.company_id.id)])
('reconcile_id', '=', False), ('state', '<>', 'draft'),('company_id','=', company_id)])
movelines = moveline_obj.browse(self.cr, self.uid, movelines)
base_currency = movelines[0].company_id.currency_id
final_res = []
@ -67,7 +70,7 @@ class report_rappel(report_sxw.rml_parse):
'date_maturity': line.date_maturity,
'balance': currency.id <> line.company_id.currency_id.id and line.amount_currency or (line.debit - line.credit),
'blocked': line.blocked,
'currency_id': currency.symbol or currency.name,
'currency_id': currency,
}
line_cur[currency.id]['line'].append(line_data)
@ -88,7 +91,7 @@ class report_rappel(report_sxw.rml_parse):
li_delay.sort(reverse=True)
text = ""
a = {}
partner_line_ids = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',stat_line.partner_id.id),('reconcile_id','=',False),('company_id','=',stat_line.company_id.id)])
partner_line_ids = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',stat_line.partner_id.id),('reconcile_id','=',False),('company_id','=',stat_line.company_id.id),('blocked','=',False)])
partner_delay = []
context.update({'lang': stat_line.partner_id.lang})
for i in pooler.get_pool(self.cr.dbname).get('account.move.line').browse(self.cr, self.uid, partner_line_ids, context):

View File

@ -194,7 +194,7 @@
<para style="terp_default_Centre_9">[[ line['date_maturity'] and formatLang(line['date_maturity'], date=True) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(line['balance']) ]] [[ line['currency_id'] ]]</para>
<para style="terp_default_Right_9">[[ formatLang(line['balance'], currency_obj=line['currency_id']) ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ line['blocked'] and 'X' or '' ]]</para>
@ -212,7 +212,7 @@
<para style="terp_tblheader_Details_Centre">Total: </para>
</td>
<td>
<para style="terp_default_Right_9">[[formatLang(reduce(lambda x,y: x+y['balance'], cur_lines['line'], 0.00)) ]] [[ line['currency_id'] ]] </para>
<para style="terp_default_Right_9">[[formatLang(reduce(lambda x,y: x+y['balance'], cur_lines['line'], 0.00), currency_obj=line['currency_id']) ]] </para>
</td>
<td>
<para style="terp_default_Right_9">

View File

@ -64,8 +64,8 @@
<field name="context">{'search_default_followup_level':1}</field>
<field name="search_view_id" ref="view_account_followup_stat_search"/>
</record>
<menuitem action="action_followup_stat" id="menu_action_followup_stat_follow" parent="account.next_id_22" groups="account.group_account_user"/>
<menuitem id="menu_finance_followup" parent="account.menu_finance" name="Payment Follow-up" groups="account.group_account_invoice"/>
<menuitem action="action_followup_stat" id="menu_action_followup_stat_follow" parent="account.menu_finance_reporting" groups="account.group_account_invoice" name="Follow-Ups Analysis" sequence="10"/>
</data>
</openerp>

View File

@ -1,7 +1,7 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_followup_followup_line,account_followup.followup.line,model_account_followup_followup_line,account.group_account_user,1,0,0,0
access_account_followup_followup_line_manager,account_followup.followup.line.manager,model_account_followup_followup_line,account.group_account_manager,1,1,1,1
access_account_followup_followup_accountant,account_followup.followup user,model_account_followup_followup,account.group_account_user,1,0,0,0
access_account_followup_followup_manager,account_followup.followup.manager,model_account_followup_followup,account.group_account_manager,1,1,1,1
access_account_followup_stat_invoice,account_followup.stat.invoice,model_account_followup_stat,account.group_account_invoice,1,1,1,1
access_account_followup_stat_by_partner_manager,account_followup.stat.by.partner,model_account_followup_stat_by_partner,account.group_account_manager,1,1,1,1
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_followup_followup_line,account_followup.followup.line,model_account_followup_followup_line,account.group_account_invoice,1,0,0,0
access_account_followup_followup_line_manager,account_followup.followup.line.manager,model_account_followup_followup_line,account.group_account_manager,1,1,1,1
access_account_followup_followup_accountant,account_followup.followup user,model_account_followup_followup,account.group_account_invoice,1,0,0,0
access_account_followup_followup_manager,account_followup.followup.manager,model_account_followup_followup,account.group_account_manager,1,1,1,1
access_account_followup_stat_invoice,account_followup.stat.invoice,model_account_followup_stat,account.group_account_invoice,1,1,1,1
access_account_followup_stat_by_partner_manager,account_followup.stat.by.partner,model_account_followup_stat_by_partner,account.group_account_user,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_followup_followup_line account_followup.followup.line model_account_followup_followup_line account.group_account_user account.group_account_invoice 1 0 0 0
3 access_account_followup_followup_line_manager account_followup.followup.line.manager model_account_followup_followup_line account.group_account_manager 1 1 1 1
4 access_account_followup_followup_accountant account_followup.followup user model_account_followup_followup account.group_account_user account.group_account_invoice 1 0 0 0
5 access_account_followup_followup_manager account_followup.followup.manager model_account_followup_followup account.group_account_manager 1 1 1 1
6 access_account_followup_stat_invoice account_followup.stat.invoice model_account_followup_stat account.group_account_invoice 1 1 1 1
7 access_account_followup_stat_by_partner_manager account_followup.stat.by.partner model_account_followup_stat_by_partner account.group_account_manager account.group_account_user 1 1 1 1

View File

@ -3,34 +3,23 @@
-
!record {model: account.invoice, id: account.demo_invoice_0}:
check_total: 14.0
-
date_invoice: 2012-06-2
invoice_line:
- account_id : account.a_sale
name: 'Test PC'
quantity: 1.0
journal_id: account.bank_journal
partner_id: base.res_partner_12
reference_type: none
-
!workflow {model: account.invoice, action: invoice_open, ref: account.demo_invoice_0}
-
I create a follow-up.
-
!record {model: account.followup.print, id: account_followup_print_0}:
!record {model: account_followup.print, id: account_followup_print_0}:
{}
-
I select the follow-up to send it to the partner.
-
!python {model: account.followup.print}: |
self.do_continue(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),
})
-
I select partners whom I want to send follow-ups.
-
!record {model: account.followup.print.all, id: account_followup_print_all_0}:
email_body: 'Date : %(date)s\n\nDear %(partner_name)s,\n\nPlease find in attachment
a reminder of all your unpaid invoices, for a total amount due of:\n\n%(followup_amount).2f
%(company_currency)s\n\nThanks,\n--\n%(user_signature)s\n%(company_name)s'
email_subject: Invoices Reminder
partner_ids:
- base.res_partner_12
partner_lang: 1
-
I send a follow-up mail to partner.
-
!python {model: account.followup.print.all}: |
import time
self.do_mail(cr, uid, [ref("account_followup_print_all_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "date": time.strftime('%Y-%m-%d'), "followup_id": ref("account_followup.demo_followup1"), "active_id": ref("account_followup.account_followup_print_menu"),
})
-
I will process follow-ups
-
!python {model: account_followup.print}: |
self.do_process(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),})

View File

@ -1,10 +0,0 @@
-
In order to test the report I print follow-up report.
-
!python {model: account.followup.print.all}: |
import time
ctx = {'form_view_ref':'account_followup.view_account_followup_print_all', 'followup_id': ref('account_followup.demo_followup1'),'date': time.strftime('%Y-%m-%d'),'model': 'account_followup.followup','active_ids':[ref('account_followup_print_all_0')], 'company_id':ref('base.main_company')}
data_dict = {'email_conf': 1}
from tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_followup_print_all', context=ctx, wiz_data=data_dict,wiz_buttons=["Print Follow-ups"], our_module='account_followup')

View File

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2011 OpenERP S.A (<http://www.openerp.com>).
# OpenERP, Open Source Business Applications
# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -18,5 +18,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import test_account_followup
import contact
checks = [
test_account_followup,
]
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,159 @@
import datetime
import tools
from openerp.tests.common import TransactionCase
import netsvc
class TestAccountFollowup(TransactionCase):
def setUp(self):
""" setUp ***"""
super(TestAccountFollowup, self).setUp()
cr, uid = self.cr, self.uid
self.user = self.registry('res.users')
self.user_id = self.user.browse(cr, uid, uid)
self.partner = self.registry('res.partner')
self.invoice = self.registry('account.invoice')
self.invoice_line = self.registry('account.invoice.line')
self.wizard = self.registry('account_followup.print')
self.followup_id = self.registry('account_followup.followup')
self.partner_id = self.partner.create(cr, uid, {'name':'Test Company',
'email':'test@localhost',
'is_company': True,
},
context=None)
self.followup_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup1")[1]
self.account_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "a_recv")[1]
self.journal_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "bank_journal")[1]
self.pay_account_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "cash")[1]
self.period_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "period_10")[1]
self.first_followup_line_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup_line1")[1]
self.last_followup_line_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup_line3")[1]
self.product_id = self.registry("ir.model.data").get_object_reference(cr, uid, "product", "product_product_6")[1]
self.invoice_id = self.invoice.create(cr, uid, {'partner_id': self.partner_id,
'account_id': self.account_id,
'journal_id': self.journal_id,
'invoice_line': [(0, 0, {
'name': "LCD Screen",
'product_id': self.product_id,
'quantity': 5,
'price_unit':200
})]})
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.invoice', self.invoice_id, 'invoice_open', cr)
self.voucher = self.registry("account.voucher")
def test_00_send_followup_after_3_days(self):
""" Send follow up after 3 days and check nothing is done (as first follow-up level is only after 15 days)"""
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=3)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id)
def run_wizard_three_times(self):
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=40)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
def test_01_send_followup_later_for_upgrade(self):
""" Send one follow-up after 15 days to check it upgrades to level 1"""
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=15)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {
'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id.id, self.first_followup_line_id,
"Not updated to the correct follow-up level")
def test_02_check_manual_action(self):
""" Check that when running the wizard three times that the manual action is set"""
cr, uid = self.cr, self.uid
self.run_wizard_three_times()
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).payment_next_action,
"Call the customer on the phone! ", "Manual action not set")
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).payment_next_action_date,
datetime.datetime.now().strftime("%Y-%m-%d"))
def test_03_filter_on_credit(self):
""" Check the partners can be filtered on having credits """
cr, uid = self.cr, self.uid
ids = self.partner.search(cr, uid, [('credit', '>=', 0.0)])
self.assertIn(self.partner_id, ids)
def test_04_action_done(self):
""" Run the wizard 3 times, mark it as done, check the action fields are empty"""
cr, uid = self.cr, self.uid
partner_rec = self.partner.browse(cr, uid, self.partner_id)
self.run_wizard_three_times()
self.partner.action_done(cr, uid, self.partner_id)
self.assertEqual(partner_rec.payment_next_action,
"", "Manual action not emptied")
self.assertFalse(partner_rec.payment_responsible_id)
self.assertFalse(partner_rec.payment_next_action_date)
def test_05_litigation(self):
""" Set the account move line as litigation, run the wizard 3 times and check nothing happened.
Turn litigation off. Run the wizard 3 times and check it is in the right follow-up level.
"""
cr, uid = self.cr, self.uid
aml_id = self.partner.browse(cr, uid, self.partner_id).unreconciled_aml_ids[0].id
self.registry('account.move.line').write(cr, uid, aml_id, {'blocked': True})
self.run_wizard_three_times()
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id, "Litigation does not work")
self.registry('account.move.line').write(cr, uid, aml_id, {'blocked': False})
self.run_wizard_three_times()
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id.id,
self.last_followup_line_id, "Lines are not equal")
def test_06_pay_the_invoice(self):
"""Run wizard until manual action, pay the invoice and check that partner has no follow-up level anymore and after running the wizard the action is empty"""
cr, uid = self.cr, self.uid
self.test_02_check_manual_action()
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=1)
result = current_date + delta
self.invoice.pay_and_reconcile(cr, uid, [self.invoice_id], 1000.0, self.pay_account_id,
self.period_id, self.journal_id, self.pay_account_id,
self.period_id, self.journal_id,
name = "Payment for test customer invoice follow-up")
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id, "Level not empty")
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
partner_ref = self.partner.browse(cr, uid, self.partner_id)
print partner_ref.credit, partner_ref.payment_next_action_date, partner_ref.payment_responsible_id
self.assertEqual(0, self.partner.browse(cr, uid, self.partner_id).credit, "Credit != 0")
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).payment_next_action_date, "Next action date not cleared")

View File

@ -26,49 +26,6 @@ import tools
from osv import fields, osv
from tools.translate import _
class account_followup_print(osv.osv_memory):
_name = 'account.followup.print'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'date': fields.date('Follow-up Sending Date', required=True, help="This field allow you to select a forecast date to plan your follow-ups"),
'followup_id': fields.many2one('account_followup.followup', 'Follow-Up', required=True),
}
def _get_followup(self, cr, uid, context=None):
if context is None:
context = {}
if context.get('active_model', 'ir.ui.menu') == 'account_followup.followup':
return context.get('active_id', False)
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
followp_id = self.pool.get('account_followup.followup').search(cr, uid, [('company_id', '=', company_id)], context=context)
return followp_id and followp_id[0] or False
def do_continue(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
context.update({'followup_id': data.followup_id.id, 'date': data.date, 'company_id': data.followup_id.company_id.id})
return {
'name': _('Select Partners'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account.followup.print.all',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
'followup_id': _get_followup,
}
account_followup_print()
class account_followup_stat_by_partner(osv.osv):
_name = "account_followup.stat.by.partner"
_description = "Follow-up Statistics by Partner"
@ -110,50 +67,201 @@ class account_followup_stat_by_partner(osv.osv):
a.active AND
a.type = 'receivable' AND
l.reconcile_id is NULL AND
l.partner_id IS NOT NULL
l.partner_id IS NOT NULL AND
(l.blocked = False)
GROUP BY
l.partner_id, l.company_id
)""")
)""") #Blocked is to take into account litigation
account_followup_stat_by_partner()
class account_followup_print_all(osv.osv_memory):
_name = 'account.followup.print.all'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'partner_ids': fields.many2many('account_followup.stat.by.partner', 'partner_stat_rel', 'osv_memory_id', 'partner_id', 'Partners', required=True),
'email_conf': fields.boolean('Send Email Confirmation'),
'email_subject': fields.char('Email Subject', size=64),
'partner_lang': fields.boolean('Send Email in Partner Language', help='Do not change message text, if you want to send email in partner language, or configure from company'),
'email_body': fields.text('Email Body'),
'summary': fields.text('Summary', required=True, readonly=True),
'test_print': fields.boolean('Test Print', help='Check if you want to print follow-ups without changing follow-ups level.')
}
def _get_summary(self, cr, uid, context=None):
class account_followup_sending_results(osv.osv_memory):
def do_report(self, cr, uid, ids, context=None):
if context is None:
context = {}
return context.get('summary', '')
return context.get('report_data')
def _get_partners(self, cr, uid, context=None):
return self._get_partners_followp(cr, uid, [], context=context)['partner_ids']
def do_done(self, cr, uid, ids, context=None):
return {}
def _get_description(self, cr, uid, context=None):
if context is None:
context = {}
return context.get('description')
def _get_need_printing(self, cr, uid, context=None):
if context is None:
context = {}
return context.get('needprinting')
_name = 'account_followup.sending.results'
_description = 'Results from the sending of the different letters and emails'
_columns = {
'description': fields.text("Description", readonly=True),
'needprinting': fields.boolean("Needs Printing")
}
_defaults = {
'needprinting':_get_need_printing,
'description':_get_description,
}
account_followup_sending_results()
class account_followup_print(osv.osv_memory):
_name = 'account_followup.print'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'date': fields.date('Follow-up Sending Date', required=True,
help="This field allow you to select a forecast date to plan your follow-ups"),
'followup_id': fields.many2one('account_followup.followup', 'Follow-Up', required=True, readonly = True),
'partner_ids': fields.many2many('account_followup.stat.by.partner', 'partner_stat_rel',
'osv_memory_id', 'partner_id', 'Partners', required=True),
'company_id':fields.related('followup_id', 'company_id', type='many2one',
relation='res.company', store=True, readonly=True),
'email_conf': fields.boolean('Send Email Confirmation'),
'email_subject': fields.char('Email Subject', size=64),
'partner_lang': fields.boolean('Send Email in Partner Language',
help='Do not change message text, if you want to send email in partner language, or configure from company'),
'email_body': fields.text('Email Body'),
'summary': fields.text('Summary', readonly=True),
'test_print': fields.boolean('Test Print',
help='Check if you want to print follow-ups without changing follow-ups level.'),
}
def _get_followup(self, cr, uid, context=None):
if context is None:
context = {}
if context.get('active_model', 'ir.ui.menu') == 'account_followup.followup':
return context.get('active_id', False)
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
followp_id = self.pool.get('account_followup.followup').search(cr, uid, [('company_id', '=', company_id)], context=context)
return followp_id and followp_id[0] or False
def process_partners(self, cr, uid, partner_ids, data, context=None):
partner_obj = self.pool.get('res.partner')
partner_ids_to_print = []
nbmanuals = 0
manuals = {}
nbmails = 0
nbunknownmails = 0
nbprints = 0
resulttext = " "
for partner in self.pool.get('account_followup.stat.by.partner').browse(cr, uid, partner_ids, context=context):
if partner.max_followup_id.manual_action:
partner_obj.do_partner_manual_action(cr, uid, [partner.partner_id.id], context=context)
nbmanuals = nbmanuals + 1
key = partner.partner_id.payment_responsible_id.name or _("Nobody")
if not key in manuals.keys():
manuals[key]= 1
else:
manuals[key] = manuals[key] + 1
if partner.max_followup_id.send_email:
nbunknownmails += partner_obj.do_partner_mail(cr, uid, [partner.partner_id.id], context=context)
nbmails += 1
if partner.max_followup_id.send_letter:
partner_ids_to_print.append(partner.id)
nbprints += 1
message = _("Follow-up letter of ") + "<I> " + partner.partner_id.latest_followup_level_id_without_lit.name + "</I>" + _(" will be sent")
partner_obj.message_post(cr, uid, [partner.partner_id.id], body=message, context=context)
if nbunknownmails == 0:
resulttext += str(nbmails) + _(" email(s) sent")
else:
resulttext += str(nbmails) + _(" email(s) should have been sent, but ") + str(nbunknownmails) + _(" had unknown email address(es)") + "\n <BR/> "
resulttext += "<BR/>" + str(nbprints) + _(" letter(s) in report") + " \n <BR/>" + str(nbmanuals) + _(" manual action(s) assigned:")
needprinting = False
if nbprints > 0:
needprinting = True
resulttext += "<p align=\"center\">"
for item in manuals:
resulttext = resulttext + "<li>" + item + ":" + str(manuals[item]) + "\n </li>"
resulttext += "</p>"
result = {}
action = partner_obj.do_partner_print(cr, uid, partner_ids_to_print, data, context=context)
result['needprinting'] = needprinting
result['resulttext'] = resulttext
result['action'] = action or {}
return result
def do_update_followup_level(self, cr, uid, to_update, partner_list, date, context=None):
#update the follow-up level on account.move.line
for id in to_update.keys():
if to_update[id]['partner_id'] in partner_list:
self.pool.get('account.move.line').write(cr, uid, [int(id)], {'followup_line_id': to_update[id]['level'],
'followup_date': date})
def clear_manual_actions(self, cr, uid, partner_list, context=None):
# Partnerlist is list to exclude
# Will clear the actions of partners that have no due payments anymore
partner_list_ids = [partner.partner_id.id for partner in self.pool.get('account_followup.stat.by.partner').browse(cr, uid, partner_list, context=context)]
ids = self.pool.get('res.partner').search(cr, uid, ['&', ('id', 'not in', partner_list_ids), '|',
('payment_responsible_id', '!=', False),
('payment_next_action_date', '!=', False)], context=context)
partners = self.pool.get('res.partner').browse(cr, uid, ids, context=context)
newids = []
for part in partners:
credit = 0
for aml in part.unreconciled_aml_ids:
credit +=aml.result
if credit <= 0:
newids.append(part.id)
self.pool.get('res.partner').action_done(cr, uid, newids, context=context)
return len(ids)
def do_process(self, cr, uid, ids, context=None):
if context is None:
context = {}
#Get partners
tmp = self._get_partners_followp(cr, uid, ids, context=context)
partner_list = tmp['partner_ids']
to_update = tmp['to_update']
date = self.browse(cr, uid, ids, context=context)[0].date
data = self.read(cr, uid, ids, [], context=context)[0]
data['followup_id'] = data['followup_id'][0]
#Update partners
self.do_update_followup_level(cr, uid, to_update, partner_list, date, context=context)
#process the partners (send mails...)
restot = self.process_partners(cr, uid, partner_list, data, context=context)
#clear the manual actions if nothing is due anymore
nbactionscleared = self.clear_manual_actions(cr, uid, partner_list, context=context)
if nbactionscleared > 0:
restot['resulttext'] = restot['resulttext'] + "<li>" + _("%s partners have no credits and as such the action is cleared") %(str(nbactionscleared)) + "</li>"
res = restot['action']
#return the next action
mod_obj = self.pool.get('ir.model.data')
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_sending_results')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
context.update({'description': restot['resulttext'], 'needprinting': restot['needprinting'], 'report_data': res})
return {
'name': _('Send Letters and Emails: Actions Summary'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account_followup.sending.results',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
def _get_msg(self, cr, uid, context=None):
return self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.follow_up_msg
_defaults = {
'email_body': _get_msg,
'email_subject': _('Invoices Reminder'),
'partner_lang': True,
'partner_ids': _get_partners,
'summary': _get_summary,
'date': lambda *a: time.strftime('%Y-%m-%d'),
'followup_id': _get_followup,
'email_body': "",
'email_subject': _('Invoices Reminder'),
'partner_lang': True,
}
def _get_partners_followp(self, cr, uid, ids, context=None):
data = {}
if context is None:
context = {}
if ids:
data = self.browse(cr, uid, ids, context=context)[0]
company_id = 'company_id' in context and context['company_id'] or data.company_id.id
data = self.browse(cr, uid, ids, context=context)[0]
company_id = data.company_id.id
cr.execute(
"SELECT l.partner_id, l.followup_line_id,l.date_maturity, l.date, l.id "\
@ -166,8 +274,9 @@ class account_followup_print_all(osv.osv_memory):
"AND (l.partner_id is NOT NULL) "\
"AND (a.active) "\
"AND (l.debit > 0) "\
"AND (l.company_id = %s) "\
"ORDER BY l.date", (company_id,))
"AND (l.company_id = %s) " \
"AND (l.blocked = False)" \
"ORDER BY l.date", (company_id,)) #l.blocked added to take litigation into account and it is not necessary to change follow-up level of account move lines without debit
move_lines = cr.fetchall()
old = None
fups = {}
@ -181,17 +290,17 @@ class account_followup_print_all(osv.osv_memory):
"FROM account_followup_followup_line "\
"WHERE followup_id=%s "\
"ORDER BY delay", (fup_id,))
#Create dictionary of tuples where first element is the date to compare with the due date and second element is the id of the next level
for result in cr.dictfetchall():
delay = datetime.timedelta(days=result['delay'])
fups[old] = (current_date - delay, result['id'])
if result['start'] == 'end_of_month':
fups[old][0].replace(day=1)
old = result['id']
fups[old] = (datetime.date(datetime.MAXYEAR, 12, 31), old)
partner_list = []
to_update = {}
#Fill dictionary of accountmovelines to_update with the partners that need to be updated
for partner_id, followup_line_id, date_maturity,date, id in move_lines:
if not partner_id:
continue
@ -209,134 +318,6 @@ class account_followup_print_all(osv.osv_memory):
to_update[str(id)]= {'level': fups[followup_line_id][1], 'partner_id': stat_line_id}
return {'partner_ids': partner_list, 'to_update': to_update}
def do_mail(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
move_obj = self.pool.get('account.move.line')
user_obj = self.pool.get('res.users')
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
stat_by_partner_line_ids = [partner_id.id for partner_id in data.partner_ids]
partners = [stat_by_partner_line / 10000 for stat_by_partner_line in stat_by_partner_line_ids]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all_msg')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
if data.email_conf:
msg_sent = ''
msg_unsent = ''
data_user = user_obj.browse(cr, uid, uid, context=context)
for partner in self.pool.get('res.partner').browse(cr, uid, partners, context=context):
ids_lines = move_obj.search(cr,uid,[('partner_id','=',partner.id),('reconcile_id','=',False),('account_id.type','in',['receivable']),('company_id','=',context.get('company_id', False))])
data_lines = move_obj.browse(cr, uid, ids_lines, context=context)
total_amt = 0.0
for line in data_lines:
total_amt += line.debit - line.credit
dest = False
if partner:
dest = [partner.email]
if not data.partner_lang:
body = data.email_body
else:
cxt = context.copy()
cxt['lang'] = partner.lang
body = user_obj.browse(cr, uid, uid, context=cxt).company_id.follow_up_msg
move_line = ''
subtotal_due = 0.0
subtotal_paid = 0.0
subtotal_maturity = 0.0
balance = 0.0
l = '--------------------------------------------------------------------------------------------------------------------------'
head = l+ '\n' + 'Date'.rjust(10) + '\t' + 'Description'.rjust(10) + '\t' + 'Ref'.rjust(10) + '\t' + 'Due date'.rjust(10) + '\t' + 'Due'.rjust(10) + '\t' + 'Paid'.rjust(10) + '\t' + 'Maturity'.rjust(10) + '\t' + 'Litigation'.rjust(10) + '\n' + l
for i in data_lines:
maturity = 0.00
if i.date_maturity < time.strftime('%Y-%m-%d') and (i.debit - i.credit):
maturity = i.debit - i.credit
subtotal_due = subtotal_due + i.debit
subtotal_paid = subtotal_paid + i.credit
subtotal_maturity = subtotal_maturity + int(maturity)
balance = balance + (i.debit - i.credit)
move_line = move_line + (i.date).rjust(10) + '\t'+ (i.name).rjust(10) + '\t'+ (i.ref or '').rjust(10) + '\t' + (i.date_maturity or '').rjust(10) + '\t' + str(i.debit).rjust(10) + '\t' + str(i.credit).rjust(10) + '\t' + str(maturity).rjust(10) + '\t' + str(i.blocked).rjust(10) + '\n'
move_line = move_line + l + '\n'+ '\t\t\t' + 'Sub total'.rjust(35) + '\t' + (str(subtotal_due) or '').rjust(10) + '\t' + (str(subtotal_paid) or '').rjust(10) + '\t' + (str(subtotal_maturity) or '').rjust(10)+ '\n'
move_line = move_line + '\t\t\t' + 'Balance'.rjust(33) + '\t' + str(balance).rjust(10) + '\n' + l
val = {
'partner_name':partner.name,
'followup_amount':total_amt,
'user_signature':data_user.name,
'company_name':data_user.company_id.name,
'company_currency':data_user.company_id.currency_id.name,
'line':move_line,
'heading': head,
'date':time.strftime('%Y-%m-%d'),
}
body = body%val
sub = tools.ustr(data.email_subject)
msg = ''
if dest:
try:
vals = {'state': 'outgoing',
'subject': sub,
'body_html': '<pre>%s</pre>' % body,
'email_to': dest,
'email_from': data_user.email or tools.config.options['email_from']}
self.pool.get('mail.mail').create(cr, uid, vals, context=context)
msg_sent += partner.name + '\n'
except Exception, e:
raise osv.except_osv('Error !', e )
else:
msg += partner.name + '\n'
msg_unsent += msg
if not msg_unsent:
summary = _("All Emails have been successfully sent to Partners:.\n\n%s") % msg_sent
else:
msg_unsent = _("Email not sent to following Partners, Email not available !\n\n%s") % msg_unsent
msg_sent = msg_sent and _("\n\nEmail sent to following Partners successfully. !\n\n%s") % msg_sent
line = '=========================================================================='
summary = msg_unsent + line + msg_sent
context.update({'summary': summary})
else:
context.update({'summary': '\n\n\nEmail has not been sent to any partner. If you want to send it, please tick send email confirmation on wizard.'})
return {
'name': _('Followup Summary'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account.followup.print.all',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'nodestroy': True
}
def do_print(self, cr, uid, ids, context=None):
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
res = self._get_partners_followp(cr, uid, ids, context)['to_update']
to_update = res
data['followup_id'] = 'followup_id' in context and context['followup_id'] or False
date = 'date' in context and context['date'] or data['date']
if not data['test_print']:
for id in to_update.keys():
if to_update[id]['partner_id'] in data['partner_ids']:
cr.execute(
"UPDATE account_move_line "\
"SET followup_line_id=%s, followup_date=%s "\
"WHERE id=%s",
(to_update[id]['level'],
date, int(id),))
data.update({'date': context['date']})
datas = {
'ids': [],
'model': 'account_followup.followup',
'form': data
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account_followup.followup.print',
'datas': datas,
}
account_followup_print_all()
account_followup_print()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -4,25 +4,29 @@
<record id="view_account_followup_print" model="ir.ui.view">
<field name="name">account.followup.print.form</field>
<field name="model">account.followup.print</field>
<field name="model">account_followup.print</field>
<field name="arch" type="xml">
<form string="Send follow-ups" version="7.0">
<group col="4">
<field name="followup_id"/>
<field name="date"/>
<field name="followup_id" groups="base.group_multi_company"/>
<field name="date" groups="base.group_no_one"/>
</group>
<footer>
<button name="do_continue" string="Continue" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
<p class ="oe_grey">
This action will send follow-up emails, print the letters and
set the manual actions per customers.
</p>
<footer>
<button name="do_process" string="Send emails and generate letters" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</field>
</record>
<record id="action_account_followup_print" model="ir.actions.act_window">
<field name="name">Send Follow-Ups</field>
<field name="res_model">account.followup.print</field>
<field name="res_model">account_followup.print</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
@ -30,8 +34,10 @@
<menuitem action="action_account_followup_print"
id="account_followup_print_menu"
parent="account.menu_finance_periodical_processing_billing"
sequence="10"/>
parent="menu_finance_followup"
name = "Send Letters and Emails"
groups = "account.group_account_user"
sequence="2"/>
<record id="account_followup_stat_by_partner_search" model="ir.ui.view">
<field name="name">account_followup.stat.by.partner.search</field>
@ -47,7 +53,6 @@
</field>
</record>
<!-- Screen2 -->
<record id="account_followup_stat_by_partner_tree" model="ir.ui.view">
<field name="name">account_followup.stat.by.partner.tree</field>
<field name="model">account_followup.stat.by.partner</field>
@ -63,63 +68,25 @@
</field>
</record>
<record id="view_account_followup_print_all" model="ir.ui.view">
<field name="name">account.followup.print.all.form</field>
<field name="model">account.followup.print.all</field>
<record id="view_account_followup_sending_results" model="ir.ui.view">
<field name="name">account_followup.sending.results.form</field>
<field name="model">account_followup.sending.results</field>
<field name="arch" type="xml">
<form string="Send Follow-Ups" version="7.0">
<form string="Summary of actions" version="7.0">
<header>
<button name="do_mail" string="Send Mails" type="object" class="oe_highlight"/>
<button name="do_print" string="Print Follow Ups" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
<field name="description" widget="html" class="oe_view_only"/>
</header>
<notebook>
<page string="Partner Selection">
<field name="partner_ids" context="{'search_default_balance_positive': 1}" domain="[('company_id','=',context.get('company_id',False))]"/>
</page>
<page string="Email Settings">
<group col="4">
<field name="email_conf" colspan="4"/>
<field name="partner_lang" colspan="4"/>
<field name="test_print" colspan="4"/>
<field name="email_subject" colspan="4"/>
<field name="email_body" colspan="4" nolabel="1"/>
</group>
<group string="Legend">
<label string="%%(partner_name)s: Partner name"/>
<label string="%%(user_signature)s: User name"/>
<label string="%%(followup_amount)s: Total Amount Due"/>
<label string="%%(date)s: Current Date"/>
<label string="%%(company_name)s: User's Company name"/>
<label string="%%(company_currency)s: User's Company Currency"/>
<label string="%%(heading)s: Move line header"/>
<label string="%%(line)s: Ledger Posting lines"/>
</group>
</page>
</notebook>
<footer>
<field name="needprinting" invisible="1"/>
<div attrs="{'invisible':[('needprinting','=', False)]}">
<button name="do_report" string="Download Letters" type="object" class="oe_highlight"/>
</div>
<div attrs="{'invisible':[('needprinting','!=', False)]}">
<button name="do_done" string="Close" type="object" class="oe_highlight"/>
</div>
</footer>
</form>
</field>
</record>
<record id="view_account_followup_print_all_msg" model="ir.ui.view">
<field name="name">account.followup.print.all.msg.form</field>
<field name="model">account.followup.print.all</field>
<field name="arch" type="xml">
<form string="Summary" version="7.0">
<separator string="Summary"/>
<field name="summary"/>
</form>
</field>
</record>
<record id="action_account_followup_print_all" model="ir.actions.act_window">
<field name="name">Send Follow-Ups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.followup.print.all</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -20,12 +20,29 @@
##############################################################################
from datetime import datetime
from tools.translate import _
from osv import fields, osv
class Invoice(osv.osv):
_inherit = 'account.invoice'
# Forbid to cancel an invoice if the related move lines have already been
# used in a payment order. The risk is that importing the payment line
# in the bank statement will result in a crash cause no more move will
# be found in the payment line
def action_cancel(self, cr, uid, ids, context=None):
payment_line_obj = self.pool.get('payment.line')
for inv in self.browse(cr, uid, ids, context=context):
pl_line_ids = []
if inv.move_id and inv.move_id.line_id:
inv_mv_lines = [x.id for x in inv.move_id.line_id]
pl_line_ids = payment_line_obj.search(cr, uid, [('move_line_id','in',inv_mv_lines)], context=context)
if pl_line_ids:
pay_line = payment_line_obj.browse(cr, uid, pl_line_ids, context=context)
payment_order_name = ','.join(map(lambda x: x.order_id.reference, pay_line))
raise osv.except_osv(_('Error!'), _("You cannot cancel an invoice which has already been imported in a payment order. Remove it from the following payment order : %s."%(payment_order_name)))
return super(Invoice, self).action_cancel(cr, uid, ids, context=context)
def _amount_to_pay(self, cursor, user, ids, name, args, context=None):
'''Return the amount still to pay regarding all the payment orders'''
if not ids:

View File

@ -14,28 +14,16 @@
</field>
</record>
<record model="ir.ui.view" id="view_move_line_tree_wiz">
<!-- <record model="ir.ui.view" id="view_move_line_tree_wiz">
<field name="name">account.move.line.tree</field>
<field name="model">account.move.line</field>
<field name="priority" eval="1"/>
<field name="inherit_id" ref="account.view_move_line_tree"/>
<field name="arch" type="xml">
<tree string="Account Entry Line">
<field name="partner_id"/>
<field name="ref"/>
<field name="name"/>
<field name="journal_id"/>
<field name="account_id"/>
<field name="date_maturity"/>
<field name="date"/>
<field name="debit" sum="Total debit"/>
<field name="credit" sum="Total credit"/>
<field name="reconcile" position="after">
<field name="amount_to_pay"/>
<field name="amount_currency" groups="base.group_multi_currency"/>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="period_id" invisible="1"/>
</tree>
</field>
</field>
</record>
</record> -->
<menuitem id="menu_main_payment" name="Payment" parent="account.menu_finance" sequence="7"/>

View File

@ -3,46 +3,7 @@
<data>
<!--Account Journal Internal Number of account move line-->
<record id="sp_journal_col3" model="account.journal.column">
<field name="view_id" ref="account.account_sp_journal_view"/>
<field name="name">Internal Number</field>
<field name="field">internal_sequence_number</field>
<field eval="True" name="required"/>
<field eval="2" name="sequence"/>
</record>
<record id="journal_col1" model="account.journal.column">
<field name="view_id" ref="account.account_journal_view"/>
<field name="name">Internal Number</field>
<field name="field">internal_sequence_number</field>
<field eval="True" name="required"/>
<field eval="2" name="sequence"/>
</record>
<record id="bank_col3" model="account.journal.column">
<field name="view_id" ref="account.account_journal_bank_view"/>
<field name="name">Internal Number</field>
<field name="field">internal_sequence_number</field>
<field eval="True" name="required"/>
<field eval="2" name="sequence"/>
</record>
<record id="bank_col3_multi" model="account.journal.column">
<field name="view_id" ref="account.account_journal_bank_view_multi"/>
<field name="name">Internal Number</field>
<field name="field">internal_sequence_number</field>
<field eval="True" name="required"/>
<field eval="2" name="sequence"/>
</record>
<record id="sp_refund_journal_col3" model="account.journal.column">
<field name="view_id" ref="account.account_sp_refund_journal_view"/>
<field name="name">Internal Number</field>
<field name="field">internal_sequence_number</field>
<field eval="True" name="required"/>
<field eval="2" name="sequence"/>
</record>
<record id="sequence_journal" model="ir.sequence.type">
<field name="name">Account Journal</field>
<field name="code">account.journal</field>

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-30 23:10+0000\n"
"PO-Revision-Date: 2012-12-01 18:27+0000\n"
"Last-Translator: kifcaliph <Unknown>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-02 04:38+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_sequence
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "لا يمكنك إنشاء عناصر يوميه لحساب مغلق"
#. module: account_sequence
#: view:account.sequence.installer:0
@ -116,7 +116,7 @@ msgstr "الاسم"
#. module: account_sequence
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "لا يمكنك إنشاء يوميات لحساب من نوع 'عرض'"
#. module: account_sequence
#: constraint:account.journal:0
@ -124,6 +124,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"خطأ في التكوين!\n"
"العملة المختارة يجب أن تكون مستخدمة من الحساب الافتراضي أيضا"
#. module: account_sequence
#: sql_constraint:account.move.line:0
@ -144,7 +146,7 @@ msgstr "مسلسل داخلي"
#. module: account_sequence
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "الحساب و المدة يجب أن تنتمي لنفس الشركة."
#. module: account_sequence
#: help:account.sequence.installer,prefix:0

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-02-15 15:36+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2012-11-29 17:04+0000\n"
"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_sequence
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Vous ne pouvez pas créer d'entrée de journal dans un compte fermé."
#. module: account_sequence
#: view:account.sequence.installer:0
@ -116,6 +116,7 @@ msgstr "Nom"
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
"Vous ne pouvez pas créer d'entrée de journal dans un compte de type vue."
#. module: account_sequence
#: constraint:account.journal:0
@ -123,6 +124,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
"Erreur de configuration!\n"
"Le devise choisie doit être aussi partagée par le compte par défaut."
#. module: account_sequence
#: sql_constraint:account.move.line:0
@ -134,6 +137,8 @@ msgstr "Valeur erronée au crédit ou au débit dans l'écriture comptable !"
msgid ""
"You cannot create more than one move per period on a centralized journal."
msgstr ""
"Vous ne pouvez pas créer plus d'un mouvement par période dans un journal "
"centralisé."
#. module: account_sequence
#: field:account.journal,internal_sequence_id:0
@ -143,7 +148,7 @@ msgstr "Séquence interne"
#. module: account_sequence
#: constraint:account.move.line:0
msgid "Account and Period must belong to the same company."
msgstr ""
msgstr "Le compte et la période doivent appartenir à la même société."
#. module: account_sequence
#: help:account.sequence.installer,prefix:0

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