summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-07-31 15:51:03 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-07-31 15:51:03 +0700
commitdddfd3846d37e24c5b52cc98bbe889bd4a958775 (patch)
tree4c29467ca70f45ae0ee3744dfa2b86010e45e865 /indoteknik_api
parentaeb4fc3b4b8a4c38d6628946232c236a4d2fe2a9 (diff)
<hafid> repeat order
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py33
-rw-r--r--indoteknik_api/models/sale_order.py1
2 files changed, 24 insertions, 10 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 0527345e..fd460ea0 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -1,5 +1,5 @@
from .. import controller
-from odoo import http
+from odoo import http, fields
from datetime import datetime, timedelta
from odoo.http import request
import json
@@ -127,10 +127,19 @@ class SaleOrder(controller.Controller):
if params['value']['name']:
name = params['value']['name'].replace(' ', '%')
- domain += [
+ order_lines = request.env['sale.order.line'].search([
+ ('order_id.partner_id', 'in', partner_child_ids),
'|',
- ('name', 'ilike', '%' + name + '%'),
- ('partner_purchase_order_name', 'ilike', '%' + name + '%')
+ ('product_id.name', 'ilike', name),
+ ('product_id.default_code', 'ilike', name),
+ ])
+
+ sale_order_ids_from_lines = order_lines.mapped('order_id.id')
+
+ domain += ['|', '|',
+ ('name', 'ilike', name),
+ ('partner_purchase_order_name', 'ilike', name),
+ ('id', 'in', sale_order_ids_from_lines)
]
if params['value']['site']:
@@ -169,15 +178,19 @@ class SaleOrder(controller.Controller):
order = 'amount_total desc'
# Filter berdasarkan tanggal order
- if params['value']['startDate'] and params['value']['endDate']:
- try:
+ try:
+ if params['value']['startDate'] and params['value']['endDate']:
start_date = datetime.strptime(params['value']['startDate'], '%d/%m/%Y').strftime('%Y-%m-%d 00:00:00')
end_date = datetime.strptime(params['value']['endDate'], '%d/%m/%Y').strftime('%Y-%m-%d 23:59:59')
+ else:
+ start_date = '2023-01-01 00:00:00'
+ end_date = fields.Datetime.now().strftime('%Y-%m-%d 23:59:59')
+
+ domain.append(('date_order', '>=', start_date))
+ domain.append(('date_order', '<=', end_date))
- domain.append(('date_order', '>=', start_date))
- domain.append(('date_order', '<=', end_date))
- except ValueError:
- return self.response(code=400, description="Invalid date format. Use 'DD/MM/YYYY'.")
+ except ValueError:
+ return self.response(code=400, description="Invalid date format. Use 'DD/MM/YYYY'.")
diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py
index 54b4a6dc..615dcdcb 100644
--- a/indoteknik_api/models/sale_order.py
+++ b/indoteknik_api/models/sale_order.py
@@ -1,4 +1,5 @@
from odoo import models
+from datetime import datetime
class SaleOrder(models.Model):