diff --git a/employee_purchase_requisition/README.rst b/employee_purchase_requisition/README.rst new file mode 100755 index 000000000..3304c4bb2 --- /dev/null +++ b/employee_purchase_requisition/README.rst @@ -0,0 +1,49 @@ +.. 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 17 + +Installation +============ + - www.odoo.com/documentation/17.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 : Developer : (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..b054994d9 --- /dev/null +++ b/employee_purchase_requisition/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import models diff --git a/employee_purchase_requisition/__manifest__.py b/employee_purchase_requisition/__manifest__.py new file mode 100755 index 000000000..3ba22c376 --- /dev/null +++ b/employee_purchase_requisition/__manifest__.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'Employee Purchase Requisition', + 'version': '17.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/employee_purchase_requisition_menu.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', + '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..15732f2e4 --- /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..2185524b3 --- /dev/null +++ b/employee_purchase_requisition/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 24.01.2024 +#### Version 17.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..498f38723 --- /dev/null +++ b/employee_purchase_requisition/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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..007698bfd --- /dev/null +++ b/employee_purchase_requisition/models/employee_purchase_requisition.py @@ -0,0 +1,262 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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.department_id.department_location_id.id) if ( + self.employee_id.department_id.department_location_id) else ( + self.env.ref('stock.stock_location_stock').id) + self.destination_location_id = ( + self.employee_id.employee_location_id.id) if ( + self.employee_id.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': 'tree,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': 'tree,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..87f92cbbc --- /dev/null +++ b/employee_purchase_requisition/models/hr_department.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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..bbb071977 --- /dev/null +++ b/employee_purchase_requisition/models/hr_employee.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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..893371a0d --- /dev/null +++ b/employee_purchase_requisition/models/purchase_order.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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..29fafbe63 --- /dev/null +++ b/employee_purchase_requisition/models/requisition_order.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import api, fields, models + + +class RequisitionProducts(models.Model): + _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..21f53a1e0 --- /dev/null +++ b/employee_purchase_requisition/models/stock_picking.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Ashok PK (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +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..fad8c3822 --- /dev/null +++ b/employee_purchase_requisition/report/employee_purchase_requisition_templates.xml @@ -0,0 +1,208 @@ + + + + + + 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/icons/capture (1).png b/employee_purchase_requisition/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/capture (1).png differ 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/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/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/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/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/img.png b/employee_purchase_requisition/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/img.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/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/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/photo-capture.png b/employee_purchase_requisition/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/icons/photo-capture.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.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/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/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/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/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/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/misc/Cybrosys R.png b/employee_purchase_requisition/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/misc/Cybrosys R.png differ diff --git a/employee_purchase_requisition/static/description/assets/misc/email.svg b/employee_purchase_requisition/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/phone.svg b/employee_purchase_requisition/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/star (1) 2.svg b/employee_purchase_requisition/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/support (1) 1.svg b/employee_purchase_requisition/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/support-email.svg b/employee_purchase_requisition/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/tick-mark.svg b/employee_purchase_requisition/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/whatsapp 1.svg b/employee_purchase_requisition/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/misc/whatsapp.svg b/employee_purchase_requisition/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/employee_purchase_requisition/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/employee_purchase_requisition/static/description/assets/modules/1.jpg b/employee_purchase_requisition/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..fd64cf8ca Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/1.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/modules/2.jpg b/employee_purchase_requisition/static/description/assets/modules/2.jpg new file mode 100644 index 000000000..686563477 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/2.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/modules/3.png b/employee_purchase_requisition/static/description/assets/modules/3.png new file mode 100644 index 000000000..cb17cf612 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/3.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/4.png b/employee_purchase_requisition/static/description/assets/modules/4.png new file mode 100644 index 000000000..c8e6c355a Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/4.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/5.png b/employee_purchase_requisition/static/description/assets/modules/5.png new file mode 100644 index 000000000..cad60ef80 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/5.png differ diff --git a/employee_purchase_requisition/static/description/assets/modules/6.jpg b/employee_purchase_requisition/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..5ae24843e Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/modules/6.jpg differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/1.png b/employee_purchase_requisition/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..d33e41ed3 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/1.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/10.png b/employee_purchase_requisition/static/description/assets/screenshots/10.png new file mode 100644 index 000000000..d6b13e46f Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/10.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/11.png b/employee_purchase_requisition/static/description/assets/screenshots/11.png new file mode 100644 index 000000000..05ea0ac6b Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/11.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/12.png b/employee_purchase_requisition/static/description/assets/screenshots/12.png new file mode 100644 index 000000000..2e424b3fa Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/12.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/13.png b/employee_purchase_requisition/static/description/assets/screenshots/13.png new file mode 100644 index 000000000..377926083 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/13.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/14.png b/employee_purchase_requisition/static/description/assets/screenshots/14.png new file mode 100644 index 000000000..38f9db063 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/14.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/15.png b/employee_purchase_requisition/static/description/assets/screenshots/15.png new file mode 100644 index 000000000..718d11af1 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/15.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/16.png b/employee_purchase_requisition/static/description/assets/screenshots/16.png new file mode 100644 index 000000000..86e270d43 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/16.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/17.png b/employee_purchase_requisition/static/description/assets/screenshots/17.png new file mode 100644 index 000000000..3c8643705 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/17.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/18.png b/employee_purchase_requisition/static/description/assets/screenshots/18.png new file mode 100644 index 000000000..a27dd07d7 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/18.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/19.png b/employee_purchase_requisition/static/description/assets/screenshots/19.png new file mode 100644 index 000000000..315fd2958 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/19.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/2.png b/employee_purchase_requisition/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..64428f0ee Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/2.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/3.png b/employee_purchase_requisition/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..a62eeaab8 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/3.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/4.png b/employee_purchase_requisition/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..7914d09d3 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/4.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/5.png b/employee_purchase_requisition/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..064d258e1 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/5.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/6.png b/employee_purchase_requisition/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..9790ba7bd Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/6.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/7.png b/employee_purchase_requisition/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..99d6c7545 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/7.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/8.png b/employee_purchase_requisition/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..9d521d7f8 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/8.png differ diff --git a/employee_purchase_requisition/static/description/assets/screenshots/9.png b/employee_purchase_requisition/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..64bd819a0 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/9.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..3e005f1b7 Binary files /dev/null and b/employee_purchase_requisition/static/description/assets/screenshots/hero.gif 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..ab5f3adb0 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..4aac72ab0 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..751f5eee7 --- /dev/null +++ b/employee_purchase_requisition/static/description/index.html @@ -0,0 +1,1071 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Employee Purchase Requisition

+

+ Manage Material Requisition of Employees and User. +

+
+ +
+
+
+
+
+

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

+
+
+
+
+
+
+ +
+
+

+ Vendor selection for Materials.

+

Department Head + has the option to choose vendors for each + material. +

+
+
+
+
+
+
+ +
+
+

+ Generate PDF report.

+

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

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

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

+ Navigate to Employees -> Employee Form -> + Purchase Requisition Settings -> Choose + Destination Location.

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+ +
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

+ 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 + Employee Purchase Requisitions.

+
+
+
+
+
+
+ +
+
+

+ 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 as received by clicking the + 'Received' button. Additionally, smart + buttons for Purchase Orders and Internal + Transfers are displayed.

+
+
+
+
+
+
+ +
+
+

+ 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 created Purchase Order + for the Requisition.

+
+
+
+
+
+
+ +
+
+

+ Users can view the created Internal Transfer + for the requisition.

+
+
+
+
+
+
+ +
+
+

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

+
+
+
+
+
+
+ +
+
+

+ Generated a Purchase Requisition + Report.

+
+
+
+
+
+
+
    +
  • + Option to Create + Material Requisition Request. +
  • +
  • + There are + multi-level approvals for requests from the + Department Head and Requisition Manager. +
  • +
  • + Option to choose + Employee and Department Destination Location. +
  • +
  • + Employee can + request Multiple Material on a single Material + Requisition Request. +
  • +
  • + Department Head + have an option to Approve/Reject the Request. +
  • +
  • + Department Head + can choose Purchase Order/Internal Transfer on + each Material in the Request. +
  • +
  • + Department Head + have an option to choose the Vendors for each + Material. +
  • +
  • + Requisition + Manager can Approve/Reject the Request approved + by Department Head. +
  • +
  • + You can generate + the PDF Report for each Material Requisition. +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:11th Jan 2024 +
+

+ Initial Commit for Employee Purchase + Requisition.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

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

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + 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..c2e01e976 --- /dev/null +++ b/employee_purchase_requisition/views/employee_purchase_requisition_menu.xml @@ -0,0 +1,11 @@ + + + + + + \ 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..638aad018 --- /dev/null +++ b/employee_purchase_requisition/views/employee_purchase_requisition_views.xml @@ -0,0 +1,241 @@ + + + + + Purchase Requisition + ir.actions.act_window + employee.purchase.requisition + tree,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..c2f12ae84 --- /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