[IMP][FIX] account_coda, l10n_ch: fixed the account voucher creation from statement and improve the code.

bzr revid: vra@tinyerp.com-20101007123929-dudaibz8fvnmqgd5
This commit is contained in:
vra 2010-10-07 18:09:29 +05:30
parent 6ddcd366fd
commit 948437d086
2 changed files with 74 additions and 69 deletions

View File

@ -206,42 +206,47 @@ class account_coda_import(osv.osv_memory):
lines = statement.get('bank_statement_line',False)
if lines:
for value in lines:
journal = journal_obj.browse(cr, uid, statement['journal_id'], context=context)
line = lines[value]
if not line['partner_id']:
line['partner_id'] = journal.company_id.partner_id.id
voucher_id = False
rec_id = False
if line.get('toreconcile',False): # Fix me
name = line['name'][:3] + '/' + line['name'][3:7] + '/' + line['name'][7:]
rec_id = self.pool.get('account.move.line').search(cr, uid, [('name', '=', name), ('reconcile_id', '=', False), ('account_id.reconcile', '=', True)])
if rec_id:
result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line['partner_id'], journal_id=statement['journal_id'], price=abs(line['amount']), currency_id = journal.company_id.currency_id.id, ttype=(line['amount'] < 0 and 'payment' or 'receipt'), context=context)
voucher_res = { 'type':(line['amount'] < 0 and 'payment' or 'receipt') ,
'name': line['name'],#line.name,
'partner_id': line['partner_id'] ,#line.partner_id.id,
'journal_id': statement['journal_id'], #statement.journal_id.id,
'account_id': line['account_id'],#line.account_id.id,
'company_id': statement['company_id'],#statement.company_id.id,
'currency_id': statement['currency'],#statement.currency.id,
'account_id': result.get('account_id', journal.default_credit_account_id.id),#line.account_id.id,
'company_id': journal.company_id.id,#statement.company_id.id,
'currency_id': journal.company_id.currency_id.id,#statement.currency.id,
'date': line['date'], #line.date,
'amount':abs(line['amount']),
'period_id':statement.get('period_id',False) or period,# statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
context.update({'move_line_ids': rec_id})
result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'), context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
move_line = line_obj.browse(cr, uid, line_dict['move_line_id'], context)
if line.move_id.id == move_line.move_id.id:
voucher_line_dict = line_dict
if voucher_line_dict:
voucher_line_dict.update({'voucher_id':voucher_id})
voucher_line_obj.create(cr, uid, voucher_line_dict, context=context)
# reconcile_id = statement_reconcile_obj.create(cr, uid, {
# 'line_ids': [(6, 0, rec_id)]
# }, context=context)
#
# reconcile_id = statement_reconcile_obj.create(cr, uid, {
# 'line_ids': [(6, 0, rec_id)]
# }, context=context)
#
mv = self.pool.get('account.move.line').browse(cr, uid, rec_id[0], context=context)
if mv.partner_id:
line['partner_id'] = mv.partner_id.id
@ -249,20 +254,20 @@ class account_coda_import(osv.osv_memory):
line['account_id'] = mv.partner_id.property_account_payable.id
else :
line['account_id'] = mv.partner_id.property_account_receivable.id
str_not1 = ''
if line.has_key('contry_name') and line.has_key('cntry_number'):
str_not1="Partner name:%s \n Partner Account Number:%s \n Communication:%s \n Value Date:%s \n Entry Date:%s \n"%(line["contry_name"], line["cntry_number"], line["free_comm"]+line['extra_note'], line["val_date"][0], line["entry_date"][0])
id = bank_statement_line_obj.create(cr, uid, {
'name':line['name'],
'date': line['date'],
'amount': line['amount'],
'partner_id':line['partner_id'] or 0,
'account_id':line['account_id'],
'statement_id': bk_st_id,
'voucher_id': voucher_id,
'note':str_not1,
'ref':line['ref'],
})
str_not1 = ''
if line.has_key('contry_name') and line.has_key('cntry_number'):
str_not1="Partner name:%s \n Partner Account Number:%s \n Communication:%s \n Value Date:%s \n Entry Date:%s \n"%(line["contry_name"], line["cntry_number"], line["free_comm"]+line['extra_note'], line["val_date"][0], line["entry_date"][0])
id = bank_statement_line_obj.create(cr, uid, {
'name':line['name'],
'date': line['date'],
'amount': line['amount'],
'partner_id':line['partner_id'],
'account_id':line['account_id'],
'statement_id': bk_st_id,
'voucher_id': voucher_id,
'note':str_not1,
'ref':line['ref'],
})
str_not = "\n \n Account Number: %s \n Account Holder Name: %s " %(statement["acc_number"], statement["acc_holder"])
std_log += "\nStatement : %s , Date : %s, Starting Balance : %.2f , Ending Balance : %.2f \n"\

View File

@ -72,10 +72,11 @@ def _reconstruct_invoice_ref(cursor, user, reference, context=None):
def _import(obj, cursor, user, data, context=None):
pool = pooler.get_pool(cursor.dbname)
statement_obj = pool.get('account.bank.statement')
statement_line_obj = pool.get('account.bank.statement.line')
# statement_reconcile_obj = pool.get('account.bank.statement.reconcile')
voucher_obj = self.pool.get('account.voucher')
voucher_line_obj = self.pool.get('account.voucher.line')
voucher_obj = pool.get('account.voucher')
voucher_line_obj = pool.get('account.voucher.line')
move_line_obj = pool.get('account.move.line')
property_obj = pool.get('ir.property')
model_fields_obj = pool.get('ir.model.fields')
@ -137,23 +138,18 @@ def _import(obj, cursor, user, data, context=None):
total_cost += record['cost']
records.append(record)
model_fields_ids = model_fields_obj.search(cursor, user, [
('name', 'in', ['property_account_receivable', 'property_account_payable']),
('model', '=', 'res.partner'),
], context=context)
property_ids = property_obj.search(cursor, user, [
('fields_id', 'in', model_fields_ids),
('res_id', '=', False),
], context=context)
# model_fields_ids = model_fields_obj.search(cursor, user, [
# ('name', 'in', ['property_account_receivable', 'property_account_payable']),
# ('model', '=', 'res.partner'),
# ], context=context)
# property_ids = property_obj.search(cursor, user, [
# ('fields_id', 'in', model_fields_ids),
# ('res_id', '=', False),
# ], context=context)
account_receivable = False
account_payable = False
for property in property_obj.browse(cursor, user, property_ids, context=context):
if property.fields_id.name == 'property_account_receivable':
account_receivable = int(property.value.split(',')[1])
elif property.fields_id.name == 'property_account_payable':
account_payable = int(property.value.split(',')[1])
statement = statement_obj.browse(cursor, user, statement_id, context=context)
for record in records:
# Remove the 11 first char because it can be adherent number
# TODO check if 11 is the right number
@ -166,6 +162,7 @@ def _import(obj, cursor, user, data, context=None):
'type': (record['amount'] >= 0 and 'customer') or 'supplier',
'statement_id': statement_id,
}
line_ids = move_line_obj.search(cursor, user, [
('ref', 'like', reference),
('reconcile_id', '=', False),
@ -178,8 +175,10 @@ def _import(obj, cursor, user, data, context=None):
partner_id = False
account_id = False
for line in move_line_obj.browse(cursor, user, line_ids, context=context):
if line.partner_id.id:
partner_id = line.partner_id.id
account_receivable = line.partner_id.property_account_receivable.id
account_payable = line.partner_id.property_account_payable.id
partner_id = line.partner_id.id
move_id = line.move_id.id
if record['amount'] >= 0:
if round(record['amount'] - line.debit, 2) < 0.01:
line2reconcile = line.id
@ -190,6 +189,32 @@ def _import(obj, cursor, user, data, context=None):
line2reconcile = line.id
account_id = line.account_id.id
break
result = voucher_obj.onchange_partner_id(cursor, user, [], partner_id=partner_id, journal_id=statement.journal_id.id, price=abs(record['amount']), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_res = { 'type': 'payment' ,
'name': values['name'],
'partner_id': partner_id,
'journal_id': statement.journal_id.id,
'account_id': result.get('account_id', statement.journal_id.default_credit_account_id.id),
'company_id': statement.company_id.id,
'currency_id': statement.currency.id,
'date': record['date'] or time.strftime('%Y-%m-%d'),
'amount': abs(record['amount']),
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cursor, user, voucher_res, context=context)
context.update({'move_line_ids': line_ids})
values['voucher_id'] = voucher_id
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
move_line = move_line_obj.browse(cursor, user, line_dict['move_line_id'], context)
if move_id == move_line.move_id.id:
voucher_line_dict = line_dict
if voucher_line_dict:
voucher_line_dict.update({'voucher_id':voucher_id})
voucher_line_obj.create(cursor, user, voucher_line_dict, context=context)
if not account_id:
if record['amount'] >= 0:
account_id = account_receivable
@ -201,31 +226,6 @@ def _import(obj, cursor, user, data, context=None):
values['account_id'] = account_id
values['partner_id'] = partner_id
if line2reconcile:
voucher_res = { 'type': 'payment' ,
'name': line.name,
'partner_id': line.partner_id.id,
'journal_id': statement.journal_id.id,
'account_id': account,
'company_id': statement.company_id.id,
'currency_id': statement.currency.id,
'date': line.date or time.strftime('%Y-%m-%d'),
'amount': abs(amount),
'period_id': statement.period_id.id
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
context.update({'move_line_ids': line_ids})
result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', context=context)
voucher_line_dict = False
if result['value']['line_ids']:
for line_dict in result['value']['line_ids']:
move_line = self.pool.get('account.move.line').browse(cr, uid, line_dict['move_line_id'], context)
if line.move_line_id.move_id.id == move_line.move_id.id:
voucher_line_dict = line_dict
if voucher_line_dict:
voucher_line_dict.update({'voucher_id':voucher_id})
voucher_line_obj.create(cr, uid, voucher_line_dict, context=context)
values['voucher_id'] = voucher_id
# values['reconcile_id'] = statement_reconcile_obj.create(cursor, user, {
# 'line_ids': [(6, 0, [line2reconcile])],
# }, context=context)