from mx.DateTime import RelativeDateTime
from tools import config
-class Account(osv.osv):
+class account_account(osv.osv):
_inherit = "account.account"
def _get_level(self, cr, uid, ids, field_name, arg, context={}):
'type1':fields.selection([('dr','Debit'),('cr','Credit'),('none','None')], 'Dr/Cr',store=True),
}
- def compute_total(self, cr, uid, ids, yr_st_date, yr_end_date, st_date, end_date, field_names, context={}, query=''):
- #compute the balance/debit/credit accordingly to the value of field_name for the given account ids
- mapping = {
- 'credit': "COALESCE(SUM(l.credit), 0) as credit ",
- 'balance': "COALESCE(SUM(l.debit),0) - COALESCE(SUM(l.credit), 0) as balance ",
- 'debit': "COALESCE(SUM(l.debit), 0) as debit ",
- }
- #get all the necessary accounts
- ids2 = self._get_children_and_consol(cr, uid, ids, context)
- acc_set = ",".join(map(str, ids2))
- #compute for each account the balance/debit/credit from the move lines
+ def compute_total(self, cr, uid, ids, yr_st_date, yr_end_date, st_date, end_date, field_names, context={}):
if not (st_date >= yr_st_date and end_date <= yr_end_date):
return {}
- accounts = {}
- if ids2:
- query = self.pool.get('account.move.line')._query_get(cr, uid,
- context=context)
- cr.execute("SELECT l.account_id as id, " \
- + ' , '.join(map(lambda x: mapping[x], field_names.keys() )) + \
- "FROM account_move_line l " \
- "WHERE l.account_id IN ("+ acc_set +") " \
- "AND " + query + " " \
- " AND l.date >= "+"'"+ st_date +"'"+" AND l.date <= "+"'"+ end_date +""+"'"" " \
- "GROUP BY l.account_id ")
- for res in cr.dictfetchall():
- accounts[res['id']] = res
- #for the asked accounts, get from the dictionnary 'accounts' the value of it
- res = {}
- for id in ids:
- res[id] = self._get_account_values(cr, uid, id, accounts, field_names, context)
- return res
+ return self.__compute(
+ cr, uid, ids, field_names, context=context,
+ query="l.date >= '%s' AND l.date <= '%s'",
+ query_params=(st_date, end_date))
def create(self, cr, uid, vals, context={}):
name=self.search(cr,uid,[('name','ilike',vals['name']),('company_id','=',vals['name'])])
vals['type1'] = 'none'
journal_ids=self.pool.get('account.journal').search(cr,uid,[('name','=','Opening Journal')])
vals['journal_id'] = journal_ids and journal_ids[0] or False
- account_id = super(Account, self).create(cr, uid, vals, context)
+ account_id = super(account_account, self).create(cr, uid, vals, context)
if vals.get('type1', False) != False:
journal_id = vals.get('journal_id',False)
if journal_id and vals.has_key('open_bal'):
vals['type1'] = 'cr'
else:
vals['type1'] = 'none'
- super(Account, self).write(cr, uid,ids, vals, context)
- self_obj= self.browse(cr,uid,ids)
- move_pool=self.pool.get('account.move')
- if vals:
- for obj in self_obj:
- flg=0
- if obj.journal_id and obj.journal_id.type == 'situation':
- move=move_pool.search(cr,uid,[('journal_id','=',obj.journal_id.id)])
- if move:
- move_obj=move_pool.browse(cr,uid,move[0])
- move=move[0]
- else:
- name = self.pool.get('ir.sequence').get_id(cr, uid, obj.journal_id.sequence_id.id)
- move_data = {'name': name, 'journal_id': obj.journal_id.id}
- move=self.pool.get('account.move').create(cr,uid,move_data)
- move_obj=move_pool.browse(cr,uid,move)
- move_line_data={'name':obj.journal_id.name,
- 'debit':obj.debit or 0.0,
- 'credit':obj.credit or 0.0,
- 'account_id':obj.id,
- 'move_id':move,
- 'journal_id':obj.journal_id.id,
- 'period_id':move_obj.period_id.id,
- }
- if obj.type1:
- if obj.type1 == 'dr':
- move_line_data['debit'] = obj.open_bal
- elif obj.type1 == 'cr':
- move_line_data['credit'] = obj.open_bal
- if move_obj and move:
- for move_line in move_obj.line_id:
- if move_line.account_id.id == obj.id:
- if move_line_data['debit'] == 0.0 and move_line_data['credit']== 0.0:
- self.pool.get('account.move.line').unlink(cr,uid,[move_line.id])
- else:
- self.pool.get('account.move.line').write(cr,uid,[move_line.id],move_line_data)
- flg=1
- if not flg:
- self.pool.get('account.move.line').create(cr,uid,move_line_data)
+ super(account_account, self).write(cr, uid,ids, vals, context)
+ if vals.has_key('open_bal'):
+ self_obj= self.browse(cr,uid,ids)
+ move_pool=self.pool.get('account.move')
+ if vals:
+ for obj in self_obj:
+ flg=0
+ if obj.journal_id and obj.journal_id.type == 'situation':
+ move=move_pool.search(cr,uid,[('journal_id','=',obj.journal_id.id)])
+ if move:
+ move_obj=move_pool.browse(cr,uid,move[0])
+ move=move[0]
+ else:
+ name = self.pool.get('ir.sequence').get_id(cr, uid, obj.journal_id.sequence_id.id)
+ move_data = {'name': name, 'journal_id': obj.journal_id.id}
+ move=self.pool.get('account.move').create(cr,uid,move_data)
+ move_obj=move_pool.browse(cr,uid,move)
+ move_line_data={'name':obj.journal_id.name,
+ 'debit':obj.debit or 0.0,
+ 'credit':obj.credit or 0.0,
+ 'account_id':obj.id,
+ 'move_id':move,
+ 'journal_id':obj.journal_id.id,
+ 'period_id':move_obj.period_id.id,
+ }
+ if obj.type1:
+ if obj.type1 == 'dr':
+ move_line_data['debit'] = obj.open_bal
+ elif obj.type1 == 'cr':
+ move_line_data['credit'] = obj.open_bal
+ if move_obj and move:
+ for move_line in move_obj.line_id:
+ if move_line.account_id.id == obj.id:
+ if move_line_data['debit'] == 0.0 and move_line_data['credit']== 0.0:
+ self.pool.get('account.move.line').unlink(cr,uid,[move_line.id])
+ else:
+ self.pool.get('account.move.line').write(cr,uid,[move_line.id],move_line_data)
+ flg=1
+ if not flg:
+ self.pool.get('account.move.line').create(cr,uid,move_line_data)
return True
def onchange_type(self, cr, uid, ids,user_type,type1):
return {
'value' : {'type1' : type1}
}
-Account()
+account_account()
-class AccountMove(osv.osv):
+class account_move(osv.osv):
_inherit = "account.move"
_columns = {
'name':fields.char('Name', size=256, required=True, readonly=True, states={'draft':[('readonly',False)]}),
- 'voucher_type': fields.selection([
- ('pay_voucher','Cash Payment Voucher'),
- ('bank_pay_voucher','Bank Payment Voucher'),
- ('rec_voucher','Cash Receipt Voucher'),
- ('bank_rec_voucher','Bank Receipt Voucher'),
- ('cont_voucher','Contra Voucher'),
- ('journal_sale_vou','Journal Sale Voucher'),
- ('journal_pur_voucher','Journal Purchase Voucher'),
- ('journal_voucher','Journal Voucher'),
- ],'Voucher Type', readonly=True, select=True, states={'draft':[('readonly',False)]}),
- 'narration':fields.text('Narration'),
+ 'narration':fields.text('Narration', readonly=True, select=True, states={'draft':[('readonly',False)]}),
}
-AccountMove()
+account_move()
class res_currency(osv.osv):
_inherit = "res.currency"