diff --git a/request_document/__manifest__.py b/request_document/__manifest__.py index f66e9830..842b3930 100644 --- a/request_document/__manifest__.py +++ b/request_document/__manifest__.py @@ -11,11 +11,11 @@ "depends": ["base", "mail"], "data": [ "security/ir.model.access.csv", - "security/request_request_security.xml", - "data/request_request_data.xml", + "security/request_order_security.xml", + "data/request_order_data.xml", "views/request_menuitem.xml", "views/res_config_settings_views.xml", - "views/request_request_view.xml", + "views/request_order_view.xml", "views/request_document_view.xml", ], "installable": True, diff --git a/request_document/data/request_request_data.xml b/request_document/data/request_order_data.xml similarity index 83% rename from request_document/data/request_request_data.xml rename to request_document/data/request_order_data.xml index d21e7a09..7619c7d0 100644 --- a/request_document/data/request_request_data.xml +++ b/request_document/data/request_order_data.xml @@ -2,7 +2,7 @@ Request Sequence - request.request + request.order RQ diff --git a/request_document/models/__init__.py b/request_document/models/__init__.py index dacf659a..3a5221ef 100644 --- a/request_document/models/__init__.py +++ b/request_document/models/__init__.py @@ -1,4 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import request_request +from . import request_order from . import request_document diff --git a/request_document/models/request_document.py b/request_document/models/request_document.py index f9b234fe..b7c60e7b 100644 --- a/request_document/models/request_document.py +++ b/request_document/models/request_document.py @@ -9,7 +9,7 @@ class RequestDocument(models.Model): _description = "Request Document" request_id = fields.Many2one( - comodel_name="request.request", + comodel_name="request.order", index=True, required=True, ondelete="cascade", @@ -19,6 +19,16 @@ class RequestDocument(models.Model): store=True, string="Reference", ) + name_document = fields.Char( + string="Document", + compute="_compute_document", + store=True, + ) + total_amount_request = fields.Monetary() + total_amount_document = fields.Monetary( + compute="_compute_document", + store=True, + ) request_type = fields.Selection( selection=[], required=True, @@ -48,3 +58,11 @@ def _compute_name_document(self): for rec in self: if rec.id: rec.name = f"{rec.request_id.name} - {rec.id}" + + def open_request_document(self): + return + + def _compute_document(self): + for rec in self: + rec.name_document = "" + rec.total_amount_document = 0.0 diff --git a/request_document/models/request_request.py b/request_document/models/request_order.py similarity index 52% rename from request_document/models/request_request.py rename to request_document/models/request_order.py index 314b7d9b..7a943f3d 100644 --- a/request_document/models/request_request.py +++ b/request_document/models/request_order.py @@ -4,10 +4,10 @@ from odoo import api, fields, models -class RequestRequest(models.Model): - _name = "request.request" +class RequestOrder(models.Model): + _name = "request.order" _inherit = ["mail.thread", "mail.activity.mixin"] - _description = "Request Header" + _description = "Request Order" _check_company_auto = True _order = "name desc" @@ -22,6 +22,9 @@ class RequestRequest(models.Model): required=True, default=lambda self: self.env.company, ) + currency_id = fields.Many2one( + comodel_name="res.currency", related="company_id.currency_id" + ) line_ids = fields.One2many( comodel_name="request.document", inverse_name="request_id", @@ -39,40 +42,58 @@ class RequestRequest(models.Model): default="draft", tracking=True, ) + total_amount_document = fields.Monetary( + compute="_compute_total_amount", + store=True, + tracking=True, + ) + total_amount_request = fields.Monetary( + compute="_compute_total_amount", + store=True, + tracking=True, + ) + + @api.depends("line_ids.total_amount_document", "line_ids.total_amount_request") + def _compute_total_amount(self): + for rec in self: + request_document = rec.line_ids + rec.total_amount_document = sum( + request_document.mapped("total_amount_document") + ) + rec.total_amount_request = sum( + request_document.mapped("total_amount_request") + ) @api.model_create_multi def create(self, vals_list): for vals in vals_list: if vals.get("name", "/") == "/": vals["name"] = ( - self.env["ir.sequence"].next_by_code("request.request") or "/" + self.env["ir.sequence"].next_by_code("request.order") or "/" ) return super().create(vals_list) def action_submit(self): - self.write({"state": "submit"}) - return True + for rec in self: + for line in rec.line_ids: + line.total_amount_request = line.total_amount_document + return self.write({"state": "submit"}) def action_approve(self): - self.write({"state": "approve"}) - return True + return self.write({"state": "approve"}) def action_done(self): - self.write({"state": "done"}) - return True + return self.write({"state": "done"}) - def action_create_document(self): - """Hook method to create document""" + def action_process_document(self): + """Hook method to process document""" for rec in self: for line in rec.line_ids: getattr(line, "_create_%s" % line.request_type)() - self.action_done() - return True + return self.action_done() def action_cancel(self): - self.write({"state": "cancel"}) - return True + return self.write({"state": "cancel"}) def action_draft(self): - self.write({"state": "draft"}) - return True + return self.write({"state": "draft"}) diff --git a/request_document/security/ir.model.access.csv b/request_document/security/ir.model.access.csv index 1923c5c2..6bfa73ab 100644 --- a/request_document/security/ir.model.access.csv +++ b/request_document/security/ir.model.access.csv @@ -1,3 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_request_request,access_request_request,model_request_request,,1,1,1,1 +access_request_order,access_request_order,model_request_order,,1,1,1,1 access_request_document,access_request_document,model_request_document,,1,1,1,1 diff --git a/request_document/security/request_request_security.xml b/request_document/security/request_order_security.xml similarity index 70% rename from request_document/security/request_request_security.xml rename to request_document/security/request_order_security.xml index b65d2cf8..567fc2f3 100644 --- a/request_document/security/request_request_security.xml +++ b/request_document/security/request_order_security.xml @@ -1,8 +1,8 @@ - + Request multi-company - + ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] diff --git a/request_document/views/request_document_view.xml b/request_document/views/request_document_view.xml index 97fe8c49..a00813d7 100644 --- a/request_document/views/request_document_view.xml +++ b/request_document/views/request_document_view.xml @@ -4,47 +4,33 @@ view.request.document.line.tree request.document - + + + + + +