Browse Source

[ADD] Initial Commit 'invoice_multi_approval'

Ajmal JK 5 years ago
parent
commit
325cbd4c1b
  1. 40
      invoice_multi_approval/README.rst
  2. 22
      invoice_multi_approval/__init__.py
  3. 46
      invoice_multi_approval/__manifest__.py
  4. 9
      invoice_multi_approval/data/data.xml
  5. 6
      invoice_multi_approval/doc/RELEASE_NOTES.md
  6. 23
      invoice_multi_approval/models/__init__.py
  7. 135
      invoice_multi_approval/models/account_move.py
  8. 59
      invoice_multi_approval/models/invoice_approval.py
  9. 31
      invoice_multi_approval/security/groups.xml
  10. 7
      invoice_multi_approval/security/ir.model.access.csv
  11. BIN
      invoice_multi_approval/static/description/banner.png
  12. BIN
      invoice_multi_approval/static/description/icon.png
  13. BIN
      invoice_multi_approval/static/description/images/approval.png
  14. BIN
      invoice_multi_approval/static/description/images/banner_barcode_scanning.jpeg
  15. BIN
      invoice_multi_approval/static/description/images/banner_currency_total.png
  16. BIN
      invoice_multi_approval/static/description/images/banner_customer_sequence.jpeg
  17. BIN
      invoice_multi_approval/static/description/images/banner_previous_rates.jpeg
  18. BIN
      invoice_multi_approval/static/description/images/banner_product_branding.png
  19. BIN
      invoice_multi_approval/static/description/images/banner_product_expiry.jpeg
  20. BIN
      invoice_multi_approval/static/description/images/checked.png
  21. BIN
      invoice_multi_approval/static/description/images/cybrosys.png
  22. BIN
      invoice_multi_approval/static/description/images/invoice_approval_01.png
  23. BIN
      invoice_multi_approval/static/description/images/invoice_approval_02.png
  24. BIN
      invoice_multi_approval/static/description/images/invoice_approval_03.png
  25. BIN
      invoice_multi_approval/static/description/images/invoice_approval_04.png
  26. BIN
      invoice_multi_approval/static/description/images/invoice_approval_05.png
  27. 542
      invoice_multi_approval/static/description/index.html
  28. 43
      invoice_multi_approval/views/account_move_inherited.xml
  29. 54
      invoice_multi_approval/views/invoice_approval_view.xml

40
invoice_multi_approval/README.rst

@ -0,0 +1,40 @@
Invoice multi level approval
============================
* Enables the option for adding multiple approvals to the invoice documents
Installation
============
- www.odoo.com/documentation/13.0/setup/install.html
- Install our custom addon
License
-------
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:
Sayooj A O
Contacts
--------
* Mail Contact : odoo@cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

22
invoice_multi_approval/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sayooj A O(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models

46
invoice_multi_approval/__manifest__.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sayooj A O(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': "Invoice Multi level Approval",
'version': '13.0.1.0.0',
'summary': """This module add the multiple approval option for invoice,
bill,refund and credit notes.""",
'description': """This module add the multiple approval option for invoice,
bill,refund and credit notes.""",
'category': 'Accounting',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['account'],
'data': [
'data/data.xml',
'security/groups.xml',
'security/ir.model.access.csv',
'views/invoice_approval_view.xml',
'views/account_move_inherited.xml',
],
'license': "AGPL-3",
'images': ['static/description/banner.png'],
'installable': True,
'application': True,
}

9
invoice_multi_approval/data/data.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record id="default_invoice_multi_approval_config" model="invoice.approval">
<field name="approve_customer_invoice">True</field>
<field name="approve_vendor_bill">True</field>
</record>
</data>
</odoo>

6
invoice_multi_approval/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <invoice_multi_approval>
#### 14.02.2020
#### Version 13.0.1.0.0
##### ADD
- Initial commit

23
invoice_multi_approval/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: Sayooj A O(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import account_move
from . import invoice_approval

135
invoice_multi_approval/models/account_move.py

@ -0,0 +1,135 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sayooj A O(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class AccountMove(models.Model):
_inherit = 'account.move'
approval_ids = fields.One2many('approval.line', 'move_id')
document_fully_approved = fields.Boolean(compute='_compute_document_fully_approved')
check_approve_ability = fields.Boolean(compute='_compute_check_approve_ability')
is_approved = fields.Boolean(compute='_compute_is_approved')
page_visibility = fields.Boolean(compute='_compute_page_visibility')
@api.depends('approval_ids')
def _compute_page_visibility(self):
"""Compute function for making the approval page visible/invisible"""
if self.approval_ids:
self.page_visibility = True
else:
self.page_visibility = False
@api.onchange('partner_id')
def _onchange_partner_id(self):
"""This is the onchange function of the partner which loads the
persons for the approval to the approver table of the account.move"""
res = super(AccountMove, self)._onchange_partner_id()
invoice_approval_id = self.env['invoice.approval'].search([])
self.approval_ids = None
if invoice_approval_id.approve_customer_invoice and self.type == 'out_invoice':
for user in invoice_approval_id.invoice_approver_ids:
vals = {
'approver_id': user.id
}
self.approval_ids |= self.approval_ids.new(vals)
elif invoice_approval_id.approve_vendor_bill and self.type == 'in_invoice':
for user in invoice_approval_id.bill_approver_ids:
vals = {
'approver_id': user.id
}
self.approval_ids |= self.approval_ids.new(vals)
elif invoice_approval_id.approve_customer_credit and self.type == 'out_refund':
for user in invoice_approval_id.cust_credit_approver_ids:
vals = {
'approver_id': user.id
}
self.approval_ids |= self.approval_ids.new(vals)
elif invoice_approval_id.approve_vendor_credit and self.type == 'in_refund':
for user in invoice_approval_id.vend_credit_approver_ids:
vals = {
'approver_id': user.id
}
self.approval_ids |= self.approval_ids.new(vals)
return res
@api.depends('approval_ids.approver_id')
def _compute_check_approve_ability(self):
"""This is the compute function which check the current
logged in user is eligible or not for approving the document"""
current_user = self.env.uid
approvers_list = []
for approver in self.approval_ids:
approvers_list.append(approver.approver_id.id)
if current_user in approvers_list:
self.check_approve_ability = True
else:
self.check_approve_ability = False
def invoice_approve(self):
"""This is the function of the approve button also
updates the approval table values according to the
approval of the users"""
self.ensure_one()
current_user = self.env.uid
for approval_id in self.approval_ids:
if current_user == approval_id.approver_id.id:
approval_id.update({'approval_status': True})
def _compute_is_approved(self):
"""In this compute function we are verifying whether the document
is approved/not approved by the current logged in user"""
current_user = self.env.uid
if self.invoice_line_ids and self.approval_ids:
for approval_id in self.approval_ids:
if current_user == approval_id.approver_id.id:
if approval_id.approval_status:
self.is_approved = True
break
else:
self.is_approved = False
else:
self.is_approved = False
else:
self.is_approved = False
@api.depends('approval_ids')
def _compute_document_fully_approved(self):
"""This is the compute function which verifies whether
the document is completely approved or not"""
length_approval_ids = len(self.approval_ids)
approval_ids = self.approval_ids
approve_lines = approval_ids.filtered(lambda item: item.approval_status)
length_approve_lines = len(approve_lines)
if length_approval_ids == length_approve_lines:
self.document_fully_approved = True
else:
self.document_fully_approved = False
class ApprovalLine(models.Model):
_name = 'approval.line'
_description = 'Approval line in Move'
move_id = fields.Many2one('account.move')
approver_id = fields.Many2one('res.users', string='Approver')
approval_status = fields.Boolean(string='Status')

59
invoice_multi_approval/models/invoice_approval.py

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sayooj A O(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class InvoiceApproval(models.Model):
_name = 'invoice.approval'
_rec_name = 'name'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = 'Invoice Approval'
name = fields.Char(default='Approval Configuration')
approve_customer_invoice = fields.Boolean(string="Approval on Customer Invoice",
help='Enable this field for adding the approvals for the customer invoice')
invoice_approver_ids = fields.Many2many('res.users', 'invoice_id', string='Invoice Approver', domain=lambda self: [
('groups_id', 'in', self.env.ref('invoice_multi_approval.group_approver').id)],
help='In this field you can add the approvers for the customer invoice')
approve_vendor_bill = fields.Boolean(string="Approval on Vendor Bill",
help='Enable this field for adding the approvals for the Vendor bill')
bill_approver_ids = fields.Many2many('res.users', 'bill_id', string='Bill Approver', domain=lambda self: [
('groups_id', 'in', self.env.ref('invoice_multi_approval.group_approver').id)],
help='In this field you can add the approvers for the Vendor bill')
approve_customer_credit = fields.Boolean(string='Approval on Customer Refund',
help='Enable this field for adding the approvals for the customer credit note')
cust_credit_approver_ids = fields.Many2many('res.users', 'cust_credit_id', string='Customer Credit Note Approver',
domain=lambda self: [
('groups_id', 'in',
self.env.ref('invoice_multi_approval.group_approver').id)],
help='In this field you can add the approvers for the Customer credit note')
approve_vendor_credit = fields.Boolean(string='Approval on Vendor Refund',
help='Enable this field for adding the approvals for the Vendor credit note')
vend_credit_approver_ids = fields.Many2many('res.users', 'vend_credit_id', string='Vendor Credit Note Approver',
domain=lambda self: [
('groups_id', 'in',
self.env.ref('invoice_multi_approval.group_approver').id)],
help='In this field you can add the approvers for the Vendor credit note')
def apply_configuration(self):
"""Function for applying the approval configuration"""
return True

31
invoice_multi_approval/security/groups.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record model="ir.module.category" id="group_invoice_multi_approval">
<field name="name">Invoice Approval</field>
<field name="description">Access to the invoice approval menu</field>
<field name="sequence">3</field>
</record>
<record id="group_approver" model="res.groups">
<field name="name">Approvers</field>
<field name="category_id" ref="invoice_multi_approval.group_invoice_multi_approval"/>
</record>
<record id="group_approve_manager" model="res.groups">
<field name="name">Approve Manager</field>
<field name="category_id" ref="invoice_multi_approval.group_invoice_multi_approval"/>
<field name="implied_ids"
eval="[(4, ref('invoice_multi_approval.group_approver'))]"/>
</record>
<record id="account.group_account_manager" model="res.groups">
<field name="name">Billing Administrator</field>
<field name="category_id" ref="base.module_category_accounting_accounting"/>
<field name="implied_ids"
eval="[(4, ref('account.group_account_invoice')), (4, ref('invoice_multi_approval.group_approve_manager'))]"/>
</record>
<record id="account.group_account_invoice" model="res.groups">
<field name="name">Billing</field>
<field name="category_id" ref="base.module_category_accounting_accounting"/>
<field name="implied_ids" eval="[(4, ref('base.group_user')),(4, ref('account.group_account_invoice'))]"/>
</record>
</data>
</odoo>

7
invoice_multi_approval/security/ir.model.access.csv

@ -0,0 +1,7 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
invoice_approval_access_right_user_id,invoice_approval_access_right_user,model_invoice_approval,invoice_multi_approval.group_approver,1,1,1,1
invoice_approval_access_right_manager_id,invoice_approval_access_right_manager,model_invoice_approval,invoice_multi_approval.group_approve_manager,1,1,1,1
approval_line_access_right_user_id,approval_line_access_right_user,model_approval_line,invoice_multi_approval.group_approver,1,1,1,1
approval_line_access_right_manager_id,approval_line_access_right_manager,model_approval_line,invoice_multi_approval.group_approve_manager,1,1,1,1
approval_line_access_right_group_user_id,approval_line_access_right_group_user,model_approval_line,base.group_user,1,0,0,0
invoice_approval_access_right_group_user_id,invoice_approval_access_right_group_user,model_invoice_approval,base.group_user,1,0,0,0
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 invoice_approval_access_right_user_id invoice_approval_access_right_user model_invoice_approval invoice_multi_approval.group_approver 1 1 1 1
3 invoice_approval_access_right_manager_id invoice_approval_access_right_manager model_invoice_approval invoice_multi_approval.group_approve_manager 1 1 1 1
4 approval_line_access_right_user_id approval_line_access_right_user model_approval_line invoice_multi_approval.group_approver 1 1 1 1
5 approval_line_access_right_manager_id approval_line_access_right_manager model_approval_line invoice_multi_approval.group_approve_manager 1 1 1 1
6 approval_line_access_right_group_user_id approval_line_access_right_group_user model_approval_line base.group_user 1 0 0 0
7 invoice_approval_access_right_group_user_id invoice_approval_access_right_group_user model_invoice_approval base.group_user 1 0 0 0

BIN
invoice_multi_approval/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
invoice_multi_approval/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
invoice_multi_approval/static/description/images/approval.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
invoice_multi_approval/static/description/images/banner_barcode_scanning.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
invoice_multi_approval/static/description/images/banner_currency_total.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
invoice_multi_approval/static/description/images/banner_customer_sequence.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
invoice_multi_approval/static/description/images/banner_previous_rates.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
invoice_multi_approval/static/description/images/banner_product_branding.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
invoice_multi_approval/static/description/images/banner_product_expiry.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
invoice_multi_approval/static/description/images/checked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
invoice_multi_approval/static/description/images/cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
invoice_multi_approval/static/description/images/invoice_approval_01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
invoice_multi_approval/static/description/images/invoice_approval_02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
invoice_multi_approval/static/description/images/invoice_approval_03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
invoice_multi_approval/static/description/images/invoice_approval_04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
invoice_multi_approval/static/description/images/invoice_approval_05.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

542
invoice_multi_approval/static/description/index.html

@ -0,0 +1,542 @@
<div class="row"
style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;">
<a href="https://www.cybrosys.com/" target="_blank"><img src="images/cybrosys.png"
style=" width: 293px; padding: 1rem 0rem; margin: auto"
alt="cybrosys-logo"></a></div>
<div class="row"
style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;">
<div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px">
<div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;">
<h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;">Invoice Multi Level Approval</h1>
<h3 style="font-size: 21px;margin-top: 8px;position: relative;">Module add the multiple approval option for
invoice,bill,refund and credit notes.</h3>
</div>
<h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2>
<ul style=" padding: 0 1px; list-style: none; ">
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">Configuration
panel for approval settings.
</li>
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">Document can
only validate when all approvals are completed.
</li>
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
style=" width: 22px; margin-right: 6px; "
alt="check">Approval
Option can be enabled/disabled from the configuration panel.
</li>
</ul>
</div>
<div class="col-md-5 col-sm-12 col-xs-12"><img src="images/approval.png" class="img-responsive"
alt=""></div>
</div>
<div>
<section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;">
<div class="row py-4 px-3">
<div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;">
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab"
style="border: none;background: unset;">
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link active show" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400;text-align: center;
color: #fff;">Overview </a></li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a id="pills-home-tab" data-toggle="pill" href="#pills-home1" role="tab"
aria-controls="pills-home" aria-selected="true" class="nav-link " style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;
color: #fff;">Features </a></li>
<li class="nav-item mr-1 mb-3"
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #d31c22;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
<a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab"
aria-controls="pills-profile" aria-selected="false" style="color: #000000;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;
color: #fff;">Screenshots </a></li>
</ul>
<div class="tab-content" id="pills-tabContent"
style="padding-top: 30px; padding-bottom: 30px; padding: 30px;">
<div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- Overview-->
<h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h3 class="oe_slogan"
style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;">
The module allows to assign the users for the approval process in the invoice documents and
the document can be posted only after the approval process completed.
</h3>
</div>
<div class="px-3 pt-1 tab-pane fade " id="pills-home1" role="tabpanel" aria-labelledby="
pills-home-tab">
<!-- feature tab-->
<h2 style="font-weight: 600;text-align: center;width: 100%;">Configuration panel for approval
settings.</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<ul>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Add
salesperson's signature in Sales documents.
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Document
can only validate when all approvals are completed.
</li>
<li class="mb8"
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">Approval
Option can be enabled/disabled from the configuration panel.
</li>
</ul>
</div>
<!-- Screenshot tab-->
<div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel"
aria-labelledby="pills-profile-tab">
<div class="tab-pane">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<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;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">There
are two security groups present "Approval User" and "Approval
Manager".
</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/invoice_approval_01.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;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">There will be a menu for configuring the approval settings.
</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/invoice_approval_02.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;">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">This
is the configuration panel of approval.From here we can set the
approvers for the corresponding documents</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/invoice_approval_03.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; ">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">There
is a approval tab inside the documents from which we can see the
progress of the approval process and the list of persons
included.</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/invoice_approval_04.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; ">
<img src="images/checked.png"
style=" width: 22px; margin-right: 6px; " alt="check">There
will a button "Approve" for the users who are included in the
list.
</h3>
<div style=""><img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/invoice_approval_05.png"></div>
</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>
</div>
</section>
</div>
</div>
</div>
<div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact" role="tabpanel"
aria-labelledby="pills-contact-tab">
<ul class="list-unstyled">
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height: 0px;">
<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/product_brand_sale/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_product_branding.png"></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/product_expiry_warning/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_product_expiry.jpeg"></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/sale_purchase_previous_product_cost/"
target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_previous_rates.jpeg"></div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<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/customer_sequence/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_customer_sequence.jpeg"></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/barcode_scanning_sale_purchase/"
target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_barcode_scanning.jpeg"></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/amount_currency_sale/" target="_blank">
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
<img class="img img-responsive center-block"
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
src="images/banner_currency_total.png"></div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" 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="#demo1"
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>
</div>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; ">
<!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> -->
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-customization.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Customization </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-implementation.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Implementation </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-integration.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Integration </a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-erp-support.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Odoo Support</a></h3>
</div>
<div class="col-md-2 col-sm-6 col-xs-12">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img
src="https://www.cybrosys.com/images/hire-odoo-developer.png"
style="width: 100%;border-radius: 100%;"/> </a></div>
<h3 class="oe_slogan"
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hire Odoo Developers</a></h3>
</a>
</div>
<!-- </div> -->
</div>
</section>
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
<div class="row" style="margin: 0">
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> -->
<div class="row" style="width: 100%">
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Trading </a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Easily procure and sell your products. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png"
alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a></div>
</div>
<div style="width:70%;float:left;" style=" margin-bottom: 10px; ">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Manufacturing</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Plan, track and schedule your operations. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
Restaurant</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Run your bar or restaurant methodical. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
POS</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
Easy configuring and convivial selling. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
E-commerce & Website</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Mobile friendly, awe-inspiring product pages. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Hotel Management</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
An all-inclusive hotel management application. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Education</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
A Collaborative platform for educational management. </h3>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
<div>
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img
src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry"
style=" border-radius: 100%;width:100%;"/> </a></div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan"
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
Service Management</a></h3>
<h3 class="oe_slogan"
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
Keep track of services and invoice accordingly. </h3>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<center>
<div class="col-md-12" style="margin: auto !important;
width: 70%;
padding: 30px;">
<h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2>
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
<h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please
let us know. We are ready to offer our support. </h4>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-envelope"></i>Email us </h4>
<p>odoo@cybrosys.com / info@cybrosys.com</p>
</div>
<div class="col-md-6" style="float:left; padding:20px;">
<h4><i class="fa fa-phone"></i> Contact Us </h4>
<a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a>
</div>
</div>
</center>
</section>
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
<div class="oe_slogan" style="margin-bottom: 0px;">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; ">
</div>
<br>
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;"
class="center-block">
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "><a href="https://twitter.com/cybrosys"
target="_blank"><i
class="fa fa-2x fa-twitter"
style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i
class="fa fa-2x fa-linkedin"
style="color:white;background: #31a3d6;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook"
style="color:white;background: #3b5998;width:35px; height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest"
style="color:white;background: #ac0f18;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
</td>
</div>
</div>
</section>
</div>

43
invoice_multi_approval/views/account_move_inherited.xml

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="ir.ui.view" id="account_move_approval_inherited">
<field name="name">account.move.approval.inherited</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_user_id']" position="after">
<field name="document_fully_approved" invisible="1"/>
<field name="check_approve_ability" invisible="1"/>
<field name="is_approved" invisible="1"/>
<field name="page_visibility" invisible="1"/>
</xpath>
<xpath expr="//button[@name='action_post']" position="before">
<button name="invoice_approve" class="oe_highlight"
string="Approve" type="object" groups="invoice_multi_approval.group_approver,invoice_multi_approval.group_approve_manager"
attrs="{'invisible': ['|','|','|',('check_approve_ability', '!=', True),('document_fully_approved', '=', True),('is_approved','=',True),('type','not in',('in_invoice','out_invoice','in_refund','out_refund'))]}"/>
</xpath>
<xpath expr="//button[@name='action_post']" position="attributes">
<attribute name="attrs">{'invisible': ['|',('document_fully_approved', '!=',
True),('state','=','posted')]}
</attribute>
</xpath>
<xpath expr="//page[@id='other_tab']" position="after">
<page string="Approvals" name="approval_tab"
attrs="{'invisible': ['|',('type','not in',('in_invoice','out_invoice','in_refund','out_refund')),('page_visibility','=',False)]}">
<group>
<field name="approval_ids" mode="tree" nolabel="1" style="pointer-events:none;">
<tree string="Approval lines" create="0" edit="0" delete="0">
<field name="approver_id"/>
<field name="approval_status"/>
</tree>
</field>
</group>
</page>
</xpath>
</field>
</record>
<menuitem id="approval_main_menu" name="Approvals" parent="account.menu_finance_configuration" sequence="10"
groups="group_approve_manager"/>
<menuitem id="approval_sub_menu" name="Invoice Approval" parent="approval_main_menu"
action="approval_sub_menu_action" sequence="1" groups="group_approve_manager"/>
</odoo>

54
invoice_multi_approval/views/invoice_approval_view.xml

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="invoice_approval_form_view" model="ir.ui.view">
<field name="name">invoice.approval.form.view</field>
<field name="model">invoice.approval</field>
<field name="arch" type="xml">
<form class="oe_form_configuration">
<header>
<button name="apply_configuration" type="object" string="Apply" class="btn-primary"/>
</header>
<sheet>
<div class="oe_title oe_read_only">
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group string="Customer Configuration">
<field name="approve_customer_invoice"/>
<field name="invoice_approver_ids" widget="many2many_tags"
attrs="{'invisible': [('approve_customer_invoice', '=', False)],'required':[('approve_customer_invoice', '=', True)]}"/>
<field name="approve_customer_credit"/>
<field name="cust_credit_approver_ids" widget="many2many_tags"
attrs="{'invisible': [('approve_customer_credit', '=', False)],'required':[('approve_customer_credit', '=', True)]}"/>
</group>
<group string="Vendor Configuration">
<field name="approve_vendor_bill"/>
<field name="bill_approver_ids" widget="many2many_tags"
attrs="{'invisible': [('approve_vendor_bill', '=', False)],'required':[('approve_vendor_bill', '=', True)]}"/>
<field name="approve_vendor_credit"/>
<field name="vend_credit_approver_ids" widget="many2many_tags"
attrs="{'invisible': [('approve_vendor_credit', '=', False)],'required':[('approve_vendor_credit', '=', True)]}"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread" options="{'post_refresh': 'recipients'}"/>
</div>
</form>
</field>
</record>
<record id="approval_sub_menu_action" model="ir.actions.act_window">
<field name="name">Invoice Multi Approval</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">invoice.approval</field>
<field name="res_id" ref="invoice_multi_approval.default_invoice_multi_approval_config"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
</data>
</odoo>
Loading…
Cancel
Save