@ -0,0 +1,53 @@ |
|||||
|
.. 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 |
||||
|
============================= |
||||
|
This app allows an employee to submit a request to the purchasing department or management for the purchase of goods or services. |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
- Need to set the Employee Purchase Requisition from the user configuration |
||||
|
|
||||
|
Installation |
||||
|
============ |
||||
|
- www.odoo.com/documentation/15.0/setup/install.html |
||||
|
- Install our custom addon |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
License |
||||
|
------- |
||||
|
GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL v3) |
||||
|
(https://www.odoo.com/documentation/16.0/legal/licenses.html) |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developers: |
||||
|
(V16) Cybrosys Techno Solutions, |
||||
|
(V15) Shonima, |
||||
|
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: `<static/description/index.html>`__ |
@ -0,0 +1,22 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 |
@ -0,0 +1,57 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Shonima(<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': '15.0.1.0.0', |
||||
|
'category': 'Purchases', |
||||
|
'summary': 'This app allows an employee to submit a request to the ' |
||||
|
'purchasing department or management for the purchase of goods ' |
||||
|
'or services.', |
||||
|
'description': 'This app allows employees to request purchases from the ' |
||||
|
'company. They make requests for goods or services through ' |
||||
|
'the purchasing department or management.', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'depends': ['hr', 'stock', 'purchase'], |
||||
|
'data': [ |
||||
|
'security/employee_purchase_requisition_security.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'data/ir_sequence_data.xml', |
||||
|
'data/ir_actions_server_data.xml', |
||||
|
'views/employee_purchase_requisition_views.xml', |
||||
|
'views/employee_purchase_requisition_menu_items.xml', |
||||
|
'views/hr_employee_views.xml', |
||||
|
'views/hr_department_views.xml', |
||||
|
'views/purchase_order_views.xml', |
||||
|
'views/stock_picking_views.xml', |
||||
|
'views/requisition_order_views.xml', |
||||
|
'report/employee_purchase_requisition_templates.xml', |
||||
|
'report/employee_purchase_requisition_reports.xml', |
||||
|
], |
||||
|
'images': ['static/description/banner.png'], |
||||
|
'license': 'AGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': True, |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<data noupdate="1"> |
||||
|
<!-- 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> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<data noupdate="1"> |
||||
|
<!-- 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> |
@ -0,0 +1,7 @@ |
|||||
|
## Module <employee_purchase_requisition> |
||||
|
|
||||
|
#### 29.02.2024 |
||||
|
#### Version 15.0.1.0.0 |
||||
|
#### ADD |
||||
|
- Initial commit for Employee Purchase Requisition |
||||
|
|
@ -0,0 +1,27 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 employee_purchase_requistion |
||||
|
from . import hr_department |
||||
|
from . import hr_employee |
||||
|
from . import purchase_order |
||||
|
from . import requisition_order |
||||
|
from . import stock_picking |
@ -0,0 +1,234 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 odoo import api, fields, models |
||||
|
|
||||
|
|
||||
|
class EmployeePurchaseRequisition(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, |
||||
|
help="Name of the purchase requisition") |
||||
|
employee_id = fields.Many2one('hr.employee', string='Employee', |
||||
|
required=True, |
||||
|
help='Employee of the purchase requisition') |
||||
|
dept_id = fields.Many2one('hr.department', string='Department', |
||||
|
related='employee_id.department_id', store=True, |
||||
|
help='Department of the purchase requisition') |
||||
|
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 of the Purchase requisition ' |
||||
|
'record') |
||||
|
requisition_order_ids = fields.One2many('requisition.order', |
||||
|
'requisition_product_id', |
||||
|
required=True, |
||||
|
string='Purchase Order', |
||||
|
help='The requested purchase ' |
||||
|
'orders by the employee') |
||||
|
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", |
||||
|
help='Reason for the 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, string='state', |
||||
|
help='State of the purchase requisition') |
||||
|
|
||||
|
@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(EmployeePurchaseRequisition, 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.employee_id.employee_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.employee_id.employee_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): |
||||
|
"""Method _compute_internal_transfer_count to compute value to the field |
||||
|
internal_transfer_count""" |
||||
|
for rec in self: |
||||
|
rec.internal_transfer_count = self.env[ |
||||
|
'stock.picking'].search_count([ |
||||
|
('requisition_order', '=', rec.name)]) |
||||
|
|
||||
|
def _compute_purchase_count(self): |
||||
|
"""Method _compute_purchase_count to compute value to the field |
||||
|
purchase_count""" |
||||
|
for rec in self: |
||||
|
rec.purchase_count = self.env['purchase.order'].search_count([ |
||||
|
('requisition_order', '=', rec.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) |
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 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') |
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 odoo import models, fields |
||||
|
|
||||
|
|
||||
|
class HrEmployee(models.Model): |
||||
|
""" inherit hr.employee model""" |
||||
|
_inherit = 'hr.employee' |
||||
|
|
||||
|
employee_location_id = fields.Many2one('stock.location', |
||||
|
string="Destination Location", |
||||
|
help='Employee Destination location') |
@ -0,0 +1,30 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class PurchaseOrder(models.Model): |
||||
|
""" inherit purchase.order model """ |
||||
|
_inherit = 'purchase.order' |
||||
|
|
||||
|
requisition_order = fields.Char(string='Requisition Order', |
||||
|
help='Related Requisition Order') |
@ -0,0 +1,72 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 odoo import api, fields, models |
||||
|
|
||||
|
|
||||
|
class RequisitionProducts(models.Model): |
||||
|
_name = 'requisition.order' |
||||
|
_description = 'Requisition order' |
||||
|
|
||||
|
requisition_product_id = fields.Many2one( |
||||
|
'employee.purchase.requisition', help='Product for the requisition', |
||||
|
string='Requisition Product') |
||||
|
state = fields.Selection(string='State', |
||||
|
related='requisition_product_id.state', |
||||
|
help='State for the requisition order') |
||||
|
requisition_type = fields.Selection( |
||||
|
string='Requisition Type', |
||||
|
selection=[ |
||||
|
('purchase_order', 'Purchase Order'), |
||||
|
('internal_transfer', 'Internal Transfer'), |
||||
|
], help='Type of requisition', default='purchase_order') |
||||
|
product_id = fields.Many2one('product.product', required=True, |
||||
|
help='Product for the requisition', |
||||
|
string="Product") |
||||
|
description = fields.Text( |
||||
|
string="Description", |
||||
|
compute='_compute_description', |
||||
|
store=True, readonly=False, |
||||
|
precompute=True, help='Product Description') |
||||
|
quantity = fields.Integer(string='Quantity', help='Quantity', default=1) |
||||
|
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_description(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('product_id') |
||||
|
def _onchange_product(self): |
||||
|
"""fetching product vendors""" |
||||
|
self.partner_id = False |
||||
|
vendors_list = [data.name.id for data in self.product_id.seller_ids] |
||||
|
if not vendors_list: |
||||
|
return False |
||||
|
return {'domain': {'partner_id': [('id', 'in', vendors_list)]}} |
@ -0,0 +1,30 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# 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 odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class StockPicking(models.Model): |
||||
|
""" inherit stock.picking model """ |
||||
|
_inherit = 'stock.picking' |
||||
|
|
||||
|
requisition_order = fields.Char(string='Requisition Order', |
||||
|
help='Related Requisition Order') |
@ -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> |
@ -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"> |
||||
|
<h5>Purchase Requisition : |
||||
|
<t t-if="rec['name']"> |
||||
|
<t t-esc="rec['name']"/> |
||||
|
</t> |
||||
|
</h5> |
||||
|
<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> |
||||
|
<h5>Other Information</h5> |
||||
|
<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> |
||||
|
<h5>Picking Details</h5> |
||||
|
<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> |
||||
|
|
||||
|
<h5>Requisition Lines</h5> |
||||
|
<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> |
||||
|
<h5>Employee Signature :</h5> |
||||
|
<h5>Manager Signature :</h5> |
||||
|
<h5>Approve Signature :</h5> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
||||
|
|
@ -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"/> |
||||
|
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/> |
||||
|
</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> |
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 157 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 102 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 168 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 307 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 12 KiB |
@ -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/15.0/vendor_portal_odoo/#" |
||||
|
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/15.0/product_brand_purchase/" |
||||
|
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/15.0/purchase_order_delivery_status/" |
||||
|
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/15.0/purchase_recurring_orders/#" |
||||
|
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/15.0/no_automatic_subscription/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/5.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/15.0/section_wise_subtotal/" |
||||
|
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 & 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 --> |
@ -0,0 +1,12 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Employee Purchase Requisition menu --> |
||||
|
<menuitem id="employee_purchase_requisition_menu" |
||||
|
name="Employee Purchase Requisition" |
||||
|
web_icon="employee_purchase_requisition,static/description/icon.png" |
||||
|
action="employee_purchase_requisition.employee_purchase_requisition_action"/> |
||||
|
<menuitem id="purchase_requisition_menu" |
||||
|
name="Purchase Requisition" |
||||
|
parent="employee_purchase_requisition_menu" |
||||
|
action="employee_purchase_requisition.employee_purchase_requisition_action"/> |
||||
|
</odoo> |
@ -0,0 +1,247 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Employee Purchase Requisition action --> |
||||
|
<record id="employee_purchase_requisition_action" |
||||
|
model="ir.actions.act_window"> |
||||
|
<field name="name">Employee 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> |
||||
|
<!--View form of the model employee purchase requisition--> |
||||
|
<record id="employee_purchase_requisition_view_form" model="ir.ui.view"> |
||||
|
<field name="name"> |
||||
|
employee.purchase.requisition.view.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" |
||||
|
attrs="{'invisible': [('purchase_count', '=', 0)]}"> |
||||
|
<field string="Purchase Order" |
||||
|
name="purchase_count" widget="statinfo"/> |
||||
|
</button> |
||||
|
<button class="oe_stat_button" type="object" |
||||
|
name="get_internal_transfer" |
||||
|
icon="fa-truck" |
||||
|
attrs="{'invisible': [('internal_transfer_count', '=', 0)]}"> |
||||
|
<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" |
||||
|
attrs="{'readonly': [('state', '!=', 'new')]}"/> |
||||
|
</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> |
||||
|
<!--Tree view of the model employee purchase requisition--> |
||||
|
<record id="employee_purchase_requisition_view_tree" model="ir.ui.view"> |
||||
|
<field name="name"> |
||||
|
employee.purchase.requisition.view.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> |
||||
|
<!--Kanban view of the model employee purchase requisition--> |
||||
|
<record id="employee_purchase_requisition_view_kanban" model="ir.ui.view"> |
||||
|
<field name="name"> |
||||
|
employee.purchase.requisition.view.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> |
||||
|
<!--Search view of the model employee purchase requisition--> |
||||
|
<record id="employee_purchase_requisition_view_search" model="ir.ui.view"> |
||||
|
<field name="name">employee.purchase.requisition.view.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> |
||||
|
</odoo> |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- inherit view of hr department --> |
||||
|
<record id="view_department_form" model="ir.ui.view"> |
||||
|
<field name="name">hr.department.view.form.inherit.employee.purchase.requisition</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> |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- inherit view of hr employee --> |
||||
|
<record id="view_employee_form" model="ir.ui.view"> |
||||
|
<field name="name"> |
||||
|
hr.employee.view.form.inherit.employee.purchase.requisition |
||||
|
</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> |
@ -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.view.form.inherit.employee.purchase.requisition</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> |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!--Requisition Order view --> |
||||
|
<record id="requisition_order_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">requisition.order.view.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" |
||||
|
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> |
@ -0,0 +1,18 @@ |
|||||
|
<?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.view.form.inherit.employee.purchase.requisition |
||||
|
</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> |