@ -0,0 +1,34 @@ |
|||||
|
Mobile Service Management |
||||
|
========================= |
||||
|
Module for mobile service shop daily activities |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developers: Milind Mohan @ Cybrosys, odoo@cybrosys.com |
||||
|
Mohammed Shahil M P @cybrosys, 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 |
||||
|
========== |
||||
|
.. image:: https://cybrosys.com/images/logo.png |
||||
|
:target: https://cybrosys.com |
||||
|
|
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit `Our Website <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Further information |
||||
|
=================== |
||||
|
HTML Description: `<static/description/index.html>`__ |
||||
|
|
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@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 AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import models |
||||
|
from . import wizard |
@ -0,0 +1,50 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# 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 AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
{ |
||||
|
'name': 'Mobile Service Management', |
||||
|
'version': '13.0.1.0.0', |
||||
|
'summary': 'Module for managing mobile service shop daily activities.', |
||||
|
'category': 'Industries', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'depends': ['base', 'stock_account', 'mail', 'product', 'account'], |
||||
|
'data': ['security/security.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'views/mobile_service_views.xml', |
||||
|
'views/product_template.xml', |
||||
|
'views/terms_and_condition.xml', |
||||
|
'views/complaint_template.xml', |
||||
|
'views/complaint_type.xml', |
||||
|
'views/brand_models.xml', |
||||
|
'views/brand.xml', |
||||
|
'wizard/mobile_create_invoice_views.xml', |
||||
|
'reports/mobile_service_ticket.xml', |
||||
|
'reports/service_ticket_template.xml', |
||||
|
'data/mobile_service_data.xml', |
||||
|
'data/mobile_service_email_template.xml'], |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'installable': True, |
||||
|
'application': True, |
||||
|
'auto_install': False, |
||||
|
'license': 'LGPL-3', |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<data noupdate="1"> |
||||
|
<record model="account.journal" id="mobile_service_journal"> |
||||
|
<field name="name">Mobile Service</field> |
||||
|
<field name="type">sale</field> |
||||
|
<field name="code">SERV</field> |
||||
|
<field name="active">TRUE</field> |
||||
|
</record> |
||||
|
<record model="product.template" id="mobile_service_product"> |
||||
|
<field name="name">Mobile Service Charge</field> |
||||
|
<field name="type">service</field> |
||||
|
<field name="invoice_policy">order</field> |
||||
|
</record> |
||||
|
<record model="product.template" id="mobile_service_advance_product"> |
||||
|
<field name="name">Mobile Service Advance</field> |
||||
|
<field name="type">service</field> |
||||
|
<field name="invoice_policy">order</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<data noupdate="1"> |
||||
|
<!--Email template --> |
||||
|
<record id="email_template_mobile_service" model="mail.template"> |
||||
|
<field name="name">Service Status Email</field> |
||||
|
<field name="model_id" ref="mobile_service_shop.model_mobile_service"/> |
||||
|
<field name="email_from">${(object.user_id.email |safe}</field> |
||||
|
<field name="email_to" >${object.person_name.email |safe}</field> |
||||
|
<field name="subject">Ref ${object.name or 'n/a' }</field> |
||||
|
<field name="auto_delete" eval="True"/> |
||||
|
<field name="lang">${object.person_name.lang}</field> |
||||
|
<field name="body_html"><![CDATA[ |
||||
|
<p>Dear ${object.person_name.name},</p> |
||||
|
<p>Your service request for ${object.brand_name.brand_name or 'n/a' } (${object.model_name.mobile_brand_models or 'n/a' }) with reference no <b>${object.name or 'n/a' }</b> has been processed to <b>${object.service_state or 'n/a' }</b> stage.</p> |
||||
|
<p>If you have any questions, please let us know.</p> |
||||
|
<p>Best regards,</p>]]> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,7 @@ |
|||||
|
## Module <mobile_service_shop> |
||||
|
|
||||
|
#### 27.11.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
#### ADD |
||||
|
|
||||
|
Initial Commit. |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import mobile_service |
||||
|
from . import service_ticket |
||||
|
from . import product_order_line |
||||
|
from . import product |
@ -0,0 +1,374 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
############################################################################# |
||||
|
from datetime import datetime, date, timedelta |
||||
|
from odoo import models, fields, api, _ |
||||
|
from odoo.exceptions import Warning, UserError |
||||
|
import pytz |
||||
|
|
||||
|
|
||||
|
class MobileServiceShop(models.Model): |
||||
|
_name = 'mobile.service' |
||||
|
_rec_name = 'name' |
||||
|
_inherit = ['mail.thread', 'mail.activity.mixin'] |
||||
|
|
||||
|
name = fields.Char(string='Service Number', copy=False, default="New") |
||||
|
person_name = fields.Many2one('res.partner', string="Customer Name", required=True) |
||||
|
contact_no = fields.Char(related='person_name.mobile', string="Contact Number") |
||||
|
email_id = fields.Char(related='person_name.email', string="Email") |
||||
|
|
||||
|
street = fields.Char(related='person_name.street', string="Address") |
||||
|
street2 = fields.Char(related='person_name.street2', string="Address") |
||||
|
city = fields.Char(related='person_name.city', string="Address") |
||||
|
state_id = fields.Many2one(related='person_name.state_id', string="Address") |
||||
|
zip = fields.Char(related='person_name.zip', string="Address") |
||||
|
country_id = fields.Many2one(related='person_name.country_id', string="Address") |
||||
|
|
||||
|
brand_name = fields.Many2one('mobile.brand', string="Mobile Brand") |
||||
|
is_in_warranty = fields.Boolean( |
||||
|
'In Warranty', default=False, |
||||
|
help="Specify if the product is in warranty.") |
||||
|
|
||||
|
warranty_number = fields.Char(string="Warranty No ", help="warranty details") |
||||
|
|
||||
|
re_repair = fields.Boolean( |
||||
|
'Re-repair', default=False, |
||||
|
help="Re-repairing.") |
||||
|
|
||||
|
imei_no = fields.Char(string="IMEI Number") |
||||
|
|
||||
|
model_name = fields.Many2one('brand.model', string="Model", domain="[('mobile_brand_name','=',brand_name)]") |
||||
|
image_medium = fields.Binary(related='model_name.image_medium', store=True, attachment=True) |
||||
|
date_request = fields.Date(string="Requested date", default=fields.Date.context_today) |
||||
|
return_date = fields.Date(string="Return date", required=True) |
||||
|
technician_name = fields.Many2one('res.users', string="Technician Name", |
||||
|
default=lambda self: self.env.user, required=True) |
||||
|
service_state = fields.Selection([('draft', 'Draft'), ('assigned', 'Assigned'), |
||||
|
('completed', 'Completed'), ('returned', 'Returned'), |
||||
|
('not_solved', 'Not solved')], |
||||
|
string='Service Status', default='draft', track_visibility='always') |
||||
|
|
||||
|
complaints_tree = fields.One2many('mobile.complaint.tree', 'complaint_id', string='Complaints Tree') |
||||
|
|
||||
|
product_order_line = fields.One2many('product.order.line', 'product_order_id', string='Parts Order Lines') |
||||
|
|
||||
|
internal_notes = fields.Text(string="Internal notes") |
||||
|
invoice_count = fields.Integer(compute='_invoice_count', string='# Invoice', copy=False) |
||||
|
invoice_ids = fields.Many2many("account.move", string='Invoices', compute="_get_invoiced", readonly=True, |
||||
|
copy=False) |
||||
|
|
||||
|
first_payment_inv = fields.Many2one('account.move', copy=False) |
||||
|
|
||||
|
first_invoice_created = fields.Boolean(string="First Invoice Created", invisible=True, copy=False) |
||||
|
|
||||
|
journal_type = fields.Many2one('account.journal', 'Journal', invisible=True, |
||||
|
default=lambda self: self.env['account.journal'].search([('code', '=', 'SERV')])) |
||||
|
|
||||
|
company_id = fields.Many2one('res.company', 'Company', |
||||
|
default=lambda self: self.env['res.company']._company_default_get('mobile.service')) |
||||
|
|
||||
|
@api.model |
||||
|
def _default_picking_transfer(self): |
||||
|
type_obj = self.env['stock.picking.type'] |
||||
|
company_id = self.env.context.get('company_id') or self.env.user.company_id.id |
||||
|
types = type_obj.search([('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)], limit=1) |
||||
|
if not types: |
||||
|
types = type_obj.search([('code', '=', 'outgoing'), ('warehouse_id', '=', False)]) |
||||
|
return types[:4] |
||||
|
|
||||
|
stock_picking_id = fields.Many2one('stock.picking', string="Picking Id") |
||||
|
|
||||
|
picking_transfer_id = fields.Many2one('stock.picking.type', 'Deliver To', required=True, |
||||
|
default=_default_picking_transfer, |
||||
|
help="This will determine picking type of outgoing shipment") |
||||
|
|
||||
|
@api.onchange('return_date') |
||||
|
def check_date(self): |
||||
|
if self.return_date != False: |
||||
|
return_date_string = datetime.strptime(str(self.return_date), "%Y-%m-%d") |
||||
|
request_date_string = datetime.strptime(str(self.date_request), "%Y-%m-%d") |
||||
|
if return_date_string < request_date_string: |
||||
|
raise UserError("Return date should be greater than requested date") |
||||
|
|
||||
|
def approve(self): |
||||
|
self.service_state = 'assigned' |
||||
|
|
||||
|
def complete(self): |
||||
|
self.service_state = 'completed' |
||||
|
|
||||
|
def return_to(self): |
||||
|
self.service_state = 'returned' |
||||
|
|
||||
|
def not_solved(self): |
||||
|
self.service_state = 'not_solved' |
||||
|
|
||||
|
def action_send_mail(self): |
||||
|
''' |
||||
|
This function opens a window to compose an email, with the edi sale template message loaded by default |
||||
|
''' |
||||
|
self.ensure_one() |
||||
|
ir_model_data = self.env['ir.model.data'] |
||||
|
try: |
||||
|
template_id = ir_model_data.get_object_reference('mobile_service_shop', 'email_template_mobile_service')[1] |
||||
|
except ValueError: |
||||
|
template_id = False |
||||
|
try: |
||||
|
compose_form_id = ir_model_data.get_object_reference('mail', 'email_compose_message_wizard_form')[1] |
||||
|
except ValueError: |
||||
|
compose_form_id = False |
||||
|
ctx = { |
||||
|
'default_model': 'mobile.service', |
||||
|
'default_res_id': self.ids[0], |
||||
|
'default_use_template': bool(template_id), |
||||
|
'default_template_id': template_id, |
||||
|
'default_composition_mode': 'comment', |
||||
|
} |
||||
|
return { |
||||
|
'name': _('Compose Email'), |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'mail.compose.message', |
||||
|
'views': [(compose_form_id, 'form')], |
||||
|
'view_id': compose_form_id, |
||||
|
'target': 'new', |
||||
|
'context': ctx, |
||||
|
} |
||||
|
|
||||
|
def return_advance(self): |
||||
|
inv_obj = self.env['account.move'].search([('invoice_origin', '=', self.name)]) |
||||
|
inv_ids = [] |
||||
|
for each in inv_obj: |
||||
|
inv_ids.append(each.id) |
||||
|
view_id = self.env.ref('account.view_move_form').id |
||||
|
if inv_ids: |
||||
|
if len(inv_ids) <= 1: |
||||
|
value = { |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': view_id, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Invoice', |
||||
|
'res_id': inv_ids and inv_ids[0] |
||||
|
} |
||||
|
else: |
||||
|
value = { |
||||
|
'domain': str([('id', 'in', inv_ids)]), |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': False, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Invoice', |
||||
|
'res_id': inv_ids |
||||
|
} |
||||
|
|
||||
|
return value |
||||
|
else: |
||||
|
raise UserError("No invoice created") |
||||
|
|
||||
|
def _invoice_count(self): |
||||
|
invoice_ids = self.env['account.move'].search([('invoice_origin', '=', self.name)]) |
||||
|
self.invoice_count = len(invoice_ids) |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
print(self.env.user.company_id) |
||||
|
if 'company_id' in vals: |
||||
|
vals['name'] = self.env['ir.sequence'].with_context(force_company=self.env.user.company_id.id).next_by_code( |
||||
|
'mobile.service') or _('New') |
||||
|
else: |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code('mobile.service') or _('New') |
||||
|
vals['service_state'] = 'draft' |
||||
|
return super(MobileServiceShop, self).create(vals) |
||||
|
|
||||
|
def unlink(self): |
||||
|
for i in self: |
||||
|
if i.service_state != 'draft': |
||||
|
raise UserError(_('You cannot delete an assigned service request')) |
||||
|
return super(MobileServiceShop, self).unlink() |
||||
|
|
||||
|
def action_invoice_create_wizard(self): |
||||
|
|
||||
|
return { |
||||
|
'name': _('Create Invoice'), |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'mobile.invoice', |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'target': 'new' |
||||
|
} |
||||
|
|
||||
|
def action_post_stock(self): |
||||
|
flag = 0 |
||||
|
for order in self.product_order_line: |
||||
|
if order.product_uom_qty > order.qty_stock_move: |
||||
|
flag = 1 |
||||
|
pick = { |
||||
|
'picking_type_id': self.picking_transfer_id.id, |
||||
|
'partner_id': self.person_name.id, |
||||
|
'origin': self.name, |
||||
|
'location_dest_id': self.person_name.property_stock_customer.id, |
||||
|
'location_id': self.picking_transfer_id.default_location_src_id.id, |
||||
|
} |
||||
|
|
||||
|
picking = self.env['stock.picking'].create(pick) |
||||
|
self.stock_picking_id = picking.id |
||||
|
self.picking_count = len(picking) |
||||
|
moves = order.filtered( |
||||
|
lambda r: r.product_id.type in ['product', 'consu'])._create_stock_moves_transfer(picking) |
||||
|
move_ids = moves._action_confirm() |
||||
|
move_ids._action_assign() |
||||
|
if order.product_uom_qty < order.qty_stock_move: |
||||
|
raise UserError(_('Used quantity is less than quantity stock move posted. ')) |
||||
|
if flag != 1: |
||||
|
raise UserError(_('Nothing to post stock move')) |
||||
|
if flag != 1: |
||||
|
raise UserError(_('Nothing to post stock move')) |
||||
|
|
||||
|
def action_view_invoice(self): |
||||
|
inv_obj = self.env['account.move'].search([('invoice_origin', '=', self.name)]) |
||||
|
inv_ids = [] |
||||
|
for each in inv_obj: |
||||
|
inv_ids.append(each.id) |
||||
|
view_id = self.env.ref('account.view_move_form').id |
||||
|
ctx = dict( |
||||
|
create=False, |
||||
|
) |
||||
|
if inv_ids: |
||||
|
if len(inv_ids) <= 1: |
||||
|
value = { |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': view_id, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Invoice', |
||||
|
'context': ctx, |
||||
|
'res_id': inv_ids and inv_ids[0] |
||||
|
} |
||||
|
else: |
||||
|
value = { |
||||
|
'domain': str([('id', 'in', inv_ids)]), |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': False, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'context': ctx, |
||||
|
'name': 'Invoice', |
||||
|
'res_id': inv_ids |
||||
|
} |
||||
|
|
||||
|
return value |
||||
|
|
||||
|
def get_ticket(self): |
||||
|
self.ensure_one() |
||||
|
user = self.env['res.users'].browse(self.env.uid) |
||||
|
if user.tz: |
||||
|
tz = pytz.timezone(user.tz) |
||||
|
time = pytz.utc.localize(datetime.now()).astimezone(tz) |
||||
|
date_today = time.strftime("%Y-%m-%d %H:%M %p") |
||||
|
else: |
||||
|
date_today = datetime.strftime(datetime.now(), "%Y-%m-%d %I:%M:%S %p") |
||||
|
complaint_text = "" |
||||
|
description_text = "" |
||||
|
complaint_id = self.env['mobile.complaint.tree'].search([('complaint_id', '=', self.id)]) |
||||
|
if complaint_id: |
||||
|
for obj in complaint_id: |
||||
|
complaint = obj.complaint_type_tree |
||||
|
description = obj.description_tree |
||||
|
complaint_text = complaint.complaint_type + ", " + complaint_text |
||||
|
if description.description: |
||||
|
description_text = description.description + ", " + description_text |
||||
|
else: |
||||
|
for obj in complaint_id: |
||||
|
complaint = obj.complaint_type_tree |
||||
|
complaint_text = complaint.complaint_type + ", " + complaint_text |
||||
|
data = { |
||||
|
'ids': self.ids, |
||||
|
'model': self._name, |
||||
|
'date_today': date_today, |
||||
|
'date_request': self.date_request, |
||||
|
'date_return': self.return_date, |
||||
|
'sev_id': self.name, |
||||
|
'warranty': self.is_in_warranty, |
||||
|
'customer_name': self.person_name.name, |
||||
|
'imei_no': self.imei_no, |
||||
|
'technician': self.technician_name.name, |
||||
|
'complaint_types': complaint_text, |
||||
|
'complaint_description': description_text, |
||||
|
'mobile_brand': self.brand_name.brand_name, |
||||
|
'model_name': self.model_name.mobile_brand_models, |
||||
|
|
||||
|
} |
||||
|
return self.env.ref('mobile_service_shop.mobile_service_ticket').report_action(self, data=data) |
||||
|
|
||||
|
|
||||
|
class MobileBrand(models.Model): |
||||
|
_name = 'mobile.brand' |
||||
|
_rec_name = 'brand_name' |
||||
|
|
||||
|
brand_name = fields.Char(string="Mobile Brand", required=True) |
||||
|
|
||||
|
|
||||
|
class MobileComplaintType(models.Model): |
||||
|
_name = 'mobile.complaint' |
||||
|
_rec_name = 'complaint_type' |
||||
|
|
||||
|
complaint_type = fields.Char(string="Complaint Type", required=True) |
||||
|
|
||||
|
|
||||
|
class MobileComplaintTypeTemplate(models.Model): |
||||
|
_name = 'mobile.complaint.description' |
||||
|
_rec_name = 'description' |
||||
|
|
||||
|
complaint_type_template = fields.Many2one('mobile.complaint', string="Complaint Type Template", required=True) |
||||
|
description = fields.Text(string="Complaint Description") |
||||
|
|
||||
|
|
||||
|
class MobileComplaintTree(models.Model): |
||||
|
_name = 'mobile.complaint.tree' |
||||
|
_rec_name = 'complaint_type_tree' |
||||
|
|
||||
|
complaint_id = fields.Many2one('mobile.service') |
||||
|
|
||||
|
complaint_type_tree = fields.Many2one('mobile.complaint', string="Category", required=True) |
||||
|
description_tree = fields.Many2one('mobile.complaint.description', string="Description", |
||||
|
domain="[('complaint_type_template','=',complaint_type_tree)]") |
||||
|
|
||||
|
|
||||
|
class MobileBrandModels(models.Model): |
||||
|
_name = 'brand.model' |
||||
|
_rec_name = 'mobile_brand_models' |
||||
|
|
||||
|
mobile_brand_name = fields.Many2one('mobile.brand', string="Mobile Brand", required=True) |
||||
|
mobile_brand_models = fields.Char(string="Model Name", required=True) |
||||
|
image_medium = fields.Binary(string='image', store=True, attachment=True) |
||||
|
|
||||
|
|
||||
|
class MobileServiceTermsAndConditions(models.Model): |
||||
|
_name = 'terms.conditions' |
||||
|
_rec_name = 'terms_id' |
||||
|
|
||||
|
terms_id = fields.Char(String="Terms and condition", compute="_find_id") |
||||
|
terms_conditions = fields.Text(string="Terms and Conditions") |
||||
|
|
||||
|
def _find_id(self): |
||||
|
self.terms_id = self.id or '' |
||||
|
|
||||
|
|
@ -0,0 +1,36 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import models, fields, api, _ |
||||
|
|
||||
|
|
||||
|
class ProductProduct(models.Model): |
||||
|
_inherit = 'product.template' |
||||
|
|
||||
|
is_a_parts = fields.Boolean( |
||||
|
'Is a Mobile Part', default=False, |
||||
|
help="Specify if the product is a mobile part or not.") |
||||
|
|
||||
|
brand_name = fields.Many2one('mobile.brand', String="Brand", help="Select a mobile brand for the part") |
||||
|
model_name = fields.Many2one('brand.model', String="Model Name", domain="[('mobile_brand_name','=',brand_name)]", |
||||
|
help="Select a model for the part") |
||||
|
model_colour = fields.Char(string="Colour", help="colour for the part") |
||||
|
extra_descriptions = fields.Text(string="Note") |
@ -0,0 +1,92 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import models, fields, api, _ |
||||
|
|
||||
|
|
||||
|
class ProductOrderLine(models.Model): |
||||
|
|
||||
|
_name = 'product.order.line' |
||||
|
|
||||
|
product_order_id = fields.Many2one('mobile.service') |
||||
|
|
||||
|
product_id = fields.Many2one('product.product', string='Product', |
||||
|
domain="[('is_a_parts','=', True)]", required=True) |
||||
|
product_uom_qty = fields.Float(string='Used Quantity', default=1.0, required=True) |
||||
|
price_unit = fields.Float(string='Unit Price', default=0.0, required=True) |
||||
|
qty_invoiced = fields.Float(string='Invoiced qty', readonly=True) |
||||
|
qty_stock_move = fields.Float(string='Stock Move Posted Qty', readonly=True) |
||||
|
part_price = fields.Char(compute='_compute_amount', string='Price', readonly=True, store=True) |
||||
|
product_uom = fields.Char(string='Unit of Measure', required=True) |
||||
|
|
||||
|
@api.onchange('product_id') |
||||
|
def change_prod(self): |
||||
|
self.ensure_one() |
||||
|
if self.product_id: |
||||
|
product_template_obj = self.product_id.product_tmpl_id |
||||
|
self.price_unit = product_template_obj.list_price |
||||
|
self.product_uom = product_template_obj.uom_id.name |
||||
|
|
||||
|
@api.depends('product_uom_qty', 'product_id') |
||||
|
def _compute_amount(self): |
||||
|
""" |
||||
|
Compute the amount |
||||
|
""" |
||||
|
for line in self: |
||||
|
price = line.price_unit * line.product_uom_qty |
||||
|
|
||||
|
line.update({ |
||||
|
'part_price': price, |
||||
|
}) |
||||
|
|
||||
|
def _create_stock_moves_transfer(self, picking): |
||||
|
moves = self.env['stock.move'] |
||||
|
done = self.env['stock.move'].browse() |
||||
|
if self.product_id.product_tmpl_id.type != 'service': |
||||
|
price_unit = self.price_unit |
||||
|
template = { |
||||
|
'name': self.product_id.product_tmpl_id.name or '', |
||||
|
'product_id': self.product_id.id, |
||||
|
'product_uom': self.product_id.product_tmpl_id.uom_id.id, |
||||
|
'location_id': picking.picking_type_id.default_location_src_id.id, |
||||
|
'location_dest_id': self.product_order_id.person_name.property_stock_customer.id, |
||||
|
'picking_id': picking.id, |
||||
|
'move_dest_id': False, |
||||
|
'state': 'draft', |
||||
|
'company_id': self.product_order_id.company_id.id, |
||||
|
'price_unit': price_unit, |
||||
|
'picking_type_id': picking.picking_type_id.id, |
||||
|
'procurement_id': False, |
||||
|
'route_ids': 1 and [ |
||||
|
(6, 0, [x.id for x in self.env['stock.location.route'].search([('id', 'in', (2, 3))])])] or [], |
||||
|
'warehouse_id': picking.picking_type_id.warehouse_id.id, |
||||
|
} |
||||
|
qty = self.product_uom_qty - self.qty_stock_move |
||||
|
print(qty) |
||||
|
diff_quantity = qty |
||||
|
tmp = template.copy() |
||||
|
tmp.update({ |
||||
|
'product_uom_qty': diff_quantity, |
||||
|
}) |
||||
|
template['product_uom_qty'] = diff_quantity |
||||
|
done += moves.create(template) |
||||
|
self.qty_stock_move = self.qty_stock_move + qty |
||||
|
return done |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import models, api |
||||
|
|
||||
|
|
||||
|
class StockMoveReport(models.AbstractModel): |
||||
|
|
||||
|
_name = 'report.mobile_service_shop.mobile_service_ticket_template' |
||||
|
|
||||
|
@api.model |
||||
|
def _get_report_values(self, docids, data): |
||||
|
terms = self.env['terms.conditions'].search([]) |
||||
|
return { |
||||
|
'date_today': data['date_today'], |
||||
|
'date_request': data['date_request'], |
||||
|
'date_return': data['date_return'], |
||||
|
'sev_id': data['sev_id'], |
||||
|
'imei_no': data['imei_no'], |
||||
|
'technician': data['technician'], |
||||
|
'complaint_types': data['complaint_types'], |
||||
|
'complaint_description': data['complaint_description'], |
||||
|
'mobile_brand': data['mobile_brand'], |
||||
|
'model_name': data['model_name'], |
||||
|
'customer_name': data['customer_name'], |
||||
|
'warranty': data['warranty'], |
||||
|
'terms': terms, |
||||
|
} |
||||
|
|
@ -0,0 +1,12 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<report |
||||
|
id="mobile_service_ticket" |
||||
|
model="mobile.service" |
||||
|
string="Mobile Service Ticket" |
||||
|
report_type="qweb-pdf" |
||||
|
name="mobile_service_shop.mobile_service_ticket_template" |
||||
|
file="mobile_service_shop.mobile_service_ticket_template" |
||||
|
menu="False" |
||||
|
/> |
||||
|
</odoo> |
@ -0,0 +1,83 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<template id="mobile_service_ticket_template"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<div class="row"> |
||||
|
<br/> |
||||
|
<div style="margin-bottom:30px; text-align:center;margin-left:35%;margin-top:2%;"> |
||||
|
<h1>Service Ticket</h1> |
||||
|
</div> |
||||
|
<div class="col-xs-6" style="margin-top:10%; margin-left:-55%;"> |
||||
|
<table style="width:100%;"> |
||||
|
<tbody style="line-height:2"> |
||||
|
<tr> |
||||
|
<td><strong>Ref no</strong></td><td style="padding-left:15%;">:</td> |
||||
|
<td style="padding-left:2%;"><strong><span style="font-size:16px; font-weight:2px;" t-esc="sev_id"/></strong></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td> <strong>Customer name</strong></td><td style="padding-left:15%;">:</td> |
||||
|
<td style="padding-left:2%;"><span t-esc="customer_name"/></td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div class="col-xs-6" style="margin-top:10%; margin-left:15%;"> |
||||
|
<table style="width:100%;"> |
||||
|
<tbody style="line-height:2"> |
||||
|
<tr> |
||||
|
<td style="margin-right:10%;"><strong>Requested date</strong></td><td style="padding-left:15%;">:</td> |
||||
|
<td style="padding-left:2%;"> <span t-esc="date_request"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td style="margin-right:10%;"><strong>Return date</strong></td><td style="padding-left:15%;">:</td> |
||||
|
<td style="padding-left:2%;"><span t-esc="date_return"/></td> |
||||
|
</tr> |
||||
|
|
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div class="col-xs-12" style="margin-top:20%;margin-left:-73%;"><h4>Device details</h4></div> |
||||
|
<table style="margin-top:25%;margin-left:-18%;width:95%;border:1px solid black;line-height:2;text-align:center;"> |
||||
|
<thead style="background-color:#c9cacc;font-size:15px;"> |
||||
|
<tr> |
||||
|
<td>Sl no.</td> |
||||
|
<td>Device brand</td> |
||||
|
<td>Model name</td> |
||||
|
<td>IMEI</td> |
||||
|
<td>Complaints</td> |
||||
|
<td>Description</td> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td>1</td> |
||||
|
<td><t t-esc="mobile_brand"/></td> |
||||
|
<td><t t-esc="model_name"/></td> |
||||
|
<td><t t-esc="imei_no"/></td> |
||||
|
<td><t t-esc="complaint_types"/></td> |
||||
|
<td><t t-esc="complaint_description"/></td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div style="margin-top:10px;"> |
||||
|
<t t-if="warranty==True"> |
||||
|
<span>The device is in warranty range !!</span> |
||||
|
</t> |
||||
|
</div> |
||||
|
<div style="margin-top:30px;"> |
||||
|
<h5><strong>Terms and Conditions</strong></h5> |
||||
|
<t t-foreach="terms" t-as="term"> |
||||
|
<span><t t-esc="term.terms_conditions"/><br/></span> |
||||
|
</t> |
||||
|
</div> |
||||
|
<div style="margin-top:200px;"> |
||||
|
<span>Keep this ticket safely for future reference.</span><br/> |
||||
|
<span>Issue Date :</span> <t t-esc="date_today"/> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
|
@ -0,0 +1,36 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="mobile_service_execute" model="ir.module.category"> |
||||
|
<field name="name">Mobile Service</field> |
||||
|
<field name="sequence">5</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_group_executer" model="res.groups"> |
||||
|
<field name="name">Mobile Technician</field> |
||||
|
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> |
||||
|
<field name="category_id" ref="mobile_service_execute"/> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_group_manager" model="res.groups"> |
||||
|
<field name="name">Manager</field> |
||||
|
<field name="implied_ids" eval="[(4, ref('mobile_service_group_executer'))]"/> |
||||
|
<field name="category_id" ref="mobile_service_execute"/> |
||||
|
<field name="users" eval="[(4, ref('base.user_admin')), (4, ref('base.user_root'))]"/> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_tech_rules" model="ir.rule"> |
||||
|
<field name="name">Mobile Service rule</field> |
||||
|
<field name="model_id" ref="model_mobile_service" /> |
||||
|
<field name="domain_force">[('technician_name','=',user.id),('service_state','!=','draft'), ('company_id','=',user.company_id.id)]</field> |
||||
|
<field name="groups" eval="[(4,ref('mobile_service_group_executer'))]"/> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_rule_manager" model="ir.rule"> |
||||
|
<field name="name">Mobile Service Manager rule</field> |
||||
|
<field name="model_id" ref="model_mobile_service" /> |
||||
|
<field name="domain_force">[('company_id','=',user.company_id.id)]</field> |
||||
|
<field name="groups" eval="[(4,ref('mobile_service_group_manager'))]"/> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,578 @@ |
|||||
|
|
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
||||
|
Mobile Service Management |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
||||
|
This module helps in managing mobile service shop daily activities. |
||||
|
</h3> |
||||
|
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
||||
|
</h5> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
||||
|
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
||||
|
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> </div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
This module is exclusively designed for the mobile service shop for managing their daily activities |
||||
|
inside the service center. The module comes integrated with accounting and inventory modules maximizing |
||||
|
the efficiency. It comes embedded with features such as adding complaint templates, |
||||
|
making it a much user-friendly application. The module also helps in generating service tickets in the workplace. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Access Rights |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
<strong>Manager</strong> :- Manager has the complete access over the mobile shop management. <br/> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
<strong>Mobile Technician</strong> :- Mobile Technician can read and write service requests and also update the parts usage. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 10% 0% 10% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Service request creation. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Assigning service request to technicians. </h3><h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Mobile service ticket generation. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Tracking the service status.</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Integrated with accounting and sales module. </h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Multi-level access rights. </h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Mobile complaint templates.</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Invoice for parts usage and service charges. </h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Email notifications to customer. </h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Parts inventory. </h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Flexible for further customization. </h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Mobile Service Shop |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
When you install the module, an extra menu named Mobile Service is created. |
||||
|
Here you can see the service requests and thereafter configure your mobile service shop. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop1.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h4>Mobile Service -> Service Request -> Create</h4> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
This is the service request creation form. Service request can be created according to the device brand and model. |
||||
|
One can assign the technician, service request, provide with warranty details, customer details, IMEI no, request and return dates etc. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop2.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Service Tickets |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h4>Generating tickets for service request.</h4> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Here you can create tickets for service requests by using the 'Print Ticket' button. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop16.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Service ticket will be generated as follows, |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop4.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Parts Inventory |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h4>Mobile parts inventory</h4> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Here you see the mobile parts used for service processing. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop18.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Product will be only visible in the parts inventory if 'is a mobile part' is checked. |
||||
|
<br>You can provide the brand, model and color details from here. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop17.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Service Invoice |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h4>Invoice for service requests</h4> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Here you can create invoices for service requests. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop14.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Invoice can be created based on advance or full amount. |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop5.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
The parts used during the service process will be automatically added to the invoice line. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop6.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Post Stock moves |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
No need to create stock moves for parts usage manually. 'Post Stock Moves' will generate stock for the parts usage. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop15.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Email Notification |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
The system will send email notification to the customer for each stage in the service request.</br> |
||||
|
<br><I>Note:- You should configure outgoing and incoming e-mail settings from your Odoo for email service.</I> |
||||
|
</h3> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop7.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Brands Configuration |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Create mobile brands which is used in service request creation. |
||||
|
<br> <strong> Mobile Service -> Configuration -> Brands</strong> |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop8.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Models Configuration |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
You can also create models for different mobile brands from |
||||
|
<br><strong>Mobile Service -> Configuration -> Models</strong> |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop9.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Complaint Types |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
You can create different complaint types from |
||||
|
<br><strong>Mobile Service -> Configuration -> Complaint Types</strong> |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop10.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Complaint Templates |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Complaint Templates can be created from |
||||
|
<br><strong>Mobile Service -> Configuration -> Complaint Types</strong> |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop11.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
You can select different complaint templates from the 'Complaints' page while creating service requests. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop12.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Terms and conditions |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Terms and conditions for service request can be added from, |
||||
|
<br><strong>Mobile Service -> Configuration -> Terms and Conditions</strong> |
||||
|
which will be added to the service tickets. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="mobile-service-shop13.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Mobile Service Management Pro |
||||
|
</h2> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h4>An extended version of the module is also available in odoo apps.</h4> |
||||
|
<h5 class="oe_slogan" style="text-align: left;font-size: 22px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h5> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Device details from IMEI number. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Customized pivot report. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Mobile service request report |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Parts usage report. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Complaint Type report. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 1% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
Mobile Service Management Pro is an extended version of the module 'Mobile Service Management' |
||||
|
Using the module application, manager can seamlessly acquire the brand, model and manufacturing details of the device using the IMEI number. |
||||
|
In addition, it helps in saving your time and analyzing the service shop via varied generated reports. The reports include service report, |
||||
|
parts usage report, complaint type report and customized pivot report. |
||||
|
<br><br>You can download the pro version of this app from <a href="https://apps.odoo.com/apps/modules/12.0/mobile_service_shop_pro/">Mobile Service Management Pro</a> |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
Odoo Customization |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
Odoo Implementation </a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
Odoo Integration |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
Odoo Support</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
Hire Odoo Developers</a> |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Industries |
||||
|
</h2> |
||||
|
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
Trading |
||||
|
</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easily procure and sell your products. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
Manufacturing</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Plan, track and schedule your operations. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
Restaurant</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Run your bar or restaurant methodical. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
POS</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easy configuring and convivial selling. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
E-commerce & Website</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Mobile friendly, awe-inspiring product pages. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
Hotel Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
An all-inclusive hotel management application. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
Education</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
A Collaborative platform for educational management. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
Service Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Keep track of services and invoice accordingly. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
||||
|
<div> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 193 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 115 KiB |
After Width: | Height: | Size: 198 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 224 KiB |
After Width: | Height: | Size: 5.7 KiB |
@ -0,0 +1,45 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="mobile_brand_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.brand.form</field> |
||||
|
<field name="model">mobile.brand</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Brand"> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="brand_name"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_brand_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.brand.tree</field> |
||||
|
<field name="model">mobile.brand</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="brand_name"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_mobile_brand" model="ir.actions.act_window"> |
||||
|
<field name="name">Brand</field> |
||||
|
<field name="res_model">mobile.brand</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="view_id" ref="mobile_brand_tree_view"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="action_mobile_brand" id="mobile_service_shop_conf1" parent="mobile_service_shop_configuration" |
||||
|
name="Brand" sequence="1"/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,82 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="mobile_brand_model_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.brand.model.form</field> |
||||
|
<field name="model">brand.model</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Brand Model"> |
||||
|
<sheet> |
||||
|
<field name="image_medium" widget='image' class="oe_avatar"/> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="mobile_brand_name"/> |
||||
|
<field name="mobile_brand_models"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_brand_model_view_kanban" model="ir.ui.view"> |
||||
|
<field name="name">mobile.service.kanban</field> |
||||
|
<field name="model">brand.model</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<kanban> |
||||
|
<field name="image_medium"/> |
||||
|
<field name="id"/> |
||||
|
<progressbar field="activity_state" colors="{"planned": "success", "today": "warning", "overdue": "danger"}"/> |
||||
|
<templates> |
||||
|
<t t-name="kanban-box"> |
||||
|
<div class="oe_kanban_global_click"> |
||||
|
<div class="o_kanban_image"> |
||||
|
<img t-att-src="kanban_image('brand.model', 'image_medium', record.id.raw_value)" alt="Product" class="o_image_64_contain"/> |
||||
|
</div> |
||||
|
<div class="oe_kanban_details"> |
||||
|
<strong class="o_kanban_record_title"> |
||||
|
<field name="mobile_brand_name"/> |
||||
|
</strong> |
||||
|
</div> |
||||
|
<div name="tags"/> |
||||
|
<ul> |
||||
|
<li> model: <field name="mobile_brand_models"/></li> |
||||
|
</ul> |
||||
|
<div name="tags"/> |
||||
|
</div> |
||||
|
</t> |
||||
|
</templates> |
||||
|
</kanban> |
||||
|
|
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_brand_model_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.brand.model.tree</field> |
||||
|
<field name="model">brand.model</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="mobile_brand_name"/> |
||||
|
<field name="mobile_brand_models"/> |
||||
|
<field name="image_medium" widget='image' class="Your_custom_class"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
<record id="action_mobile_brand_models" model="ir.actions.act_window"> |
||||
|
<field name="name">Models</field> |
||||
|
<field name="res_model">brand.model</field> |
||||
|
<field name="view_mode">kanban,tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_empty_folder"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="action_mobile_brand_models" id="mobile_service_shop_conf3" |
||||
|
parent="mobile_service_shop_configuration" |
||||
|
name="Models" sequence="2"/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,45 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="mobile_complaint_template_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.complaint.template.form</field> |
||||
|
<field name="model">mobile.complaint.description</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Complaint Template"> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<field name="complaint_type_template"/> |
||||
|
<field name="description"/> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_complaint_template_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.complaint.type.tree</field> |
||||
|
<field name="model">mobile.complaint.description</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="complaint_type_template"/> |
||||
|
<field name="description"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_mobile_complaint_template" model="ir.actions.act_window"> |
||||
|
<field name="name">Complaint Types</field> |
||||
|
<field name="res_model">mobile.complaint.description</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="view_id" ref="mobile_complaint_template_tree_view"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="action_mobile_complaint_template" id="mobile_service_shop_conf6" parent="mobile_service_shop_configuration" |
||||
|
name="Complaint Templates" sequence="3"/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,47 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="mobile_complaint_type_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.complaint.type.form</field> |
||||
|
<field name="model">mobile.complaint</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Complaint Type"> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="complaint_type"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_complaint_type_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.complaint.type.tree</field> |
||||
|
<field name="model">mobile.complaint</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="complaint_type"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_mobile_complaint_type" model="ir.actions.act_window"> |
||||
|
<field name="name">Complaint Types</field> |
||||
|
<field name="res_model">mobile.complaint</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="view_id" ref="mobile_complaint_type_tree_view"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
|
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="mobile_service_shop.action_mobile_complaint_type" id="mobile_service_shop_conf2" |
||||
|
parent="mobile_service_shop_configuration" |
||||
|
name="Complaint Type" sequence="3"/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,306 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
<template id="assets_backend" inherit_id="web.assets_backend"> |
||||
|
<xpath expr="." position="inside"> |
||||
|
<style> |
||||
|
.Your_custom_class { height: 80px; width: 80px; overflow:hidden;} |
||||
|
.openerp .oe_form .oe_form_field_image img { max-width:80px; max-height: 80px; } |
||||
|
</style> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
|
||||
|
<record id="mobile_service_sequence" model="ir.sequence"> |
||||
|
<field name="name">Service Code</field> |
||||
|
<field name="code">mobile.service</field> |
||||
|
<field name="prefix">SERV/</field> |
||||
|
<field eval="4" name="padding"/> |
||||
|
<!-- <field eval="False" name="mobile_brand_models"/>--> |
||||
|
<field name="company_id" eval="False"/> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_request_search_view" model="ir.ui.view"> |
||||
|
<field name="name">service.request.search1</field> |
||||
|
<field name="model">mobile.service</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<search string="Search in requests"> |
||||
|
<field name="person_name" widget="res_partner_many2one" |
||||
|
context="{'res_partner_search_mode': 'customer'}"/> |
||||
|
<field name="contact_no"/> |
||||
|
<field name="technician_name"/> |
||||
|
<field name="imei_no"/> |
||||
|
<field name="return_date"/> |
||||
|
<field name="service_state"/> |
||||
|
|
||||
|
<filter string="Returned" name="Service Status" domain="[('service_state', '=', 'returned')]"/> |
||||
|
<filter string="Draft" name="Service Status" domain="[('service_state', '=', 'draft')]"/> |
||||
|
<filter string="Not Solved" name="Service Status" domain="[('service_state', '=', 'not_solved')]"/> |
||||
|
|
||||
|
<separator/> |
||||
|
<group expand="0" string="Group By"> |
||||
|
<filter string="Service State" name="service_state" domain="[]" |
||||
|
context="{'group_by': 'service_state'}"/> |
||||
|
<filter string="Technician" name="technician" domain="[]" |
||||
|
context="{'group_by': 'technician_name'}"/> |
||||
|
</group> |
||||
|
</search> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_request_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.service.request.form</field> |
||||
|
<field name="model">mobile.service</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Mobile Shop"> |
||||
|
<header> |
||||
|
<button string="Assign to technician" type="object" name="approve" |
||||
|
class="oe_highlight" |
||||
|
attrs="{'invisible': [('service_state','not in',('draft'))]}" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
<button string="Completed" type="object" name="complete" |
||||
|
class="oe_highlight" |
||||
|
attrs="{'invisible': [('service_state','not in',('assigned'))]}"/> |
||||
|
|
||||
|
<button string="Return advance" type="object" name="return_advance" |
||||
|
class="oe_highlight" |
||||
|
attrs="{'invisible': [('service_state','not in',('not_solved'))]}" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
<button name="action_invoice_create_wizard" string="Create Invoice" |
||||
|
attrs="{'invisible': [('service_state','not in',('completed', 'assigned'))]}" |
||||
|
type="object" class="oe_highlight" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
<button name="action_post_stock" string="Post Stock moves" |
||||
|
attrs="{'invisible': [('service_state','not in',('completed', 'assigned'))]}" |
||||
|
type="object" class="oe_highlight" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
<button string="Return to customer" type="object" name="return_to" |
||||
|
attrs="{'invisible': [('service_state','not in',('completed'))]}" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
<button string="Not Solved" type="object" name="not_solved" |
||||
|
attrs="{'invisible': [('service_state','not in',('assigned'))]}"/> |
||||
|
|
||||
|
<button name="get_ticket" string="Print Ticket" type="object" class="oe_highlight" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
<button name="action_send_mail" string="Send email" type="object" |
||||
|
attrs="{'invisible': [('service_state','=',('draft'))]}" |
||||
|
groups="mobile_service_shop.mobile_service_group_manager"/> |
||||
|
|
||||
|
|
||||
|
<field name="service_state" widget="statusbar" statusbar_visible="draft,returned,not_solved"/> |
||||
|
</header> |
||||
|
<sheet> |
||||
|
<div class="oe_button_box" name="button_box"> |
||||
|
<button name='action_view_invoice' class="oe_stat_button" type="object" icon="fa-money" |
||||
|
attrs="{'invisible': [('service_state','=',('draft'))]}"> |
||||
|
<field string="Invoice" name="invoice_count" widget="statinfo"/> |
||||
|
</button> |
||||
|
</div> |
||||
|
<div class="oe_title"> |
||||
|
<h1> |
||||
|
<field name="name" readonly="1"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<div> |
||||
|
<field name="is_in_warranty" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
<label for="is_in_warranty"/> |
||||
|
<field name="re_repair" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
<label for="re_repair"/> |
||||
|
</div> |
||||
|
</group> |
||||
|
|
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="person_name" widget="res_partner_many2one" |
||||
|
context="{'res_partner_search_mode': 'customer'}" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
<field name="contact_no" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
<field name="email_id" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
<label for="street" string="Address"/> |
||||
|
<div class="o_address_format"> |
||||
|
<field name="street" placeholder="Street..." class="o_address_street"/> |
||||
|
<field name="street2" placeholder="Street 2..." class="o_address_street"/> |
||||
|
<field name="city" placeholder="City" class="o_address_city"/> |
||||
|
<field name="state_id" class="o_address_state" placeholder="State" |
||||
|
options='{"no_open": True}'/> |
||||
|
<field name="zip" placeholder="ZIP" class="o_address_zip"/> |
||||
|
<field name="country_id" placeholder="Country" class="o_address_country" |
||||
|
options='{"no_open": True, "no_create": True}'/> |
||||
|
</div> |
||||
|
</group> |
||||
|
<group> |
||||
|
<label for="brand_name"/> |
||||
|
<div class="o_row"> |
||||
|
<field name="brand_name" placeholder="Brand name" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
<field name="model_name" placeholder="Model name" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
</div> |
||||
|
<field name="date_request" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
<field name="return_date" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
<field name="technician_name" style="width:50%;" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
</group> |
||||
|
|
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Description"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="imei_no" style="width:50%;" colspan="1" |
||||
|
attrs="{'readonly': [('service_state','not in',('draft'))]}"/> |
||||
|
<field name="warranty_number" style="width:50%;" attrs="{'readonly': [('service_state','not in',('draft'))], |
||||
|
'required': [('is_in_warranty', '=', True)], 'invisible': [('is_in_warranty', '!=', True)]}"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="internal_notes" |
||||
|
placeholder="Notes used internally (eg: device password)" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</page> |
||||
|
<page string="Complaints"> |
||||
|
<field name="complaints_tree" mode="tree" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"> |
||||
|
<tree string="Complaints" editable="bottom"> |
||||
|
<field name="complaint_type_tree"/> |
||||
|
<field name="description_tree"/> |
||||
|
</tree> |
||||
|
<form> |
||||
|
<field name="complaint_type_tree"/> |
||||
|
<field name="description_tree"/> |
||||
|
</form> |
||||
|
</field> |
||||
|
</page> |
||||
|
<page string="Parts Usage"> |
||||
|
<field name="product_order_line" mode="tree" |
||||
|
attrs="{'readonly': [('service_state','in',('returned','not_solved'))]}"> |
||||
|
<tree string="Complaints" editable="bottom"> |
||||
|
<field name="product_id"/> |
||||
|
<field name="product_uom_qty"/> |
||||
|
<field name="product_uom"/> |
||||
|
<field name="price_unit"/> |
||||
|
<field name="qty_stock_move"/> |
||||
|
<field name="qty_invoiced"/> |
||||
|
<field name="part_price"/> |
||||
|
</tree> |
||||
|
<form> |
||||
|
<field name="product_id"/> |
||||
|
<field name="product_uom_qty"/> |
||||
|
</form> |
||||
|
</field> |
||||
|
</page> |
||||
|
|
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
<div class="oe_chatter"> |
||||
|
<field name="message_follower_ids" widget="mail_followers"/> |
||||
|
<field name="message_ids" widget="mail_thread"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="service_request_view_kanban" model="ir.ui.view"> |
||||
|
<field name="name">mobile.service.kanban</field> |
||||
|
<field name="model">mobile.service</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<kanban class="o_kanban_small_column"> |
||||
|
<field name="image_medium"/> |
||||
|
<field name="id"/> |
||||
|
<templates> |
||||
|
<t t-name="kanban-box"> |
||||
|
<div class="oe_kanban_card oe_kanban_global_click"> |
||||
|
<div class="o_kanban_image"> |
||||
|
<img t-att-alt="product.name" t-att-src="kanban_image('mobile.service', 'image_medium', record.id.raw_value)"/> |
||||
|
</div> |
||||
|
<div class="oe_kanban_content"> |
||||
|
<div> |
||||
|
<strong class="o_kanban_record_title"> |
||||
|
<field name="name"/> |
||||
|
</strong> |
||||
|
</div> |
||||
|
<div class="text-muted o_kanban_record_subtitle"> |
||||
|
<field name="person_name" widget="res_partner_many2one" |
||||
|
context="{'res_partner_search_mode': 'customer'}"/> |
||||
|
<br/> |
||||
|
<field name="service_state"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="oe_clear"></div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</templates> |
||||
|
</kanban> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_graph" model="ir.ui.view"> |
||||
|
<field name="name">mobile.service.graph</field> |
||||
|
<field name="model">mobile.service</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<graph string="Service Graph"> |
||||
|
<field name="technician_name" type="row"/> |
||||
|
</graph> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_service_request_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.service.request.tree</field> |
||||
|
<field name="model">mobile.service</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree decoration-danger="service_state == 'not_solved'" decoration-muted="service_state=='returned'" |
||||
|
default_order="name desc"> |
||||
|
<field name="name"/> |
||||
|
<field name="person_name"/> |
||||
|
<field name="contact_no"/> |
||||
|
<field name="brand_name"/> |
||||
|
<field name="model_name"/> |
||||
|
<field name="imei_no"/> |
||||
|
<field name="image_medium" widget='image' class="Your_custom_class"/> |
||||
|
<field name="technician_name"/> |
||||
|
<field name="return_date"/> |
||||
|
<field name="service_state"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_mobile_service_request" model="ir.actions.act_window"> |
||||
|
<field name="name">Service Request</field> |
||||
|
<field name="res_model">mobile.service</field> |
||||
|
<field name="view_mode">tree,form,kanban,pivot,graph</field> |
||||
|
<field name="search_view_id" ref="mobile_service_request_search_view"/> |
||||
|
<field name="view_id" ref="mobile_service_request_tree_view"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
<menuitem id="mobile_service_main_menu" web_icon="mobile_service_shop,static/description/web-icon.png" |
||||
|
name="Mobile Service" sequence="20"/> |
||||
|
|
||||
|
<menuitem id="mobile_service_shop_menu" parent="mobile_service_main_menu" sequence="20"/> |
||||
|
|
||||
|
<menuitem action="action_mobile_service_request" id="mobile_service_shop_menu2" |
||||
|
parent="mobile_service_main_menu" |
||||
|
name="Service Request" sequence="1"/> |
||||
|
|
||||
|
<menuitem id="mobile_service_shop_configuration" parent="mobile_service_main_menu" |
||||
|
name="Configuration" sequence="3"/> |
||||
|
|
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,68 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
|
||||
|
<record id="mobile_service_products_parts" model="ir.ui.view"> |
||||
|
<field name="name">product.parts.form.view</field> |
||||
|
<field name="model">product.template</field> |
||||
|
<field name="inherit_id" ref="product.product_template_form_view"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//div[@name='options']" position="inside"> |
||||
|
<field name="is_a_parts"/> |
||||
|
<label for="is_a_parts"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//page[@name='general_information']" position="after"> |
||||
|
<page string="Parts details" attrs="{'invisible': [('is_a_parts', '=', False)]}"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="brand_name" attrs="{'required': [('is_a_parts', '=', True)]}"/> |
||||
|
<field name="model_name" attrs="{'required': [('is_a_parts', '=', True)]}"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="model_colour"/> |
||||
|
<field name="extra_descriptions"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</page> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<record id="view_product_name_kanban" model="ir.ui.view"> |
||||
|
<field name="name">product.template.product.kanban</field> |
||||
|
<field name="model">product.template</field> |
||||
|
<field name="inherit_id" ref="product.product_template_kanban_view"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//kanban/templates/t/div/div[@class='oe_kanban_details']/strong[1]/field[@name='name']" |
||||
|
position="after"> |
||||
|
<strong> |
||||
|
<field name="brand_name"/> |
||||
|
<field name="model_name"/> |
||||
|
</strong> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
<record id="product_template_action_product" 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</field> |
||||
|
<field name="context">{"search_default_consumable":1, 'default_type': 'product'}</field> |
||||
|
<field name="domain">[('is_a_parts', '=', True)]</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to define a new product. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="product_template_action_product" id="mobile_service_shop_parts " parent="mobile_service_main_menu" |
||||
|
name="Parts inventory" sequence="2"/> |
||||
|
|
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,44 @@ |
|||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="mobile_terms_and_conditions_form_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.terms.and.conditions.form</field> |
||||
|
<field name="model">terms.conditions</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Complaint Type"> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<field name="terms_conditions"/> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="mobile_terms_and_conditions_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">mobile.terms.and.conditions.tree</field> |
||||
|
<field name="model">terms.conditions</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="terms_conditions"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_mobile_terms_and_conditions" model="ir.actions.act_window"> |
||||
|
<field name="name">Terms and Conditions</field> |
||||
|
<field name="res_model">terms.conditions</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="view_id" ref="mobile_terms_and_conditions_tree_view"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to Create a New Record. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem action="action_mobile_terms_and_conditions" id="mobile_service_shop_conf5" |
||||
|
parent="mobile_service_shop_configuration" |
||||
|
name="Terms and Conditions" sequence="4"/> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import mobile_create_invoice |
||||
|
|
@ -0,0 +1,169 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Milind Mohan @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# Mohammed Shahil M P @ Cybrosys, (odoo@cybrosys.com) |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import api, fields, models, _ |
||||
|
from odoo.exceptions import Warning, UserError |
||||
|
from odoo.exceptions import UserError, ValidationError |
||||
|
|
||||
|
|
||||
|
class MobileServiceInvoice(models.Model): |
||||
|
|
||||
|
_name = 'mobile.invoice' |
||||
|
|
||||
|
advance_payment_method = fields.Selection([('advance', 'Advance'), ('full_amount', 'Full amount')], |
||||
|
string='Invoice method', default='advance') |
||||
|
amount = fields.Integer(string='Amount') |
||||
|
number = fields.Char(string='Service Id') |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
print(vals) |
||||
|
if 'amount' in vals: |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code('account.payment.customer.invoice') or _('New') |
||||
|
else: |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code('account.payment.customer.invoice') or _('New') |
||||
|
vals['service_state'] = 'draft' |
||||
|
return super(MobileServiceInvoice, self).create(vals) |
||||
|
|
||||
|
def action_invoice_create(self): |
||||
|
active_id = self._context.get('active_id') |
||||
|
service_id = self.env['mobile.service'].search([('id', '=', active_id)]) |
||||
|
if not service_id.env['product.product'].search([("name", "=", "Mobile Service Advance")]): |
||||
|
vals = self._prepare_advance_product() |
||||
|
self.env['product.product'].create(vals) |
||||
|
|
||||
|
if not service_id.env['product.product'].search([("name", "=", "Mobile Service Charge")]): |
||||
|
vals1 = self._prepare_service_product() |
||||
|
self.env['product.product'].create(vals1) |
||||
|
|
||||
|
service_id.first_invoice_created = True |
||||
|
inv_obj = self.env['account.move'] |
||||
|
inv_line_obj = self.env['account.move.line'] |
||||
|
supplier = service_id.person_name |
||||
|
inv_data = { |
||||
|
'type': 'out_invoice', |
||||
|
'reference': supplier.name, |
||||
|
'account_id': supplier.property_account_receivable_id.id, |
||||
|
'partner_id': supplier.id, |
||||
|
'currency_id': service_id.company_id.currency_id.id, |
||||
|
'journal_id': service_id.journal_type.id, |
||||
|
'invoice_origin': service_id.name, |
||||
|
'company_id': service_id.company_id.id, |
||||
|
'date_due': service_id.return_date, |
||||
|
} |
||||
|
inv_id = inv_obj.create(inv_data) |
||||
|
service_id.first_payment_inv = inv_id.id |
||||
|
self.number = service_id.name |
||||
|
if self.advance_payment_method != 'advance': |
||||
|
product_id = service_id.env['product.product'].search([("name", "=", "Mobile Service Charge")]) |
||||
|
else: |
||||
|
product_id = service_id.env['product.product'].search([("name", "=", "Mobile Service Advance")]) |
||||
|
|
||||
|
if product_id.property_account_income_id.id: |
||||
|
income_account = product_id.property_account_income_id.id |
||||
|
elif product_id.categ_id.property_account_income_categ_id.id: |
||||
|
income_account = product_id.categ_id.property_account_income_categ_id.id |
||||
|
else: |
||||
|
raise UserError('Please define income account for this product: "%s" (id:%d).' % |
||||
|
(product_id.name, product_id.id)) |
||||
|
flag = 0 |
||||
|
if self.amount: |
||||
|
flag = 1 |
||||
|
inv_line_data = [(0, 0, { |
||||
|
'name': product_id.name, |
||||
|
'price_unit': self.amount, |
||||
|
'quantity': 1, |
||||
|
'credit': self.amount, |
||||
|
'debit': 0, |
||||
|
'account_id': income_account, |
||||
|
'product_id': product_id.id, |
||||
|
'move_id': inv_id.id, |
||||
|
})] |
||||
|
inv_id.write({ |
||||
|
'invoice_line_ids': inv_line_data}) |
||||
|
inv_id._recompute_payment_terms_lines() |
||||
|
|
||||
|
sale_order_product = self.env['product.order.line'].search([('product_order_id', '=', service_id.name)]) |
||||
|
for line_data in sale_order_product: |
||||
|
qty = line_data.product_uom_qty - line_data.qty_invoiced |
||||
|
if line_data.product_uom_qty < line_data.qty_invoiced: |
||||
|
raise UserError(_('Used quantity is less than invoiced quantity')) |
||||
|
uom_id = line_data.product_id.product_tmpl_id.uom_id |
||||
|
if qty > 0: |
||||
|
flag = 1 |
||||
|
price = line_data.product_id.list_price |
||||
|
inv_line_data = [(0, 0, { |
||||
|
'name': line_data.product_id.name, |
||||
|
'price_unit': price, |
||||
|
'quantity': qty, |
||||
|
'product_uom_id': uom_id.id, |
||||
|
'credit': price, |
||||
|
'debit': 0, |
||||
|
'account_id': income_account, |
||||
|
'product_id': line_data.product_id.id, |
||||
|
'move_id': inv_id.id, |
||||
|
})] |
||||
|
inv_id.write({ |
||||
|
'invoice_line_ids': inv_line_data}) |
||||
|
line_data.qty_invoiced = line_data.qty_invoiced + qty |
||||
|
inv_id._recompute_payment_terms_lines() |
||||
|
|
||||
|
inv_id.post() |
||||
|
if flag != 1: |
||||
|
raise UserError(_('Nothing to create invoice')) |
||||
|
imd = service_id.env['ir.model.data'] |
||||
|
action = imd.xmlid_to_object('account.action_move_out_invoice_type') |
||||
|
list_view_id = imd.xmlid_to_res_id('account.view_move_tree') |
||||
|
form_view_id = imd.xmlid_to_res_id('account.view_move_form') |
||||
|
result = { |
||||
|
'name': action.name, |
||||
|
'help': action.help, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'views': [[list_view_id, 'tree'], [form_view_id, 'form'], [False, 'graph'], [False, 'kanban'], |
||||
|
[False, 'calendar'], [False, 'pivot']], |
||||
|
'target': action.target, |
||||
|
'context': action.context, |
||||
|
'res_model': 'account.move', |
||||
|
} |
||||
|
if len(inv_id) > 1: |
||||
|
result['domain'] = "[('id','in',%s)]" % inv_id.ids |
||||
|
elif len(inv_id) == 1: |
||||
|
result['views'] = [(form_view_id, 'form')] |
||||
|
result['res_id'] = inv_id.ids[0] |
||||
|
else: |
||||
|
result = {'type': 'ir.actions.act_window_close'} |
||||
|
return result |
||||
|
|
||||
|
def _prepare_advance_product(self): |
||||
|
return { |
||||
|
'name': 'Mobile Service Advance', |
||||
|
'type': 'service', |
||||
|
'invoice_policy': 'order', |
||||
|
'company_id': False, |
||||
|
} |
||||
|
|
||||
|
def _prepare_service_product(self): |
||||
|
return { |
||||
|
'name': 'Mobile Service Charge', |
||||
|
'type': 'service', |
||||
|
'invoice_policy': 'order', |
||||
|
'company_id': False, |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
<odoo> |
||||
|
<record id="view_mobile_create_inv" model="ir.ui.view"> |
||||
|
<field name="name">Create Invoice</field> |
||||
|
<field name="model">mobile.invoice</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Invoice Service Order"> |
||||
|
<p class="oe_grey"> |
||||
|
Invoices will be created in draft so that you can review |
||||
|
them before validation. |
||||
|
</p> |
||||
|
<group> |
||||
|
<field name="advance_payment_method" class="oe_inline" widget="radio" /> |
||||
|
<label for="amount"/> |
||||
|
<div> |
||||
|
<field name="amount" |
||||
|
class="oe_inline" widget="monetary"/> |
||||
|
</div> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_invoice_create" string="Create Invoices" type="object" |
||||
|
class="btn-primary"/> |
||||
|
<button string="Cancel" class="btn-default" special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
<record id="action_mobile_service_inv" model="ir.actions.act_window"> |
||||
|
<field name="name">Create Invoice</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">mobile.invoice</field> |
||||
|
<field name="view_mode">form</field> |
||||
|
<field name="target">new</field> |
||||
|
<!-- <field name="binding_model_id" ref="mobile_service_request_form_view" />--> |
||||
|
<field name="view_id" ref="view_mobile_create_inv"/> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,59 @@ |
|||||
|
Task DeadLine Reminder v13 |
||||
|
========================== |
||||
|
This module extends the functionality of project module to allow to send deadline reminder emails on task deadline day. |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
|
||||
|
By default, a cron job named "Task DeadLine Reminder" will be created while installing this module. |
||||
|
This cron job can be found in: |
||||
|
|
||||
|
**Settings > Technical > Automation > Scheduled Actions** |
||||
|
|
||||
|
This job runs daily by default. |
||||
|
|
||||
|
Usage |
||||
|
===== |
||||
|
|
||||
|
To use this functionality, you need to: |
||||
|
|
||||
|
#. Create a project to which the new tasks will be related. |
||||
|
#. Add a name, deadline date, who the task will be assigned to, etc... |
||||
|
#. In order to send email reminder to responsible user,you have to set reminder box (Project > Task > Reminder ) |
||||
|
#. Go to the Scheduled Action(Settings > Technical > Automation > Scheduled Action) and edit the time at which Deadline Reminder Action is to be done |
||||
|
|
||||
|
The cron job will do the rest. |
||||
|
|
||||
|
Installation |
||||
|
============ |
||||
|
- www.odoo.com/documentation/11.0/setup/install.html |
||||
|
- Install our custom addon |
||||
|
|
||||
|
Bug Tracker |
||||
|
=========== |
||||
|
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
||||
|
|
||||
|
Credits |
||||
|
======= |
||||
|
Cybrosys Techno Solutions <www.cybrosys.com> |
||||
|
|
||||
|
Author |
||||
|
------ |
||||
|
* Developer v9: Saritha @ cybrosys |
||||
|
* Developer v10, v11: Niyas Raphy @ cybrosys |
||||
|
* V13: Nimisha |
||||
|
|
||||
|
Maintainer |
||||
|
---------- |
||||
|
|
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit https://www.cybrosys.com. |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################### |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).# |
||||
|
# This program is free software: you can modify |
||||
|
# it under the terms of the GNU Affero General Public License (AGPL) as |
||||
|
# published by the Free Software Foundation, either version 3 of the |
||||
|
# License, or (at your option) any later version. |
||||
|
# |
||||
|
# 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 for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU Affero General Public License |
||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################### |
||||
|
|
||||
|
from . import models |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,41 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################### |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).# |
||||
|
# This program is free software: you can modify |
||||
|
# it under the terms of the GNU Affero General Public License (AGPL) as |
||||
|
# published by the Free Software Foundation, either version 3 of the |
||||
|
# License, or (at your option) any later version. |
||||
|
# |
||||
|
# 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 for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU Affero General Public License |
||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################### |
||||
|
|
||||
|
{ |
||||
|
'name': "Task Deadline Reminder", |
||||
|
'version': "13.0.1.0.0", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'summary': '''Automatically Send Mail To Responsible User if Deadline Of Task is Today''', |
||||
|
'description': '''Automatically Send Mail To Responsible User if Deadline Of Task is Today''', |
||||
|
'category': "Project", |
||||
|
'depends': ['project'], |
||||
|
'license': 'AGPL-3', |
||||
|
'data': [ |
||||
|
'views/deadline_reminder_view.xml', |
||||
|
'views/deadline_reminder_cron.xml', |
||||
|
'data/deadline_reminder_action_data.xml' |
||||
|
], |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'installable': True, |
||||
|
'auto_install': False |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
<?xml version="1.0" ?> |
||||
|
<odoo> |
||||
|
<data noupdate="1"> |
||||
|
|
||||
|
<record id="email_template_edi_deadline_reminder" model="mail.template"> |
||||
|
<field name="name">Deadline Reminder...!!</field> |
||||
|
<field name="email_from">${object.company_id.name}<${object.company_id.email}></field> |
||||
|
<field name="email_to">${object.user_id.email}</field> |
||||
|
<field name="subject">Today Due Task -${object.date_deadline or 'n/a' }</field> |
||||
|
<field name="model_id" ref="task_deadline_reminder.model_project_task" /> |
||||
|
<field name="auto_delete" eval="True" /> |
||||
|
<field name="body_html"><![CDATA[ |
||||
|
<div class="page"> |
||||
|
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; "> |
||||
|
<p>Hello ${object.user_id.name},</p> |
||||
|
<p> This Email Is To Remind You That You Have Task As Below Listed Which Are Due On Today. </p> |
||||
|
</div> |
||||
|
<div> |
||||
|
<table class="table table-condensed"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th style="background-color:#9b9da0 !important;">Task</th> |
||||
|
<th style="background-color:#9b9da0 !important;">Project</th> |
||||
|
<th style="background-color:#9b9da0 !important;">Deadline</th> |
||||
|
<th style="background-color:#9b9da0 !important;">Assigned To</th> |
||||
|
<th style="background-color:#9b9da0 !important;">Link</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td><span>${object.name}</span></td> |
||||
|
<td><span>${object.project_id.name}</span></td> |
||||
|
<td><span>${object.date_deadline}</span></td> |
||||
|
<td><span>${object.user_id.name}</span></td> |
||||
|
<td><a href=/web/login/>View Now</a></td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
]]> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,6 @@ |
|||||
|
## Module <task_deadline_reminder> |
||||
|
|
||||
|
#### 16.11.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
#### ADD |
||||
|
Initial Commit |
@ -0,0 +1,5 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from . import deadline_reminder |
||||
|
|
||||
|
|
@ -0,0 +1,40 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
import datetime |
||||
|
from datetime import datetime |
||||
|
from odoo import SUPERUSER_ID |
||||
|
from odoo import api, fields, models, _ |
||||
|
|
||||
|
|
||||
|
class DeadLineReminder(models.Model): |
||||
|
_inherit = "project.task" |
||||
|
|
||||
|
task_reminder = fields.Boolean("Reminder") |
||||
|
|
||||
|
@api.model |
||||
|
def _cron_deadline_reminder(self): |
||||
|
print("test") |
||||
|
su_id = self.env['res.partner'].browse(SUPERUSER_ID) |
||||
|
print(su_id) |
||||
|
for task in self.env['project.task'].search([('date_deadline', '!=', None), |
||||
|
('task_reminder', '=', True), ('user_id', '!=', None)]): |
||||
|
print(task, "task") |
||||
|
reminder_date = task.date_deadline |
||||
|
today = datetime.now().date() |
||||
|
if reminder_date == today and task: |
||||
|
# print("kkkkkkkkkkkkkkk") |
||||
|
template_id = self.env['ir.model.data'].get_object_reference( |
||||
|
'task_deadline_reminder', |
||||
|
'email_template_edi_deadline_reminder')[1] |
||||
|
if template_id: |
||||
|
# print("template_id", template_id) |
||||
|
email_template_obj = self.env['mail.template'].browse(template_id) |
||||
|
# print("email_template_obj", email_template_obj) |
||||
|
values = email_template_obj.generate_email(task.id, fields=None) |
||||
|
msg_id = self.env['mail.mail'].create(values) |
||||
|
if msg_id: |
||||
|
msg_id._send() |
||||
|
|
||||
|
return True |
||||
|
|
||||
|
|
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 213 KiB |
After Width: | Height: | Size: 189 KiB |
After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,353 @@ |
|||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
||||
|
Task DeadLine Reminder |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
||||
|
Helps to remind the deadline of various tasks. |
||||
|
</h3> |
||||
|
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
||||
|
</h5> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
||||
|
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
||||
|
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
This module send auto reminder to responsible user of task if deadline = Today. Cron job will |
||||
|
run everyday and search for task which due today and send reminder email to employee. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Helps the HR manager to know the deadline of various tasks. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
HR can send reminder mail to the particular employee whose tasks is going to end today |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
HR can take actions and further processes based on the deadline |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Project Task Form - Configuration of Task Deadline Reminder |
||||
|
</h3> |
||||
|
<ul> |
||||
|
<li> |
||||
|
If set this box then only this task will be consider for reminder. |
||||
|
</li> |
||||
|
</ul> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-task-reminder-1.jpg" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Automation Scheduled Action - Cron Job |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-task-reminder-2.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Now link will allow user to jump to related task directly. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 0% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
This email will group all tasks which are deadline today for that user and send summary table to user/employee by email. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-task-reminder-3.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
Odoo Customization |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
Odoo Implementation </a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
Odoo Integration |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
Odoo Support</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
Hire Odoo Developers</a> |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Industries |
||||
|
</h2> |
||||
|
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
Trading |
||||
|
</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easily procure and sell your products. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
Manufacturing</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Plan, track and schedule your operations. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
Restaurant</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Run your bar or restaurant methodical. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
POS</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easy configuring and convivial selling. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
E-commerce & Website</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Mobile friendly, awe-inspiring product pages. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
Hotel Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
An all-inclusive hotel management application. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
Education</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
A Collaborative platform for educational management. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
Service Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Keep track of services and invoice accordingly. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
||||
|
<div> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
After Width: | Height: | Size: 189 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 213 KiB |
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0" encoding='UTF-8'?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="availability_create_cron" model="ir.cron"> |
||||
|
<field name="name">Task DeadLine Reminder</field> |
||||
|
<field name="model_id" ref="project.model_project_task"/> |
||||
|
<field name="state">code</field> |
||||
|
<field name="code">model._cron_deadline_reminder()</field> |
||||
|
<field name="user_id" ref="base.user_root" /> |
||||
|
<field name="interval_number">1</field> |
||||
|
<field name="interval_type">days</field> |
||||
|
<field name="numbercall">-1</field> |
||||
|
<field name="doall" eval="False"/> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,17 @@ |
|||||
|
<?xml version="1.0" encoding='UTF-8'?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record model="ir.ui.view" id="task_deadline_reminder_form"> |
||||
|
<field name="name">ProjectTaskRemainder</field> |
||||
|
<field name="model">project.task</field> |
||||
|
<field name="inherit_id" ref="project.view_task_form2"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<field name="tag_ids" position="after"> |
||||
|
<field name="task_reminder"/> |
||||
|
</field> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |