summaryrefslogtreecommitdiff
path: root/indoteknik_custom/controllers/api/sale_order.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/controllers/api/sale_order.py')
-rw-r--r--indoteknik_custom/controllers/api/sale_order.py195
1 files changed, 93 insertions, 102 deletions
diff --git a/indoteknik_custom/controllers/api/sale_order.py b/indoteknik_custom/controllers/api/sale_order.py
index 4194bcb6..c00a94d3 100644
--- a/indoteknik_custom/controllers/api/sale_order.py
+++ b/indoteknik_custom/controllers/api/sale_order.py
@@ -1,119 +1,110 @@
from .. import api_controller
from odoo import http
from odoo.http import request
-import json
class SaleOrderApi(api_controller.ApiController):
@http.route('/api/sale_order/invoiced', auth='public', methods=['GET'])
- def get_sale_order_invoiced_by_partner_id(self, partner_id=None, **kw):
+ def get_sale_order_invoiced_by_partner_id(self, **kw):
self.authenticate(kw)
- response = []
- if partner_id:
- # Get company member by partner_id
- parent_partner_id = request.env['res.partner'].search([('id', '=', int(partner_id))], limit=1).parent_id.id
- partner_childs = request.env['res.partner'].search([('parent_id', '=', int(parent_partner_id))])
- partner_child_ids = [v['id'] for v in partner_childs] + [int(partner_id)]
+ partner_id = kw.get('partner_id')
+ if not partner_id:
+ return self.response(code=400, description='Field partner_id is required')
- # Get sale order by company member and invoiced
- default_domain = [
- ('partner_id', 'in', partner_child_ids),
- '|',
- ('invoice_status', '=', 'invoiced'),
- ('invoice_status', '=', 'to_invoice')
- ]
- sale_orders = self.search_with_api_params('sale.order', kw, default_domain)
- for sale_order in sale_orders:
- pickings = []
- for picking in sale_order.picking_ids:
- if picking.state in ['confirmed', 'assigned', 'done']:
- pickings.append({
- 'id': picking.id,
- 'name': picking.name,
- 'delivery_address': picking.partner_id.street,
- 'delivery_tracking_no': picking.delivery_tracking_no,
- 'delivery_status': picking.delivery_status
- })
+ partner_id = int(partner_id)
+ # Get company member by partner_id
+ parent_partner_id = request.env['res.partner'].search([('id', '=', partner_id)], limit=1).parent_id.id
+ partner_childs = request.env['res.partner'].search([('parent_id', '=', int(parent_partner_id))])
+ partner_child_ids = [v['id'] for v in partner_childs] + [partner_id]
- response.append({
- 'id': sale_order.id,
- 'name': sale_order.name,
- 'amount_total': sale_order.amount_total,
- 'salesperson': sale_order.user_id.name,
- 'date_order': self.time_to_str(sale_order.date_order, '%d/%m/%Y'),
- 'pickings': pickings,
- 'access_token': sale_order.access_token
- })
- return json.dumps(response)
+ # Get sale order by company member and invoiced
+ data = []
+ default_domain = [
+ ('partner_id', 'in', partner_child_ids),
+ '|',
+ ('invoice_status', '=', 'invoiced'),
+ ('invoice_status', '=', 'to_invoice')
+ ]
+ sale_orders = self.search_with_api_params('sale.order', kw, default_domain)
+ for sale_order in sale_orders:
+ pickings = []
+ for picking in sale_order.picking_ids:
+ if picking.state in ['confirmed', 'assigned', 'done']:
+ pickings.append({
+ 'id': picking.id,
+ 'name': picking.name,
+ 'delivery_address': picking.partner_id.street,
+ 'delivery_tracking_no': picking.delivery_tracking_no,
+ 'delivery_status': picking.delivery_status
+ })
- # @http.route('/api/test', auth='public', methods=['GET'])
- # def test(self, **kw):
- # self.authenticate(kw)
- # response = []
- # products = self.search_with_api_params('product.template', kw)
- # for product in products:
- # response.append({
- # 'id': product.id,
- # 'name': product.name
- # })
- # return json.dumps(response)
+ data.append({
+ 'id': sale_order.id,
+ 'name': sale_order.name,
+ 'amount_total': sale_order.amount_total,
+ 'salesperson': sale_order.user_id.name,
+ 'date_order': self.time_to_str(sale_order.date_order, '%d/%m/%Y'),
+ 'pickings': pickings,
+ 'access_token': sale_order.access_token
+ })
+ return self.response(data)
@http.route('/api/sale_order/invoiced/detail', auth='public', methods=['GET'])
- def get_sale_order_invoiced_detail(self, id=None, partner_id=None, **kw):
+ def get_sale_order_invoiced_detail_by_partner(self, **kw):
self.authenticate(kw)
- response = {}
- if id:
- default_domain = [
- ('id', '=', id),
- '|',
- ('invoice_status', '=', 'invoiced'),
- ('invoice_status', '=', 'to_invoice')
- ]
- if partner_id:
- # Get company member by partner_id
- parent_partner_id = request.env['res.partner'].search([('id', '=', int(partner_id))], limit=1).parent_id.id
- partner_childs = request.env['res.partner'].search([('parent_id', '=', int(parent_partner_id))])
- partner_child_ids = [v['id'] for v in partner_childs] + [int(partner_id)]
- default_domain.append(('partner_id', 'in', partner_child_ids))
- sale_order = self.search_with_api_params('sale.order', kw, default_domain)
- if sale_order:
- orders = []
- for order in sale_order.order_line:
- orders.append({
- 'name': order.name,
- 'product_qty': order.product_qty,
- 'price_unit': order.price_unit,
- 'price_tax': order.price_tax,
- 'price_total': order.price_total,
- 'price_subtotal': order.price_subtotal,
- 'tax': order.tax_id.name,
- 'discount': order.discount,
- })
+ id = kw.get('id')
+ partner_id = kw.get('partner_id')
+ if not id:
+ return self.response(code=400, description='Field id is required')
+ if not partner_id:
+ return self.response(code=400, description='Field partner_id is required')
+
+ default_domain = [
+ ('id', '=', id),
+ '|',
+ ('invoice_status', '=', 'invoiced'),
+ ('invoice_status', '=', 'to_invoice')
+ ]
+ parent_partner_id = request.env['res.partner'].search([('id', '=', int(partner_id))], limit=1).parent_id.id
+ partner_childs = request.env['res.partner'].search([('parent_id', '=', int(parent_partner_id))])
+ partner_child_ids = [v['id'] for v in partner_childs] + [int(partner_id)]
+ default_domain.append(('partner_id', 'in', partner_child_ids))
+
+ sale_order = self.search_with_api_params('sale.order', kw, default_domain)
+ orders = []
+ for order in sale_order.order_line:
+ orders.append({
+ 'name': order.name,
+ 'product_qty': order.product_qty,
+ 'price_unit': order.price_unit,
+ 'price_tax': order.price_tax,
+ 'price_total': order.price_total,
+ 'price_subtotal': order.price_subtotal,
+ 'tax': order.tax_id.name,
+ 'discount': order.discount,
+ })
- response.update({
- 'id': sale_order.id,
- 'name': sale_order.name,
- 'carrier': sale_order.carrier_id.name,
- 'partner': {
- 'id': sale_order.partner_id.id,
- 'name': sale_order.partner_id.name,
- 'mobile': sale_order.partner_id.mobile,
- 'email': sale_order.partner_id.email
- },
- 'delivery_address': sale_order.partner_shipping_id.street,
- 'delivery_method': sale_order.carrier_id.name,
- 'payment_term': sale_order.payment_term_id.name,
- 'salesperson': sale_order.user_id.name,
- 'date_order': self.time_to_str(sale_order.date_order, '%d/%m/%Y %H:%M:%S'),
- 'note': sale_order.note,
- 'amount_untaxed': sale_order.amount_untaxed,
- 'amount_tax': sale_order.amount_tax,
- 'amount_total': sale_order.amount_total,
- 'orders': orders
- })
- return json.dumps(response)
+ data = {
+ 'id': sale_order.id,
+ 'name': sale_order.name,
+ 'carrier': sale_order.carrier_id.name,
+ 'partner': {
+ 'id': sale_order.partner_id.id,
+ 'name': sale_order.partner_id.name,
+ 'mobile': sale_order.partner_id.mobile,
+ 'email': sale_order.partner_id.email
+ },
+ 'delivery_address': sale_order.partner_shipping_id.street,
+ 'delivery_method': sale_order.carrier_id.name,
+ 'payment_term': sale_order.payment_term_id.name,
+ 'salesperson': sale_order.user_id.name,
+ 'date_order': self.time_to_str(sale_order.date_order, '%d/%m/%Y %H:%M:%S'),
+ 'note': sale_order.note,
+ 'amount_untaxed': sale_order.amount_untaxed,
+ 'amount_tax': sale_order.amount_tax,
+ 'amount_total': sale_order.amount_total,
+ 'orders': orders
+ }
- @http.route('/api/sale_order', auth='public', methods=['POST'], csrf=False)
- def post_sale_order(self, **kw):
- return json.dumps(['a'])
+ return self.response(data)