Browse Source

[ADD] Initial Commit 'product_approval_management'

pull/168/head
Ajmal Cybro 4 years ago
parent
commit
9d79dcdb1f
  1. 23
      product_approval_management/__init__.py
  2. 48
      product_approval_management/__manifest__.py
  3. 23
      product_approval_management/models/__init__.py
  4. 49
      product_approval_management/models/models.py
  5. 8
      product_approval_management/security/approve_security.xml
  6. 3
      product_approval_management/security/ir.model.access.csv
  7. BIN
      product_approval_management/static/description/banner.jpg
  8. BIN
      product_approval_management/static/description/icon.png
  9. BIN
      product_approval_management/static/description/images/confirm_button.png
  10. BIN
      product_approval_management/static/description/images/cybro_logo.png
  11. BIN
      product_approval_management/static/description/images/draft_state.png
  12. BIN
      product_approval_management/static/description/images/product_manager.png
  13. BIN
      product_approval_management/static/description/images/reset_to_draft.png
  14. BIN
      product_approval_management/static/description/images/sale_order_line.png
  15. 697
      product_approval_management/static/description/index.html
  16. 38
      product_approval_management/views/product_approval_views.xml

23
product_approval_management/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models

48
product_approval_management/__manifest__.py

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': "Product Approval",
'summary': """Product Approval Management""",
'description': """
Using this module a user can create product which will be in
draft state and only a product manager can confirm the product.
Also only the confirmed products can be selected from
sale order line
""",
'category': "Sales/Sales",
'author': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'depends': ['sale_management'],
'data': [
'security/approve_security.xml',
'security/ir.model.access.csv',
'views/product_approval_views.xml'
],
'images': ['static/description/banner.jpg'],
'version': '14.0.1.0.0',
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

23
product_approval_management/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models

49
product_approval_management/models/models.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions (<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class ApproveProduct(models.Model):
_inherit = 'product.template'
approve_state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed')
], default='draft')
def confirm_product_approval(self):
for rec in self:
rec.approve_state = 'confirmed'
def reset_product_approval(self):
for rec in self:
rec.approve_state = 'draft'
class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
product_id = fields.Many2one(
'product.product', string='Product',
domain="[('approve_state', '=', 'confirmed'), ('sale_ok', '=', True), '|', ('company_id', '=', False),('company_id', '=', company_id)]",
change_default=True, ondelete='restrict', check_company=True)

8
product_approval_management/security/approve_security.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="product_manager" model="res.groups">
<field name="name">Product Manager</field>
</record>
</data>
</odoo>

3
product_approval_management/security/ir.model.access.csv

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_product_manager,product.template,model_product_template,product_manager,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_product_manager product.template model_product_template product_manager 1 1 1 1

BIN
product_approval_management/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

BIN
product_approval_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
product_approval_management/static/description/images/confirm_button.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
product_approval_management/static/description/images/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
product_approval_management/static/description/images/draft_state.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
product_approval_management/static/description/images/product_manager.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
product_approval_management/static/description/images/reset_to_draft.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
product_approval_management/static/description/images/sale_order_line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

697
product_approval_management/static/description/index.html

@ -0,0 +1,697 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Approval For Products</title>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css"
integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA=="
crossorigin="anonymous"/>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
crossorigin="anonymous"/>
</head>
<body>
<div class="oe_styling_v8">
<section class="oe_container"
style="font-family: Roboto, 'sans-serif'; padding:2rem 3rem 1rem">
<div class="row shadow-lg"
style="max-width:1540px; margin:0 auto; border-radius: 10px;">
<!-- LEFT HERO -->
<div class="col-lg-7"
style="margin-top: 0rem; padding: 3rem 2.5rem; ">
<div style="width: 200px;">
<img src="https://www.cybrosys.com/images/logo.png"
width="150px" height="auto"/>
</div>
<h1 class="mt-4"
style="font-family: Montserrat, 'sans-serif' ; font-weight: bold;">
Product Approval</h1>
<p class="lead"
style="font-weight: 500; line-height: 1.5; color: #757575">
Approval Management provides users Approval Feature on product creation, and only approved products can be used in sale orders
</p>
<span class="badge px-3 py-2 depth-1"
style="background-color: #FFECEF; color: #F66170; font-weight: bold; border-radius: 1rem;"><i
class="fa fa-star mr-2"></i>Key Highlights</span>
<!-- FEATURES -->
<hr class="mt-4"
style="background: linear-gradient(to right, #e5e5e5, transparent); height: 2px; border-style: none;">
<div class="row">
<div class="col-lg-5 no-gutters">
<!-- FEATURE COLUMN LEFT -->
<ul style="list-style: none; padding: 0; font-weight: 500; line-height: 2;">
<li><i class="fa fa-check-circle mr-2"
style="color: #1abc9c;"></i>New User group Product Manager is created
</li>
<li><i class="fa fa-check-circle mr-2"
style="color: #1abc9c;"></i>Only the Product Manager can Approve the products created
</li>
<li><i class="fa fa-check-circle mr-2"
style="color: #1abc9c;"></i>By default the products creation will be in draft state
</li>
<li><i class="fa fa-check-circle mr-2"
style="color: #1abc9c;"></i>Only the confirmed Products can be selected in Sale Order
</li>
</ul>
</div>
</div>
<hr class="mt-4"
style="background: linear-gradient(to right, #e5e5e5, transparent); height: 2px; border-style: none;">
<!-- END OF FEATURES -->
</div>
<!-- END OF LEFT HERO -->
<!-- RIGHT HERO -->
<!-- <div class="col-lg-5 d-flex align-items-center"-->
<!-- style="border-radius: 0px 10px 10px 0px; background-repeat: no-repeat; background-size: cover;">-->
<!-- <img src=''-->
<!-- style="width:90%; height: auto; margin: 0 auto;"-->
<!-- class="shadow-lg"/>-->
<!-- &lt;!&ndash; <center>-->
<!-- <img src="https://i.ibb.co/Zg7Z8jT/gnatt-scrn.png"&ndash;&gt;-->
<!-- &lt;!&ndash; style="width:90%; height: auto; margin: 0 auto;" class="shadow-lg">&ndash;&gt;-->
<!-- &lt;!&ndash; </center> &ndash;&gt;&ndash;&gt;-->
<!-- </div>-->
<!-- END OF RIGHT HERO -->
</div>
<section class="oe_container" style="margin-top: 4rem;">
<div class="row"
style="max-width:1540px; margin:0 auto; padding-bottom:64px;">
<div class="col-lg-12">
<!-- TAB LIST -->
<ul class="nav nav-tabs d-flex justify-content-center"
role="tablist"
style="background-color:unset; margin:0 auto;">
<li class="nav-item">
<a class="nav-link active" style="color: #000;"
data-toggle="tab" href="#tabs-1"
role="tab"><i class="fa fa-pie-chart mr-2"></i>Overview</a>
</li>
<li class="nav-item">
<a class="nav-link" style="color: #000;"
data-toggle="tab" href="#tabs-3" role="tab"><i
class="fa fa-star mr-2"></i>Features</a>
</li>
<li class="nav-item">
<a class="nav-link" style="color: #000;"
data-toggle="tab" href="#tabs-4" role="tab"><i
class="fa fa-picture-o mr-2"></i>Screenshots</a>
</li>
</ul>
</div>
<div class="col-lg-12">
<!-- Tab panes -->
<div class="tab-content" style="padding: 2rem;">
<div class="tab-pane active" id="tabs-1"
role="tabpanel">
<h3 class="text-center rounded px-3 py-2 mb-4"
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;">
Overview</h3>
<p class="text-justify">Introducing Approval For Products in version 14 community. The module helps provides users with an Approval Feature on product creation and only those approved products can be used in sale orders</p>
</div>
<div class="tab-pane" id="tabs-3" role="tabpanel">
<h3 class="text-center rounded px-3 py-2 mb-4"
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;">
Features</h3>
<ul style="max-width: 1200px;">
<li>
<h5 style="font-family: Roboto, 'sans-serif';">
New User group Product Manager is created</h5>
</li>
<li>
<h5 style="font-family: Roboto, 'sans-serif';">
Only the Product Manager can Approve the products created</h5>
</li>
<li>
<h5 style="font-family: Roboto, 'sans-serif';">
By default the products creation will be in draft state</h5>
</li>
<li>
<h5 style="font-family: Roboto, 'sans-serif';">
Only the confirmed Products can be selected in Sale Order</h5>
</li>
<li>
<h5 style="font-family: Roboto, 'sans-serif';">
Product Manager Can also reset the confirm state to draft</h5>
</li>
</ul>
</div>
<div class="tab-pane" id="tabs-4" role="tabpanel">
<h3 class="text-center rounded px-3 py-2 mb-4"
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;">
Screenshots</h3>
<div>
<section class="oe_container">
<div id="demo"
class="row carousel slide mb32"
data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active"
style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<i class="fa fa-check-circle-o"
style="width:40px; color:#07B700"></i>
New User group Product Manager is created
</h3>
<div style=""><img
class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/product_manager.png">
</div>
</div>
</div>
<div class="carousel-item"
style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<i class="fa fa-check-circle-o"
style="width:40px; color:#07B700"></i>
By default the products creation will be in draft state</h3>
<div style=""><img
class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/draft_state.png">
</div>
</div>
</div>
<div class="carousel-item"
style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
<i class="fa fa-check-circle-o"
style="width:40px; color:#07B700"></i>
Product Manager can Approve the products created by clicking the confirm button</h3>
<div style=""><img
class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/confirm_button.png">
</div>
</div>
</div>
<div class="carousel-item"
style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="mb32 alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; ">
<i class="fa fa-check-circle-o"
style="width:40px; color:#07B700"></i>Product Manager Can also reset the confirm state to draft</h3>
<div style=""><img
class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/reset_to_draft.png">
</div>
</div>
</div>
<div class="carousel-item"
style="min-height: 0px;">
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
style="float: left;">
<h3 class="mb32 alert"
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px; ">
<i class="fa fa-check-circle-o"
style="width:40px; color:#07B700"></i>Only the confirmed Products can be selected in Sale Order</h3>
<div style=""><img
class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/sale_order_line.png">
</div>
</div>
</div>
<a class="carousel-control-prev"
href="#demo" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next"
href="#demo" data-slide="next"
style="right:-25px;width: 35px;color: #000;"> <span
class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</section>
</div>
</div>
</div>
<!-- END OF TAB LIST -->
</div>
</div>
</section>
<section class="oe_container"
style="padding:2rem 3rem 1rem; max-width:1540px; margin: 0 auto; ">
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%">
Suggested Products</h2>
<hr
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<div id="suggestedSlider" class="row carousel slide mt-4"
data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item" style="min-height: 191px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/12.0/accounting_dynamic_reports/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_task_timer.png?ae168aa">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/13.0/project_report_pdf/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_repo.png?ae168aa">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/export_stockinfo_xls/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_gantt.png?ae168aa">
</div>
</a>
</div>
</div>
<div class="carousel-item active" style="min-height: 191px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/12.0/project_task_timer/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/task_image.png?ae168aa">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/base_accounting_kit/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/reminder.png?ae168aa">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/12.0/project_report_pdf/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_report.png?ae168aa">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#suggestedSlider"
data-slide="prev"
style="width:35px; color:#000">
<span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span> </a> <a
class="carousel-control-next"
href="#suggestedSlider" data-slide="next"
style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</section>
<!-- End of Suggested Products -->
<!-- Our Services -->
<section class="oe_container" style="padding:2rem 3rem 1rem">
<!-- <h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%">Our Services</h2>
<hr
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> -->
<div class="row mt-4 position-relative"
style="max-width:1540px; margin: 0 auto;">
<div class="col-lg-12 jumbotron text-white position-relative shadow-sm"
style="background-color: #b22126; background-image: url('https://i.ibb.co/k9GHmT0/arrows-transparent.png'); background-size: cover; background-position: bottom; border-radius: 10px;">
<span class="badge badge-pill px-3 py-2 text-dark shadow-sm font-weight-bold"
style="background-color: #f6b93b;"><i
class="fa fa-trophy mr-2"></i>Odoo Gold Partner</span>
<div class="row">
<div class="col-lg-6 mt-4">
<h1 style="font-family: Roboto, 'sans-serif'; color:#FFF;">
Our Services</h1>
<p class="lead">We provide following services</p>
<ul class="mt-4"
style="list-style: none; padding: 0; line-height: 2.8; font-weight: 500;">
<li>
<a href="https://www.cybrosys.com/odoo-customization-and-installation/"
style="color: white; text-decoration: none;"
target="_blank"><i
class="fa fa-cogs mr-2"
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo
Customization</a></li>
<li>
<a href="https://www.cybrosys.com/odoo-erp-implementation/"
style="color: white; text-decoration: none;"
target="_blank"><i
class="fa fa-wrench mr-2"
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo
Implementation</a></li>
<li><a href="https://www.cybrosys.com/odoo-erp-support/"
style="color: white; text-decoration: none;"
target="_blank"><i
class="fa fa-life-ring mr-2"
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo
Support</a></li>
<li>
<a href="https://www.cybrosys.com/hire-odoo-developer/"
style="color: white; text-decoration: none;"
target="_blank"><i
class="fa fa-user mr-2"
style="color: #f6b93b; font-size: 1.5rem"></i>
Hire
Odoo Developers</a></li>
</ul>
</div>
</div>
</div>
<img src="https://i.ibb.co/YLRGpvL/trophy.png" width="50%" height="auto"
alt="Odoo Gold Partner"
class="position-absolute" style="right: 0; bottom: 0;">
</div>
</section>
<!-- End of Our Services -->
<!-- Our Industries -->
<section class="oe_container" style="padding:2rem 3rem 1rem">
<div class="row" style="max-width:1540px; margin: 0 auto; ">
<div class="col-lg-12">
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%">
Our
Industries</h2>
<hr
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
</div>
<div class="row mt-4 position-relative"
style="max-width:1540px; margin: 0 auto;">
<!-- Left Column -->
<div class="col-lg-6">
<div class="bg-white shadow px-4 py-3 mb-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/"
target="_blank"
class="text-dark" style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/J3HsKWB/trading.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Trading</h4>
<p style="font-weight: 300;">Easily procure and
sell your products</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/"
target="_blank" class="text-dark"
style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/ssmySQK/education.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Education</h4>
<p style="font-weight: 300;">A Collaborative
platform for educational
management</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank" class="text-dark"
style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/fx6j6zY/manufacturing.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Manufacturing</h4>
<p style="font-weight: 300;">Plan, track and
schedule your operations</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/"
target="_blank"
class="text-dark" style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/z6TK3yK/ecom.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
E-commerce & Website</h4>
<p style="font-weight: 300;">Mobile friendly,
awe-inspiring product pages
</p>
</div>
</div>
</a>
</div>
</div>
<!-- End of Left Column -->
<!-- Right Column -->
<div class="col-lg-6">
<div class="bg-white shadow px-4 py-3 mb-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/"
target="_blank"
class="text-dark" style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/Hh9pqjY/pos.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
POS</h4>
<p style="font-weight: 300;">Easy configuring
and convivial selling</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/"
target="_blank"
class="text-dark" style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/541x9sq/service.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Service Management</h4>
<p style="font-weight: 300;">Keep track of
services and invoice accordingly
</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/"
target="_blank" class="text-dark"
style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/wYjn3HB/restaurant.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Restaurant</h4>
<p style="font-weight: 300;">Run your bar or
restaurant methodica</p>
</div>
</div>
</a>
</div>
<div class="bg-white shadow px-4 py-3 my-3"
style="border-radius: 10px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/"
target="_blank"
class="text-dark" style="text-decoration: none;">
<div class="row">
<div class="col-lg-3 no-gutters">
<img src="https://i.ibb.co/XbkbpwV/hotel.png">
</div>
<div class="col-lg-9 no-gutters pt-3">
<h4 style="font-family: Roboto, 'sans-serif">
Hotel Management</h4>
<p style="font-weight: 300;">An all-inclusive
hotel management application
</p>
</div>
</div>
</a>
</div>
</div>
<!-- End of Right Column -->
</div>
</div>
</section>
<!-- End of Our Industries-->
<!-- Footer Section -->
<section class="oe_container" style="padding:2rem 3rem 1rem">
<div class="row" style="max-width:1540px; margin: 0 auto; ">
<div class="col-lg-12 mb-4">
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%">
Need Help?</h2>
<hr
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto;">
<div class="col-lg-3 shadow mt-2"
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #546E7A; height: 300px;">
<h5 class="font-weight-bold"
style="font-family: Roboto, 'sans-serif';">Visit us</h5>
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;">Visit our
website for more
information.</p>
<a href="https://cybrosys.com" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #546E7A; color: #FFF; border-radius: 4px;">www.cybrosys.com</a>
</div>
<div class="col-lg-3 shadow mt-2"
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #b22126; height: 330px;">
<h5 class="font-weight-bold"
style="font-family: Roboto, 'sans-serif';">Write to us</h5>
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;">Do you
have any queries regarding our
products &amp; services? Let us know.</p>
<a href="mailto:odoo@cybrosys.com" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #b22126; color: #FFF; border-radius: 4px;">odoo@cybrosys.com</a>
<a href="mailto:info@cybrosys.com" target="_blank"
class="btn btn-block deep_hover"
style="text-decoration: none; background-color: #b22126; color: #FFF; border-radius: 4px;">info@cybrosys.com</a>
</div>
b
<div class="col-lg-3 shadow mt-2"
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #546E7A; height: 300px;">
<h5 class="font-weight-bold"
style="font-family: Roboto, 'sans-serif';">Follow Us</h5>
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;">Follow us
on social media for latest
updates.</p>
<div class="d-flex justify-content-begin align-items-center">
<a href="https://www.facebook.com/cybrosystechnologies"
target="_blank"
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center"
style="text-decoration: none; background-color:#3b5998; color: #fff; height: 35px; width: 35px; border-radius: 4px;"><i
class="fa fa-facebook"></i></a>
<a href="https://twitter.com/cybrosys" target="_blank"
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center"
style="text-decoration: none; background-color:#00acee ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i
class="fa fa-twitter"></i></a>
<a href="https://www.youtube.com/channel/UCKjWLm7iCyOYINVspCSanjg"
target="_blank"
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center"
style="text-decoration: none; background-color:#FF0000 ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i
class="fa fa-play"></i></a>
<a href="https://medium.com/cybrosys" target="_blank"
class="btn mb-2 deep_hover d-flex justify-content-center align-items-center"
style="text-decoration: none; background-color:#000 ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i
class="fa fa-medium"></i></a>
</div>
</div>
<!-- End of Contact Cards -->
</div>
</section>
</div>
<!-- Footer -->
<section class="oe_container" style="padding:2rem 3rem 1rem;">
<div class="row"
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center"
style="margin-top: 4rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px"
height="auto"/>
</div>
<!-- End of Logo -->
<div class="col-lg-12" style="margin-top: 2rem;">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.bundle.min.js"
integrity="sha512-wV7Yj1alIZDqZFCUQJy85VN+qvEIly93fIQAN7iqDFCPEucLCeNFz4r35FCo9s6WrpdDQPi80xbljXB8Bjtvcg=="
crossorigin="anonymous"></script>
</body>

38
product_approval_management/views/product_approval_views.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_product_template_approval_form" model="ir.ui.view">
<field name="name">approval</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<header>
<button name="confirm_product_approval" type="object"
attrs="{'invisible': [('approve_state','!=','draft')]}"
string="Confirm"
groups="product_approval_management.product_manager"/>
<button name="reset_product_approval" type="object"
attrs="{'invisible': [('approve_state','!=','confirmed')]}"
string="Reset To Draft"
groups="product_approval_management.product_manager"/>
<field name="approve_state" widget="statusbar"
statusbar_visible="draft,confirmed"/>
</header>
</field>
</record>
<record id="inherited_sale_order_line_view" model="ir.ui.view">
<field name="name">approval</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='product_id']" position="attributes">
<attribute name="domain">[('approve_state', '=', 'confirmed'), ('sale_ok', '=', True), '|', ('company_id', '=', False),('company_id', '=', company_id)]
</attribute>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save