diff options
Diffstat (limited to 'indoteknik_api/controllers/api_v1/invoice.py')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/invoice.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/indoteknik_api/controllers/api_v1/invoice.py b/indoteknik_api/controllers/api_v1/invoice.py index 4937e8dd..4bd3746c 100644 --- a/indoteknik_api/controllers/api_v1/invoice.py +++ b/indoteknik_api/controllers/api_v1/invoice.py @@ -1,7 +1,7 @@ from .. import controller from odoo import http from odoo.http import request - +from odoo import fields class Invoice(controller.Controller): PREFIX = '/api/v1/' @@ -15,6 +15,7 @@ class Invoice(controller.Controller): 'name': [], 'limit': ['default:0', 'number'], 'offset': ['default:0', 'number'], + 'status': [], }) limit = params['value']['limit'] offset = params['value']['offset'] @@ -27,6 +28,11 @@ class Invoice(controller.Controller): ('state', '=', 'posted'), ('partner_id', 'in', partner_child_ids) ] + domain_orders = [ + ('invoice_status', '!=', 'invoiced'), + ('state', '=', 'sale'), + ('partner_id', 'in', partner_child_ids) + ] if params['value']['name']: name = params['value']['name'].replace(' ', '%') domain += [ @@ -34,10 +40,25 @@ class Invoice(controller.Controller): ('name', 'ilike', '%'+ name +'%'), ('ref', 'ilike', '%'+ name +'%') ] + if params['value']['status']: + if params['value']['status'] == '1': + domain += [('payment_state', '=', 'not_paid'), ('invoice_date_due', '<', fields.Date.today())] + elif params['value']['status'] == '2': + domain += [('payment_state', '=', 'not_paid'), ('invoice_date_due', '>', fields.Date.today())] + elif params['value']['status'] == '3': + domain += [('payment_state', '=', 'paid')] + elif params['value']['status'] == '0': + domain = domain + elif params['value']['status'] == '4': + domain += [('payment_state', '=', 'not_paid')] + invoices = request.env['account.move'].search(domain, offset=offset, limit=limit) + sale_orders = request.env['sale.order'].search(domain_orders, offset=offset, limit=limit) data = { 'invoice_total': request.env['account.move'].search_count(domain), - 'invoices': [request.env['account.move'].api_v1_single_response(x) for x in invoices] + 'invoices': [request.env['account.move'].api_v1_single_response(x) for x in invoices], + 'sale_order_total': request.env['sale.order'].search_count(domain_orders), + 'sale_orders': [request.env['sale.order'].api_v1_single_response(x) for x in sale_orders] } return self.response(data) |
