| @ -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> | ||||