Skip to content

Commit

Permalink
Merge PR OCA#2369 into 16.0
Browse files Browse the repository at this point in the history
Signed-off-by HviorForgeFlow
  • Loading branch information
OCA-git-bot committed Aug 29, 2024
2 parents 641e561 + 6b6439f commit 5ea3280
Show file tree
Hide file tree
Showing 9 changed files with 123 additions and 18 deletions.
22 changes: 20 additions & 2 deletions purchase_request/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,18 @@ msgstr "Si está marcada, nuevos mensajes requieren su atención."
msgid "If checked, some messages have a delivery error."
msgstr "si está marcada, algunos mensajes tienen un error de entrega."

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_form
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
msgid "In Progress"
msgstr "En Progreso"

#. module: purchase_request
#: model:ir.model.fields.selection,name:purchase_request.selection__purchase_request__state__in_progress
msgid "In progress"
msgstr "En Progreso"

#. module: purchase_request
#: model:ir.model.fields,field_description:purchase_request.field_purchase_request__is_editable
#: model:ir.model.fields,field_description:purchase_request.field_purchase_request_line__is_editable
Expand Down Expand Up @@ -870,8 +882,8 @@ msgstr "La solicitud de compra %s ha sido completada"
#. odoo-python
#: code:addons/purchase_request/wizard/purchase_request_line_make_purchase_order.py:0
#, python-format
msgid "Purchase Request %s is not approved"
msgstr "la solicitud de compra %s no ha sido aprobada"
msgid "Purchase Request %s is not approved or in progress"
msgstr "la solicitud de compra %s no ha sido aprobada ni está en progreso"

#. module: purchase_request
#: model:ir.model,name:purchase_request.model_purchase_request_allocation
Expand Down Expand Up @@ -1122,6 +1134,12 @@ msgstr "La solicitud se ha aprobado"
msgid "Request is done"
msgstr "Solicitud realizada"

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
msgid "Request is in progress"
msgstr "Solicitud en progreso"

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
Expand Down
20 changes: 19 additions & 1 deletion purchase_request/i18n/purchase_request.pot
Original file line number Diff line number Diff line change
Expand Up @@ -512,6 +512,18 @@ msgstr ""
msgid "If checked, some messages have a delivery error."
msgstr ""

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_form
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
msgid "In Progress"
msgstr ""

#. module: purchase_request
#: model:ir.model.fields.selection,name:purchase_request.selection__purchase_request__state__in_progress
msgid "In progress"
msgstr ""

#. module: purchase_request
#: model:ir.model.fields,field_description:purchase_request.field_purchase_request__is_editable
#: model:ir.model.fields,field_description:purchase_request.field_purchase_request_line__is_editable
Expand Down Expand Up @@ -829,7 +841,7 @@ msgstr ""
#. odoo-python
#: code:addons/purchase_request/wizard/purchase_request_line_make_purchase_order.py:0
#, python-format
msgid "Purchase Request %s is not approved"
msgid "Purchase Request %s is not approved or in progress"
msgstr ""

#. module: purchase_request
Expand Down Expand Up @@ -1077,6 +1089,12 @@ msgstr ""
msgid "Request is done"
msgstr ""

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
msgid "Request is in progress"
msgstr ""

#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_request_line_search
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_search
Expand Down
6 changes: 5 additions & 1 deletion purchase_request/models/orderpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ def _quantity_in_progress(self):
res = super(Orderpoint, self)._quantity_in_progress()
for prline in self.env["purchase.request.line"].search(
[
("request_id.state", "in", ("draft", "approved", "to_approve")),
(
"request_id.state",
"in",
("draft", "approved", "to_approve", "in_progress"),
),
("orderpoint_id", "in", self.ids),
("purchase_state", "=", False),
]
Expand Down
14 changes: 12 additions & 2 deletions purchase_request/models/purchase_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
("draft", "Draft"),
("to_approve", "To be approved"),
("approved", "Approved"),
("rejected", "Rejected"),
("in_progress", "In progress"),
("done", "Done"),
("rejected", "Rejected"),
]


Expand Down Expand Up @@ -48,7 +49,13 @@ def _default_picking_type(self):
@api.depends("state")
def _compute_is_editable(self):
for rec in self:
if rec.state in ("to_approve", "approved", "rejected", "done"):
if rec.state in (
"to_approve",
"approved",
"rejected",
"in_progress",
"done",
):
rec.is_editable = False
else:
rec.is_editable = True
Expand Down Expand Up @@ -284,6 +291,9 @@ def button_rejected(self):
self.mapped("line_ids").do_cancel()
return self.write({"state": "rejected"})

def button_in_progress(self):
return self.write({"state": "in_progress"})

def button_done(self):
return self.write({"state": "done"})

Expand Down
11 changes: 9 additions & 2 deletions purchase_request/models/purchase_request_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
("draft", "Draft"),
("to_approve", "To be approved"),
("approved", "Approved"),
("rejected", "Rejected"),
("in_progress", "In progress"),
("done", "Done"),
("rejected", "Rejected"),
]


Expand Down Expand Up @@ -247,7 +248,13 @@ def _compute_qty_cancelled(self):
)
def _compute_is_editable(self):
for rec in self:
if rec.request_id.state in ("to_approve", "approved", "rejected", "done"):
if rec.request_id.state in (
"to_approve",
"approved",
"rejected",
"in_progress",
"done",
):
rec.is_editable = False
else:
rec.is_editable = True
Expand Down
22 changes: 22 additions & 0 deletions purchase_request/tests/test_purchase_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,19 @@ def test_purchase_request_status(self):
self.assertEqual(purchase_request.is_editable, True, "Should be editable")
self.assertEqual(purchase_request.state, "draft", "Should be in state draft")
purchase_request.button_to_approve()
purchase_request.button_in_progress()
self.assertEqual(
purchase_request.state, "in_progress", "Should be in state in_progress"
)
self.assertEqual(purchase_request.is_editable, False, "Should not be editable")
with self.assertRaises(exceptions.UserError) as e:
purchase_request.unlink()
msg = "You cannot delete a purchase request which is not draft."
self.assertIn(msg, e.exception.args[0])
purchase_request.button_draft()
self.assertEqual(purchase_request.is_editable, True, "Should be editable")
self.assertEqual(purchase_request.state, "draft", "Should be in state draft")
purchase_request.button_to_approve()
purchase_request.button_done()
self.assertEqual(purchase_request.is_editable, False, "Should not be editable")
with self.assertRaises(exceptions.UserError) as e:
Expand Down Expand Up @@ -275,6 +288,15 @@ def test_purchase_request_unlink(self):
"if the purchase request is in draft state."
)
self.assertIn(msg, e.exception.args[0])
pr.button_in_progress()
self.assertEqual(pr.state, "in_progress", "Should be in state in_progress")
with self.assertRaises(exceptions.UserError) as e:
pr_lines.unlink()
msg = (
"You can only delete a purchase request line "
"if the purchase request is in draft state."
)
self.assertIn(msg, e.exception.args[0])
pr.button_done()
self.assertEqual(pr.state, "done", "Should be in state done")
with self.assertRaises(exceptions.UserError) as e:
Expand Down
14 changes: 12 additions & 2 deletions purchase_request/views/purchase_request_line_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<field
name="request_state"
widget="badge"
decoration-success="request_state in ('done', 'approved')"
decoration-success="request_state in ('done', 'approved', 'in_progress')"
decoration-info="request_state in ('draft', 'to_approve')"
decoration-danger="request_state == 'rejected'"
/>
Expand Down Expand Up @@ -67,7 +67,11 @@
<field name="arch" type="xml">
<form string="Purchase Request Line" create="false" duplicate="false">
<header>
<field name="request_state" widget="statusbar" />
<field
name="request_state"
widget="statusbar"
statusbar_visible="draft,to_approve,approved,done,in_progress"
/>
</header>
<sheet>
<h1>
Expand Down Expand Up @@ -267,6 +271,12 @@
domain="[('request_state','=','rejected')]"
help="Request is rejected"
/>
<filter
name="request_state_in_progress"
string="In Progress"
domain="[('request_state','=','in_progress')]"
help="Request is in progress"
/>
<filter
name="assigned_to_me"
domain="[( 'assigned_to','=', uid)]"
Expand Down
25 changes: 19 additions & 6 deletions purchase_request/views/purchase_request_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<header>
<button
name="button_draft"
states="to_approve,approved,rejected,done"
states="to_approve,approved,rejected,in_progress,done"
string="Reset"
type="object"
groups="purchase_request.group_purchase_request_manager"
Expand All @@ -31,30 +31,37 @@
groups="purchase_request.group_purchase_request_manager"
/>
<button
name="%(action_purchase_request_line_make_purchase_order)d"
name="button_in_progress"
states="approved"
string="In Progress"
type="object"
groups="purchase_request.group_purchase_request_manager"
/>
<button
name="%(action_purchase_request_line_make_purchase_order)d"
states="approved,in_progress"
string="Create RFQ"
type="action"
/>
<button
name="button_done"
states="approved"
states="approved,in_progress"
string="Done"
type="object"
class="oe_highlight"
groups="purchase_request.group_purchase_request_manager"
/>
<button
name="button_rejected"
states="to_approve,approved"
states="to_approve,approved,in_progress"
string="Reject"
type="object"
groups="purchase_request.group_purchase_request_manager"
/>
<field
name="state"
widget="statusbar"
statusbar_visible="draft,to_approve,approved,done,rejected"
statusbar_visible="draft,to_approve,approved,done,in_progress"
statusbar_colors='{"approved":"blue"}'
/>
</header>
Expand Down Expand Up @@ -267,7 +274,7 @@
<field
name="state"
widget="badge"
decoration-success="state in ('done', 'approved')"
decoration-success="state in ('done', 'approved', 'in_progress')"
decoration-muted="state == 'draft'"
decoration-warning="state == 'to_approve'"
decoration-danger="state == 'rejected'"
Expand Down Expand Up @@ -309,6 +316,12 @@
domain="[('state','=','approved')]"
help="Request is approved"
/>
<filter
name="state_in_progress"
string="In Progress"
domain="[('state','=','in_progress')]"
help="Request is in progress"
/>
<filter
name="state_rejected"
string="Rejected"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,10 @@ def _check_valid_request_line(self, request_line_ids):
for line in self.env["purchase.request.line"].browse(request_line_ids):
if line.request_id.state == "done":
raise UserError(_("The purchase has already been completed."))
if line.request_id.state != "approved":
if line.request_id.state not in ["approved", "in_progress"]:
raise UserError(
_("Purchase Request %s is not approved") % line.request_id.name
_("Purchase Request %s is not approved or in progress")
% line.request_id.name
)

if line.purchase_state == "done":
Expand Down Expand Up @@ -289,6 +290,8 @@ def make_purchase_order(self):
)
res.append(purchase.id)

purchase_requests = self.item_ids.mapped("request_id")
purchase_requests.button_in_progress()
return {
"domain": [("id", "in", res)],
"name": _("RFQ"),
Expand Down

0 comments on commit 5ea3280

Please sign in to comment.