diff --git a/employee_purchase_requisition/README.rst b/employee_purchase_requisition/README.rst new file mode 100755 index 000000000..5bc6962b4 --- /dev/null +++ b/employee_purchase_requisition/README.rst @@ -0,0 +1,51 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Employee Purchase Requisition +============================= +* Employee Purchase Requisition Module for Odoo 18 + +Installation +============ + - www.odoo.com/documentation/18.0/setup/install.html + - Install our custom addon + +License +------- +Affero General Public License v3.0 (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer : (V18) Mufeeda Shirin, + (V17) Ashok P K + + Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://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 +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +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/employee_purchase_requisition/__init__.py b/employee_purchase_requisition/__init__.py new file mode 100755 index 000000000..573e9b4cd --- /dev/null +++ b/employee_purchase_requisition/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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/employee_purchase_requisition/__manifest__.py b/employee_purchase_requisition/__manifest__.py new file mode 100755 index 000000000..4ff2252b5 --- /dev/null +++ b/employee_purchase_requisition/__manifest__.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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': 'Employee Purchase Requisition', + 'version': '18.0.1.0.0', + 'category': 'Purchases', + 'summary': 'Manage material requisition of employees and user', + 'description': """Create the material requisition request and there are + multi-level approvals for requests from the department head and requisition + manager. Department head has the option to choose vendors for each material. + Also we can generate the PDF report for each material requisition""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'hr', 'stock', 'purchase'], + 'data': [ + 'security/employee_purchase_requisition_groups.xml', + 'security/employee_purchase_requisition_security.xml', + 'security/ir.model.access.csv', + 'data/ir_sequence_data.xml', + 'views/employee_purchase_requisition_views.xml', + 'views/requisition_order_views.xml', + 'views/hr_employee_views.xml', + 'views/hr_department_views.xml', + 'views/purchase_order_views.xml', + 'views/stock_picking_views.xml', + 'views/employee_purchase_requisition_actions.xml', + 'views/employee_purchase_requisition_menu.xml', + 'report/employee_purchase_requisition_templates.xml', + 'report/employee_purchase_requisition_report.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, +} + diff --git a/employee_purchase_requisition/data/ir_sequence_data.xml b/employee_purchase_requisition/data/ir_sequence_data.xml new file mode 100755 index 000000000..e99117142 --- /dev/null +++ b/employee_purchase_requisition/data/ir_sequence_data.xml @@ -0,0 +1,15 @@ + + + + + + Employee Purchase Requisition + employee.purchase.requisition + EPR + 5 + + + + + + \ No newline at end of file diff --git a/employee_purchase_requisition/doc/RELEASE_NOTES.md b/employee_purchase_requisition/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..9d90b3e3f --- /dev/null +++ b/employee_purchase_requisition/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 19.07.2025 +#### Version 18.0.1.0.0 +#### ADD +- Initial commit for Employee Purchase Requisition diff --git a/employee_purchase_requisition/models/__init__.py b/employee_purchase_requisition/models/__init__.py new file mode 100755 index 000000000..adf8fea21 --- /dev/null +++ b/employee_purchase_requisition/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 employee_purchase_requisition +from . import hr_department +from . import hr_employee +from . import purchase_order +from . import requisition_order +from . import stock_picking diff --git a/employee_purchase_requisition/models/employee_purchase_requisition.py b/employee_purchase_requisition/models/employee_purchase_requisition.py new file mode 100755 index 000000000..2ad3c7409 --- /dev/null +++ b/employee_purchase_requisition/models/employee_purchase_requisition.py @@ -0,0 +1,237 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 +from odoo.exceptions import ValidationError + + +class PurchaseRequisition(models.Model): + """Class for adding fields and functions for purchase requisition model.""" + _name = 'employee.purchase.requisition' + _description = 'Employee Purchase Requisition' + _inherit = "mail.thread", "mail.activity.mixin" + + name = fields.Char(string="Reference No", readonly=True) + employee_id = fields.Many2one(comodel_name='hr.employee', string='Employee', + required=True, help='Select an employee') + dept_id = fields.Many2one(comodel_name='hr.department', string='Department', + related='employee_id.department_id', store=True, + help='Select an department') + user_id = fields.Many2one(comodel_name='res.users', string='Responsible', + required=True, + domain=lambda self: [('share', '=', False), + ('id', '!=', self.env.uid)], + help='Select a user who is responsible for requisition') + requisition_date = fields.Date(string="Requisition Date", + default=lambda self: fields.Date.today(), + help='Date of requisition') + receive_date = fields.Date(string="Received Date", readonly=True, + help='Received date') + requisition_deadline = fields.Date(string="Requisition Deadline", + help="End date of purchase requisition") + company_id = fields.Many2one(comodel_name='res.company', string='Company', + default=lambda self: self.env.company, + help='Select a company') + requisition_order_ids = fields.One2many(comodel_name='requisition.order', + inverse_name='requisition_product_id', + required=True) + confirm_id = fields.Many2one(comodel_name='res.users', + string='Confirmed By', + default=lambda self: self.env.uid, + readonly=True, + help='User who confirmed the requisition.') + manager_id = fields.Many2one(comodel_name='res.users', + string='Department Manager', readonly=True, + help='Select a department manager') + requisition_head_id = fields.Many2one(comodel_name='res.users', + string='Approved By', readonly=True, + help='User who approved the requisition.') + rejected_user_id = fields.Many2one(comodel_name='res.users', + string='Rejected By', readonly=True, + help='User who rejected the requisition') + confirmed_date = fields.Date(string='Confirmed Date', readonly=True, + help='Date of requisition confirmation') + department_approval_date = fields.Date(string='Department Approval Date', + readonly=True, + help='Department approval date') + approval_date = fields.Date(string='Approved Date', readonly=True, + help='Requisition approval date') + reject_date = fields.Date(string='Rejection Date', readonly=True, + help='Requisition rejected date') + source_location_id = fields.Many2one(comodel_name='stock.location', + string='Source Location', + help='Source location of requisition.') + destination_location_id = fields.Many2one(comodel_name='stock.location', + string="Destination Location", + help='Destination location of requisition.') + delivery_type_id = fields.Many2one(comodel_name='stock.picking.type', + string='Delivery To', + help='Type of delivery.') + internal_picking_id = fields.Many2one(comodel_name='stock.picking.type', + string="Internal Picking") + requisition_description = fields.Text(string="Reason For Requisition") + purchase_count = fields.Integer(string='Purchase Count', + help='Purchase count', + compute='_compute_purchase_count') + internal_transfer_count = fields.Integer(string='Internal Transfer count', + help='Internal transfer count', + compute='_compute_internal_transfer_count') + state = fields.Selection([('new', 'New'), ('waiting_department_approval', + 'Waiting Department Approval'), + ('waiting_head_approval', + 'Waiting Head Approval'), + ('approved', 'Approved'), + ('purchase_order_created', + 'Purchase Order Created'), + ('received', 'Received'), + ('cancelled', 'Cancelled')], default='new', + copy=False, tracking=True) + + @api.model + def create(self, vals): + """Function to generate purchase requisition sequence""" + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code( + 'employee.purchase.requisition') or 'New' + result = super(PurchaseRequisition, self).create(vals) + return result + + def action_confirm_requisition(self): + """Function to confirm purchase requisition""" + self.source_location_id = ( + self.employee_id.sudo().department_id.department_location_id.id) if ( + self.employee_id.sudo().department_id.department_location_id) else ( + self.env.ref('stock.stock_location_stock').id) + self.destination_location_id = ( + self.employee_id.sudo().employee_location_id.id) if ( + self.employee_id.sudo().employee_location_id) else ( + self.env.ref('stock.stock_location_stock').id) + self.delivery_type_id = ( + self.source_location_id.warehouse_id.in_type_id.id) + self.internal_picking_id = ( + self.source_location_id.warehouse_id.int_type_id.id) + self.write({'state': 'waiting_department_approval'}) + self.confirm_id = self.env.uid + self.confirmed_date = fields.Date.today() + + def action_department_approval(self): + """Approval from department""" + for rec in self.requisition_order_ids: + if rec.requisition_type == 'purchase_order' and not rec.partner_id: + raise ValidationError('Select a vendor') + self.write({'state': 'waiting_head_approval'}) + self.manager_id = self.env.uid + self.department_approval_date = fields.Date.today() + + def action_department_cancel(self): + """Cancellation from department """ + self.write({'state': 'cancelled'}) + self.rejected_user_id = self.env.uid + self.reject_date = fields.Date.today() + + def action_head_approval(self): + """Approval from department head""" + self.write({'state': 'approved'}) + self.requisition_head_id = self.env.uid + self.approval_date = fields.Date.today() + + def action_head_cancel(self): + """Cancellation from department head""" + self.write({'state': 'cancelled'}) + self.rejected_user_id = self.env.uid + self.reject_date = fields.Date.today() + + def action_create_purchase_order(self): + """Create purchase order and internal transfer""" + for rec in self.requisition_order_ids: + if rec.requisition_type == 'internal_transfer': + self.env['stock.picking'].create({ + 'location_id': self.source_location_id.id, + 'location_dest_id': self.destination_location_id.id, + 'picking_type_id': self.internal_picking_id.id, + 'requisition_order': self.name, + 'move_ids_without_package': [(0, 0, { + 'name': rec.product_id.name, + 'product_id': rec.product_id.id, + 'product_uom': rec.product_id.uom_id.id, + 'product_uom_qty': rec.quantity, + 'location_id': self.source_location_id.id, + 'location_dest_id': self.destination_location_id.id, + })] + }) + else: + self.env['purchase.order'].create({ + 'partner_id': rec.partner_id.id, + 'requisition_order': self.name, + "order_line": [(0, 0, { + 'product_id': rec.product_id.id, + 'product_qty': rec.quantity, + })]}) + self.write({'state': 'purchase_order_created'}) + + def _compute_internal_transfer_count(self): + """Function to compute the transfer count""" + self.internal_transfer_count = self.env['stock.picking'].search_count([ + ('requisition_order', '=', self.name)]) + + def _compute_purchase_count(self): + """Function to compute the purchase count""" + self.purchase_count = self.env['purchase.order'].search_count([ + ('requisition_order', '=', self.name)]) + + def action_receive(self): + """Received purchase requisition""" + self.write({'state': 'received'}) + self.receive_date = fields.Date.today() + + def get_purchase_order(self): + """Purchase order smart button view""" + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': 'Purchase Order', + 'view_mode': 'list,form', + 'res_model': 'purchase.order', + 'domain': [('requisition_order', '=', self.name)], + } + + def get_internal_transfer(self): + """Internal transfer smart tab view""" + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': 'Internal Transfers', + 'view_mode': 'list,form', + 'res_model': 'stock.picking', + 'domain': [('requisition_order', '=', self.name)], + } + + def action_print_report(self): + """Print purchase requisition report""" + data = { + 'employee': self.employee_id.name, + 'records': self.read(), + 'order_ids': self.requisition_order_ids.read(), + } + return (self.env.ref( + 'employee_purchase_requisition.' + 'action_report_purchase_requisition').report_action( + self, data=data)) diff --git a/employee_purchase_requisition/models/hr_department.py b/employee_purchase_requisition/models/hr_department.py new file mode 100755 index 000000000..58951c398 --- /dev/null +++ b/employee_purchase_requisition/models/hr_department.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 Department(models.Model): + """ Class for adding new field in employee department""" + _inherit = 'hr.department' + + department_location_id = fields.Many2one(comodel_name='stock.location', + string='Destination Location', + help='Select a department location from the list of locations.') diff --git a/employee_purchase_requisition/models/hr_employee.py b/employee_purchase_requisition/models/hr_employee.py new file mode 100755 index 000000000..6fe553e30 --- /dev/null +++ b/employee_purchase_requisition/models/hr_employee.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 HrEmployeePrivate(models.Model): + """Class to add new field in employee form""" + _inherit = 'hr.employee' + + employee_location_id = fields.Many2one(comodel_name='stock.location', + string="Destination Location", + help='Select a employee location from the location list') diff --git a/employee_purchase_requisition/models/purchase_order.py b/employee_purchase_requisition/models/purchase_order.py new file mode 100755 index 000000000..62a69f283 --- /dev/null +++ b/employee_purchase_requisition/models/purchase_order.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 PurchaseOrder(models.Model): + """Class to add new field in purchase order""" + _inherit = 'purchase.order' + + requisition_order = fields.Char(string='Requisition Order', + help='Set a requisition Order') diff --git a/employee_purchase_requisition/models/requisition_order.py b/employee_purchase_requisition/models/requisition_order.py new file mode 100644 index 000000000..4f5cc399d --- /dev/null +++ b/employee_purchase_requisition/models/requisition_order.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 RequisitionOrder(models.Model): + """Model to add Requisition order details""" + _name = 'requisition.order' + _description = 'Requisition order' + + requisition_product_id = fields.Many2one( + comodel_name='employee.purchase.requisition', + help='Requisition product.') + state = fields.Selection(string='State', + related='requisition_product_id.state') + requisition_type = fields.Selection(string='Requisition Type', selection=[ + ('purchase_order', 'Purchase Order'), + ('internal_transfer', 'Internal Transfer'), ], + help='Type of requisition', + required=True, default='purchase_order') + product_id = fields.Many2one(comodel_name='product.product', required=True, + help='Product') + description = fields.Text(string="Description", compute='_compute_name', + store=True, readonly=False, precompute=True, + help='Product description') + quantity = fields.Integer(string='Quantity', help='Product quantity') + uom = fields.Char(related='product_id.uom_id.name', + string='Unit of Measure', help='Product unit of measure') + partner_id = fields.Many2one(comodel_name='res.partner', string='Vendor', + help='Vendor for the requisition', + readonly=False) + + @api.depends('product_id') + def _compute_name(self): + """Compute product description""" + for option in self: + if not option.product_id: + continue + product_lang = option.product_id.with_context( + lang=self.requisition_product_id.employee_id.lang) + option.description = product_lang.get_product_multiline_description_sale() + + @api.onchange('requisition_type') + def _onchange_product(self): + """Fetching product vendors""" + vendors_list = [data.partner_id.id for data in + self.product_id.seller_ids] + return {'domain': {'partner_id': [('id', 'in', vendors_list)]}} diff --git a/employee_purchase_requisition/models/stock_picking.py b/employee_purchase_requisition/models/stock_picking.py new file mode 100755 index 000000000..9cae2a480 --- /dev/null +++ b/employee_purchase_requisition/models/stock_picking.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 Picking(models.Model): + """Class to add new field in stock picking""" + _inherit = 'stock.picking' + + requisition_order = fields.Char(string='Requisition Order', + help='Requisition order sequence') diff --git a/employee_purchase_requisition/report/employee_purchase_requisition_report.xml b/employee_purchase_requisition/report/employee_purchase_requisition_report.xml new file mode 100755 index 000000000..61ca1b81d --- /dev/null +++ b/employee_purchase_requisition/report/employee_purchase_requisition_report.xml @@ -0,0 +1,11 @@ + + + + + Material Purchase Requisition Report + employee.purchase.requisition + qweb-pdf + employee_purchase_requisition.report_purchase_requisition + employee_purchase_requisition.report_purchase_requisition + + diff --git a/employee_purchase_requisition/report/employee_purchase_requisition_templates.xml b/employee_purchase_requisition/report/employee_purchase_requisition_templates.xml new file mode 100755 index 000000000..3142d63b1 --- /dev/null +++ b/employee_purchase_requisition/report/employee_purchase_requisition_templates.xml @@ -0,0 +1,259 @@ + + + + + diff --git a/employee_purchase_requisition/security/employee_purchase_requisition_groups.xml b/employee_purchase_requisition/security/employee_purchase_requisition_groups.xml new file mode 100755 index 000000000..cc96cede6 --- /dev/null +++ b/employee_purchase_requisition/security/employee_purchase_requisition_groups.xml @@ -0,0 +1,28 @@ + + + + Employee Purchase Requisition + User access level for Material Request + module + + 20 + + + + Requisition Users + + + + + Department Head + + + + + Requisition Manager + + + + \ No newline at end of file diff --git a/employee_purchase_requisition/security/employee_purchase_requisition_security.xml b/employee_purchase_requisition/security/employee_purchase_requisition_security.xml new file mode 100644 index 000000000..6c30ff099 --- /dev/null +++ b/employee_purchase_requisition/security/employee_purchase_requisition_security.xml @@ -0,0 +1,33 @@ + + + + + Requisition User Rule + + [('confirm_id', '=', user.id)] + + + + + Department Head Rule + + [('user_id','=',user.id)] + + + + + Requisition Manager Rule + + [(1,'=',1)] + + + + + Purchase Requisition Company Rule + + [('company_id', '=', company_id)] + + \ No newline at end of file diff --git a/employee_purchase_requisition/security/ir.model.access.csv b/employee_purchase_requisition/security/ir.model.access.csv new file mode 100755 index 000000000..f3e08cd4e --- /dev/null +++ b/employee_purchase_requisition/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_employee_purchase_requisition_manager,employee.purchase.requisition,model_employee_purchase_requisition,employee_purchase_requisition.employee_requisition_manager,1,1,0,0 +access_employee_purchase_requisition_requisition_head,employee.purchase.requisition,model_employee_purchase_requisition,employee_purchase_requisition.employee_requisition_head,1,1,0,0 +access_employee_purchase_requisition_user,employee.purchase.requisition,model_employee_purchase_requisition,employee_purchase_requisition.employee_requisition_user,1,1,1,1 +access_requisition_order,employee.purchase.requisition,model_requisition_order,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/employee_purchase_requisition/static/description/assets/cybro-icon.png b/employee_purchase_requisition/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/cybro-icon.png differ diff --git a/employee_purchase_requisition/static/description/assets/cybro-odoo.png b/employee_purchase_requisition/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/cybro-odoo.png differ diff --git a/employee_purchase_requisition/static/description/assets/h2.png b/employee_purchase_requisition/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/h2.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/arrows-repeat.svg b/employee_purchase_requisition/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-1.png b/employee_purchase_requisition/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/banner-1.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-2.svg b/employee_purchase_requisition/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-bg.png b/employee_purchase_requisition/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/banner-bg.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-bg.svg b/employee_purchase_requisition/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-call.svg b/employee_purchase_requisition/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-mail.svg b/employee_purchase_requisition/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-pattern.svg b/employee_purchase_requisition/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/banner-promo.svg b/employee_purchase_requisition/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/brand-pair.svg b/employee_purchase_requisition/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/check.png b/employee_purchase_requisition/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/check.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/chevron.png b/employee_purchase_requisition/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/chevron.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/close-icon.svg b/employee_purchase_requisition/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/cogs.png b/employee_purchase_requisition/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/cogs.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/collabarate-icon.svg b/employee_purchase_requisition/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/consultation.png b/employee_purchase_requisition/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/consultation.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/cybro-logo.png b/employee_purchase_requisition/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/cybro-logo.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/down.svg b/employee_purchase_requisition/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/employee_purchase_requisition/static/description/assets/icons/ecom-black.png b/employee_purchase_requisition/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/ecom-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/education-black.png b/employee_purchase_requisition/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/education-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/faq.png b/employee_purchase_requisition/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/faq.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/feature-icon.svg b/employee_purchase_requisition/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/feature.png b/employee_purchase_requisition/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/feature.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/gear.svg b/employee_purchase_requisition/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/hero.gif b/employee_purchase_requisition/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..380654dfe Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/hero.gif differ diff --git a/employee_purchase_requisition/static/description/assets/icons/hire-odoo.svg b/employee_purchase_requisition/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/hotel-black.png b/employee_purchase_requisition/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/hotel-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/license.png b/employee_purchase_requisition/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/license.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/life-ring-icon.svg b/employee_purchase_requisition/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/lifebuoy.png b/employee_purchase_requisition/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/mail.svg b/employee_purchase_requisition/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/manufacturing-black.png b/employee_purchase_requisition/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/notes.png b/employee_purchase_requisition/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/notes.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/notification icon.svg b/employee_purchase_requisition/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/odoo-consultancy.svg b/employee_purchase_requisition/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/odoo-licencing.svg b/employee_purchase_requisition/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/odoo-logo.png b/employee_purchase_requisition/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/odoo-logo.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/patter.svg b/employee_purchase_requisition/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/pattern1.png b/employee_purchase_requisition/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/pattern1.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/pos-black.png b/employee_purchase_requisition/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/pos-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/puzzle-piece-icon.svg b/employee_purchase_requisition/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/puzzle.png b/employee_purchase_requisition/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/puzzle.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/replace-icon.svg b/employee_purchase_requisition/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/restaurant-black.png b/employee_purchase_requisition/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/screenshot-main.png b/employee_purchase_requisition/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/screenshot-main.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/screenshot.png b/employee_purchase_requisition/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/screenshot.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/service-black.png b/employee_purchase_requisition/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/service-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/skype-fill.svg b/employee_purchase_requisition/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/skype.png b/employee_purchase_requisition/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/skype.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/skype.svg b/employee_purchase_requisition/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/star-1.svg b/employee_purchase_requisition/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/star-2.svg b/employee_purchase_requisition/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/support.png b/employee_purchase_requisition/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/support.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/test-1 - Copy.png b/employee_purchase_requisition/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/test-1 - Copy.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/test-1.png b/employee_purchase_requisition/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/test-1.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/test-2.png b/employee_purchase_requisition/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/test-2.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/trading-black.png b/employee_purchase_requisition/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/trading-black.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/training.png b/employee_purchase_requisition/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/training.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/translate.svg b/employee_purchase_requisition/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/update.png b/employee_purchase_requisition/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/update.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/user.png b/employee_purchase_requisition/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/user.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/video.png b/employee_purchase_requisition/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/video.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/whatsapp.png b/employee_purchase_requisition/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/whatsapp.png differ diff --git a/employee_purchase_requisition/static/description/assets/icons/wrench-icon.svg b/employee_purchase_requisition/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/icons/wrench.png b/employee_purchase_requisition/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/wrench.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/courier_management.jpg b/employee_purchase_requisition/static/description/assets/modules/courier_management.jpg new file mode 100644 index 000000000..3e4a22c32 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/courier_management.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/modules/cw_sale.png b/employee_purchase_requisition/static/description/assets/modules/cw_sale.png new file mode 100644 index 000000000..1b75c62d5 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/cw_sale.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/cw_stock.png b/employee_purchase_requisition/static/description/assets/modules/cw_stock.png new file mode 100644 index 000000000..62af09ec6 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/cw_stock.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/delivery_split.jpg b/employee_purchase_requisition/static/description/assets/modules/delivery_split.jpg new file mode 100644 index 000000000..76724ebda Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/delivery_split.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/modules/multi_product_return_from_website.jpg b/employee_purchase_requisition/static/description/assets/modules/multi_product_return_from_website.jpg new file mode 100644 index 000000000..7f2cc2ab5 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/multi_product_return_from_website.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/modules/purchase_history_of_product.jpg b/employee_purchase_requisition/static/description/assets/modules/purchase_history_of_product.jpg new file mode 100644 index 000000000..dab7b184c Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/purchase_history_of_product.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase01.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase01.png new file mode 100644 index 000000000..5b0bd0e14 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase01.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase02.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase02.png new file mode 100644 index 000000000..e0ebd1ece Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase02.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase03.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase03.png new file mode 100644 index 000000000..098a91280 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase03.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase04.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase04.png new file mode 100644 index 000000000..767f098c0 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase04.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase05.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase05.png new file mode 100644 index 000000000..9a5723d3a Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase05.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase06.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase06.png new file mode 100644 index 000000000..9a5723d3a Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase06.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase07.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase07.png new file mode 100644 index 000000000..234629325 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase07.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase08.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase08.png new file mode 100644 index 000000000..a0633b9b4 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase08.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase09.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase09.png new file mode 100644 index 000000000..46f33dde9 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase09.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase10.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase10.png new file mode 100644 index 000000000..95007dc9d Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase10.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase11.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase11.png new file mode 100644 index 000000000..448253421 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase11.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase12.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase12.png new file mode 100644 index 000000000..713ff0a73 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase12.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase13.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase13.png new file mode 100644 index 000000000..fc39906a0 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase13.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase14.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase14.png new file mode 100644 index 000000000..4387e367b Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase14.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase15.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase15.png new file mode 100644 index 000000000..9473a51af Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase15.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase16.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase16.png new file mode 100644 index 000000000..8c90df29f Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase16.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase17.png b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase17.png new file mode 100644 index 000000000..a2e117c3e Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/employee_purchase17.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/hero.gif b/employee_purchase_requisition/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..20a345c89 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/hero.gif differ diff --git a/employee_purchase_requisition/static/description/assets/y18.jpg b/employee_purchase_requisition/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/y18.jpg differ diff --git a/employee_purchase_requisition/static/description/banner.png b/employee_purchase_requisition/static/description/banner.png new file mode 100644 index 000000000..46be00710 Binary files /dev/null and b/employee_purchase_requisition/static/description/banner.png differ diff --git a/employee_purchase_requisition/static/description/icon.png b/employee_purchase_requisition/static/description/icon.png new file mode 100644 index 000000000..948b8b252 Binary files /dev/null and b/employee_purchase_requisition/static/description/icon.png differ diff --git a/employee_purchase_requisition/static/description/index.html b/employee_purchase_requisition/static/description/index.html new file mode 100644 index 000000000..ea65b1c1d --- /dev/null +++ b/employee_purchase_requisition/static/description/index.html @@ -0,0 +1,1482 @@ + + + + + + Employee Purchase Requisition + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+
+

+ Manage Material Requisition of Employees and + User. +

+

Employee Purchase Requisition +

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

Key + Highlights

+
+
+
+
+ +
+
+ Create Material Requisition Request. +
+

+ You can create the Material Requisition + Request.

+
+
+
+
+
+ +
+
+ Multi Level Approvals. +
+

+ There are multi-level approvals for requests + from the Department Head and Requisition + Manager. +

+
+
+
+
+
+ +
+
+ Generate PDF report. +
+

+ You can generate the PDF Report for each + Material Requisition. +

+
+
+
+
+ +
+
+
+ Employee Purchase Requisition +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ Requisition Manager + + Access +

+
+
+

+ Go to Settings -> User & + Companies -> Users. Set app + access as "Requisition Manager" + for manager . +

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

+ Department Head + + Access +

+
+
+

+ Go to Settings -> User & + Companies -> Users. Set app + access as 'Department Head' for + respective department heads. +

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

+ Requisition User + + Access +

+
+
+

+ Go to Settings -> User & + Companies -> Users. Set app + access as "Requisition User" for + respective user. +

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

+ Set Destination + + Location +

+
+
+

+ Navigate to Employees -> + Department -> Department Form + View -> Choose Destination + Location. +

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

+ Create a new + + Material Request + +

+
+
+

+ Navigate to Employee Purchase + Requisition -> Purchase + Requisition -> View all created + requisitions in tree view and + initiate a new Material Request + with the 'New' button. +

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

+ Confirm the + + Requisition +

+
+
+

+ Requisition user can confirm the Purchase Requisition by + clicking the 'Confirm' + button.

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

+ Waiting for Department + + Approval +

+
+
+

+ After confirmation, the state + changes to 'Waiting Department + Approval'. +

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

+ Approve/Reject + + Requisitions +

+
+
+

+ Department head can + Approve/Reject Employee Purchase + Requisitions. +

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

+ Cancelled + + State +

+
+
+

+ After Rejection, the state + changes to 'Cancelled'. +

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

+ Department head can + + Edit Requisitions +

+
+
+

+ Department head can select the + Requisition Type (purchase order + or internal transfer) for each + material and also has the option + to choose a Vendor for the + material. + +

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

+ Requisition Manager can + + Approve/Reject +

+
+
+

+ Requisition Manager can + Approve/Reject Employee Purchase + Requisitions. +

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

+ Approved + + State +

+
+
+

+ After clicking the 'Approve' + button, the state changes to + 'Approved.' The requisition + Manager can create a Purchase + Order/Internal Transfer by + clicking the 'Create Picking and + PO' button. +

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

+ Requisition Manager can mark the + + Purchase Requisition +

+
+
+

+ Requisition Manager can mark the + Purchase Requisition as received + by clicking the 'Received' + button. Additionally, smart + buttons for Purchase Orders and + Internal Transfers are + displayed. +

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

+ Received + + State +

+
+
+

+ After clicking the 'Received' + button, the state changes to + 'Received'. Details about the + Purchase Requisition can be + viewed under the 'Picking Info' + tab. +

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

+ Users can view the + + Purchase Order +

+
+
+

+ Users can view the created + Purchase Order for the + Requisition. +

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

+ Print + + Requisition Report +

+
+
+

+ Employees can generate a + Purchase Requisition Report by + clicking on Actions -> Print + Requisition Report. +

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

+ Purchase Requisition + + Report +

+
+
+

+ Generated a Purchase Requisition + Report. +

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

+Available in Odoo Community , Enterprise and Sh.

+ +
+
+
+
+
+
+ +
+

+ There are multi-level approvals + for requests from the Department + Head and Requisition + Manager.

+
+
+
+
+
+
+
+ +
+

+ Department Head have an option + to choose the Vendors for each + Material.

+
+
+
+ +
+
+
+
+ +
+

+ You can generate the PDF Report + for each Material + Requisition.

+
+
+
+
+
+
+
+ +
+

+ Employee can request Multiple + Material on a single Material + Requisition Request.

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

+ To configure access, navigate to Settings > Users & Companies > Users in Odoo. For a Requisition Manager, set the app access to "Requisition Manager." For Department Heads, assign "Department Head" access for their respective departments. For regular users, select "Requisition User" access. This ensures each role has the appropriate permissions to create, approve, or manage requisitions as needed. +

+
+
+ +
+ +
+

+ Yes, you can generate a PDF report for each Material Requisition. To do so, go to Employee Purchase Requisition > Purchase Requisition, select the desired requisition, and click on Actions > Print Requisition Report. This will generate a detailed Purchase Requisition Report for your records. +

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

+ Latest Release 18.0.1.0.0 +

+ + 11th July, 2025 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • + +
+
+
+
+
+
+
+
+
+
+ + + +
+

+ Related Products +

+ +
+ + +
+

+ Our Services

+ +
+
+ +
+
+ .... +
+
+ +
+ +
+
+ + + + + + diff --git a/employee_purchase_requisition/views/employee_purchase_requisition_actions.xml b/employee_purchase_requisition/views/employee_purchase_requisition_actions.xml new file mode 100755 index 000000000..28f4ad906 --- /dev/null +++ b/employee_purchase_requisition/views/employee_purchase_requisition_actions.xml @@ -0,0 +1,12 @@ + + + + + Print Requisition Order + + + form + code + action = records.action_print_report() + + \ No newline at end of file diff --git a/employee_purchase_requisition/views/employee_purchase_requisition_menu.xml b/employee_purchase_requisition/views/employee_purchase_requisition_menu.xml new file mode 100755 index 000000000..c3599dd52 --- /dev/null +++ b/employee_purchase_requisition/views/employee_purchase_requisition_menu.xml @@ -0,0 +1,12 @@ + + + + + action="employee_purchase_requisition_action"/> + + \ No newline at end of file diff --git a/employee_purchase_requisition/views/employee_purchase_requisition_views.xml b/employee_purchase_requisition/views/employee_purchase_requisition_views.xml new file mode 100755 index 000000000..8824150e0 --- /dev/null +++ b/employee_purchase_requisition/views/employee_purchase_requisition_views.xml @@ -0,0 +1,238 @@ + + + + + Purchase Requisition + ir.actions.act_window + employee.purchase.requisition + list,form,kanban + +

+ Create a new record! +

+
+
+ + + employee.purchase.requisition.view.form + employee.purchase.requisition + +
+
+ +
+ +
+ + +
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + employee.purchase.requisition.view.tree + employee.purchase.requisition + + + + + + + + + + + + + + employee.purchase.requisition.view.kanban + employee.purchase.requisition + + + + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+
+
+
+ + + employee.purchase.requisition.view.search + employee.purchase.requisition + + + + + + + + + +
diff --git a/employee_purchase_requisition/views/hr_department_views.xml b/employee_purchase_requisition/views/hr_department_views.xml new file mode 100755 index 000000000..9d166ce5a --- /dev/null +++ b/employee_purchase_requisition/views/hr_department_views.xml @@ -0,0 +1,15 @@ + + + + + hr.department.view.form.inherit.employee.purchase.requisition + hr.department + + + + + + + + \ No newline at end of file diff --git a/employee_purchase_requisition/views/hr_employee_views.xml b/employee_purchase_requisition/views/hr_employee_views.xml new file mode 100755 index 000000000..3d224c90b --- /dev/null +++ b/employee_purchase_requisition/views/hr_employee_views.xml @@ -0,0 +1,21 @@ + + + + + hr.employee.view.form.inherit.employee.purchase.requisition + hr.employee + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/views/purchase_order_views.xml b/employee_purchase_requisition/views/purchase_order_views.xml new file mode 100755 index 000000000..44641cc69 --- /dev/null +++ b/employee_purchase_requisition/views/purchase_order_views.xml @@ -0,0 +1,15 @@ + + + + + purchase.order.view.form.inherit.employee.purchase.requisition + purchase.order + + + + + + + + \ No newline at end of file diff --git a/employee_purchase_requisition/views/requisition_order_views.xml b/employee_purchase_requisition/views/requisition_order_views.xml new file mode 100644 index 000000000..e260f699b --- /dev/null +++ b/employee_purchase_requisition/views/requisition_order_views.xml @@ -0,0 +1,23 @@ + + + + + requisition.order.view.tree + requisition.order + + + + + + + + + + + + + \ No newline at end of file diff --git a/employee_purchase_requisition/views/stock_picking_views.xml b/employee_purchase_requisition/views/stock_picking_views.xml new file mode 100755 index 000000000..e8b16e348 --- /dev/null +++ b/employee_purchase_requisition/views/stock_picking_views.xml @@ -0,0 +1,16 @@ + + + + + stock.picking.view.form.inherit.employee.purchase.requisition + stock.picking + + + + + + + + \ No newline at end of file