261
261
report_sxw.report_sxw('report.account.general_ledger', 'account.account', 'addons/oecn_account_print/report/general_ledger.rml', parser=general_ledger_parser, header=False)
264
class detail_ledger_parser(rml_parse.rml_parse):
268
def __init__(self, cr, uid, name, context):
269
super(detail_ledger_parser, self).__init__(cr, uid, name, context)
270
# self.date_borne = {}
273
self.sql_condition = " "
274
self.tot_currency = 0.0
276
self.sold_accounts = {}
277
self.localcontext.update( { # 注册报表模板里可以访问的函数
279
'lines': self._get_lines,
280
'type':self._check_type,
281
'period_date':self.get_dete,
282
'contrepartie':self._calc_contrepartie,
283
# 'sum_debit_account': self._sum_debit_account,
284
# 'sum_credit_account': self._sum_credit_account,
285
# 'sum_solde_account': self._sum_solde_account,
286
'sum_debit': self._sum_debit,
287
'sum_credit': self._sum_credit,
288
'sum_solde': self._sum_solde,
289
'get_children_accounts': self.get_children_accounts,
290
# 'sum_currency_amount_account': self._sum_currency_amount_account,
291
'get_direction':self._get_direction,
292
# 'sum_quantity_account':self._sum_quantity_account,
293
'account_name' :self._get_account_name,
294
'get_periods':self._get_periods,
295
'sum_begin_solde':self._sum_begin_solde,
296
'sum_year_amount_solde':self._sum_year_amount_solde,
297
'sum_year_amount_currency':self._sum_year_amount_currency,
298
'sum_amount_currency':self._sum_amount_currency,
299
'sum_amount_quantity':self._sum_amount_quantity,
300
'sum_year_quantity':self._sum_year_quantity,
301
'sum_begin_balance_amount_currency':self._sum_begin_balance_amount_currency,
302
'sum_year_balance_amount_currency':self._sum_year_balance_amount_currency,
303
'sum_begin_balance_quantity':self._sum_begin_balance_quantity,
304
'sum_year_balance_quantity':self._sum_year_balance_quantity,
306
self.context = context
308
def set_context(self, objects, data, ids, report_type = None):
312
# self.borne_date = self.get_date(data['form'])
314
self.all_dete = self.get_dete(data)
315
self.sql_condition = self.get_threecolumns_ledger_type(data)
318
#if (data.get('model', False) == 'account.account'):
321
# new_ids.append(data['Account_list'])
322
# objects = self.pool.get('account.account').browse(self.cr, self.uid, new_ids)
324
super(detail_ledger_parser, self).set_context(objects, data, ids, report_type)
326
def get_dete(self, data):
330
print 'date:-->',data
331
period_obj = self.pool.get('account.period')
332
period_start_obj = period_obj.browse(self.cr, self.uid, data['period_from'][0])
333
print 'period_start_obj:',period_start_obj
334
period_end_obj = period_obj.browse(self.cr, self.uid, data['period_to'][0])
335
fiscalyear_obj = self.pool.get('account.fiscalyear').browse(self.cr, self.uid, period_start_obj.fiscalyear_id.id)
337
'period_start_date_start':period_start_obj.date_start,
338
'period_end_date_stop':period_end_obj.date_stop,
339
'fiscalyear_obj_date_start':fiscalyear_obj.date_start,
344
def _get_periods(self):
348
period_obj = self.pool.get('account.period')
349
period_ids = period_obj.search(self.cr, self.uid, [('date_start','>=',self.all_dete['period_start_date_start']),('date_stop','<=',self.all_dete['period_end_date_stop'])], order='date_start')
350
periods = period_obj.browse(self.cr, self.uid, period_ids)
353
def _check_type(self, data):
361
res['report_name'] = u'三栏式'
362
if data.get('product', False):
363
res['report_name'] = u'产品'
364
product = self.pool.get('product.product').browse(self.cr, self.uid ,data['product'][0])
365
res['product'] = product.name or ''
366
if data.get('partner', False):
367
res['report_name'] = u'业务伙伴'
368
partner = self.pool.get('res.partner').browse(self.cr, self.uid, data['partner'][0])
369
res['partner'] = partner.name or ''
372
def _calc_contrepartie(self, ids, context=None):
378
# result.setdefault(id, False)
380
for account_line in self.pool.get('account.move.line').browse(self.cr, self.uid, ids, context):
381
# For avoid long text in the field we will limit it to 5 lines
382
print 'account_line------>',account_line
383
result[account_line.id] = ' '
384
num_id_move = str(account_line.move_id.id)
385
num_id_line = str(account_line.id)
386
account_id = str(account_line.account_id.id)
387
# search the basic account
388
# We have the account ID we will search all account move line from now until this time
389
# We are in the case of we are on the top of the account move Line
390
self.cr.execute('SELECT distinct(ac.code) as code_rest,ac.name as name_rest from account_account AS ac, account_move_line mv\
391
where ac.id = mv.account_id and mv.move_id = ' + num_id_move +' and mv.account_id <> ' + account_id )
392
res_mv = self.cr.dictfetchall()
393
print 'res_mv',res_mv
394
# we need a result more than 2 line to make the test so we will made the the on 1 because we have exclude the current line
395
if (len(res_mv) >=1):
398
for move_rest in res_mv:
399
concat = concat + move_rest['code_rest'] + u' ' + move_rest['name_rest'] + u';'
400
result[account_line.id] = concat
402
# we need to stop the computing and to escape but before we will add "..."
403
result[account_line.id] = concat + '...'
406
print 'result-->',result
409
def get_date(self, form):
413
period_from_id = form['period_from']
414
period_to_id = form['period_to']
415
period_obj = self.pool.get('account.period')
416
period_start_obj = period_obj.read(self.cr, self.uid, period_from_id, ['date_start'])
417
period_end_obj = period_obj.read(self.cr, self.uid, period_to_id, ['date_stop'])
418
borne_min = period_start_obj['date_start']
419
borne_max = period_end_obj['date_stop']
422
'min_date': borne_min,
423
'max_date': borne_max,
425
return self.date_borne
427
def get_threecolumns_ledger_type(self, form):
428
if form.get('product',''):
429
self.sql_condition = " AND l.product_id ='"+str(form['product'])+"'"
430
if form.get('partner',''):
431
self.sql_condition = " AND l.partner_id ='"+str(form['partner'])+"'"
432
return self.sql_condition
435
def get_children_accounts(self, account, form, period, recursion=True):
439
self.child_ids = self.pool.get('account.account').search(self.cr, self.uid,[('parent_id', 'child_of', self.ids)])
442
ctx = self.context.copy()
443
## We will make the test for period or date
444
## We will now make the test
446
#ctx['state'] = form['context'].get('state','all')
447
#if form.has_key('fiscalyear'):
448
# ctx['fiscalyear'] = form['fiscalyear']
449
# ctx['periods'] = form['periods'][0][2]
451
# ctx['date_from'] = form['date_from']
452
# ctx['date_to'] = form['date_to']
454
self.query = self.pool.get('account.move.line')._query_get(self.cr, self.uid, context=ctx)
455
if account and account.child_consol_ids: # add ids of consolidated childs also of selected account
456
ctx['consolidate_childs'] = True
457
ctx['account_id'] = account.id
459
ids_acc = self.pool.get('account.account').search(
460
self.cr, self.uid,[('parent_id', 'child_of', [account.id])], context=ctx)
462
for child_id in ids_acc:
463
child_account = self.pool.get('account.account').browse(self.cr, self.uid, child_id)
464
sold_account = self._sum_solde_account(child_account,form, period)
465
self.sold_accounts[child_account.id] = sold_account
467
if child_account.type != 'view' \
468
and len(self.pool.get('account.move.line').search(self.cr, self.uid,
469
[('account_id','>=',child_account.id)],
471
res.append(child_account)
476
SOLDEINIT = "SELECT sum(l.debit) AS sum_debit, sum(l.credit) AS sum_credit, sum(l.quantity) AS sum_quantity, sum(l.amount_currency) AS sum_amount_currency FROM account_move_line l WHERE l.account_id = " + str(move.id) + " AND l.date < '" + period['date_stop'] + "'" + " AND l.date > '" + period['date_start'] +"'"+ self.sql_condition
477
self.cr.execute(SOLDEINIT)
478
resultat = self.cr.dictfetchall()
480
if resultat[0]['sum_debit'] == None:
483
sum_debit = resultat[0]['sum_debit']
484
if resultat[0]['sum_credit'] == None:
487
sum_credit = resultat[0]['sum_credit']
488
if resultat[0]['sum_amount_currency'] == None:
489
sum_amount_currency =0
491
sum_amount_currency = resultat[0]['sum_amount_currency']
492
if resultat[0]['sum_quantity'] == None:
495
sum_quantity = resultat[0]['sum_quantity']
497
move.init_credit = sum_credit
498
move.init_debit = sum_debit
499
move.init_amount_currency = sum_amount_currency
500
move.init_quantity = sum_quantity
505
move.init_currency = 0
506
move.init_quantity = 0
510
def _get_lines(self, context=None):
512
Get lines for threecolumns ledger
515
account_obj = self.pool.get('account.account')
516
account_move_line_obj = self.pool.get('account.move.line')
517
account_child_ids = account_obj.search(self.cr, self.uid, [('parent_id', 'child_of', self.ids)])
518
print 'child_ids:',account_child_ids
519
periods = self._get_periods()
520
for period in periods:
523
print '%s - %s'%(period.date_start,period.date_stop)
524
account_move_line_ids = account_move_line_obj.search(self.cr, self.uid, [('account_id','in',account_child_ids),('date','<=',period.date_stop),('date','>=',period.date_start),('state','=','valid')],order='date')
525
for line in account_move_line_obj.browse(self.cr, self.uid, account_move_line_ids):
527
period_balance += line.debit - line.credit
532
'period_balance':period_balance,
535
print 'result:',result
538
def lines(self, account, form, period, day=False):
540
按向导指定的参数获取所有的 account.move.line
542
self.tot_currency = 0.0
545
'out_invoice': 'CI: ',
546
'in_invoice': 'SI: ',
547
'out_refund': 'OR: ',
551
SELECT l.id, l.date, j.code,c.name AS currency_code,l.amount_currency ,l.ref, l.name , l.debit, l.credit, l.period_id, l.quantity
552
FROM account_move_line as l
553
LEFT JOIN res_currency c on (l.currency_id=c.id)
554
JOIN account_journal j on (l.journal_id=j.id)
560
ORDER BY l.date, l.id""" % (self.query, self.sql_condition)
562
self.cr.execute(sql, (account.id, day, day,))
563
res = self.cr.dictfetchall()
565
self.cr.execute(sql, (account.id, period['date_stop'], period['date_start'],))
566
res = self.cr.dictfetchall()
569
account_move_line_obj = self.pool.get('account.move.line')
571
line = self.pool.get('account.move.line').browse(self.cr, self.uid, l['id'])
572
l['move'] = line.move_id.name
573
self.cr.execute('Select id from account_invoice where move_id =%s'%(line.move_id.id))
574
tmpres = self.cr.dictfetchall()
576
inv = self.pool.get('account.invoice').browse(self.cr, self.uid, tmpres[0]['id'])
577
l['ref'] = inv_types[inv.type] + ': '+str(inv.number)
579
l['partner'] = line.partner_id.name
583
# 需要修正的地方请加上 FIXME 标记,需要尚未实现完全的地方请加上 TODO
584
# by mrshelly 为啥要初始化, 这里也需要处理
585
if type(l['debit']) == type(None):
587
if type(l['credit']) == type(None):
589
# by mrshelly 为啥要初始化, 这里也需要处理
591
sum = l['debit'] - l ['credit']
593
balance = line.balance
595
l['balance'] = abs(balance)
602
l['direction'] = self._get_direction(l['debit'] - l ['credit'])
603
l['line_corresp'] = self._calc_contrepartie(self.cr,self.uid,[l['id']])[l['id']]
604
# Modification du amount Currency
605
#if (l['credit'] > 0):
606
# if l['amount_currency'] != None:
607
# l['amount_currency'] = abs(l['amount_currency']) * -1
609
#if l['amount_currency'] != None:
610
# l['amount_currency_balance'] = self.tot_currency + l['amount_currency']
613
if (l['quantity'] != None and l['quantity'] !=0):
614
if l['debit'] != 0.0:
615
l['price'] = l['debit']/l['quantity']
616
elif l['credit'] != 0.0:
617
l['price'] = l['credit']/l['quantity']
619
if (l['amount_currency'] != None and l['amount_currency'] !=0):
620
if l['debit'] != 0.0:
621
l['rate'] = l['debit']/l['amount_currency']
622
elif l['credit'] != 0.0:
623
l['rate'] = l['credit']/l['amount_currency']
624
l['sum_balance_amount_currency'] = (self._sum_balance_currency_quantiry(l['date'],l['id']))['sum_balance_amount_currency']
625
l['sum_balance_quantity'] = (self._sum_balance_currency_quantiry(l['date'],l['id']))['sum_balance_quantity']
629
def _sum_solde_account(self, account, form, period=False):
634
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
635
"FROM account_move_line l "\
636
"WHERE l.account_id = "+str(account.id)+" AND l.date<='"+self.all_dete['period_end_date_stop']+"' AND l.date>='"+self.all_dete['period_start_date_start']+"' AND "+self.query+ " "+self.sql_condition)
638
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
639
"FROM account_move_line l "\
640
"WHERE l.account_id = "+str(account.id)+" AND l.date<='"+period['date_stop']+"' AND l.date>='"+period['date_start']+"' AND "+self.query+ " "+self.sql_condition)
641
sum_solde = self.cr.fetchone()[0] or 0.0
642
if form.get('soldeinit', False):
643
sum_solde += account.init_debit - account.init_credit
647
def _sum_begin_solde(self):
660
self.cr.execute("SELECT sum(debit) as debit , sum(credit) as credit \
661
FROM account_move_line l \
662
WHERE l.state = 'valid' \
663
AND l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
664
[('parent_id', 'child_of', self.ids)])))+") "+ " AND l.date < '" + self.all_dete['period_start_date_start'] +"'"+self.sql_condition)
665
res = self.cr.dictfetchall()
666
sum_begin_solde = (res[0]['debit'] or 0.0) - (res[0]['credit'] or 0.0)
667
if sum_begin_solde == 0:
668
result['direction'] = u'平'
669
elif sum_begin_solde > 0:
670
result['direction'] = u'借'
672
result['direction'] = u'贷'
673
result['sum_begin_solde'] = abs(sum_begin_solde or 0.0)
674
result['begin_date'] = self.all_dete['period_start_date_start']
675
print 'sum---->',result
678
def _sum_year_amount_solde(self, date):
689
self.cr.execute("SELECT sum(debit) as debit , sum(credit) as credit "\
690
"FROM account_move_line l "\
691
"WHERE l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
692
[('parent_id', 'child_of', self.ids)])))+") "+ " AND l.state='valid' AND l.date <= '" + date +"'"+ " AND l.date >= '" + self.all_dete['fiscalyear_obj_date_start'] + "'"+self.sql_condition)
693
res = self.cr.dictfetchall()
694
sum_year_amount_solde = (res[0]['debit'] or 0.0) - (res[0]['credit'] or 0.0)
695
if sum_year_amount_solde == 0:
696
result['direction'] = u'平'
697
elif sum_year_amount_solde > 0:
698
result['direction'] = u'借'
700
result['direction'] = u'贷'
701
result['balance'] = abs(sum_year_amount_solde or 0.0)
702
result['end_date'] = self.all_dete['fiscalyear_obj_date_start']
703
result['debit'] = res[0]['debit']
704
result['credit'] = res[0]['credit']
707
def _sum_amount_currency_quantiry(self, start_date = False, end_date = False):
712
'sum_debit_amount_currency':0.00,
713
'sum_credit_amount_currency':0.00,
714
'sum_debit_quantity':0.00,
715
'sum_credit_quantity':0.00,
718
end_date_sql = " AND l.date <= '" + end_date +"'"
722
start_date_sql = " AND l.date >= '" + start_date + "'"
727
self.cr.execute("SELECT sum(amount_currency) AS amount_currency, sum(quantity) AS quantity "\
728
" FROM account_move_line l "\
729
" WHERE l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
730
[('parent_id', 'child_of', self.ids)])))+") "+
731
" AND l.state<>'draft' AND l.debit-l.credit>0 " + end_date_sql + start_date_sql + self.sql_condition)
732
debit_res = self.cr.dictfetchall()
735
self.cr.execute("SELECT sum(amount_currency) AS amount_currency, sum(quantity) AS quantity "\
736
" FROM account_move_line l "\
737
" WHERE l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
738
[('parent_id', 'child_of', self.ids)])))+") "+
739
" AND l.state<>'draft' AND l.debit-l.credit<0 " + end_date_sql + start_date_sql + self.sql_condition)
740
cedit_res = self.cr.dictfetchall()
741
if debit_res[0].get('amount_currency',0.00)!= None:
742
result['sum_debit_amount_currency'] = debit_res[0].get('amount_currency',0.00)
743
if debit_res[0].get('quantity',0.00)!=None:
744
result['sum_debit_quantity'] = debit_res[0].get('quantity',0.00)
745
if cedit_res[0].get('amount_currency',0.00)!=None:
746
result['sum_credit_amount_currency'] = cedit_res[0].get('amount_currency',0.00)
747
if cedit_res[0].get('quantity',0.00)!=None:
748
result['sum_credit_quantity'] = cedit_res[0].get('quantity',0.00)
751
def _sum_balance_currency_quantiry(self,date = False, id = False,):
756
'sum_balance_amount_currency':0.00,
757
'sum_balance_quantity':0.00,
759
sum_debit_amount_currency = 0.00
760
sum_credit_amount_currency = 0.00
761
sum_debit_quantity = 0.00
762
sum_credit_quantity = 0.00
763
balance_condition = ' '
765
balance_condition = " AND l.date <= '" + date +"'"
767
balance_condition = " AND (date<'"+str(date)+"' OR (date='"+str(date)+"' AND id<='"+str(id)+"')) "
770
self.cr.execute("SELECT sum(amount_currency) AS amount_currency, sum(quantity) AS quantity"\
771
" FROM account_move_line l "\
772
" WHERE l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
773
[('parent_id', 'child_of', self.ids)])))+") "+
774
" AND l.state<>'draft' AND l.debit-l.credit>0 " + balance_condition + self.sql_condition)
775
debit_res = self.cr.dictfetchall()
778
self.cr.execute("SELECT sum(amount_currency) AS amount_currency, sum(quantity) AS quantity"\
779
" FROM account_move_line l "\
780
" WHERE l.account_id in ("+','.join(map(str, self.pool.get('account.account').search(self.cr, self.uid,
781
[('parent_id', 'child_of', self.ids)])))+") "+
782
" AND l.state<>'draft' AND l.debit-l.credit<0 " + balance_condition + self.sql_condition)
783
cedit_res = self.cr.dictfetchall()
785
if debit_res[0].get('amount_currency',0.0)!=None:
786
sum_debit_amount_currency = debit_res[0].get('amount_currency',0.0)
788
if debit_res[0].get('quantity',0.0)!=None:
789
sum_debit_quantity = debit_res[0].get('quantity',0.0)
791
if cedit_res[0].get('amount_currency',0.0)!=None:
792
sum_credit_amount_currency = cedit_res[0].get('amount_currency',0.0)
794
if cedit_res[0].get('quantity',0.0)!=None:
795
sum_credit_quantity = cedit_res[0].get('quantity',0.0)
797
result['sum_balance_amount_currency'] = abs(sum_debit_amount_currency - sum_credit_amount_currency )
798
result['sum_balance_quantity'] = abs(sum_debit_quantity - sum_credit_quantity )
802
def _sum_begin_balance_amount_currency(self):
806
result = self._sum_balance_currency_quantiry(date = self.all_dete['period_start_date_start'])
809
def _sum_year_balance_amount_currency(self, period):
813
result = self._sum_balance_currency_quantiry(date = period['date_stop'])
816
def _sum_year_amount_currency(self, period):
820
result = self._sum_amount_currency_quantiry(self.all_dete['fiscalyear_obj_date_start'], period['date_stop'])
823
def _sum_amount_currency(self, period):
827
result = self._sum_amount_currency_quantiry(self.all_dete['period_start_date_start'],self.all_dete['period_end_date_stop'])
830
def _sum_year_quantity(self, period):
834
result = self._sum_amount_currency_quantiry(self.all_dete['fiscalyear_obj_date_start'], period['date_stop'])
837
def _sum_amount_quantity(self, form, period=False):
841
result = self._sum_amount_currency_quantiry( self.all_dete['period_start_date_start'], self.all_dete['period_end_date_stop'])
844
def _sum_begin_balance_quantity(self):
848
result = self._sum_balance_currency_quantiry(date = self.all_dete['period_start_date_start'])
851
def _sum_year_balance_quantity(self,period):
855
result = self._sum_balance_currency_quantiry(date = period['date_stop'])
858
def _sum_debit(self, form, period=False):
865
self.cr.execute("SELECT sum(debit) "\
866
"FROM account_move_line l "\
867
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" +self.all_dete['period_end_date_stop'] + "'" + " AND l.date > '" + self.all_dete['period_start_date_start'] +"'"+self.sql_condition)
869
self.cr.execute("SELECT sum(debit) "\
870
"FROM account_move_line l "\
871
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" + period['date_stop'] + "'" + " AND l.date > '" + period['date_start'] +"'"+self.sql_condition)
872
sum_debit = self.cr.fetchone()[0] or 0.0
875
def _sum_credit(self, form, period=False):
882
self.cr.execute("SELECT sum(credit) "\
883
"FROM account_move_line l "\
884
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" +self.all_dete['period_end_date_stop'] + "'" + " AND l.date > '" + self.all_dete['period_start_date_start'] +"'"+self.sql_condition)
886
self.cr.execute("SELECT sum(credit) "\
887
"FROM account_move_line l "\
888
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" + period['date_stop'] + "'" + " AND l.date > '" + period['date_start'] +"'"+self.sql_condition)
889
## Add solde init to the result
890
sum_credit = self.cr.fetchone()[0] or 0.0
893
def _sum_solde(self, form, period=False):
900
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
901
"FROM account_move_line l "\
902
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" +self.all_dete['period_end_date_stop'] + "'" + " AND l.date > '" + self.all_dete['period_start_date_start'] +"'"+self.sql_condition)
904
self.cr.execute("SELECT (sum(debit) - sum(credit)) as tot_solde "\
905
"FROM account_move_line l "\
906
"WHERE l.account_id in ("+','.join(map(str, self.child_ids))+") AND "+self.query + " AND l.date < '" + period['date_stop'] + "'" + " AND l.date > '" + period['date_start'] +"'"+self.sql_condition)
907
sum_solde = abs(self.cr.fetchone()[0] or 0.0)
911
def _set_get_account_currency_code(self, account_id):
912
self.cr.execute("SELECT c.code as code "\
913
"FROM res_currency c,account_account as ac "\
914
"WHERE ac.id = %s AND ac.currency_id = c.id"%(account_id))
915
result = self.cr.fetchone()
917
self.account_currency = result[0]
919
self.account_currency = False
922
def _get_direction(self, balance):
933
def _get_account_name(self,account):
938
account_name = self.pool.get('account.account').name_get(self.cr, self.uid, id,{})
939
return account_name[0][1]
942
class cash_journal_parser(detail_ledger_parser):
946
def __init__(self, cr, uid, name, context):
947
super(cash_journal_parser, self).__init__(cr, uid, name, context)
948
self.localcontext.update({
952
def days(self, account, form, period):
954
从 account.move.line 里按日期分组
955
也就是把所有的凭证明细的不同日分出来,方便计算单日合计
958
SELECT l.date AS date, SUM(l.debit) AS debit, SUM(l.credit) AS credit, MAX(l.id) AS last_line_id, sum(l.amount_currency) AS sum_currency
959
FROM account_move_line AS l
960
LEFT JOIN res_currency c on (l.currency_id=c.id)
961
JOIN account_journal j on (l.journal_id=j.id)
967
ORDER BY l.date """ % (self.query)
968
max_date = period['date_stop']
969
min_date = period['date_start']
970
self.cr.execute(sql, (account.id, max_date, min_date))
972
res = self.cr.dictfetchall()
973
account_move_line_obj = self.pool.get('account.move.line')
976
day['sum_balance_amount_currency'] = (self._sum_balance_currency_quantiry( date = str(day.get('date','')))).get('sum_balance_amount_currency',0.0)
977
day['sum_debit_amount_currency'] = (self._sum_amount_currency_quantiry( start_date = str(day.get('date','')),end_date = str(day.get('date','')))).get('sum_debit_amount_currency',0.0)
978
day['sum_credit_amount_currency'] = (self._sum_amount_currency_quantiry( start_date = str(day.get('date','')),end_date = str(day.get('date','')))).get('sum_credit_amount_currency',0.0)
979
line = self.pool.get('account.move.line').browse(self.cr, self.uid, day['last_line_id'])
980
day['balance'] = abs(line.balance)
981
if(type(day['debit']) == type(None)):
982
day['debit'] = 0.0 # by mrshelly 只是为了报表出来.这里需要处理.
983
if(type(day['credit']) == type(None)):
984
day['credit'] = 0.0 # by mrshelly 只是为了报表出来.这里需要处理.
993
report_sxw.report_sxw('report.account.cash_journal', 'account.account', 'addons/oecn_account_print/report/cash_journal.rml', parser=cash_journal_parser, header=False)
996
report_sxw.report_sxw('report.account.foreign_currency_cash_journal', 'account.account', 'addons/oecn_account_print/report/foreign_currency_cash_journal.rml', parser=cash_journal_parser, header=False)
999
report_sxw.report_sxw('report.account.threecolumns_ledger', 'account.account', 'addons/oecn_account_print/report/threecolumns_ledger.rml', parser=detail_ledger_parser, header=False)
1002
report_sxw.report_sxw('report.account.stock_ledger', 'account.account', 'addons/oecn_account_print/report/stock_ledger.odt', parser=detail_ledger_parser, header=False)
1004
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: