summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-07-09 09:52:51 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-07-09 09:52:51 +0700
commit22d34a07dc8755158f0c85b15d60e348deda0fc2 (patch)
tree978b7656c82e8c6027cad3b92102262911dd60dc
parentc00744390dbd913a2be027be8ec3b9739c927a55 (diff)
sale order line reject abl
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py30
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rwxr-xr-xindoteknik_custom/models/sale_order.py1
-rw-r--r--indoteknik_custom/models/sales_order_reject.py15
-rwxr-xr-xindoteknik_custom/security/ir.model.access.csv1
-rwxr-xr-xindoteknik_custom/views/sale_order.xml17
6 files changed, 65 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index ee295b55..9117210f 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -9,6 +9,36 @@ class SaleOrder(controller.Controller):
prefix = '/api/v1/'
PREFIX_PARTNER = prefix + 'partner/<partner_id>/'
+ @http.route(prefix + "sale_order/<id>/reject/<product_id>", auth='public', method=['POST', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized()
+ def reject_sale_order_line(self, **kw):
+ so_id = int(kw.get('id', '0'))
+ product_id = int(kw.get('product_id', '0'))
+ params = self.get_request_params(kw, {
+ 'reason_reject': []
+ })
+
+ sale_order_line = request.env['sale.order.line'].search([
+ ('product_id', '=', product_id),
+ ('order_id', '=', so_id)
+ ], limit=1)
+
+ if sale_order_line:
+ parameters = {
+ 'sale_order_id': sale_order_line.order_id.id,
+ 'product_id': sale_order_line.product_id.id,
+ 'qty_reject': sale_order_line.product_uom_qty,
+ 'reason_reject': params['value']['reason_reject'],
+ }
+
+ sale_order_reject = request.env['sales.order.reject'].create(parameters)
+
+ sale_order_line.unlink()
+
+ return self.response('work')
+ else:
+ return self.response('Sale order line not found', status=404)
+
@http.route(prefix + "sale_order_number", auth='public', method=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_number_sale_order(self, **kw):
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index 10f4acee..4b8716fa 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -121,3 +121,4 @@ from . import logbook_bill
from . import report_logbook_bill
from . import sale_order_multi_uangmuka_penjualan
from . import shipment_group
+from . import sales_order_reject
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 0d28e677..4a40bccc 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -11,6 +11,7 @@ class SaleOrder(models.Model):
_inherit = "sale.order"
fullfillment_line = fields.One2many('sales.order.fullfillment', 'sales_order_id', string='Fullfillment')
+ reject_line = fields.One2many('sales.order.reject', 'sale_order_id', string='Reject Lines')
order_sales_match_line = fields.One2many('sales.order.purchase.match', 'sales_order_id', string='Purchase Match Lines', states={'cancel': [('readonly', True)], 'done': [('readonly', True)]}, copy=True)
total_margin = fields.Float('Total Margin', compute='_compute_total_margin', help="Total Margin in Sales Order Header")
total_percent_margin = fields.Float('Total Percent Margin', compute='_compute_total_percent_margin', help="Total % Margin in Sales Order Header")
diff --git a/indoteknik_custom/models/sales_order_reject.py b/indoteknik_custom/models/sales_order_reject.py
new file mode 100644
index 00000000..9983c64e
--- /dev/null
+++ b/indoteknik_custom/models/sales_order_reject.py
@@ -0,0 +1,15 @@
+from odoo import fields, models, api, _
+from odoo.exceptions import AccessError, UserError, ValidationError
+from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class SalesOrderReject(models.Model):
+ _name = 'sales.order.reject'
+
+ sale_order_id = fields.Many2one('sale.order', string='Sale Order')
+ product_id = fields.Many2one('product.product', string='Product')
+ qty_reject = fields.Float(string='Qty')
+ reason_reject = fields.Char(string='Reason Reject')
diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv
index d33ec5e3..1fcae5f1 100755
--- a/indoteknik_custom/security/ir.model.access.csv
+++ b/indoteknik_custom/security/ir.model.access.csv
@@ -130,3 +130,4 @@ access_report_logbook_bill_line,access.report.logbook.sj.line,model_report_logbo
access_sale_order_multi_uangmuka_penjualan,access.sale.order.multi_uangmuka_penjualan,model_sale_order_multi_uangmuka_penjualan,,1,1,1,1
access_shipment_group,access.shipment.group,model_shipment_group,,1,1,1,1
access_shipment_group_line,access.shipment.group.line,model_shipment_group_line,,1,1,1,1
+access_sales_order_reject,access.sales.order.reject,model_sales_order_reject,,1,1,1,1
diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml
index 3eec6d3e..ead6bc5c 100755
--- a/indoteknik_custom/views/sale_order.xml
+++ b/indoteknik_custom/views/sale_order.xml
@@ -192,6 +192,9 @@
<page string="Fullfillment" name="page_sale_order_fullfillment">
<field name="fullfillment_line" readonly="1"/>
</page>
+ <page string="Reject Line" name="page_sale_order_reject_line">
+ <field name="reject_line" readonly="1"/>
+ </page>
</page>
</field>
</record>
@@ -314,6 +317,20 @@
</data>
<data>
+ <record id="sales_order_reject_tree" model="ir.ui.view">
+ <field name="name">sales.order.reject.tree</field>
+ <field name="model">sales.order.reject</field>
+ <field name="arch" type="xml">
+ <tree editable="top" create="false">
+ <field name="product_id" readonly="1"/>
+ <field name="qty_reject" readonly="1"/>
+ <field name="reason_reject" readonly="1"/>
+ </tree>
+ </field>
+ </record>
+ </data>
+
+ <data>
<record id="sale_order_multi_create_uangmuka_ir_actions_server" model="ir.actions.server">
<field name="name">Uang Muka</field>
<field name="model_id" ref="sale.model_sale_order"/>