[IMP] stock_request_tier_validation: black, isort

This commit is contained in:
ps-tubtim
2020-03-30 18:52:08 +07:00
committed by Surachet Saejueng
parent f401fa58e2
commit 90145cb3eb
9 changed files with 228 additions and 167 deletions

View File

@@ -3,18 +3,15 @@
{
"name": "Stock Request Tier Validation",
"summary": "Extends the functionality of Stock Requests to "
"support a tier validation process.",
"version": "12.0.1.1.0",
"support a tier validation process.",
"version": "13.0.1.0.0",
"category": "Warehouse Management",
"website": "https://github.com/OCA/stock-logistics-warehouse",
"author": "Eficent, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"stock_request",
"base_tier_validation",
],
"depends": ["stock_request", "base_tier_validation"],
"data": [
"data/stock_request_tier_definition.xml",
"views/stock_request_order_view.xml",

View File

@@ -3,26 +3,32 @@
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data noupdate="1">
<record id="stock_request_default_tier_definition" model="tier.definition">
<field name="name">Manager review</field>
<field name="model_id" ref="model_stock_request"/>
<field name="model_id" ref="model_stock_request" />
<field name="definition_type">domain</field>
<field name="definition_domain"/>
<field name="definition_domain" />
<field name="review_type">group</field>
<field name="reviewer_group_id" ref='stock_request.group_stock_request_manager'/>
<field
name="reviewer_group_id"
ref='stock_request.group_stock_request_manager'
/>
<field name="active">False</field>
</record>
<record id="stock_request_order_default_tier_definition" model="tier.definition">
<record
id="stock_request_order_default_tier_definition"
model="tier.definition"
>
<field name="name">Manager review</field>
<field name="model_id" ref="model_stock_request_order"/>
<field name="model_id" ref="model_stock_request_order" />
<field name="definition_type">domain</field>
<field name="definition_domain"/>
<field name="definition_domain" />
<field name="review_type">group</field>
<field name="reviewer_group_id" ref='stock_request.group_stock_request_manager'/>
<field
name="reviewer_group_id"
ref='stock_request.group_stock_request_manager'
/>
<field name="active">False</field>
</record>
</data>
</odoo>

View File

@@ -5,12 +5,12 @@ from odoo import api, models
class StockRequest(models.Model):
_name = "stock.request"
_inherit = ['stock.request', 'tier.validation']
_state_from = ['draft']
_state_to = ['open']
_inherit = ["stock.request", "tier.validation"]
_state_from = ["draft"]
_state_to = ["open"]
@api.model
def _get_under_validation_exceptions(self):
res = super(StockRequest, self)._get_under_validation_exceptions()
res.append('route_id')
res.append("route_id")
return res

View File

@@ -5,12 +5,12 @@ from odoo import api, models
class StockRequest(models.Model):
_name = "stock.request.order"
_inherit = ['stock.request.order', 'tier.validation']
_state_from = ['draft']
_state_to = ['open']
_inherit = ["stock.request.order", "tier.validation"]
_state_from = ["draft"]
_state_to = ["open"]
@api.model
def _get_under_validation_exceptions(self):
res = super(StockRequest, self)._get_under_validation_exceptions()
res.append('route_id')
res.append("route_id")
return res

View File

@@ -1,3 +1,2 @@
* Lois Rilo <lois.rilo@eficent.com>
* Héctor Villarreal <hector.villarreal@eficent.com>

View File

@@ -1 +1 @@
from . import test_stock_request_tier_validation
from . import test_stock_request_tier_validation

View File

@@ -9,18 +9,19 @@ class TestStockRequest(common.TransactionCase):
super(TestStockRequest, self).setUp()
# common models
self.stock_request = self.env['stock.request']
self.request_order = self.env['stock.request.order']
self.tier_definition = self.env['tier.definition']
self.stock_request = self.env["stock.request"]
self.request_order = self.env["stock.request.order"]
self.tier_definition = self.env["tier.definition"]
def test_get_under_validation_exceptions(self):
self.assertIn('route_id',
self.stock_request._get_under_validation_exceptions())
self.assertIn('route_id',
self.request_order._get_under_validation_exceptions())
self.assertIn("route_id", self.stock_request._get_under_validation_exceptions())
self.assertIn("route_id", self.request_order._get_under_validation_exceptions())
def test_get_tier_validation_model_names(self):
self.assertIn('stock.request',
self.tier_definition._get_tier_validation_model_names())
self.assertIn('stock.request.order',
self.tier_definition._get_tier_validation_model_names())
self.assertIn(
"stock.request", self.tier_definition._get_tier_validation_model_names()
)
self.assertIn(
"stock.request.order",
self.tier_definition._get_tier_validation_model_names(),
)

View File

@@ -1,91 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="stock_request_order_form_inherit_tier" model="ir.ui.view">
<field name="name">stock.request.order.tier.validation.form</field>
<field name="model">stock.request.order</field>
<field name="inherit_id" ref="stock_request.stock_request_order_form"/>
<field name="inherit_id" ref="stock_request.stock_request_order_form" />
<field name="arch" type="xml">
<button name="action_confirm" position="attributes">
<attribute name="attrs">{'invisible': ['|','&amp;',('validated', '!=', True),('need_validation', '=', True),'|',('need_validation', '=', True),('state', 'not in', ['draft'])]}</attribute>
<attribute name="groups">stock_request.group_stock_request_manager</attribute>
<attribute
name="attrs"
>{'invisible': ['|','&amp;',('validated', '!=', True),('need_validation', '=', True),'|',('need_validation', '=', True),('state', 'not in', ['draft'])]}</attribute>
<attribute
name="groups"
>stock_request.group_stock_request_manager</attribute>
</button>
<button name="action_confirm" position="before">
<button name="request_validation"
<button
name="request_validation"
string="Request Validation"
attrs="{'invisible': ['|','|',('need_validation', '!=', True),('rejected','=',True),('state','not in',['draft','sent'])]}"
type="object"/>
<button name="restart_validation"
type="object"
/>
<button
name="restart_validation"
string="Restart Validation"
attrs="{'invisible': ['|',('review_ids', '=', []),('state','not in',['draft','sent'])]}"
type="object"/>
type="object"
/>
</button>
<header position="after">
<field name="need_validation" invisible="1"/>
<field name="validated" invisible="1"/>
<field name="rejected" invisible="1"/>
<div class="alert alert-warning"
role="alert"
attrs="{'invisible': ['|', '|', '|',
<field name="need_validation" invisible="1" />
<field name="validated" invisible="1" />
<field name="rejected" invisible="1" />
<div
class="alert alert-warning"
role="alert"
attrs="{'invisible': ['|', '|', '|',
('validated', '=', True), ('state', 'not in', ['draft','sent']),
('rejected', '=', True), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-info-circle"/>This Stock Request needs to be
style="margin-bottom:0px;"
>
<p><i class="fa fa-info-circle" />This Stock Request needs to be
validated.
<field name="can_review" invisible="1"/>
<button name="validate_tier"
string="Validate"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="oe_inline oe_button btn-success"
icon="fa-thumbs-up"/>
<button name="reject_tier"
string="Reject"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="btn-icon btn-danger"
icon="fa-thumbs-down"/>
<field name="can_review" invisible="1" />
<button
name="validate_tier"
string="Validate"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="oe_inline oe_button btn-success"
icon="fa-thumbs-up"
/>
<button
name="reject_tier"
string="Reject"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="btn-icon btn-danger"
icon="fa-thumbs-down"
/>
</p>
</div>
<div class="alert alert-success"
role="alert"
attrs="{'invisible': ['|', '|', ('validated', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-thumbs-up"/> Operation has been <b>validated</b>!</p>
<div
class="alert alert-success"
role="alert"
attrs="{'invisible': ['|', '|', ('validated', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;"
>
<p><i class="fa fa-thumbs-up" /> Operation has been <b
>validated</b>!</p>
</div>
<div class="alert alert-danger"
role="alert"
attrs="{'invisible': ['|', '|', ('rejected', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-thumbs-down"/> Operation has been <b>rejected</b>.</p>
<div
class="alert alert-danger"
role="alert"
attrs="{'invisible': ['|', '|', ('rejected', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;"
>
<p><i class="fa fa-thumbs-down" /> Operation has been <b
>rejected</b>.</p>
</div>
</header>
<xpath expr="//form/div[hasclass('oe_chatter')]" position="before">
<field name="review_ids" widget="tier_validation" attrs="{'invisible':[('review_ids', '=', [])]}"/>
<field
name="review_ids"
widget="tier_validation"
attrs="{'invisible':[('review_ids', '=', [])]}"
/>
</xpath>
</field>
</record>
<record id="view_stock_request_order_filter" model="ir.ui.view">
<field name="name">stock.request.select - stock_request_tier_validation</field>
<field name="model">stock.request</field>
<field name="inherit_id" ref="stock_request.stock_request_search"/>
<field name="inherit_id" ref="stock_request.stock_request_search" />
<field name="arch" type="xml">
<search position="inside">
<group expand="0" string="Need actions">
<filter name="needs_review" string="Needs my Review"
domain="[('reviewer_ids','in',uid), ('state', 'not in', ['done', 'cancel'])]"
help="My Stock Request Orders to review"/>
<filter name="tier_validated" string="Validated"
domain="[('validated', '=', True)]"
help="Stock Requests validated and ready to be confirmed"/>
<filter
name="needs_review"
string="Needs my Review"
domain="[('reviewer_ids','in',uid), ('state', 'not in', ['done', 'cancel'])]"
help="My Stock Request Orders to review"
/>
<filter
name="tier_validated"
string="Validated"
domain="[('validated', '=', True)]"
help="Stock Requests validated and ready to be confirmed"
/>
</group>
</search>
</field>
</record>
<record id="tier_review_order_form_wiz" model="ir.ui.view">
<field name="name">stock.request.order.reviews</field>
<field name="model">stock.request.order</field>
@@ -93,28 +120,30 @@
<form string="Tier Review">
<group>
<field name="review_ids" nolabel="1" readonly="1">
<tree create="false"
decoration-danger="status=='rejected'"
decoration-warning="status=='pending'"
decoration-success="status=='approved'">
<field name="sequence"/>
<field name="requested_by"/>
<field name="review_type"/>
<field name="name"/>
<field name="status"/>
<field name="done_by"/>
<tree
create="false"
decoration-danger="status=='rejected'"
decoration-warning="status=='pending'"
decoration-success="status=='approved'"
>
<field name="sequence" />
<field name="requested_by" />
<field name="review_type" />
<field name="name" />
<field name="status" />
<field name="done_by" />
</tree>
</field>
</group>
<footer>
<button name="dismiss_popup"
type="object"
string="Dismiss"
class="oe_highlight"
<button
name="dismiss_popup"
type="object"
string="Dismiss"
class="oe_highlight"
/>
</footer>
</form>
</field>
</record>
</odoo>

View File

@@ -1,91 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Eficent Business and IT Consulting Services S.L.
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_stock_request_form_inherit_tier" model="ir.ui.view">
<field name="name">stock.request.tier.validation.form</field>
<field name="model">stock.request</field>
<field name="inherit_id" ref="stock_request.view_stock_request_form"/>
<field name="inherit_id" ref="stock_request.view_stock_request_form" />
<field name="arch" type="xml">
<button name="action_confirm" position="attributes">
<attribute name="attrs">{'invisible': ['|','&amp;',('validated', '!=', True),('need_validation', '=', True),'|',('need_validation', '=', True),('state', 'not in', ['draft'])]}</attribute>
<attribute name="groups">stock_request.group_stock_request_manager</attribute>
<attribute
name="attrs"
>{'invisible': ['|','&amp;',('validated', '!=', True),('need_validation', '=', True),'|',('need_validation', '=', True),('state', 'not in', ['draft'])]}</attribute>
<attribute
name="groups"
>stock_request.group_stock_request_manager</attribute>
</button>
<button name="action_confirm" position="before">
<button name="request_validation"
<button
name="request_validation"
string="Request Validation"
attrs="{'invisible': ['|','|',('need_validation', '!=', True),('rejected','=',True),('state','not in',['draft','sent'])]}"
type="object"/>
<button name="restart_validation"
type="object"
/>
<button
name="restart_validation"
string="Restart Validation"
attrs="{'invisible': ['|',('review_ids', '=', []),('state','not in',['draft','sent'])]}"
type="object"/>
type="object"
/>
</button>
<header position="after">
<field name="need_validation" invisible="1"/>
<field name="validated" invisible="1"/>
<field name="rejected" invisible="1"/>
<div class="alert alert-warning"
role="alert"
attrs="{'invisible': ['|', '|', '|',
<field name="need_validation" invisible="1" />
<field name="validated" invisible="1" />
<field name="rejected" invisible="1" />
<div
class="alert alert-warning"
role="alert"
attrs="{'invisible': ['|', '|', '|',
('validated', '=', True), ('state', 'not in', ['draft','sent']),
('rejected', '=', True), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-info-circle"/>This Stock Request needs to be
style="margin-bottom:0px;"
>
<p><i class="fa fa-info-circle" />This Stock Request needs to be
validated.
<field name="can_review" invisible="1"/>
<button name="validate_tier"
string="Validate"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="oe_inline oe_button btn-success"
icon="fa-thumbs-up"/>
<button name="reject_tier"
string="Reject"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="btn-icon btn-danger"
icon="fa-thumbs-down"/>
<field name="can_review" invisible="1" />
<button
name="validate_tier"
string="Validate"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="oe_inline oe_button btn-success"
icon="fa-thumbs-up"
/>
<button
name="reject_tier"
string="Reject"
attrs="{'invisible': [('can_review', '=', False)]}"
type="object"
class="btn-icon btn-danger"
icon="fa-thumbs-down"
/>
</p>
</div>
<div class="alert alert-success"
role="alert"
attrs="{'invisible': ['|', '|', ('validated', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-thumbs-up"/> Operation has been <b>validated</b>!</p>
<div
class="alert alert-success"
role="alert"
attrs="{'invisible': ['|', '|', ('validated', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;"
>
<p><i class="fa fa-thumbs-up" /> Operation has been <b
>validated</b>!</p>
</div>
<div class="alert alert-danger"
role="alert"
attrs="{'invisible': ['|', '|', ('rejected', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;">
<p><i class="fa fa-thumbs-down"/> Operation has been <b>rejected</b>.</p>
<div
class="alert alert-danger"
role="alert"
attrs="{'invisible': ['|', '|', ('rejected', '!=', True), ('state', 'not in', ['draft','sent']), ('review_ids', '=', [])]}"
style="margin-bottom:0px;"
>
<p><i class="fa fa-thumbs-down" /> Operation has been <b
>rejected</b>.</p>
</div>
</header>
<xpath expr="//form/div[hasclass('oe_chatter')]" position="before">
<field name="review_ids" widget="tier_validation" attrs="{'invisible':[('review_ids', '=', [])]}"/>
<field
name="review_ids"
widget="tier_validation"
attrs="{'invisible':[('review_ids', '=', [])]}"
/>
</xpath>
</field>
</record>
<record id="view_stock_request_filter" model="ir.ui.view">
<field name="name">stock.request.select - stock_request_tier_validation</field>
<field name="model">stock.request</field>
<field name="inherit_id" ref="stock_request.stock_request_search"/>
<field name="inherit_id" ref="stock_request.stock_request_search" />
<field name="arch" type="xml">
<search position="inside">
<group expand="0" string="Need actions">
<filter name="needs_review" string="Needs my Review"
domain="[('reviewer_ids','in',uid), ('state', 'not in', ['done', 'cancel'])]"
help="My Stock Requests to review"/>
<filter name="tier_validated" string="Validated"
domain="[('validated', '=', True)]"
help="Stock Requests validated and ready to be confirmed"/>
<filter
name="needs_review"
string="Needs my Review"
domain="[('reviewer_ids','in',uid), ('state', 'not in', ['done', 'cancel'])]"
help="My Stock Requests to review"
/>
<filter
name="tier_validated"
string="Validated"
domain="[('validated', '=', True)]"
help="Stock Requests validated and ready to be confirmed"
/>
</group>
</search>
</field>
</record>
<record id="tier_review_form_wiz" model="ir.ui.view">
<field name="name">stock.request.order.reviews</field>
<field name="model">stock.request.order</field>
@@ -93,28 +120,30 @@
<form string="Tier Review">
<group>
<field name="review_ids" nolabel="1" readonly="1">
<tree create="false"
decoration-danger="status=='rejected'"
decoration-warning="status=='pending'"
decoration-success="status=='approved'">
<field name="sequence"/>
<field name="requested_by"/>
<field name="review_type"/>
<field name="name"/>
<field name="status"/>
<field name="done_by"/>
<tree
create="false"
decoration-danger="status=='rejected'"
decoration-warning="status=='pending'"
decoration-success="status=='approved'"
>
<field name="sequence" />
<field name="requested_by" />
<field name="review_type" />
<field name="name" />
<field name="status" />
<field name="done_by" />
</tree>
</field>
</group>
<footer>
<button name="dismiss_popup"
type="object"
string="Dismiss"
class="oe_highlight"
<button
name="dismiss_popup"
type="object"
string="Dismiss"
class="oe_highlight"
/>
</footer>
</form>
</field>
</record>
</odoo>