@http.route('/sc_ding/search_finance', type='http', auth="none", csrf=False)
def sc_ding_search_finance(self, model='res.company', id=None, **kw):
cr, uid, context, pool = request.cr, odoo.SUPERUSER_ID, request.context, request.env
values = {}
year = datetime.now().year
name = []
in_amount = []
out_amount = []
amount = 0.00
category = pool['ri.account.category'].sudo().search([('parent_id', '=', False)])
for line in category:
name.append(line.name)
domains = []
if kw.get('type') == 'month':
domain = [('month', '=', int(kw.get('month')))]
domains.append(domain)
if kw.get('type') == 'week':
domain = [('week', '=', int(kw.get('week')))]
domains.append(domain)
if kw.get('type') == 'year':
domain = [('year', '=', int(kw.get('year')))]
domains.append(domain)
if kw.get('type') == 'quarter':
domain = [('date', '>=', kw.get('data_start')), ('date', '<=', kw.get('data_end'))]
domains.append(domain)
domain = [('category_id', 'in', line.child_id._ids), ('state', '=', '已审核')]
domains.append(domain)
domain = expression.AND(domains)
order_groups = pool['ri.account.line'].sudo().read_group(domain=domain, fields=['amount'],
groupby=['type'], orderby="parent_id desc")
category_in_amount = 0.00
category_out_amount =0.00
for group in order_groups:
if group['type'] == 'in':
category_in_amount = category_in_amount + group['amount']
amount += group['amount']
elif group['type'] == 'out':
category_out_amount = category_out_amount + group['amount']
amount = amount - group['amount']
in_amount.append(category_in_amount/10000)
out_amount.append(-category_out_amount/10000)
values['name'] = name
values['in_amount'] = in_amount
values['out_amount'] = out_amount
values['amount'] = amount/10000
return json.dumps(values)