@ -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>`__ |
|||
|
@ -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 |
@ -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, |
|||
} |
@ -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> |
@ -0,0 +1,6 @@ |
|||
## Module <employee_purchase_requisition> |
|||
|
|||
#### 27.01.2023 |
|||
#### Version 16.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Employee Purchase Requisition |
@ -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 |
@ -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') |
@ -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') |
@ -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') |
@ -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)]}} |
@ -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') |
@ -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"> |
|||
<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> |
|||
|
|
@ -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> |
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: 92 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 228 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 114 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 159 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 253 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 19 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/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 & 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> |
|||
<!-- 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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |