Browse Source

Apr 14 : [ADD] Initial Commit 'employee_purchase_requisition'

dependabot/npm_and_yarn/odoo_website_helpdesk/static/src/cdn/minimist-1.2.8
Sayooj 2 years ago
parent
commit
f26e9d14d6
  1. 40
      employee_purchase_requisition/README.rst
  2. 24
      employee_purchase_requisition/__init__.py
  3. 54
      employee_purchase_requisition/__manifest__.py
  4. 14
      employee_purchase_requisition/data/ir_sequence_data.xml
  5. 6
      employee_purchase_requisition/doc/RELEASE_NOTES.md
  6. 29
      employee_purchase_requisition/models/__init__.py
  7. 34
      employee_purchase_requisition/models/hr_department.py
  8. 34
      employee_purchase_requisition/models/hr_employee.py
  9. 33
      employee_purchase_requisition/models/purchase_order.py
  10. 257
      employee_purchase_requisition/models/purchase_requisition.py
  11. 33
      employee_purchase_requisition/models/stock_picking.py
  12. 11
      employee_purchase_requisition/report/purchase_requisition_report.xml
  13. 208
      employee_purchase_requisition/report/purchase_requisition_template.xml
  14. 5
      employee_purchase_requisition/security/ir.model.access.csv
  15. 59
      employee_purchase_requisition/security/security_access.xml
  16. BIN
      employee_purchase_requisition/static/description/assets/icons/check.png
  17. BIN
      employee_purchase_requisition/static/description/assets/icons/chevron.png
  18. BIN
      employee_purchase_requisition/static/description/assets/icons/cogs.png
  19. BIN
      employee_purchase_requisition/static/description/assets/icons/consultation.png
  20. BIN
      employee_purchase_requisition/static/description/assets/icons/ecom-black.png
  21. BIN
      employee_purchase_requisition/static/description/assets/icons/education-black.png
  22. BIN
      employee_purchase_requisition/static/description/assets/icons/hotel-black.png
  23. BIN
      employee_purchase_requisition/static/description/assets/icons/license.png
  24. BIN
      employee_purchase_requisition/static/description/assets/icons/lifebuoy.png
  25. BIN
      employee_purchase_requisition/static/description/assets/icons/manufacturing-black.png
  26. BIN
      employee_purchase_requisition/static/description/assets/icons/pos-black.png
  27. BIN
      employee_purchase_requisition/static/description/assets/icons/puzzle.png
  28. BIN
      employee_purchase_requisition/static/description/assets/icons/restaurant-black.png
  29. BIN
      employee_purchase_requisition/static/description/assets/icons/service-black.png
  30. BIN
      employee_purchase_requisition/static/description/assets/icons/trading-black.png
  31. BIN
      employee_purchase_requisition/static/description/assets/icons/training.png
  32. BIN
      employee_purchase_requisition/static/description/assets/icons/update.png
  33. BIN
      employee_purchase_requisition/static/description/assets/icons/user.png
  34. BIN
      employee_purchase_requisition/static/description/assets/icons/wrench.png
  35. BIN
      employee_purchase_requisition/static/description/assets/misc/categories.png
  36. BIN
      employee_purchase_requisition/static/description/assets/misc/check-box.png
  37. BIN
      employee_purchase_requisition/static/description/assets/misc/compass.png
  38. BIN
      employee_purchase_requisition/static/description/assets/misc/corporate.png
  39. BIN
      employee_purchase_requisition/static/description/assets/misc/customer-support.png
  40. BIN
      employee_purchase_requisition/static/description/assets/misc/cybrosys-logo.png
  41. BIN
      employee_purchase_requisition/static/description/assets/misc/features.png
  42. BIN
      employee_purchase_requisition/static/description/assets/misc/logo.png
  43. BIN
      employee_purchase_requisition/static/description/assets/misc/pictures.png
  44. BIN
      employee_purchase_requisition/static/description/assets/misc/pie-chart.png
  45. BIN
      employee_purchase_requisition/static/description/assets/misc/right-arrow.png
  46. BIN
      employee_purchase_requisition/static/description/assets/misc/star.png
  47. BIN
      employee_purchase_requisition/static/description/assets/misc/support.png
  48. BIN
      employee_purchase_requisition/static/description/assets/misc/whatsapp.png
  49. BIN
      employee_purchase_requisition/static/description/assets/modules/1.png
  50. BIN
      employee_purchase_requisition/static/description/assets/modules/2.png
  51. BIN
      employee_purchase_requisition/static/description/assets/modules/3.png
  52. BIN
      employee_purchase_requisition/static/description/assets/modules/4.png
  53. BIN
      employee_purchase_requisition/static/description/assets/modules/5.gif
  54. BIN
      employee_purchase_requisition/static/description/assets/modules/6.png
  55. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_action_print_report_19.png
  56. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_approved_13.png
  57. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_approved_14.png
  58. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_department_location_05.png
  59. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_employee_location_04.png
  60. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_internal_trasnfer_17.png
  61. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_new_state_07.png
  62. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_pdf_report_20.png
  63. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_created_15.png
  64. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_order_16.png
  65. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_requisition_06.png
  66. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_received_18.png
  67. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_department_head_02.png
  68. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_manager_01.png
  69. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_requisition_user_03.png
  70. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_08.png
  71. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_09.png
  72. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_10.png
  73. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_head_approval_11.png
  74. BIN
      employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_head_approval_12.png
  75. BIN
      employee_purchase_requisition/static/description/assets/screenshots/hero.gif
  76. BIN
      employee_purchase_requisition/static/description/banner.png
  77. BIN
      employee_purchase_requisition/static/description/icon.png
  78. 798
      employee_purchase_requisition/static/description/index.html
  79. 12
      employee_purchase_requisition/views/action_print_requisition.xml
  80. 15
      employee_purchase_requisition/views/hr_department_view.xml
  81. 21
      employee_purchase_requisition/views/hr_employee_view.xml
  82. 11
      employee_purchase_requisition/views/menu.xml
  83. 15
      employee_purchase_requisition/views/purchase_order_view.xml
  84. 254
      employee_purchase_requisition/views/purchase_requisition.xml
  85. 16
      employee_purchase_requisition/views/stock_picking_view.xml

40
employee_purchase_requisition/README.rst

@ -0,0 +1,40 @@
Employee Purchase Requisition Module for Odoo 16
================================================
* Employee Purchase Requisition Module for Odoo 16
Installation
============
- www.odoo.com/documentation/16.0/setup/install.html
- Install our custom addon
License
-------
GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL v3)
(https://www.odoo.com/documentation/16.0/legal/licenses.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:(V16) Vishnu P
Contacts
--------
* Mail Contact : odoo@cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

24
employee_purchase_requisition/__init__.py

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

54
employee_purchase_requisition/__manifest__.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Employee Purchase Requisition',
'version': '16.0.1.0.0',
'category': 'Purchases',
'summary': 'Employee Purchase Requisition',
'description': 'Employee Purchase Requisition',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'images': ['static/description/banner.png'],
'website': 'https://www.cybrosys.com',
'depends': ['base', 'hr', 'stock', 'purchase'],
'data': [
'security/security_access.xml',
'security/ir.model.access.csv',
'data/ir_sequence_data.xml',
'views/purchase_requisition.xml',
'views/menu.xml',
'views/hr_employee_view.xml',
'views/hr_department_view.xml',
'views/purchase_order_view.xml',
'views/stock_picking_view.xml',
'views/action_print_requisition.xml',
'report/purchase_requisition_template.xml',
'report/purchase_requisition_report.xml',
],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

14
employee_purchase_requisition/data/ir_sequence_data.xml

@ -0,0 +1,14 @@
<odoo>
<data>
<!-- sequence for employee purchase requisition -->
<record id="sequence_purchase_requisition" model="ir.sequence">
<field name="name">Employee Purchase Requisition</field>
<field name="code">employee.purchase.requisition</field>
<field name="prefix">EPR</field>
<field name="padding">5</field>
<field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/>
<field eval="False" name="company_id"/>
</record>
</data>
</odoo>

6
employee_purchase_requisition/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <employee_purchase_requisition>
#### 27.01.2023
#### Version 16.0.1.0.0
#### ADD
- Initial commit for Employee Purchase Requisition

29
employee_purchase_requisition/models/__init__.py

@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
"""import models"""
from . import purchase_requisition
from . import hr_department
from . import hr_employee
from . import purchase_order
from . import stock_picking

34
employee_purchase_requisition/models/hr_department.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
""" add department location in hr department """
from odoo import models, fields
class Department(models.Model):
""" Inherit hr.department model"""
_inherit = 'hr.department'
department_location_id = fields.Many2one('stock.location',
string='Destination Location',
help='Department location')

34
employee_purchase_requisition/models/hr_employee.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
""" add employee location in hr employee """
from odoo import models, fields
class HrEmployeePrivate(models.Model):
""" inherit hr.employee model"""
_inherit = 'hr.employee'
employee_location_id = fields.Many2one('stock.location',
string="Destination Location",
help='Employee location')

33
employee_purchase_requisition/models/purchase_order.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
""" add field requisition_order in purchase order"""
from odoo import models, fields
class PurchaseOrder(models.Model):
""" inherit purchase.order model """
_inherit = 'purchase.order'
requisition_order = fields.Char(string='Requisition Order',
help='Requisition Order')

257
employee_purchase_requisition/models/purchase_requisition.py

@ -0,0 +1,257 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
""" Purchase Requisition model"""
from odoo import models, fields, api
class PurchaseRequisition(models.Model):
""" Model for storing purchase requisition """
_name = 'employee.purchase.requisition'
_description = 'Purchase Requisition'
_inherit = "mail.thread", "mail.activity.mixin"
name = fields.Char(string="Reference No", readonly=True)
employee_id = fields.Many2one('hr.employee', string='Employee',
required=True, help='Employee')
dept_id = fields.Many2one('hr.department', string='Department',
related='employee_id.department_id', store=True,
help='Department')
user_id = fields.Many2one('res.users', string='Requisition Responsible',
required=True,
help='Requisition responsible user')
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='Receive Date')
requisition_deadline = fields.Date(string="Requisition Deadline",
help="End date of Purchase requisition")
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.company,
help='Company')
requisition_order_ids = fields.One2many('requisition.order',
'requisition_product_id',
required=True)
confirm_id = fields.Many2one('res.users', string='Confirmed By',
default=lambda self: self.env.uid,
readonly=True,
help='User who Confirmed the requisition.')
manager_id = fields.Many2one('res.users', string='Department Manager',
readonly=True, help='Department Manager')
requisition_head_id = fields.Many2one('res.users', string='Approved By',
readonly=True,
help='User who approved the requisition.')
rejected_user_id = fields.Many2one('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('stock.location',
string='Source Location',
help='Source location of requisition.')
destination_location_id = fields.Many2one('stock.location',
string="Destination Location",
help='Destination location of requisition.')
delivery_type_id = fields.Many2one('stock.picking.type',
string='Delivery To',
help='Type of Delivery.')
internal_picking_id = fields.Many2one('stock.picking.type',
string="Internal Picking")
requisition_description = fields.Text(string="Reason For Requisition")
purchase_count = fields.Integer(string='Purchase Count')
internal_transfer_count = fields.Integer(string='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):
"""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):
"""confirm purchase requisition"""
self.source_location_id = self.employee_id.department_id.department_location_id.id
self.destination_location_id = self.employee_id.employee_location_id.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"""
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,
'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': self.employee_id.work_contact_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'})
self.purchase_count = self.env['purchase.order'].search_count([
('requisition_order', '=', self.name)])
self.internal_transfer_count = self.env['stock.picking'].search_count([
('requisition_order', '=', self.name)])
def action_receive(self):
"""receive 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)
class RequisitionProducts(models.Model):
_name = 'requisition.order'
_description = 'Requisition order'
requisition_product_id = fields.Many2one(
'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')
product_id = fields.Many2one('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='Quantity')
uom = fields.Char(related='product_id.uom_id.name',
string='Unit of Measure', help='Product Uom')
partner_id = fields.Many2one('res.partner', string='Vendor',
help='Vendor for the requisition')
@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 = []
for data in self.product_id.seller_ids:
vendors_list.append(data.partner_id.id)
return {'domain': {'partner_id': [('id', 'in', vendors_list)]}}

33
employee_purchase_requisition/models/stock_picking.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Vishnu P(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
"""field requisition order in stock picking """
from odoo import models, fields
class Picking(models.Model):
""" inherit stock.picking model """
_inherit = 'stock.picking'
requisition_order = fields.Char(string='Requisition Order',
help='Requisition Order')

11
employee_purchase_requisition/report/purchase_requisition_report.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--purchase requisition report-->
<record id="action_report_purchase_requisition" model="ir.actions.report">
<field name="name">Material Purchase Requisition Report</field>
<field name="model">employee.purchase.requisition</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">employee_purchase_requisition.report_purchase_requisition</field>
<field name="report_file">employee_purchase_requisition.report_purchase_requisition</field>
</record>
</odoo>

208
employee_purchase_requisition/report/purchase_requisition_template.xml

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- purchase requisition report template-->
<template id="report_purchase_requisition">
<t t-call="web.external_layout">
<t t-call="web.html_container">
<div class="page">
<t t-foreach="records" t-as="rec">
<h1>Purchase Requisition :
<t t-if="rec['name']">
<t t-esc="rec['name']"/>
</t>
</h1>
<table class="table table-striped">
<tr>
<th>Employee</th>
<td>
<t t-if="rec['employee_id']">
<t t-esc="rec['employee_id'][1]"/>
</t>
</td>
<th>Requisition Date</th>
<td>
<t t-if="rec['employee_id']">
<t t-esc="rec['requisition_date']"/>
</t>
</td>
</tr>
<tr>
<th>Department</th>
<td>
<t t-if="rec['dept_id']">
<t t-esc="rec['dept_id'][1]"/>
</t>
</td>
<th>Received Date</th>
<td>
<t t-if="rec['receive_date']">
<t t-esc="rec['receive_date']"/>
</t>
</td>
</tr>
<tr>
<th>Requisition Responsible</th>
<td>
<t t-if="rec['user_id']">
<t t-esc="rec['user_id'][1]"/>
</t>
</td>
<th>Requisition Deadline</th>
<td>
<t t-if="rec['requisition_deadline']">
<t t-esc="rec['requisition_deadline']"/>
</t>
</td>
</tr>
<tr>
<th>Company</th>
<td>
<t t-if="rec['company_id']">
<t t-esc="rec['company_id'][1]"/>
</t>
</td>
</tr>
</table>
<h1>Other Information</h1>
<table class="table table-sm">
<tr>
<th>Confirmed By</th>
<td>
<t t-if="rec['confirm_id']">
<t t-esc="rec['confirm_id'][1]"/>
</t>
</td>
<th>Confirmed Date</th>
<td>
<t t-if="rec['confirmed_date']">
<t t-esc="rec['confirmed_date']"/>
</t>
</td>
</tr>
<tr>
<th>Department Manager</th>
<td>
<t t-if="rec['manager_id']">
<t t-esc="rec['manager_id'][1]"/>
</t>
</td>
<th>Department Approval Date</th>
<td>
<t t-if="rec['department_approval_date']">
<t t-esc="rec['department_approval_date']"/>
</t>
</td>
</tr>
<tr>
<th>Approved By:</th>
<td>
<t t-if="rec['requisition_head_id']">
<t t-esc="rec['requisition_head_id'][1]"/>
</t>
</td>
<th>Approved Date:</th>
<td>
<t t-if="rec['approval_date']">
<t t-esc="rec['approval_date']"/>
</t>
</td>
</tr>
<tr>
<th>Rejected By</th>
<td>
<t t-if="rec['rejected_user_id']">
<t t-esc="rec['rejected_user_id'][1]"/>
</t>
</td>
<th>Rejected Date</th>
<td>
<t t-if="rec['reject_date']">
<t t-esc="rec['reject_date']"/>
</t>
</td>
</tr>
</table>
<h1>Picking Details</h1>
<table class="table table-sm">
<tr>
<th>Source Location</th>
<td>
<t t-if="rec['source_location_id']">
<t t-esc="rec['source_location_id'][1]"/>
</t>
</td>
<th>Destination Location</th>
<td>
<t t-if="rec['source_location_id']">
<t t-esc="rec['destination_location_id'][1]"/>
</t>
</td>
</tr>
<tr>
<t t-if="rec['delivery_type_id']">
<th>Delivery To</th>
<td>
<t t-esc="rec['delivery_type_id'][1]"/>
</td>
</t>
<t t-if="rec['internal_picking_id']">
<th>Internal Transfer</th>
<td>
<t t-esc="rec['internal_picking_id'][1]"/>
</td>
</t>
</tr>
</table>
</t>
<h1>Requisition Lines</h1>
<table class='table'>
<thead>
<th>Requisition Action</th>
<th>Product</th>
<th>Description</th>
<th>Quantity</th>
<th>Unit Of Measure</th>
</thead>
<t t-foreach="order_ids" t-as="order">
<tbody>
<td>
<t t-if="order['requisition_type']=='internal_transfer'">
Internal Transfer
</t>
<t t-if="order['requisition_type']=='purchase_order'">
Purchase Order
</t>
</td>
<td>
<t t-if="order['product_id']">
<t t-esc="order['product_id'][1]"/>
</t>
</td>
<td>
<t t-if="order['description']">
<t t-esc="order['description']"/>
</t>
</td>
<td>
<t t-if="order['quantity']">
<t t-esc="order['quantity']"/>
</t>
</td>
<td><t t-if="order['uom']">
<t t-esc="order['uom']"/>
</t>
</td>
</tbody>
</t>
</table>
<h1>Employee Signature :</h1>
<h1>Manager Signature :</h1>
<h1>Approve Signature :</h1>
</div>
</t>
</t>
</template>
</odoo>

5
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
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_employee_purchase_requisition_manager employee.purchase.requisition model_employee_purchase_requisition employee_purchase_requisition.employee_requisition_manager 1 1 0 0
3 access_employee_purchase_requisition_requisition_head employee.purchase.requisition model_employee_purchase_requisition employee_purchase_requisition.employee_requisition_head 1 1 0 0
4 access_employee_purchase_requisition_user employee.purchase.requisition model_employee_purchase_requisition employee_purchase_requisition.employee_requisition_user 1 1 1 1
5 access_requisition_order employee.purchase.requisition model_requisition_order base.group_user 1 1 1 1

59
employee_purchase_requisition/security/security_access.xml

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.module.category" id="employee_requisition">
<field name="name">Employee Purchase Requisition</field>
<field name="description">User access level for Material Request
module
</field>
<field name="sequence">20</field>
</record>
<!--User groups-->
<record id="employee_requisition_user" model="res.groups">
<field name="name">Requisition Users</field>
<field name="category_id" ref="employee_requisition"/>
</record>
<record id="employee_requisition_head" model="res.groups">
<field name="name">Department Head</field>
<field name="category_id" ref="employee_requisition"/>
<field name="implied_ids"
eval="[(4, ref('employee_purchase_requisition.employee_requisition_user'))]"/>
</record>
<record id="employee_requisition_manager" model="res.groups">
<field name="name">Requisition Manager</field>
<field name="category_id" ref="employee_requisition"/>
<field name="implied_ids"
eval="[(4, ref('employee_purchase_requisition.employee_requisition_head'))]"/>
</record>
<!--Record rules-->
<record id="requisition_user_rule" model="ir.rule">
<field name="name">Requisition User Rule</field>
<field name="model_id" ref="model_employee_purchase_requisition"/>
<field name="domain_force">[('confirm_id', '=', user.id)]</field>
<field name="groups"
eval="[(4, ref('employee_purchase_requisition.employee_requisition_user'))]"/>
</record>
<record id="department_head_rule" model="ir.rule">
<field name="name">Department Head Rule</field>
<field ref="model_employee_purchase_requisition" name="model_id"/>
<field name="domain_force">[('user_id','=',user.id)]</field>
<field name="groups"
eval="[(4, ref('employee_purchase_requisition.employee_requisition_head'))]"/>
</record>
<record id="requisition_manager_rule" model="ir.rule">
<field name="name">Requisition Manager Rule</field>
<field ref="model_employee_purchase_requisition" name="model_id"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups"
eval="[(4, ref('employee_purchase_requisition.employee_requisition_manager'))]"/>
</record>
<record id="requisition_company_rule" model="ir.rule">
<field name="name">Purchase Requisition Company Rule</field>
<field ref="model_employee_purchase_requisition" name="model_id"/>
<field name="domain_force">[('company_id', '=', company_id)]</field>
</record>
</odoo>

BIN
employee_purchase_requisition/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
employee_purchase_requisition/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
employee_purchase_requisition/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
employee_purchase_requisition/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
employee_purchase_requisition/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
employee_purchase_requisition/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
employee_purchase_requisition/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
employee_purchase_requisition/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
employee_purchase_requisition/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
employee_purchase_requisition/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
employee_purchase_requisition/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
employee_purchase_requisition/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
employee_purchase_requisition/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
employee_purchase_requisition/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
employee_purchase_requisition/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
employee_purchase_requisition/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
employee_purchase_requisition/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/5.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

BIN
employee_purchase_requisition/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_action_print_report_19.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_approved_13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_approved_14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_department_location_05.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_employee_location_04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_internal_trasnfer_17.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_new_state_07.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_pdf_report_20.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_created_15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_order_16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_purchase_requisition_06.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_received_18.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_department_head_02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_manager_01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_settings_requisition_user_03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_08.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_09.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_department_approval_10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_head_approval_11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/EPR_waiting_head_approval_12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
employee_purchase_requisition/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

BIN
employee_purchase_requisition/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
employee_purchase_requisition/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

798
employee_purchase_requisition/static/description/index.html

@ -0,0 +1,798 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">Employee Purchase Requisition
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Manage Material Requisition of Employees and User.</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
This module helps to manage Material Requisition for all Employees and
User by Purchase Order or Internal Transfer.By installing this module
you will get an extra field in Employee and Department form to select
their Destination Location.Based on requisition material and goods are
placed to the configured location
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option to Create Material Requisition Request.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Multi Level Approvals.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option to choose Employee and Department Destination Location.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Employee can request Multiple Material on a single Material Requisition Request.
</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Department Head have an option to Approve/Reject the Request.
</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Department Head can choose Purchase Order/Internal Transfer on each Material in the Request.</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Department Head have an option to choose the Vendors for each Material.
</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Requisition Manager can Approve/Reject the Request approved by Department Head.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">PDF Report for each Material Requisition.
</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Employee Purchase Requisition User Access
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Settings -> User & Companies
->
Users. Hear we can set user access for the app.
"Requisition User" for Users "Department Head" for Department
Head and "Requisition Manager" for manager</p>
<img src="assets/screenshots/EPR_settings_manager_01.png"
class="img-thumbnail">
<img src="assets/screenshots/EPR_settings_department_head_02.png"
class="img-thumbnail">
<img src="assets/screenshots/EPR_settings_requisition_user_03.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Employee Purchase Requisition Configuration
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Employees -> Selected Employee form view -> Purchase
Requisition Settings -> Have an option to select Destination
location of the Employee </p>
<img src="assets/screenshots/EPR_employee_location_04.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Employees -> Department -> Selected Department form View
-> Have an option to select Destination location of the
Department </p>
<img src="assets/screenshots/EPR_department_location_05.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Create Material Requisition Order
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Employee Purchase Requisition -> Purchase Requisition ->
Can see all created Purchase Requisition in tree view and can
create a new Material Request by clicking CREATE button </p>
<img src="assets/screenshots/EPR_purchase_requisition_06.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Requisition User can confirm the Purchase Requisition by
clicking Confirm button,After confirm the state changes
to"Waiting Department Approval"
</p>
<img src="assets/screenshots/EPR_new_state_07.png"
class="img-thumbnail">
<img src="assets/screenshots/EPR_waiting_department_approval_08.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Department Head can choose Requisition type either purchase
order and Internal transfer for each material and also have an
option to select Vendor for the material
</p>
<img src="assets/screenshots/EPR_waiting_department_approval_09.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Department Head can Approve/Reject Employee Purchase
Requisition.Under Picking Info Tab can see details about
Purchase Requisition.
</p>
<img src="assets/screenshots/EPR_waiting_department_approval_10.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
After clicking Approve button state changes to "Waiting Head
Approval".
</p>
<img src="assets/screenshots/EPR_waiting_head_approval_11.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Requisition Head can Approve/Reject Employee Purchase
Requisition.
</p>
<img src="assets/screenshots/EPR_waiting_head_approval_12.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
After Clicking Approve button state changes to "Approved".
Requisition Head can create Purchase Order/Internal Transfer by clicking "CREATE PICKING/PO" button.
</p>
<img src="assets/screenshots/EPR_approved_13.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Other Info tab can see Employee Purchase Requisition request history.
</p>
<img src="assets/screenshots/EPR_approved_14.png"
class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
After clicking "CREATE PICKING/PO" button state changes to "Purchase Order Created".Here can see Smart Tabs for Created Purchase order and Internal transfer.
</p>
<img src="assets/screenshots/EPR_purchase_created_15.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Purchase Order
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
User can see Created Purchase Order for Requisition</p>
<img src="assets/screenshots/EPR_purchase_order_16.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Internal Transfer
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
User can see Created Internal Transfer for Requisition</p>
<img src="assets/screenshots/EPR_internal_trasnfer_17.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Requisition Head can Receive the Purchase Requisition by clicking "Received" button,after clicking state changes to "Received"</p>
<img src="assets/screenshots/EPR_received_18.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Purchase Requisition Report
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Employee Can generate Purchase Requisition Report by clicking Actions ->Print Requisition Report </p>
<img src="assets/screenshots/EPR_action_print_report_19.png"
class="img-thumbnail">
<img src="assets/screenshots/EPR_pdf_report_20.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/export_stockinfo_xls/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/inventory_stock_dashboard_odoo/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/customer_product_qrcode/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/list_view_sticky_header/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/openai_product_tag_descrption/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/5.gif">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/advanced_vat_invoice/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

12
employee_purchase_requisition/views/action_print_requisition.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- action print report-->
<record id="print_requisition_order_pdf" model="ir.actions.server">
<field name="name">Print Requisition Order</field>
<field name="model_id" ref="employee_purchase_requisition.model_employee_purchase_requisition"/>
<field name="binding_model_id" ref="employee_purchase_requisition.model_employee_purchase_requisition"/>
<field name="binding_view_types">form</field>
<field name="state">code</field>
<field name="code">action = records.action_print_report()</field>
</record>
</odoo>

15
employee_purchase_requisition/views/hr_department_view.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- inherit view of hr department -->
<record id="hr_department_view" model="ir.ui.view">
<field name="name">hr.department.location.inherit.view</field>
<field name="model">hr.department</field>
<field name="inherit_id"
ref="hr.view_department_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='parent_id']" position="after">
<field name="department_location_id"/>
</xpath>
</field>
</record>
</odoo>

21
employee_purchase_requisition/views/hr_employee_view.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- inherit view of hr employee -->
<record id="hr_employee_view" model="ir.ui.view">
<field name="name">hr.employee.location.inherit.view</field>
<field name="model">hr.employee</field>
<field name="inherit_id"
ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='hr_settings']" position="after">
<page name="requisition_settings" string="Purchase Requisition Settings">
<group>
<group>
<field name="employee_location_id"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>

11
employee_purchase_requisition/views/menu.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Employee Purchase Requisition menu -->
<menuitem id="purchase_requisition"
name="Employee Purchase Requisition"
action="employee_purchase_requisition.purchase_requisition_details"/>
<menuitem id="purchase_requisition01"
name="Purchase Requisition"
parent="purchase_requisition"
action="employee_purchase_requisition.purchase_requisition_details"/>
</odoo>

15
employee_purchase_requisition/views/purchase_order_view.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- inherit view of purchase -->
<record id="purchase_order_inherit" model="ir.ui.view">
<field name="name">purchase.order.inherit</field>
<field name="model">purchase.order</field>
<field name="inherit_id"
ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='currency_id']" position="after">
<field name="requisition_order"/>
</xpath>
</field>
</record>
</odoo>

254
employee_purchase_requisition/views/purchase_requisition.xml

@ -0,0 +1,254 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Employee Purchase Requisition view -->
<record id="purchase_requisition_details" model="ir.actions.act_window">
<field name="name">Purchase Requisition</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">employee.purchase.requisition</field>
<field name="view_mode">tree,form,kanban</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new record!
</p>
</field>
</record>
<record id="purchase_requisition_form" model="ir.ui.view">
<field name="name">employee.purchase.requisition.form</field>
<field name="model">employee.purchase.requisition</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget='statusbar'
statusbar_visible='new,waiting_department_approval,waiting_head_approval,approved,purchase_order_created,received'/>
<button name="action_confirm_requisition"
class="oe_highlight"
states="new" string="Confirm" type="object"
help="Submit to Department Approval"
groups="employee_purchase_requisition.employee_requisition_user"/>
<button name="action_department_approval"
class="oe_highlight"
states="waiting_department_approval"
string="Approve" type="object"
help="Approve purchase requisition,Submit for Approval for Requisition Head"
groups="employee_purchase_requisition.employee_requisition_head"/>
<button name="action_department_cancel"
class="oe_highlight"
states="waiting_department_approval"
string="Reject" type="object"
help="Reject Purchase Requisition"
groups="employee_purchase_requisition.employee_requisition_head"/>
<button name="action_head_approval" class="oe_highlight"
states="waiting_head_approval" string="Approve"
type="object"
help="Approve Purchase requisition"
groups="employee_purchase_requisition.employee_requisition_manager"/>
<button name="action_head_cancel" class="oe_highlight"
states="waiting_head_approval" string="Reject"
type="object"
help="Reject Purchase Requisition"
groups="employee_purchase_requisition.employee_requisition_manager"/>
<button name="action_create_purchase_order" class="oe_highlight"
states="approved" string="Create Picking and PO"
type="object"
help="Create Picking/Purchase order"
groups="employee_purchase_requisition.employee_requisition_manager"/>
<button name="action_receive" class="oe_highlight"
states="purchase_order_created" string="Received"
type="object"
groups="employee_purchase_requisition.employee_requisition_manager"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object"
name="get_purchase_order"
icon="fa-book"
states="purchase_order_created,received">
<field string="Purchase Order"
name="purchase_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" type="object"
name="get_internal_transfer"
icon="fa-truck"
states="purchase_order_created,received">
<field string="Internal Transfer"
name="internal_transfer_count"
widget="statinfo"/>
</button>
</div>
<div class="oe_title">
<h1>
<field name="name" placeholder="New"/>
</h1>
</div>
<group>
<group>
<field name="employee_id"/>
<field name="dept_id"/>
<field name="user_id"/>
</group>
<group>
<field name="requisition_date"/>
<field name="receive_date"/>
<field name="requisition_deadline"/>
<field name="company_id"/>
</group>
</group>
<notebook>
<page string="Requisition Orders ">
<field name="requisition_order_ids"/>
</page>
<page string="Picking Details"
groups="employee_purchase_requisition.employee_requisition_manager,employee_purchase_requisition.employee_requisition_head">
<group>
<group>
<field name="source_location_id"/>
<field name="delivery_type_id"/>
</group>
<group>
<field name="destination_location_id"/>
<field name="internal_picking_id"/>
</group>
</group>
</page>
<page string="Other Info">
<group>
<group>
<field name="confirm_id"/>
<field name="manager_id"/>
<field name="requisition_head_id"/>
<field name="rejected_user_id"/>
</group>
<group>
<field name="confirmed_date"/>
<field name="department_approval_date"/>
<field name="approval_date"/>
<field name="reject_date"/>
</group>
</group>
</page>
</notebook>
<group>
<field name="requisition_description"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="purchase_requisition_tree" model="ir.ui.view">
<field name="name">employee.purchase.requisition.tree</field>
<field name="model">employee.purchase.requisition</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="employee_id"/>
<field name="dept_id"/>
<field name="user_id"/>
<field name="requisition_date"/>
<field name="state" widget="badge"
decoration-success="state in ('approved','received')"
decoration-warning="state in ('waiting_department_approval','waiting_head_approval')"
decoration-info="state =='purchase_order_created'"
decoration-danger="state =='cancelled'"/>
</tree>
</field>
</record>
<record id="purchase_requisition_view_kanban" model="ir.ui.view">
<field name="name">employee.purchase.requisition.kanban</field>
<field name="model">employee.purchase.requisition</field>
<field name="arch" type="xml">
<kanban>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<div class="oe_kanban_content">
<div class="oe_kanban_card">
<div>
<b>
<field name="name"/>
</b>
</div>
<div>
<b>
<field name="employee_id"/>
</b>
</div>
<div>
<b>
<field name="dept_id"/>
</b>
</div>
<div>
<b>
<field name="user_id"/>
</b>
</div>
<div>
<b>
<field name="requisition_date"/>
</b>
</div>
<div>
<b>
<field name="state" widget="badge"
decoration-success="state in
('approved','received')"
decoration-warning="state in
('waiting_department_approval','waiting_head_approval')"
decoration-info="state
=='purchase_order_created'"
decoration-danger="state
=='cancelled'"
/>
</b>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="purchase_requisition_search" model="ir.ui.view">
<field name="name">employee.purchase.requisition.search</field>
<field name="model">employee.purchase.requisition</field>
<field name="arch" type="xml">
<search string="Search Tips">
<group expand="1" string="Group By">
<filter string="Employee" name="employee_id"
context="{'group_by':'employee_id', 'residual_visible':True}"/>
<filter string="Department" name="dept_id"
context="{'group_by':'dept_id', 'residual_visible':True}"/>
</group>
</search>
</field>
</record>
<record id="requisition_order_tree" model="ir.ui.view">
<field name="name">requisition.order.tree</field>
<field name="model">requisition.order</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="state" invisible="True"/>
<field name="requisition_type"
attrs="{'invisible': [('state', '=', 'new')]}"
groups="employee_purchase_requisition.employee_requisition_head,employee_purchase_requisition.employee_requisition_manager"/>
<field name="product_id"/>
<field name="description"/>
<field name="quantity"/>
<field name="uom"/>
<field name="partner_id"
attrs="{'invisible': [('requisition_type', '=', 'internal_transfer')]}"
groups="employee_purchase_requisition.employee_requisition_head,employee_purchase_requisition.employee_requisition_manager"/>
</tree>
</field>
</record>
</odoo>

16
employee_purchase_requisition/views/stock_picking_view.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- inherit view of stock picking -->
<record id="stock_picking_inherit" model="ir.ui.view">
<field name="name">stock.picking.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id"
ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='location_dest_id']"
position="after">
<field name="requisition_order"/>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save