diff --git a/invoice_multi_approval/README.rst b/invoice_multi_approval/README.rst new file mode 100644 index 000000000..642d337eb --- /dev/null +++ b/invoice_multi_approval/README.rst @@ -0,0 +1,42 @@ +Invoice multi level approval +============================ +* Enables the option for adding multiple approvals to the invoice documents + +Installation +============ +- www.odoo.com/documentation/14.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 `__ + +Credits +------- +* Developer: Sayooj A O + Version 14 Muhammed Nafih @cybrosys + Version 15 Akshay CK @cybrosys + + +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: ``__ diff --git a/invoice_multi_approval/__init__.py b/invoice_multi_approval/__init__.py new file mode 100644 index 000000000..759011b8d --- /dev/null +++ b/invoice_multi_approval/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 . +# +############################################################################# +from . import models diff --git a/invoice_multi_approval/__manifest__.py b/invoice_multi_approval/__manifest__.py new file mode 100644 index 000000000..03004e975 --- /dev/null +++ b/invoice_multi_approval/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 . +# +############################################################################# +{ + 'name': "Invoice Multi level Approval", + 'version': '15.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, +} diff --git a/invoice_multi_approval/data/data.xml b/invoice_multi_approval/data/data.xml new file mode 100644 index 000000000..6e2af647f --- /dev/null +++ b/invoice_multi_approval/data/data.xml @@ -0,0 +1,9 @@ + + + + + True + True + + + \ No newline at end of file diff --git a/invoice_multi_approval/doc/RELEASE_NOTES.md b/invoice_multi_approval/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..40a19076b --- /dev/null +++ b/invoice_multi_approval/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 31.10.2020 +#### Version 15.0.1.0.0 +##### ADD +- Initial commit diff --git a/invoice_multi_approval/models/__init__.py b/invoice_multi_approval/models/__init__.py new file mode 100644 index 000000000..dea3944d3 --- /dev/null +++ b/invoice_multi_approval/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 . +# +############################################################################# +from . import account_move +from . import invoice_approval diff --git a/invoice_multi_approval/models/account_move.py b/invoice_multi_approval/models/account_move.py new file mode 100644 index 000000000..3f7104ef5 --- /dev/null +++ b/invoice_multi_approval/models/account_move.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 . +# +############################################################################# +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.move_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.move_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.move_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.move_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') diff --git a/invoice_multi_approval/models/invoice_approval.py b/invoice_multi_approval/models/invoice_approval.py new file mode 100644 index 000000000..c82f69abb --- /dev/null +++ b/invoice_multi_approval/models/invoice_approval.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 . +# +############################################################################# +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 diff --git a/invoice_multi_approval/security/groups.xml b/invoice_multi_approval/security/groups.xml new file mode 100644 index 000000000..09e31e65d --- /dev/null +++ b/invoice_multi_approval/security/groups.xml @@ -0,0 +1,31 @@ + + + + + Invoice Approval + Access to the invoice approval menu + 3 + + + Approvers + + + + Approve Manager + + + + + Billing Administrator + + + + + Billing + + + + + \ No newline at end of file diff --git a/invoice_multi_approval/security/ir.model.access.csv b/invoice_multi_approval/security/ir.model.access.csv new file mode 100644 index 000000000..2f7d93c53 --- /dev/null +++ b/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 diff --git a/invoice_multi_approval/static/description/assets/icons/chevron.png b/invoice_multi_approval/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/chevron.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/cogs.png b/invoice_multi_approval/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/cogs.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/consultation.png b/invoice_multi_approval/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/consultation.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/ecom-black.png b/invoice_multi_approval/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/ecom-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/education-black.png b/invoice_multi_approval/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/education-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/hotel-black.png b/invoice_multi_approval/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/hotel-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/license.png b/invoice_multi_approval/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/license.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/lifebuoy.png b/invoice_multi_approval/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/lifebuoy.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/manufacturing-black.png b/invoice_multi_approval/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/manufacturing-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/pos-black.png b/invoice_multi_approval/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/pos-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/puzzle.png b/invoice_multi_approval/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/puzzle.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/restaurant-black.png b/invoice_multi_approval/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/restaurant-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/service-black.png b/invoice_multi_approval/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/service-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/trading-black.png b/invoice_multi_approval/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/trading-black.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/training.png b/invoice_multi_approval/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/training.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/update.png b/invoice_multi_approval/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/update.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/user.png b/invoice_multi_approval/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/user.png differ diff --git a/invoice_multi_approval/static/description/assets/icons/wrench.png b/invoice_multi_approval/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/invoice_multi_approval/static/description/assets/icons/wrench.png differ diff --git a/invoice_multi_approval/static/description/banner.png b/invoice_multi_approval/static/description/banner.png new file mode 100644 index 000000000..b19bf9df7 Binary files /dev/null and b/invoice_multi_approval/static/description/banner.png differ diff --git a/invoice_multi_approval/static/description/icon.png b/invoice_multi_approval/static/description/icon.png new file mode 100644 index 000000000..e86ece082 Binary files /dev/null and b/invoice_multi_approval/static/description/icon.png differ diff --git a/invoice_multi_approval/static/description/images/checked.png b/invoice_multi_approval/static/description/images/checked.png new file mode 100644 index 000000000..e6c63d582 Binary files /dev/null and b/invoice_multi_approval/static/description/images/checked.png differ diff --git a/invoice_multi_approval/static/description/images/hero.png b/invoice_multi_approval/static/description/images/hero.png new file mode 100644 index 000000000..1bb6579f2 Binary files /dev/null and b/invoice_multi_approval/static/description/images/hero.png differ diff --git a/invoice_multi_approval/static/description/images/invoice_approval_01.png b/invoice_multi_approval/static/description/images/invoice_approval_01.png new file mode 100644 index 000000000..d1957c2ee Binary files /dev/null and b/invoice_multi_approval/static/description/images/invoice_approval_01.png differ diff --git a/invoice_multi_approval/static/description/images/invoice_approval_02.png b/invoice_multi_approval/static/description/images/invoice_approval_02.png new file mode 100644 index 000000000..113211795 Binary files /dev/null and b/invoice_multi_approval/static/description/images/invoice_approval_02.png differ diff --git a/invoice_multi_approval/static/description/images/invoice_approval_03.png b/invoice_multi_approval/static/description/images/invoice_approval_03.png new file mode 100644 index 000000000..42a656803 Binary files /dev/null and b/invoice_multi_approval/static/description/images/invoice_approval_03.png differ diff --git a/invoice_multi_approval/static/description/images/invoice_approval_04.png b/invoice_multi_approval/static/description/images/invoice_approval_04.png new file mode 100644 index 000000000..348892aeb Binary files /dev/null and b/invoice_multi_approval/static/description/images/invoice_approval_04.png differ diff --git a/invoice_multi_approval/static/description/images/invoice_approval_05.png b/invoice_multi_approval/static/description/images/invoice_approval_05.png new file mode 100644 index 000000000..6c1519834 Binary files /dev/null and b/invoice_multi_approval/static/description/images/invoice_approval_05.png differ diff --git a/invoice_multi_approval/static/description/images/logo.png b/invoice_multi_approval/static/description/images/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/invoice_multi_approval/static/description/images/logo.png differ diff --git a/invoice_multi_approval/static/description/images/modules/adv_ecom_image.png b/invoice_multi_approval/static/description/images/modules/adv_ecom_image.png new file mode 100644 index 000000000..cf31cfb4a Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/adv_ecom_image.png differ diff --git a/invoice_multi_approval/static/description/images/modules/hide_image.png b/invoice_multi_approval/static/description/images/modules/hide_image.png new file mode 100644 index 000000000..be440eb23 Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/hide_image.png differ diff --git a/invoice_multi_approval/static/description/images/modules/ip_image.png b/invoice_multi_approval/static/description/images/modules/ip_image.png new file mode 100644 index 000000000..0841c9749 Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/ip_image.png differ diff --git a/invoice_multi_approval/static/description/images/modules/payment_image.png b/invoice_multi_approval/static/description/images/modules/payment_image.png new file mode 100644 index 000000000..ee36ed365 Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/payment_image.png differ diff --git a/invoice_multi_approval/static/description/images/modules/print_image.png b/invoice_multi_approval/static/description/images/modules/print_image.png new file mode 100644 index 000000000..b470725a1 Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/print_image.png differ diff --git a/invoice_multi_approval/static/description/images/modules/user_log_image.png b/invoice_multi_approval/static/description/images/modules/user_log_image.png new file mode 100644 index 000000000..0f0d5d3c2 Binary files /dev/null and b/invoice_multi_approval/static/description/images/modules/user_log_image.png differ diff --git a/invoice_multi_approval/static/description/index.html b/invoice_multi_approval/static/description/index.html new file mode 100644 index 000000000..946acdf27 --- /dev/null +++ b/invoice_multi_approval/static/description/index.html @@ -0,0 +1,600 @@ +
+
+
+
+ +
+
+
+ Community +
+ +
+
+
+
+ +
+
+ +
+
+

Invoice Multi Level Approval

+

+ Module Add the Multiple Approval Option for Invoice, Bill, Refund and Credit Notes. +

+ +
+
+ + + +
+
+

Overview

+
+

+ 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. +

+
+
+ + + + +
+
+

Key Features

+
+
+ + +
+ +
+ +

+ Seperate user groups for approver and approval managers. +

+
+ +
+ +

+ TDocument can only validate when all approvals are completed. +

+
+
+ +

+ Approval Option can be enabled/disabled from the configuration panel. +

+
+ +
+
+
+
+ + + + +
+
+

Screenshots

+
+ + +
+
+

+ 01

+
+
+

+ Two Security Groups +

+

+ There are two security groups present "Approval User" and "Approval Manager".

+ +
+
+ + + + +
+
+

+ 02

+
+
+

+ Configure Approval Settings +

+

+ There will be a menu for configuring the approval settings. +

+ +
+
+ + + + +
+
+

+ 03

+
+
+

+ Select Approvers for Corresponding Documents +

+

+ This is the configuration panel of approval. From here we can set the approvers for the + corresponding documents. +

+ +
+
+ + + + +
+
+

+ 04

+
+
+

+ Track Approval Process Progress +

+

+ 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. +

+ +
+
+ + + + +
+
+

+ 05

+
+
+

+ Approve Option for Users Included in the List. +

+

+ There will a button "Approve" for the users who are included in the list. +

+ +
+
+ + + + +
+
+ + + +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
Odoo + Customization
+
+ +
+
+ +
+
Odoo + Implementation
+
+ +
+
+ +
+
Odoo + Support
+
+ + +
+
+ +
+
Hire + Odoo + Developer
+
+ +
+
+ +
+
Odoo + Integration
+
+ +
+
+ +
+
Odoo + Migration
+
+ + +
+
+ +
+
Odoo + Consultancy
+
+ +
+
+ +
+
Odoo + Implementation
+
+ +
+
+ +
+
Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + + +
+
\ No newline at end of file diff --git a/invoice_multi_approval/views/account_move_inherited.xml b/invoice_multi_approval/views/account_move_inherited.xml new file mode 100644 index 000000000..cc4409043 --- /dev/null +++ b/invoice_multi_approval/views/account_move_inherited.xml @@ -0,0 +1,48 @@ + + + + account.move.approval.inherited + account.move + + + + + + + + + +