Skip to content

[15.0][IMP] request_document_*: create original document to draft when create Request #246

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 15.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions request_document/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<odoo noupdate="1">
<record id="seq_request" model="ir.sequence">
<field name="name">Request Sequence</field>
<field name="code">request.request</field>
<field name="code">request.order</field>
<field name="padding" eval="5" />
<field name="prefix">RQ</field>
</record>
Expand Down
2 changes: 1 addition & 1 deletion request_document/models/__init__.py
Original file line number Diff line number Diff line change
@@ -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
20 changes: 19 additions & 1 deletion request_document/models/request_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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,
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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",
Expand All @@ -39,40 +42,50 @@ class RequestRequest(models.Model):
default="draft",
tracking=True,
)
total_amount_document = fields.Monetary(compute="_compute_total_amount")
total_amount_request = fields.Monetary(compute="_compute_total_amount")

@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"})
2 changes: 1 addition & 1 deletion request_document/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="request_request_rule" model="ir.rule">
<record id="request_order_rule" model="ir.rule">
<field name="name">Request multi-company</field>
<field name="model_id" ref="model_request_request" />
<field name="model_id" ref="model_request_order" />
<field name="domain_force">
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]
</field>
Expand Down
46 changes: 16 additions & 30 deletions request_document/views/request_document_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,33 @@
<field name="name">view.request.document.line.tree</field>
<field name="model">request.document</field>
<field name="arch" type="xml">
<tree>
<tree editable="bottom">
<field name="name" />
<field name="request_type" />
<field name="name_document" />
<field name="total_amount_document" sum="total_document" />
<field name="total_amount_request" readonly="1" sum="total_request" />
<field name="currency_id" invisible="1" />
<button
name="open_request_document"
icon="fa-file-text-o"
string="Open Details"
type="object"
/>
</tree>
</field>
</record>
<record id="view_request_document_form" model="ir.ui.view">
<field name="name">view.request.document.form</field>

<!-- <record id="view_request_document_form" model="ir.ui.view">
<field name="name">view.request.document.line.form</field>
<field name="model">request.document</field>
<field name="arch" type="xml">
<form>
<header>
<field
name="state"
widget="statusbar"
statusbar_visible="draft,submit,approve,done"
/>
</header>
<sheet>
<group>
<group name="document_left">
<field
name="name"
attrs="{'invisible': [('name', '=', False)]}"
/>
<field name="request_type" />
</group>
<group name="document_right">
<field
name="company_id"
groups="base.group_multi_company"
/>
<field
name="currency_id"
groups="base.group_multi_currency"
/>
</group>
</group>
<>
</sheet>
</form>
</field>
</record>
</record> -->

</odoo>
4 changes: 2 additions & 2 deletions request_document/views/request_menuitem.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
<menuitem id="request_menu" name="Request" sequence="300" />
<!-- Header menu -->
<menuitem
id="request_request_menu"
id="request_order_menu"
parent="request_menu"
name="Request"
name="Requests"
sequence="10"
/>
<menuitem
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_request_request_tree" model="ir.ui.view">
<field name="name">view.request.request.tree</field>
<field name="model">request.request</field>
<record id="view_request_order_tree" model="ir.ui.view">
<field name="name">view.request.order.tree</field>
<field name="model">request.order</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
Expand All @@ -17,9 +17,9 @@
</tree>
</field>
</record>
<record id="view_request_request_form" model="ir.ui.view">
<field name="name">view.request.request.form</field>
<field name="model">request.request</field>
<record id="view_request_order_form" model="ir.ui.view">
<field name="name">view.request.order.form</field>
<field name="model">request.order</field>
<field name="arch" type="xml">
<form string="Request">
<header>
Expand All @@ -38,9 +38,9 @@
class="oe_highlight"
/>
<button
name="action_create_document"
name="action_process_document"
states="approve"
string="Create Document"
string="Done"
type="object"
class="oe_highlight"
/>
Expand Down Expand Up @@ -78,11 +78,22 @@
name="company_id"
groups="base.group_multi_company"
/>
<field
name="currency_id"
groups="base.group_multi_currency"
/>
</group>
</group>
<notebook>
<page name="request_document_line" string="Document">
<page name="request_document" string="Document">
<field name="line_ids" />
<group
name="total_amount"
class="oe_subtotal_footer oe_right"
>
<field name="total_amount_document" />
<field name="total_amount_request" />
</group>
</page>
</notebook>
</sheet>
Expand All @@ -94,9 +105,9 @@
</form>
</field>
</record>
<record id="view_request_request_search" model="ir.ui.view">
<field name="name">view.request.request.search</field>
<field name="model">request.request</field>
<record id="view_request_order_search" model="ir.ui.view">
<field name="name">view.request.order.search</field>
<field name="model">request.order</field>
<field name="arch" type="xml">
<search>
<field name="name" />
Expand All @@ -119,16 +130,16 @@
</field>
</record>

<record id="action_request_request" model="ir.actions.act_window">
<field name="name">Requests</field>
<field name="view_id" ref="view_request_request_tree" />
<field name="res_model">request.request</field>
<record id="action_request_order" model="ir.actions.act_window">
<field name="name">Request Order</field>
<field name="view_id" ref="view_request_order_tree" />
<field name="res_model">request.order</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem
id="menu_request_request"
parent="request_document.request_request_menu"
action="action_request_request"
id="menu_request_order"
parent="request_document.request_order_menu"
action="action_request_order"
sequence="1"
/>
</odoo>
2 changes: 1 addition & 1 deletion request_document_exception/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"depends": ["request_document", "base_exception"],
"data": [
"security/ir.model.access.csv",
"views/request_request_view.xml",
"views/request_order_view.xml",
"wizard/request_exception_confirm_view.xml",
],
"installable": True,
Expand Down
2 changes: 1 addition & 1 deletion request_document_exception/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import exception_rule
from . import request_request
from . import request_order
from . import request_document
8 changes: 4 additions & 4 deletions request_document_exception/models/exception_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
class ExceptionRule(models.Model):
_inherit = "exception.rule"

request_request_ids = fields.Many2many(
comodel_name="request.request", string="Requests"
request_order_ids = fields.Many2many(
comodel_name="request.order", string="Requests"
)
model = fields.Selection(
selection_add=[
("request.request", "Request Sheet"),
("request.order", "Request Order"),
("request.document", "Request Document"),
],
ondelete={"request.request": "cascade", "request.document": "cascade"},
ondelete={"request.order": "cascade", "request.document": "cascade"},
)
2 changes: 1 addition & 1 deletion request_document_exception/models/request_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class RequestDocument(models.Model):

@api.model
def _reverse_field(self):
return "request_request_ids"
return "request_order_ids"

def _get_main_records(self):
return self.mapped("request_id")
Expand Down
Loading