@ -0,0 +1,41 @@ |
|||
Support Package Management |
|||
========================== |
|||
* Support package management module for Odoo 14 community editions |
|||
|
|||
Installation |
|||
============ |
|||
- www.odoo.com/documentation/14.0/setup/install.html |
|||
- Install our custom addon |
|||
|
|||
License |
|||
------- |
|||
General Public License, Version 3 (LGPL v3). |
|||
(https://www.odoo.com/documentation/user/13.0/legal/licenses/licenses.html) |
|||
|
|||
Company |
|||
------- |
|||
* 'Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
Credits |
|||
------- |
|||
* Developer: |
|||
(v14) Amal @ Cybrosys |
|||
|
|||
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,2 @@ |
|||
from . import models |
|||
from . import report |
@ -0,0 +1,48 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
{ |
|||
'name': 'Support Package Management', |
|||
'summary': 'Support Service and Package Management Module', |
|||
'description': """Support Module is an easy-to-use Support Management app. |
|||
It enables users to create, manage, optimize, and monitor |
|||
the entire service request from a centralized application. |
|||
""", |
|||
'author': "Cybrosys Techno Solutions", |
|||
'website': "https://www.cybrosys.com", |
|||
'company': "Cybrosys Techno Solutions", |
|||
'maintainer': "Cybrosys Techno Solutions", |
|||
'category': 'Project', |
|||
'Version': '14.0.1.0.0', |
|||
'depends': ['base', 'project', 'sale_management', 'hr_timesheet'], |
|||
'data': [ |
|||
'security/ir.model.access.csv', |
|||
'views/support_package.xml', |
|||
'views/support_client.xml', |
|||
'views/package_template.xml', |
|||
'report/support_report_views.xml', |
|||
], |
|||
'license': 'LGPL-3', |
|||
'images': ['static/description/banner.png'], |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': True, |
|||
} |
@ -0,0 +1,6 @@ |
|||
## Module <customize_settings> |
|||
|
|||
#### 17.05.2021 |
|||
#### Version 14.0.1.0.0 |
|||
#### ADD |
|||
Initial Commit |
@ -0,0 +1,3 @@ |
|||
from . import support_package |
|||
from . import support_client |
|||
from . import package_template |
@ -0,0 +1,45 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details. |
|||
|
|||
from odoo import api, models, fields |
|||
|
|||
|
|||
class ProjectTemplate(models.Model): |
|||
_name = 'support.package.template' |
|||
_description = 'Support Package Template' |
|||
_rec_name = 'name' |
|||
|
|||
name = fields.Char(string="Name of Package") |
|||
count = fields.Char(string='Number of Tickets', readonly=False) |
|||
duration = fields.Float( |
|||
string='Ticket Duration', readonly=False, |
|||
help="Maximum allowed duration for a single ticket in hours") |
|||
validity_number = fields.Char(string='Support Package Validity', |
|||
readonly=False) |
|||
validity_rule = fields.Selection([ |
|||
('days', 'Day(s)'), |
|||
('months', 'Month(s)'), |
|||
('years', 'Year(s)')], readonly=False, default='months') |
|||
package_validity = fields.Integer(string='Package Validity', store=True, |
|||
readonly=False, |
|||
compute='_compute_package_validity') |
|||
|
|||
@api.depends('validity_number', 'validity_rule') |
|||
def _compute_package_validity(self): |
|||
"""Find package validity in days""" |
|||
for rec in self: |
|||
if rec.validity_rule == 'days': |
|||
rec.package_validity = int(rec.validity_number) |
|||
elif rec.validity_rule == 'months': |
|||
rec.package_validity = int(rec.validity_number) * 30 |
|||
elif rec.validity_rule == 'years': |
|||
rec.package_validity = int(rec.validity_number) * 365 |
|||
|
|||
def button_create_package(self): |
|||
"""Button to convert template to project""" |
|||
return { |
|||
'type': 'ir.actions.act_window', |
|||
'name': 'Project Support Package', |
|||
'view_mode': 'form', |
|||
'res_model': 'project.project' |
|||
} |
@ -0,0 +1,228 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details. |
|||
|
|||
import datetime |
|||
import math |
|||
from odoo import api, models, fields, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class SupportClientTimesheet(models.Model): |
|||
_inherit = 'account.analytic.line' |
|||
|
|||
support_count = fields.Integer(string='Ticket Count', store=True, |
|||
help="Effective hour of each record", |
|||
compute="_compute_support_count") |
|||
|
|||
@api.depends('unit_amount') |
|||
def _compute_support_count(self): |
|||
"""Find count of support in each record""" |
|||
for task in self: |
|||
try: |
|||
task.support_count = math.ceil(task.unit_amount / |
|||
task.project_id.support_duration) |
|||
except ZeroDivisionError: |
|||
task.support_count = 0 |
|||
|
|||
|
|||
class SupportClient(models.Model): |
|||
_inherit = 'project.task' |
|||
|
|||
is_support_package = fields.Boolean(string='Support Package') |
|||
support_count = fields.Integer(string='Number of Tickets') |
|||
count_used = fields.Integer(string='Used Tickets') |
|||
count_remaining = fields.Integer(string='Remaining Tickets') |
|||
support_duration = fields.Float(string='Support Duration', default=1.0) |
|||
package_validity = fields.Integer(string='Support Package Validity', |
|||
default=1) |
|||
|
|||
start_date = fields.Date(string='Start Date') |
|||
end_date = fields.Date(string='End Date') |
|||
reminder_date = fields.Date(string='Reminder Date') |
|||
this_effective_hours = fields.Float(help="Effective hour in this module", |
|||
default=0.0, store=True, |
|||
compute_sudo=True, |
|||
compute="_compute_this_effective_hours") |
|||
to_renew = fields.Boolean(string="To Renew", default=False) |
|||
|
|||
@api.model_create_multi |
|||
def create(self, vals_list): |
|||
"""update input values with values of this module""" |
|||
for rec in vals_list: |
|||
this_project_id = rec.get('project_id') |
|||
project_id = self.env['project.project'].search([ |
|||
('id', '=', this_project_id)]) |
|||
if project_id.is_support_package: |
|||
new_vals_list = [{ |
|||
'is_support_package': project_id.is_support_package, |
|||
'support_count': project_id.support_count, |
|||
'support_duration': project_id.support_duration, |
|||
'planned_hours': (float(project_id.support_count) * |
|||
float(project_id.support_duration)), |
|||
'count_used': 0, |
|||
'date_deadline': datetime.date.today() + datetime.timedelta( |
|||
days=project_id.package_validity), |
|||
'count_remaining': project_id.support_count, |
|||
'package_validity': project_id.package_validity, |
|||
'start_date': datetime.date.today(), |
|||
'end_date': datetime.date.today() + datetime.timedelta( |
|||
days=project_id.package_validity), |
|||
}] |
|||
vals_list[0].update(new_vals_list[0]) |
|||
return super(SupportClient, self).create(vals_list) |
|||
else: |
|||
return super(SupportClient, self).create(vals_list) |
|||
|
|||
@api.onchange('company_id') |
|||
def _onchange_company_id(self): |
|||
"""Function predefines some fields""" |
|||
this_project_id = self.env.context.get('default_project_id') |
|||
project_id = self.env['project.project']. \ |
|||
search([('id', '=', this_project_id)]) |
|||
if project_id.is_support_package: |
|||
self.count_used = 0 |
|||
self.name = project_id.name |
|||
self.start_date = datetime.date.today() |
|||
self.support_duration = project_id.support_duration |
|||
self.package_validity = project_id.package_validity |
|||
self.is_support_package = project_id.is_support_package |
|||
self.end_date = datetime.date.today() + datetime. \ |
|||
timedelta(days=project_id.package_validity) |
|||
self.date_deadline = datetime.date.today() + datetime. \ |
|||
timedelta(days=project_id.package_validity) |
|||
self.planned_hours = (self.support_count * self.support_duration) |
|||
self.support_count = self.count_remaining = project_id.support_count |
|||
else: |
|||
self.is_support_package = False |
|||
|
|||
@api.onchange('start_date') |
|||
def _onchange_start_date(self): |
|||
if self.is_support_package: |
|||
self.end_date = self.start_date + datetime.timedelta( |
|||
days=self.package_validity) |
|||
self.date_deadline = self.end_date |
|||
|
|||
@api.onchange('count_remaining') |
|||
def _onchange_count_remaining(self): |
|||
if self.is_support_package: |
|||
days_left = self.end_date - self.start_date |
|||
for rec in self: |
|||
if rec.count_remaining == 0 or days_left.days <= 0: |
|||
self.sale_order_id.order_line.qty_delivered = 1 |
|||
if not rec.sale_line_id: |
|||
rec.to_renew = True |
|||
raise ValidationError( |
|||
"You cannot add customer from here or because update a" |
|||
" timesheet without sale order ID ! \n\n You can go to " |
|||
"sales module to create a sale order and the package" |
|||
" will be generated automatically.") |
|||
if days_left.days < 0: |
|||
rec.to_renew = True |
|||
raise ValidationError( |
|||
"Package Expired !!! \n\nThis package validity is" |
|||
" expired, you can create a new sale order to continue" |
|||
" with the service.") |
|||
if rec.count_remaining < 0: |
|||
rec.to_renew = True |
|||
raise ValidationError( |
|||
"Ticket Limit Exceeded !!! \n\n You can create a new" |
|||
" sale order to continue with the service.") |
|||
|
|||
@api.onchange('count_used') |
|||
def _onchange_count_used(self): |
|||
if self.is_support_package: |
|||
days_left = self.end_date - self.start_date |
|||
for rec in self: |
|||
if rec.count_used > rec.support_count: |
|||
raise ValidationError("Supports Limit Exceeded!") |
|||
if days_left.days <= (int(0.1 * rec.package_validity)) and \ |
|||
rec.count_remaining < (int(0.1 * rec.support_count)): |
|||
rec.to_renew = True |
|||
return {'warning': { |
|||
'title': _("Warning"), |
|||
'message': _( |
|||
"%s is having only %d days and %d ticket(s) left" |
|||
" with this package. Kindly inform the customer to " |
|||
"renew the package to avail the service without" |
|||
" break.\n\nThank You !!!", |
|||
self.partner_id.name, days_left.days, |
|||
rec.count_remaining), |
|||
}} |
|||
if days_left.days <= (int(0.1 * rec.package_validity)): |
|||
rec.to_renew = True |
|||
return {'warning': { |
|||
'title': _("Warning"), |
|||
'message': _( |
|||
"%s is having only %d days left with this package." |
|||
" Kindly inform the customer to renew the package" |
|||
" to avail the service without break." |
|||
"\n\nThank You !!!", |
|||
self.partner_id.name, days_left.days), |
|||
}} |
|||
if rec.count_remaining < (int(0.1 * rec.support_count)): |
|||
rec.to_renew = True |
|||
return {'warning': { |
|||
'title': _("Warning"), |
|||
'message': _( |
|||
"%s is having only %d ticket(s) left with this" |
|||
" package. Kindly inform the customer to renew the" |
|||
" package to avail the service without break." |
|||
"\n\nThank You !!!", |
|||
self.partner_id.name, rec.count_remaining) |
|||
}} |
|||
|
|||
def action_renew(self): |
|||
"""Button for renewal""" |
|||
product = self.sale_line_id |
|||
product_id = self.env['product.product'].search( |
|||
[('name', '=', product.name)]) |
|||
so_id = self.env['sale.order'].create({ |
|||
'partner_id': self.partner_id.id, |
|||
'partner_invoice_id': self.partner_id.id, |
|||
'partner_shipping_id': self.partner_id.id, |
|||
'order_line': [(0, 0, {'name': product_id.name, |
|||
'product_id': product_id.id, |
|||
'product_uom_qty': 1, |
|||
'product_uom': product_id.uom_id.id, |
|||
'price_unit': product.price_unit, |
|||
'tax_id': product_id.taxes_id |
|||
})]}) |
|||
return { |
|||
'name': _('Sales Orders'), |
|||
'type': 'ir.actions.act_window', |
|||
'res_model': 'sale.order', |
|||
'domain': [('id', '=', so_id.id)], |
|||
'view_type': 'form', |
|||
'view_mode': 'tree,form', |
|||
} |
|||
|
|||
@api.depends('timesheet_ids.unit_amount') |
|||
def _compute_this_effective_hours(self): |
|||
"""find effective hours with respect to support duration""" |
|||
for task in self: |
|||
sigma_ciel = 0 |
|||
for rec in task.timesheet_ids.mapped('unit_amount'): |
|||
try: |
|||
ciel_timesheet_ids = math.ceil(rec / task.support_duration) |
|||
except ZeroDivisionError: |
|||
ciel_timesheet_ids = 0 |
|||
sigma_ciel = sigma_ciel + ciel_timesheet_ids |
|||
task.this_effective_hours = round( |
|||
sigma_ciel * task.support_duration, 2) |
|||
|
|||
@api.depends('effective_hours', 'subtask_effective_hours', 'planned_hours') |
|||
def _compute_remaining_hours(self): |
|||
for task in self: |
|||
if task.is_support_package is False: |
|||
task.remaining_hours = task.planned_hours - \ |
|||
task.effective_hours - \ |
|||
task.subtask_effective_hours |
|||
else: |
|||
task.remaining_hours = task.planned_hours - \ |
|||
task.this_effective_hours - \ |
|||
task.subtask_effective_hours |
|||
temp_count = 0 |
|||
for rec in task.timesheet_ids: |
|||
temp_count += rec.support_count |
|||
task.count_used = temp_count |
|||
task.count_remaining = task.support_count - task.count_used |
@ -0,0 +1,89 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details. |
|||
|
|||
from odoo import api, models, fields |
|||
|
|||
|
|||
class SupportPackageProduct(models.Model): |
|||
_inherit = "product.template" |
|||
|
|||
is_support = fields.Boolean(string='Is Support Package', default=False) |
|||
|
|||
|
|||
class SupportPackage(models.Model): |
|||
_inherit = 'project.project' |
|||
|
|||
is_support_package = fields.Boolean(string='Support Package', default=False) |
|||
support_count = fields.Char(string='Number of Tickets') |
|||
support_duration = fields.Float(string='Maximum Duration') |
|||
support_validity_number = fields.Char(string='Package Validity') |
|||
validity_rule = fields.Selection([ |
|||
('days', 'Day(s)'), |
|||
('months', 'Month(s)'), |
|||
('years', 'Year(s)')], default='months') |
|||
package_validity = fields.Integer(string='Validity', |
|||
store=True, readonly=False, |
|||
compute='_compute_package_validity') |
|||
privacy_visibility_support = fields.Selection([ |
|||
('followers', 'Invited internal users'), |
|||
('employees', 'All internal users')], string='Visibility', |
|||
required=True, default='employees') |
|||
allowed_internal_user_support_ids = fields.Many2many( |
|||
'res.users', |
|||
default=lambda self: self.env.user, |
|||
string="Allowed Internal Users", |
|||
domain=[('share', '=', False)]) |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
"""Create service product of the project""" |
|||
package = super(SupportPackage, self).create(vals) |
|||
if package.is_support_package: |
|||
package.privacy_visibility = 'employees' |
|||
package.label_tasks = 'Customers' |
|||
categ = self.env['product.category'].search( |
|||
[('name', '=', 'Services')]) |
|||
project = { |
|||
'name': vals.get('name'), |
|||
'sale_ok': True, |
|||
'purchase_ok': True, |
|||
'is_support': True, |
|||
'type': 'service', |
|||
'categ_id': int(categ.id), |
|||
'service_policy': 'delivered_manual', |
|||
} |
|||
product_id = self.env['product.template'].create(project) |
|||
product_id.service_tracking = 'task_global_project' |
|||
product_id.project_id = package.id |
|||
return package |
|||
|
|||
@api.onchange('privacy_visibility_support') |
|||
def _onchange_privacy_visibility_support(self): |
|||
if self.is_support_package: |
|||
self.privacy_visibility = self.privacy_visibility_support |
|||
|
|||
@api.onchange('allowed_internal_user_ids_support') |
|||
def _onchange_allowed_internal_user_ids_support(self): |
|||
if self.is_support_package: |
|||
self.allowed_internal_user_ids = self.allowed_internal_user_ids_support |
|||
|
|||
@api.onchange('is_support_package') |
|||
def _onchange_is_support_package(self): |
|||
if self.is_support_package: |
|||
self.label_tasks = 'Customers' |
|||
self.allow_billable = True |
|||
else: |
|||
self.label_tasks = 'Tasks' |
|||
|
|||
@api.depends('support_validity_number', 'validity_rule') |
|||
def _compute_package_validity(self): |
|||
"""Find package_validity in days""" |
|||
for rec in self: |
|||
if rec.is_support_package: |
|||
if rec.validity_rule == 'days': |
|||
rec.package_validity = int(rec.support_validity_number) |
|||
elif rec.validity_rule == 'months': |
|||
rec.package_validity = int(rec.support_validity_number) * 30 |
|||
elif rec.validity_rule == 'years': |
|||
rec.package_validity = int( |
|||
rec.support_validity_number) * 365 |
@ -0,0 +1 @@ |
|||
from . import support_report |
@ -0,0 +1,14 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details. |
|||
|
|||
from odoo import fields, models |
|||
|
|||
|
|||
class ReportSupportUser(models.Model): |
|||
_inherit = "report.project.task.user" |
|||
|
|||
is_support_package = fields.Boolean(string='Support Package', readonly=True) |
|||
|
|||
def _select(self): |
|||
return super(ReportSupportUser, self)._select() + """, |
|||
t.is_support_package""" |
@ -0,0 +1,39 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
<record id="view_support_project_user_pivot" model="ir.ui.view"> |
|||
<field name="name">Report Project Support User Pivot</field> |
|||
<field name="model">report.project.task.user</field> |
|||
<field name="inherit_id" ref="project.view_task_project_user_pivot"/> |
|||
<field name="arch" type="xml"> |
|||
<pivot string="Tasks Analysis" display_quantity="true" disable_linking="True" sample="1"> |
|||
<field name="project_id" position="after"> |
|||
<field name="remaining_hours" type="row" widget="timesheet_uom"/> |
|||
</field> |
|||
</pivot> |
|||
</field> |
|||
</record> |
|||
</data> |
|||
|
|||
<record id="action_project_support_user_tree" model="ir.actions.act_window"> |
|||
<field name="name">Reports</field> |
|||
<field name="res_model">report.project.task.user</field> |
|||
<field name="view_mode">pivot</field> |
|||
<field name="search_view_id" ref="project.view_task_project_user_search"/> |
|||
<field name="domain">[('is_support_package', '=', True)]</field> |
|||
<field name="context">{'group_by_no_leaf':1,'group_by':[]}</field> |
|||
</record> |
|||
|
|||
|
|||
<menuitem id="support_menu_reporting" |
|||
name="Reporting" |
|||
parent="support_package.support_menu_root" |
|||
sequence="15"/> |
|||
|
|||
<menuitem id="support_menu_reporting_submenu" |
|||
name="Package Reports" |
|||
parent="support_package.support_menu_reporting" |
|||
action="support_package.action_project_support_user_tree" |
|||
sequence="16"/> |
|||
|
|||
</odoo> |
|
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 797 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 56 KiB |
@ -0,0 +1,708 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
<meta charset="UTF-8"/> |
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
|||
<title>Support Package</title> |
|||
<link rel="stylesheet" |
|||
href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" |
|||
integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86+wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" |
|||
crossorigin="anonymous"/> |
|||
<link rel="stylesheet" |
|||
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" |
|||
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" |
|||
crossorigin="anonymous"/> |
|||
</head> |
|||
<!-- COLORS |
|||
red-bg: #FFECEF; |
|||
green-bg: #E4FEEE; |
|||
blue-bg: #F4F4FF; |
|||
tab-title-bg: #edf2f7 |
|||
jumbotron-bg: #192a56 |
|||
brand-color: #b22126 |
|||
yellow-pill: #f6b93b |
|||
|
|||
red-text: #F66170; |
|||
green-text: #51A26E; |
|||
blue-text: #2765FC; |
|||
grey-text: #757575; |
|||
tab-title-text: #162635; |
|||
--> |
|||
|
|||
<body> |
|||
<div class="oe_styling_v8"> |
|||
<section class="oe_container" |
|||
style="font-family: Roboto, 'sans-serif'; padding:2rem 3rem 1rem"> |
|||
<div class="row shadow-lg" |
|||
style="max-width:1540px; margin:0 auto; border-radius: 10px;"> |
|||
<!-- LEFT HERO --> |
|||
<div class="col-lg-7" |
|||
style="margin-top: 0rem; padding: 3rem 2.5rem; "> |
|||
<div style="width: 200px;"> |
|||
<img src="https://www.cybrosys.com/images/logo.png" |
|||
width="150px" height="auto"/> |
|||
</div> |
|||
<h1 class="mt-4" |
|||
style="font-family: Montserrat, 'sans-serif' ; font-weight: bold;"> |
|||
Support Package Management</h1> |
|||
<p class="lead" |
|||
style="font-weight: 500; line-height: 1.5; color: #757575"> |
|||
Support Service and Package Management Module. |
|||
</p> |
|||
<span class="badge px-3 py-2 depth-1" |
|||
style="background-color: #FFECEF; color: #F66170; font-weight: bold; border-radius: 1rem;"><i |
|||
class="fa fa-star mr-2"></i>Key Highlights</span> |
|||
<!-- FEATURES --> |
|||
<hr class="mt-4" |
|||
style="background: linear-gradient(to right, #e5e5e5, transparent); height: 2px; border-style: none;"> |
|||
<div class="row"> |
|||
<!-- FEATURE COLUMN LEFT --> |
|||
<ul style="list-style: none; padding: 0; font-weight: 500; line-height: 2;"> |
|||
<li><i class="fa fa-check-circle mr-2" |
|||
style="color: #1abc9c;"></i>Easy to create, monitor and manage support service. |
|||
</li> |
|||
<li><i class="fa fa-check-circle mr-2" |
|||
style="color: #1abc9c;"></i>Management of customers are similar to project management. |
|||
</li> |
|||
<li><i class="fa fa-check-circle mr-2" |
|||
style="color: #1abc9c;"></i>Can reuse packages with the help of templates. |
|||
</li> |
|||
<li><i class="fa fa-check-circle mr-2" |
|||
style="color: #1abc9c;"></i>Renewal badge appears ones end date is closer or number of |
|||
tickets remaining is very less. |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
<hr class="mt-4" |
|||
style="background: linear-gradient(to right, #e5e5e5, transparent); height: 2px; border-style: none;"> |
|||
<!-- END OF FEATURES --> |
|||
</div> |
|||
<!-- END OF LEFT HERO --> |
|||
<!-- RIGHT HERO --> |
|||
<div class="col-lg-5 d-flex align-items-center" |
|||
style="border-radius: 0px 10px 10px 0px; background-image: url('images/res_branch.png'); background-repeat: no-repeat; background-size: cover;"> |
|||
</div> |
|||
<!-- END OF RIGHT HERO --> |
|||
</div> |
|||
|
|||
<section class="oe_container" style="margin-top: 4rem;"> |
|||
<div class="row" |
|||
style="max-width:1540px; margin:0 auto; padding-bottom:64px;"> |
|||
<div class="col-lg-12"> |
|||
<!-- TAB LIST --> |
|||
<ul class="nav nav-tabs d-flex justify-content-center" |
|||
role="tablist" |
|||
style="background-color:unset; margin:0 auto;"> |
|||
<li class="nav-item"> |
|||
<a class="nav-link active" style="color: #000;" |
|||
data-toggle="tab" href="#tabs-1" |
|||
role="tab"><i class="fa fa-pie-chart mr-2"></i>Overview</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" style="color: #000;" |
|||
data-toggle="tab" href="#tabs-3" role="tab"><i |
|||
class="fa fa-star mr-2"></i>Features</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" style="color: #000;" |
|||
data-toggle="tab" href="#tabs-4" role="tab"><i |
|||
class="fa fa-picture-o mr-2"></i>Screenshots</a> |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
<div class="col-lg-12"> |
|||
<!-- Tab panes --> |
|||
<div class="tab-content" style="padding: 2rem;"> |
|||
<div class="tab-pane active" id="tabs-1" |
|||
role="tabpanel"> |
|||
<h3 class="text-center rounded px-3 py-2 mb-4" |
|||
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;"> |
|||
Overview</h3> |
|||
|
|||
<p class="text-justify">Support package module is a |
|||
support management app. It enables users to |
|||
create, manage, optimize, and monitor the |
|||
entire service request from a centralized |
|||
application.</p> |
|||
</div> |
|||
<div class="tab-pane" id="tabs-3" role="tabpanel"> |
|||
<h3 class="text-center rounded px-3 py-2 mb-4" |
|||
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;"> |
|||
Features</h3> |
|||
<ul style="max-width: 1200px;"> |
|||
<li> |
|||
<h5 style="font-family: Roboto, 'sans-serif';"> |
|||
Easy to create, monitor and manage support service. |
|||
</h5> |
|||
</li> |
|||
<li> |
|||
<h5 style="font-family: Roboto, 'sans-serif';"> |
|||
Management of customers are similar to project management. |
|||
</h5> |
|||
</li> |
|||
<li> |
|||
<h5 style="font-family: Roboto, 'sans-serif';"> |
|||
Can reuse packages with the help of templates. |
|||
</h5> |
|||
</li> |
|||
<li> |
|||
<h5 style="font-family: Roboto, 'sans-serif';"> |
|||
Renewal badge appears ones end date is closer or number of tickets remaining is |
|||
very less. |
|||
</h5> |
|||
</li> |
|||
<li> |
|||
<h5 style="font-family: Roboto, 'sans-serif';"> |
|||
Shows all the necessary information about a customer in kanban view inside |
|||
each support package which makes it easy to monitor bulk amount of customers. |
|||
</h5> |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
<div class="tab-pane" id="tabs-4" role="tabpanel"> |
|||
<h3 class="text-center rounded px-3 py-2 mb-4" |
|||
style="background-color:#edf2f7; color: #162635; font-family: Roboto, 'sans-serif'; font-weight: bold;"> |
|||
Screenshots</h3> |
|||
<!-- CAROUSEL --> |
|||
<div id="slider" class="carousel slide" |
|||
data-ride="carousel"> |
|||
|
|||
<div class="carousel-inner"> |
|||
<!-- Slide Items --> |
|||
<div class="carousel-item active"> |
|||
<img src="images/support_1.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
<h3>Creating support packages</h3> |
|||
<p>Creating support packages with information like maximum number of |
|||
tickets, |
|||
maximum duration of each ticket, validity of package, this will |
|||
automatically |
|||
create this package as a product</p> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item"> |
|||
<img src="images/support_2.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
<h3>Creating sale order</h3> |
|||
<p>Create sale order to customer with required package as product, then the |
|||
customer |
|||
will be created in support packages</p> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item"> |
|||
<img src="images/support_3.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item"> |
|||
<img src="images/support_4.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
<h3>Information shown customer kanban view</h3> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item"> |
|||
<img src="images/support_5.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
<h3>Report</h3> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item"> |
|||
<img src="images/support_6.png" |
|||
alt="App Screenshot" width="1100" |
|||
height="500"> |
|||
<div class="carousel-caption text-white p-4 position-relative d-none d-md-block bg-dark mb-4" |
|||
style="top:0; left:0;"> |
|||
<h3>Package Template</h3> |
|||
<p>Can create templates so that it helps in creating similar support |
|||
packages.</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- End of Slide Items --> |
|||
<!-- Slider control --> |
|||
<a class="carousel-control-prev" |
|||
href="#slider" data-slide="prev"> |
|||
<i |
|||
class="fa fa-arrow-left bg-dark p-3 rounded d-flex justify-content-center align-items-center"></i> |
|||
</a> |
|||
<a class="carousel-control-next" |
|||
href="#slider" data-slide="next"> |
|||
<i |
|||
class="fa fa-arrow-right bg-dark p-3 rounded d-flex justify-content-center align-items-center"></i> |
|||
</a> |
|||
<!-- End of Slider control --> |
|||
</div> |
|||
<!-- END OF CAROUSEL --> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF TAB LIST --> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- Suggested Products --> |
|||
<section class="oe_container" |
|||
style="padding:2rem 3rem 1rem; max-width:1540px; margin: 0 auto; "> |
|||
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%"> |
|||
Suggested Products</h2> |
|||
<hr |
|||
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
<div id="suggestedSlider" class="row carousel slide mt-4" |
|||
data-ride="carousel"> |
|||
<!-- The slideshow --> |
|||
<div class="carousel-inner"> |
|||
<div class="carousel-item" style="min-height: 191px;"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/13.0/project_task_timer/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_task_timer.png?ae168aa"> |
|||
</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/13.0/project_report_pdf/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_repo.png?ae168aa"> |
|||
</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/13.0/project_custom_gantt/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_gantt.png?ae168aa"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item active" |
|||
style="min-height: 191px;"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/12.0/project_task_timer/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/task_image.png?ae168aa"> |
|||
</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/13.0/task_deadline_reminder/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/reminder.png?ae168aa"> |
|||
</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/12.0/project_report_pdf/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="//apps.odoocdn.com/apps/assets/14.0/custom_gantt_view/images/project_report.png?ae168aa"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- Left and right controls --> |
|||
<a class="carousel-control-prev" href="#suggestedSlider" |
|||
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="#suggestedSlider" 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> |
|||
</section> |
|||
<!-- End of Suggested Products --> |
|||
<!-- Our Services --> |
|||
<section class="oe_container" style="padding:2rem 3rem 1rem"> |
|||
<!-- <h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%">Our Services</h2> |
|||
<hr |
|||
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> --> |
|||
<div class="row mt-4 position-relative" |
|||
style="max-width:1540px; margin: 0 auto;"> |
|||
<div class="col-lg-12 jumbotron text-white position-relative shadow-sm" |
|||
style="background-color: #b22126; background-image: url('./assets/arrows-transparent.png'); background-size: cover; background-position: bottom; border-radius: 10px;"> |
|||
<span class="badge badge-pill px-3 py-2 text-dark shadow-sm font-weight-bold" |
|||
style="background-color: #f6b93b;"><i |
|||
class="fa fa-trophy mr-2"></i>Odoo Gold Partner</span> |
|||
<div class="row"> |
|||
<div class="col-lg-6 mt-4"> |
|||
<h1 style="font-family: Roboto, 'sans-serif'; color:#FFF;"> |
|||
Our Services</h1> |
|||
<p class="lead">We provide following services</p> |
|||
<ul class="mt-4" |
|||
style="list-style: none; padding: 0; line-height: 2.8; font-weight: 500;"> |
|||
<li> |
|||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" |
|||
style="color: white; text-decoration: none;" |
|||
target="_blank"><i |
|||
class="fa fa-cogs mr-2" |
|||
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo |
|||
Customization</a></li> |
|||
<li> |
|||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" |
|||
style="color: white; text-decoration: none;" |
|||
target="_blank"><i |
|||
class="fa fa-wrench mr-2" |
|||
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo |
|||
Implementation</a></li> |
|||
<li> |
|||
<a href="https://www.cybrosys.com/odoo-erp-support/" |
|||
style="color: white; text-decoration: none;" |
|||
target="_blank"><i |
|||
class="fa fa-life-ring mr-2" |
|||
style="color: #f6b93b; font-size: 1.5rem"></i>Odoo |
|||
Support</a></li> |
|||
<li> |
|||
<a href="https://www.cybrosys.com/hire-odoo-developer/" |
|||
style="color: white; text-decoration: none;" |
|||
target="_blank"><i |
|||
class="fa fa-user mr-2" |
|||
style="color: #f6b93b; font-size: 1.5rem"></i> |
|||
Hire |
|||
Odoo Developers</a></li> |
|||
</ul> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<img src="./assets/trophy.png" width="50%" |
|||
height="auto" alt="Odoo Gold Partner" |
|||
class="position-absolute" style="right: 0; bottom: 0;"> |
|||
</div> |
|||
</section> |
|||
<!-- End of Our Services --> |
|||
<!-- Our Industries --> |
|||
<section class="oe_container" style="padding:2rem 3rem 1rem"> |
|||
<div class="row" style="max-width:1540px; margin: 0 auto; "> |
|||
<div class="col-lg-12"> |
|||
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%"> |
|||
Our |
|||
Industries</h2> |
|||
<hr |
|||
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
</div> |
|||
<div class="row mt-4 position-relative" |
|||
style="max-width:1540px; margin: 0 auto;"> |
|||
<!-- Left Column --> |
|||
<div class="col-lg-6"> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 mb-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" |
|||
target="_blank" |
|||
class="text-dark" style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/trading.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Trading</h4> |
|||
<p style="font-weight: 300;">Easily |
|||
procure and sell your products</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" |
|||
target="_blank" class="text-dark" |
|||
style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/education.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Education</h4> |
|||
<p style="font-weight: 300;">A |
|||
Collaborative platform for |
|||
educational |
|||
management</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" |
|||
target="_blank" class="text-dark" |
|||
style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/manufacturing.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Manufacturing</h4> |
|||
<p style="font-weight: 300;">Plan, track |
|||
and schedule your operations</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" |
|||
target="_blank" |
|||
class="text-dark" style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/ecom.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
E-commerce & Website</h4> |
|||
<p style="font-weight: 300;">Mobile |
|||
friendly, awe-inspiring product |
|||
pages |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<!-- End of Left Column --> |
|||
<!-- Right Column --> |
|||
<div class="col-lg-6"> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 mb-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/pos/" |
|||
target="_blank" |
|||
class="text-dark" style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/pos.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
POS</h4> |
|||
<p style="font-weight: 300;">Easy |
|||
configuring and convivial |
|||
selling</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" |
|||
target="_blank" |
|||
class="text-dark" style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/service.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Service Management</h4> |
|||
<p style="font-weight: 300;">Keep track |
|||
of services and invoice accordingly |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" |
|||
target="_blank" class="text-dark" |
|||
style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/restaurant.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Restaurant</h4> |
|||
<p style="font-weight: 300;">Run your |
|||
bar or restaurant methodica</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="bg-white shadow px-4 py-3 my-3" |
|||
style="border-radius: 10px;"> |
|||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" |
|||
target="_blank" |
|||
class="text-dark" style="text-decoration: none;"> |
|||
<div class="row"> |
|||
<div class="col-lg-3 no-gutters"> |
|||
<img src="./assets/icons/hotel.png"> |
|||
</div> |
|||
<div class="col-lg-9 no-gutters pt-3"> |
|||
<h4 style="font-family: Roboto, 'sans-serif"> |
|||
Hotel Management</h4> |
|||
<p style="font-weight: 300;">An |
|||
all-inclusive hotel management |
|||
application |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<!-- End of Right Column --> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- End of Our Industries--> |
|||
<!-- Footer Section --> |
|||
<section class="oe_container" style="padding:2rem 3rem 1rem"> |
|||
<div class="row" style="max-width:1540px; margin: 0 auto; "> |
|||
<div class="col-lg-12 mb-4"> |
|||
<h2 style="font-weight:600; text-align:center; margin-bottom:1rem; width:100%"> |
|||
Need Help?</h2> |
|||
<hr |
|||
style="background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- Contact Cards --> |
|||
<div class="row d-flex justify-content-center align-items-center" |
|||
style="max-width:1540px; margin: 0 auto;"> |
|||
<div class="col-lg-3 shadow mt-2" |
|||
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #546E7A; height: 300px;"> |
|||
<h5 class="font-weight-bold" |
|||
style="font-family: Roboto, 'sans-serif';">Visit us</h5> |
|||
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;"> |
|||
Visit our website for more |
|||
information.</p> |
|||
<a href="https://cybrosys.com" target="_blank" |
|||
class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #546E7A; color: #FFF; border-radius: 4px;">www.cybrosys.com</a> |
|||
</div> |
|||
|
|||
<div class="col-lg-3 shadow mt-2" |
|||
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #b22126; height: 330px;"> |
|||
<h5 class="font-weight-bold" |
|||
style="font-family: Roboto, 'sans-serif';">Write to |
|||
us</h5> |
|||
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;"> |
|||
Do you have any queries regarding our |
|||
products & services? Let us know.</p> |
|||
<a href="mailto:odoo@cybrosys.com" target="_blank" |
|||
class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #b22126; color: #FFF; border-radius: 4px;">odoo@cybrosys.com</a> |
|||
<a href="mailto:info@cybrosys.com" target="_blank" |
|||
class="btn btn-block deep_hover" |
|||
style="text-decoration: none; background-color: #b22126; color: #FFF; border-radius: 4px;">info@cybrosys.com</a> |
|||
</div> |
|||
b |
|||
|
|||
<div class="col-lg-3 shadow mt-2" |
|||
style="padding: 5rem 2rem 2rem; border-radius: 10px; margin-right: 3rem; border-top: 7px solid #546E7A; height: 300px;"> |
|||
<h5 class="font-weight-bold" |
|||
style="font-family: Roboto, 'sans-serif';">Follow |
|||
Us</h5> |
|||
<p class="mb-4" style="color: #808e9b; font-size: 0.9rem;"> |
|||
Follow us on social media for latest |
|||
updates.</p> |
|||
<div class="d-flex justify-content-begin align-items-center"> |
|||
<a href="https://www.facebook.com/cybrosystechnologies" |
|||
target="_blank" |
|||
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center" |
|||
style="text-decoration: none; background-color:#3b5998; color: #fff; height: 35px; width: 35px; border-radius: 4px;"><i |
|||
class="fa fa-facebook"></i></a> |
|||
|
|||
<a href="https://twitter.com/cybrosys" target="_blank" |
|||
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center" |
|||
style="text-decoration: none; background-color:#00acee ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i |
|||
class="fa fa-twitter"></i></a> |
|||
|
|||
<a href="https://www.youtube.com/channel/UCKjWLm7iCyOYINVspCSanjg" |
|||
target="_blank" |
|||
class="btn mb-2 mr-2 deep_hover d-flex justify-content-center align-items-center" |
|||
style="text-decoration: none; background-color:#FF0000 ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i |
|||
class="fa fa-play"></i></a> |
|||
<a href="https://medium.com/cybrosys" target="_blank" |
|||
class="btn mb-2 deep_hover d-flex justify-content-center align-items-center" |
|||
style="text-decoration: none; background-color:#000 ; color: #fff ; height: 35px; width: 35px; border-radius: 4px;"><i |
|||
class="fa fa-medium"></i></a> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- End of Contact Cards --> |
|||
</div> |
|||
</section> |
|||
</section> |
|||
</div> |
|||
<!-- Footer --> |
|||
<section class="oe_container" style="padding:2rem 3rem 1rem;"> |
|||
<div class="row" |
|||
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; "> |
|||
<!-- Logo --> |
|||
<div class="col-lg-12 d-flex justify-content-center align-items-center" |
|||
style="margin-top: 4rem;"> |
|||
<img src="https://www.cybrosys.com/images/logo.png" width="200px" |
|||
height="auto"/> |
|||
</div> |
|||
<!-- End of Logo --> |
|||
<div class="col-lg-12" style="margin-top: 2rem;"> |
|||
<hr |
|||
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
<!-- End of Footer Section --> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> |
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.bundle.min.js" |
|||
integrity="sha512-wV7Yj1alIZDqZFCUQJy85VN+qvEIly93fIQAN7iqDFCPEucLCeNFz4r35FCo9s6WrpdDQPi80xbljXB8Bjtvcg==" |
|||
crossorigin="anonymous"></script> |
|||
</body> |
|||
|
|||
</html> |
@ -0,0 +1,78 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record id="project_menu_config_project_template" |
|||
model="ir.actions.act_window"> |
|||
<field name="name">Support Package Template</field> |
|||
<field name="type">ir.actions.act_window</field> |
|||
<field name="res_model">support.package.template</field> |
|||
<field name="view_mode">tree,kanban,form</field> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
Create a new package template ! |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="config_project_template_tree" model="ir.ui.view"> |
|||
<field name="name">support.package.template.tree</field> |
|||
<field name="model">support.package.template</field> |
|||
<field name="arch" type="xml"> |
|||
<tree> |
|||
<field name="name"/> |
|||
<field name="count"/> |
|||
<field name="duration" widget="timesheet_uom"/> |
|||
<field name="package_validity"/> |
|||
</tree> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="config_project_template_form" model="ir.ui.view"> |
|||
<field name="name">support.package.template.form</field> |
|||
<field name="model">support.package.template</field> |
|||
<field name="arch" type="xml"> |
|||
<form> |
|||
<header> |
|||
<button name="button_create_package" class="oe_highlight oe_read_only" |
|||
string="Create Package" type="object" |
|||
context="{ |
|||
'default_is_support_package': True, |
|||
'default_name': name, |
|||
'default_support_count': count, |
|||
'default_support_duration': duration, |
|||
'default_support_validity_number': validity_number, |
|||
'default_validity_rule': validity_rule |
|||
}"/> |
|||
</header> |
|||
<sheet> |
|||
<div class="oe_title"> |
|||
<h4>Name :</h4> |
|||
<h1><field name="name" colspan="3" required="1"/></h1> |
|||
</div> |
|||
<br/> |
|||
<group> |
|||
<group name="package_template_details" |
|||
string="Package Details"> |
|||
<field name="count"/> |
|||
<field name="duration" widget="timesheet_uom"/> |
|||
<label string="Package Validity" for="validity_number"/> |
|||
<div name="validity_number" class="o_row"> |
|||
<field name="validity_number"/> |
|||
<field name="validity_rule"/> |
|||
</div> |
|||
</group> |
|||
<group> |
|||
</group> |
|||
</group> |
|||
</sheet> |
|||
</form> |
|||
</field> |
|||
</record> |
|||
|
|||
<menuitem id="menu_configuration_package_template" |
|||
name="Template" |
|||
parent="support_package.support_menu_configuration" |
|||
action="support_package.project_menu_config_project_template" |
|||
sequence="22"/> |
|||
|
|||
</odoo> |
@ -0,0 +1,152 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record id="support_view_client_search_form" model="ir.ui.view"> |
|||
<field name="name">Inherit Client Search Support</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_search_form"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//filter[@name='my_tasks']" position="before"> |
|||
<field name="is_support_package"/> |
|||
<filter string="Customers of Support" |
|||
name="filter_is_support" |
|||
domain="[('is_support_package','=',True)]"/> |
|||
<separator/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="action_view_all_task_customers" model="ir.actions.act_window"> |
|||
<field name="name">Customers</field> |
|||
<field name="res_model">project.task</field> |
|||
<field name="search_view_id" ref="project.view_task_search_form"/> |
|||
<field name="view_mode">tree,kanban,form,calendar,pivot,graph,activity</field> |
|||
<field name="context">{'search_default_filter_is_support': True}</field> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
No customers found. Let's create one! |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_task_form2_support_inherited" model="ir.ui.view"> |
|||
<field name="name">project.task.form.inherited</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_form2" /> |
|||
<field name="groups_id" eval="[(6,0, (ref('hr_timesheet.group_hr_timesheet_user'),))]"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='unit_amount']" position="after"> |
|||
<field name="support_count" force_save="1"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_task_tree2_support_inherited" model="ir.ui.view"> |
|||
<field name="name">project.task.tree.inherited</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_tree2"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='project_id']" position="after"> |
|||
<field name="partner_id"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="quick_create_form_support_customers" model="ir.ui.view"> |
|||
<field name="name">Inherit Task Kanban Quick create : Package Customer</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.quick_create_task_form"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='name']/.." position="before"> |
|||
<div class="o_kanban_record_headings" id="view_task_kanban_title_replace"> |
|||
<group name="quick_create_support_package_client" |
|||
attrs="{'invisible': [('is_support_package', '=', False)]}"> |
|||
<field name="partner_id" string="Customer"/> |
|||
<field name="start_date" string="Start Date"/> |
|||
<field name="support_count" invisible="1"/> |
|||
<field name="count_used" invisible="1"/> |
|||
<field name="count_remaining" invisible="1"/> |
|||
<field name="support_duration" invisible="1"/> |
|||
<field name="planned_hours" invisible="1"/> |
|||
<field name="is_support_package" invisible="1"/> |
|||
<field name="package_validity" invisible="1"/> |
|||
<field name="start_date" invisible="1"/> |
|||
<field name="end_date" invisible="1"/> |
|||
<field name="date_deadline" invisible="1"/> |
|||
</group> |
|||
</div> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_task_form2_support_package_customers" model="ir.ui.view"> |
|||
<field name="name">Inherit Project Task Form: Package Customers</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_form2"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//button[@name='action_assign_to_me']" position="after"> |
|||
<button name="action_renew" string="Renewal Quotation" type="object" class="oe_highlight" |
|||
attrs="{'invisible' : [('to_renew', '=', False)]}"/> |
|||
</xpath> |
|||
<xpath expr="//page[@name='extra_info']" position="before"> |
|||
<page name="support_details" string="Support Details" |
|||
attrs="{'invisible': [('is_support_package', '=', False)]}"> |
|||
<group> |
|||
<group name="support_details" string="Details"> |
|||
<field name="is_support_package" attrs="{'readonly':True}"/> |
|||
<field name="support_count" attrs="{'readonly':True}"/> |
|||
<field name="support_duration" widget="timesheet_uom" attrs="{'readonly':True}"/> |
|||
<label string="Package Validity" for="package_validity"/> |
|||
<div class="o_row"> |
|||
<field name="package_validity" attrs="{'readonly':True}"/> |
|||
day(s) |
|||
</div> |
|||
<field name="start_date" attrs="{'readonly':False}"/> |
|||
<field name="end_date" attrs="{'readonly':True}"/> |
|||
</group> |
|||
<group> |
|||
</group> |
|||
</group> |
|||
</page> |
|||
</xpath> |
|||
<xpath expr="//div[@name='button_box']" position="after"> |
|||
<div class="badge-pill badge-warning float-right" |
|||
attrs="{'invisible': [('to_renew', '=', False)]}">For Renewal</div> |
|||
</xpath> |
|||
<xpath expr="//field[@name='partner_id']" position="after"> |
|||
<field name="count_used" |
|||
attrs="{'readonly':True, 'invisible': [('is_support_package', '=', False)]}"/> |
|||
<field name="count_remaining" string="Remaining Tickets" |
|||
attrs="{'readonly':True, 'invisible': [('is_support_package', '=', False)]}"/> |
|||
<field name="to_renew"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="view_task_kanban_support_customer" model="ir.ui.view"> |
|||
<field name="name">Inherit Project Task Kanban: Support Customers</field> |
|||
<field name="model">project.task</field> |
|||
<field name="inherit_id" ref="project.view_task_kanban"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='tag_ids']" position="after"> |
|||
<field name="to_renew" invisible="1"/> |
|||
<div class="badge badge-pill badge-info badge-warning mt4 mr16" |
|||
attrs="{'invisible': [('to_renew', '=', False)]}"> |
|||
To Renew |
|||
</div> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<menuitem id="support_incident_menu_clients" |
|||
name="Customers" |
|||
parent="support_package.support_menu_root" |
|||
action="support_package.action_view_all_task_customers" |
|||
sequence="10"/> |
|||
|
|||
</odoo> |
@ -0,0 +1,206 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record id="search_view_inherit_support" model="ir.ui.view"> |
|||
<field name="name">Inherit Product Search Support</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_search_view"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//filter[@name='services']" position="before"> |
|||
<filter string="Support Packages" |
|||
name="filter_is_support" |
|||
domain="[('is_support','=',True)]"/> |
|||
<separator/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="product_inherit_support_package" model="ir.ui.view"> |
|||
<field name="name">Inherit Product Product: Support Package</field> |
|||
<field name="model">product.product</field> |
|||
<field name="inherit_id" ref="product.product_normal_form_view"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='purchase_ok']/.." position="after"> |
|||
<field name="is_support"/> |
|||
<label for="is_support"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="product_template_inherit_support_package" model="ir.ui.view"> |
|||
<field name="name">Inherit Product Template: Support Product</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_only_form_view"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='purchase_ok']/.." position="after"> |
|||
<field name="is_support"/> |
|||
<label for="is_support"/> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="project_project_support_package" model="ir.ui.view"> |
|||
<field name="name">Project Project : Support Package</field> |
|||
<field name="model">project.project</field> |
|||
<field name="inherit_id" ref="project.project_project_view_form_simplified"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//group" position="after"> |
|||
<group id="is_support_package" class="oe_inline"> |
|||
<field name="is_support_package"/> |
|||
<field name="support_count" class="oe_inline" attrs="{'invisible':[('is_support_package', '=', False)]}"/> |
|||
<field name="support_duration" class="oe_inline" widget="timesheet_uom" attrs="{'invisible':[('is_support_package', '=', False)]}"/> |
|||
<label string="Maximum Validity" for="support_validity_number" attrs="{'invisible':[('is_support_package', '=', False)]}"/> |
|||
<div name="support_validity_number" class="o_row" attrs="{'invisible':[('is_support_package', '=', False)]}"> |
|||
<field name="support_validity_number" class="oe_inline"/> |
|||
<field name="validity_rule" class="oe_inline"/> |
|||
</div> |
|||
</group> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="project_support_package_form" model="ir.ui.view"> |
|||
<field name="name">Inherit project form : Support Package</field> |
|||
<field name="model">project.project</field> |
|||
<field name="inherit_id" ref="project.edit_project"/> |
|||
<field name="priority">25</field> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//field[@name='privacy_visibility']/.." position='attributes'> |
|||
<attribute name="attrs"> |
|||
{'invisible':[('is_support_package', '=', True)]} |
|||
</attribute> |
|||
</xpath> |
|||
<xpath expr="//field[@name='allowed_internal_user_ids']/.." position='attributes'> |
|||
<attribute name="attrs"> |
|||
{'invisible':['|', |
|||
('is_support_package', '=', True), |
|||
('privacy_visibility', '!=', 'followers')]} |
|||
</attribute> |
|||
</xpath> |
|||
<xpath expr="//field[@name='allowed_internal_user_ids']/.." position="before"> |
|||
<group> |
|||
<field name="privacy_visibility_support" widget="radio" string="Visibility" |
|||
attrs="{'invisible':[('is_support_package', '=', False)]}"/> |
|||
<field name="allowed_internal_user_support_ids" widget="many2many_tags" |
|||
attrs="{'invisible': [('privacy_visibility_support', '!=', 'followers')]}"/> |
|||
</group> |
|||
</xpath> |
|||
<xpath expr="//div[@id='rating_settings']/.." position="before"> |
|||
<div class="row mt16 o_settings_container"> |
|||
<div class="col-lg-6 o_setting_box" id="support_package"> |
|||
<div class="o_setting_left_pane"> |
|||
<field name="is_support_package"/> |
|||
</div> |
|||
<div class="o_setting_right_pane"> |
|||
<label for="is_support_package" |
|||
string="Support Package"/> |
|||
<div class="text-muted"> |
|||
This project is a Support Package |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</xpath> |
|||
<xpath expr="//group[@name='extra_settings']/.." position="after"> |
|||
<br/> |
|||
<group> |
|||
<group name="support_package_info" string="Support Package info" |
|||
attrs="{'invisible':[('is_support_package', '=', False)]}"> |
|||
<field name="support_count"/> |
|||
<field name="support_duration" widget="timesheet_uom"/> |
|||
<label string="Package Validity" for="support_validity_number"/> |
|||
<div name="support_validity_number" class="o_row"> |
|||
<field name="support_validity_number"/> |
|||
<field name="validity_rule"/> |
|||
</div> |
|||
</group> |
|||
</group> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="project_all_support_package" model="ir.actions.act_window"> |
|||
<field name="name">Support Package</field> |
|||
<field name="res_model">project.project</field> |
|||
<field name="domain">[('is_support_package', '=', True)]</field> |
|||
<field name="view_mode">kanban,form</field> |
|||
<field name="view_id" ref="project.view_project_kanban"/> |
|||
<field name="search_view_id" ref="project.view_project_project_filter"/> |
|||
<field name="target">main</field> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
No packages found. Let's create one! |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="project_all_support_package_config" model="ir.actions.act_window"> |
|||
<field name="name">Support Package : Configration</field> |
|||
<field name="res_model">project.project</field> |
|||
<field name="view_mode">tree,form</field> |
|||
<field name="domain">[('is_support_package', '=', True)]</field> |
|||
<field name="search_view_id" ref="project.view_project_project_filter"/> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
No packages found. Let's create one! |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="action_support_products" model="ir.actions.act_window"> |
|||
<field name="name">Products</field> |
|||
<field name="type">ir.actions.act_window</field> |
|||
<field name="res_model">product.template</field> |
|||
<field name="view_mode">kanban,tree,form,activity</field> |
|||
<field name="view_id" ref="product.product_template_kanban_view"/> |
|||
<field name="search_view_id" ref="product.product_template_search_view"/> |
|||
<field name="context">{ |
|||
'search_default_filter_is_support': True, |
|||
'search_default_filter_to_sell':1, |
|||
'default_type':'service', |
|||
'default_is_support':True}</field> |
|||
<field name="help" type="html"> |
|||
<p class="o_view_nocontent_smiling_face"> |
|||
Create a new product |
|||
</p> |
|||
</field> |
|||
</record> |
|||
|
|||
<menuitem id="support_menu_root" |
|||
name="Support" |
|||
action="support_package.project_all_support_package" |
|||
sequence="1"/> |
|||
|
|||
<menuitem id="support_menu_project_support_package" |
|||
name="Packages" |
|||
parent="support_package.support_menu_root" |
|||
sequence="5"/> |
|||
|
|||
<menuitem id="packages_menu_project_packages" |
|||
name="Packages" |
|||
parent="support_package.support_menu_project_support_package" |
|||
action="support_package.project_all_support_package" |
|||
sequence="7"/> |
|||
|
|||
<menuitem id="packages_menu_project_support_products" |
|||
name="Products" |
|||
parent="support_package.support_menu_project_support_package" |
|||
action="support_package.action_support_products" |
|||
sequence="9"/> |
|||
|
|||
<menuitem id="support_menu_configuration" |
|||
name="Configuration" |
|||
parent="support_package.support_menu_root" |
|||
sequence="20"/> |
|||
|
|||
<menuitem id="menu_configuration_package" |
|||
name="Package Configuration" |
|||
parent="support_package.support_menu_configuration" |
|||
action="support_package.project_all_support_package_config" |
|||
sequence="21"/> |
|||
|
|||
</odoo> |