diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-09 09:52:51 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-07-09 09:52:51 +0700 |
| commit | 22d34a07dc8755158f0c85b15d60e348deda0fc2 (patch) | |
| tree | 978b7656c82e8c6027cad3b92102262911dd60dc | |
| parent | c00744390dbd913a2be027be8ec3b9739c927a55 (diff) | |
sale order line reject abl
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 30 | ||||
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/sales_order_reject.py | 15 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 17 |
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"/> |
