Browse Source

[ADD] Initial Commit

pull/124/head
Ajmalcybrosys 6 years ago
parent
commit
fa410ad0ec
  1. 32
      gender_contact/README.rst
  2. 3
      gender_contact/__init__.py
  3. 38
      gender_contact/__manifest__.py
  4. 6
      gender_contact/doc/RELEASE_NOTES.md
  5. 3
      gender_contact/models/__init__.py
  6. 11
      gender_contact/models/gender.py
  7. 3
      gender_contact/security/ir.model.access.csv
  8. BIN
      gender_contact/static/description/banner.png
  9. BIN
      gender_contact/static/description/gender-partner-cybrosys.png
  10. BIN
      gender_contact/static/description/icon.png
  11. 329
      gender_contact/static/description/index.html
  12. 18
      gender_contact/views/gender_view.xml
  13. 42
      mobile_service_shop/README.rst
  14. 4
      mobile_service_shop/__init__.py
  15. 42
      mobile_service_shop/__manifest__.py
  16. 24
      mobile_service_shop/data/mobile_service_data.xml
  17. 24
      mobile_service_shop/data/mobile_service_email_template.xml
  18. 6
      mobile_service_shop/doc/RELEASE_NOTES.md
  19. 4
      mobile_service_shop/models/__init__.py
  20. 446
      mobile_service_shop/models/mobile_service.py
  21. 26
      mobile_service_shop/models/service_ticket.py
  22. 12
      mobile_service_shop/reports/mobile_service_ticket.xml
  23. 83
      mobile_service_shop/reports/service_ticket_template.xml
  24. 15
      mobile_service_shop/security/ir.model.access.csv
  25. 36
      mobile_service_shop/security/security.xml
  26. BIN
      mobile_service_shop/static/description/banner.jpg
  27. BIN
      mobile_service_shop/static/description/icon.png
  28. 542
      mobile_service_shop/static/description/index.html
  29. BIN
      mobile_service_shop/static/description/mobile-service-shop1.png
  30. BIN
      mobile_service_shop/static/description/mobile-service-shop10.png
  31. BIN
      mobile_service_shop/static/description/mobile-service-shop11.png
  32. BIN
      mobile_service_shop/static/description/mobile-service-shop12.png
  33. BIN
      mobile_service_shop/static/description/mobile-service-shop13.png
  34. BIN
      mobile_service_shop/static/description/mobile-service-shop14.png
  35. BIN
      mobile_service_shop/static/description/mobile-service-shop15.png
  36. BIN
      mobile_service_shop/static/description/mobile-service-shop16.png
  37. BIN
      mobile_service_shop/static/description/mobile-service-shop17.png
  38. BIN
      mobile_service_shop/static/description/mobile-service-shop18.png
  39. BIN
      mobile_service_shop/static/description/mobile-service-shop2.png
  40. BIN
      mobile_service_shop/static/description/mobile-service-shop3.png
  41. BIN
      mobile_service_shop/static/description/mobile-service-shop4.png
  42. BIN
      mobile_service_shop/static/description/mobile-service-shop5.png
  43. BIN
      mobile_service_shop/static/description/mobile-service-shop6.png
  44. BIN
      mobile_service_shop/static/description/mobile-service-shop7.png
  45. BIN
      mobile_service_shop/static/description/mobile-service-shop8.png
  46. BIN
      mobile_service_shop/static/description/mobile-service-shop9.png
  47. BIN
      mobile_service_shop/static/description/web-icon.png
  48. 594
      mobile_service_shop/views/mobile_service_views.xml
  49. 5
      mobile_service_shop/wizard/__init__.py
  50. 138
      mobile_service_shop/wizard/mobile_create_invoice.py
  51. 39
      mobile_service_shop/wizard/mobile_create_invoice_views.xml
  52. 32
      personal_info/README.rst
  53. 3
      personal_info/__init__.py
  54. 38
      personal_info/__manifest__.py
  55. 6
      personal_info/doc/RELEASE_NOTES.md
  56. 3
      personal_info/models/__init__.py
  57. 22
      personal_info/models/personal.py
  58. 2
      personal_info/security/ir.model.access.csv
  59. BIN
      personal_info/static/description/banner.png
  60. BIN
      personal_info/static/description/icon.png
  61. 340
      personal_info/static/description/index.html
  62. BIN
      personal_info/static/description/personal-details-cybrosys-1.png
  63. BIN
      personal_info/static/description/personal-details-cybrosys.png
  64. 33
      personal_info/views/info_view.xml
  65. 28
      pos_restaurant_floor_facility/README.rst
  66. 22
      pos_restaurant_floor_facility/__init__.py
  67. 43
      pos_restaurant_floor_facility/__manifest__.py
  68. 23
      pos_restaurant_floor_facility/models/__init__.py
  69. 64
      pos_restaurant_floor_facility/models/pos_restaurant_extra_facility.py
  70. 5
      pos_restaurant_floor_facility/security/ir.model.access.csv
  71. BIN
      pos_restaurant_floor_facility/static/description/banner.jpg
  72. BIN
      pos_restaurant_floor_facility/static/description/cybro_logo.png
  73. BIN
      pos_restaurant_floor_facility/static/description/icon.png
  74. 369
      pos_restaurant_floor_facility/static/description/index.html
  75. BIN
      pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-1.png
  76. BIN
      pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-2.png
  77. BIN
      pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-3.png
  78. BIN
      pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-4.png
  79. 22
      pos_restaurant_floor_facility/static/src/js/facility_floor.js
  80. 20
      pos_restaurant_floor_facility/static/src/js/facility_floor.js~
  81. 69
      pos_restaurant_floor_facility/views/pos_restaurant_extra_facility.xml
  82. 10
      pos_restaurant_floor_facility/views/templates.xml

32
gender_contact/README.rst

@ -0,0 +1,32 @@
Gender in Contacts v11
===========================
This module will helps you to give the gender details for your contact
Features
========
* Gender for Contacts.
Tech
====
* [Python] - Models
* [XML] - Odoo views
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.
Developer: Tintuk Tomin @ cybrosys, odoo@cybrosys.com
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

3
gender_contact/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

38
gender_contact/__manifest__.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Tintuk Tomin(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU AGPL (v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# 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 AGPL (AGPL v3) for more details.
#
##############################################################################
{
'name': 'Gender in Contacts',
'version': '12.0.1.0.0',
'summary': """This module will helps you to give gender details for your contact.""",
'description': "Module helps you to manage the gender information of your partner as well as in the contacts.",
'category': "Human Resource",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base','contacts'],
'data': ['security/ir.model.access.csv',
'views/gender_view.xml'
],
'demo': [],
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'application': True,
}

6
gender_contact/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <gender_contact>
#### 09.04.2019
#### Version 12.0.1.0.0
##### ADD
- Initial commit

3
gender_contact/models/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import gender

11
gender_contact/models/gender.py

@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from odoo import api, models, fields
class FirstNameLastName(models.Model):
_inherit = 'res.partner'
gender = fields.Selection([ ('male', 'Male'),
('female', 'female'),
('other', 'Others')],
string='Gender')

3
gender_contact/security/ir.model.access.csv

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
res_partner_user_id,res.partner.user.gender,model_res_partner,base.group_user,1,1,1,1
res_partner_manager_id,res.partner.manager.gender,model_res_partner,hr.group_hr_manager,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 res_partner_user_id res.partner.user.gender model_res_partner base.group_user 1 1 1 1
3 res_partner_manager_id res.partner.manager.gender model_res_partner hr.group_hr_manager 1 1 1 1

BIN
gender_contact/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
gender_contact/static/description/gender-partner-cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
gender_contact/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

329
gender_contact/static/description/index.html

@ -0,0 +1,329 @@
<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;">
Gender for Contacts
</h2>
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
Provides option for gender in Contacts
</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">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;">
Provides option to add gender for all contacts including partners.
</h3>
</div>
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 300;margin: 0px !important;">
Configuration
</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;">
No additional configuration is required.
</h3>
</div>
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner1.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 14% 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Gender details
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Provision for gender in all contacts
</h3>
<div class="oe_row oe_spaced">
<img src="gender-partner-cybrosys.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>

18
gender_contact/views/gender_view.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_partner_simple_form_gender" model="ir.ui.view">
<field name="name">res.partner.simplified.form.gender</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="after">
<field name="gender"
widget="radio"
string="Gender"
attrs="{'invisible': [('company_type', '=', 'company')]}"/>
</xpath>
</field>
</record>
</data>
</odoo>

42
mobile_service_shop/README.rst

@ -0,0 +1,42 @@
Mobile Service Manager v12
===================
Module for mobile service shop daily activities
Features
========
* Service request creation.
* Assigning service request to technicians.
* Mobile service ticket generation.
* Service status tracking.
* Integrated with accounting and sales module.
* Access Rights From Multiple Level.
* Mobile complaint templates.
* Invoice for parts usage and service charges.
* Email notifications to customer.
* Parts inventory.
Installation
============
- www.odoo.com/documentation/12.0/setup/install.html
- Install our custom addon
- You need 'report_xlsx' module in order to get XLSX report.
- Install 'report_xlsx' from https://apps.odoo.com/apps/modules/11.0/report_xlsx/
Configuration
=============
No additional configurations needed
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Developer: (v11 $ v12) Milind Mohan @ cybrosys, Contact: odoo@cybrosys.com
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

4
mobile_service_shop/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import models
from . import wizard

42
mobile_service_shop/__manifest__.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU AGPL (v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# 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 AGPL (AGPL v3) for more details.
#
##############################################################################
{
'name': 'Mobile Service Manager',
'version': '12.0.1.0.0',
'summary': 'Module for managing mobile service shop daily activities.',
'category': 'Industries',
'author': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['stock_account', 'mail', 'product', 'account'],
'data': ['security/security.xml',
'security/ir.model.access.csv',
'views/mobile_service_views.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'],
'image': ['static/description/banner.jpg'],
'installable': True,
'application': True,
'auto_install': False,
'license': 'AGPL-3',
}

24
mobile_service_shop/data/mobile_service_data.xml

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

24
mobile_service_shop/data/mobile_service_email_template.xml

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

6
mobile_service_shop/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <mobile_service_shop>
#### 09.04.2019
#### Version 12.0.1.0.0
##### ADD
- Initial commit

4
mobile_service_shop/models/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import mobile_service
from . import service_ticket

446
mobile_service_shop/models/mobile_service.py

@ -0,0 +1,446 @@
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='Code', copy=False, default="New")
person_name = fields.Many2one('res.partner', string="Customer Name", required=True,
domain="[('customer','=','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", required=True)
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",required=True, 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)
technicion_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.invoice", string='Invoices', compute="_get_invoiced", readonly=True, copy=False)
first_payment_inv = fields.Many2one('account.invoice', 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')]))
account_type = fields.Many2one('account.account', 'Account', invisible=True,
default=lambda self: self.env['account.account'].search([('code', '=', 200110)]))
@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")
@api.multi
def approve(self):
self.service_state = 'assigned'
@api.multi
def complete(self):
self.service_state = 'completed'
@api.multi
def return_to(self):
self.service_state = 'returned'
@api.multi
def not_solved(self):
self.service_state = 'not_solved'
@api.multi
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_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'target': 'new',
'context': ctx,
}
@api.multi
def return_advance(self):
inv_obj = self.env['account.invoice'].search([('origin', '=', self.name)])
inv_ids = []
for each in inv_obj:
inv_ids.append(each.id)
view_id = self.env.ref('account.invoice_form').id
if inv_ids:
if len(inv_ids) <= 1:
value = {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'account.invoice',
'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_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'view_id': False,
'type': 'ir.actions.act_window',
'name': 'Invoice',
'res_id': inv_ids
}
return value
else:
raise UserError("No invoice created")
@api.multi
def _invoice_count(self):
invoice_ids = self.env['account.invoice'].search([('origin', '=', self.name)])
self.invoice_count = len(invoice_ids)
@api.model
def create(self, vals):
vals['name'] = self.env['ir.sequence'].next_by_code('mobile.service')
vals['service_state'] = 'draft'
return super(MobileServiceShop, self).create(vals)
@api.multi
def unlink(self):
for i in self:
if i.service_state != 'draft':
raise UserError(_('You cannot delete an assigned service request'))
return super(MobileServiceShop, i).unlink()
@api.multi
def action_invoice_create_wizard(self):
return {
'name': _('Create Invoice'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mobile.invoice',
'type': 'ir.actions.act_window',
'target': 'new'
}
@api.multi
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'))
@api.multi
def action_view_invoice(self):
inv_obj = self.env['account.invoice'].search([('origin', '=', self.name)])
inv_ids = []
for each in inv_obj:
inv_ids.append(each.id)
view_id = self.env.ref('account.invoice_form').id
if inv_ids:
if len(inv_ids) <= 1:
value = {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'account.invoice',
'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_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'view_id': False,
'type': 'ir.actions.act_window',
'name': 'Invoice',
'res_id': inv_ids
}
return value
@api.multi
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.technicion_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 ''
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")
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)]")
product_uom_qty = fields.Float(string='Used Quantity', default=1.0)
price_unit = fields.Float(string='Unit Price', default=0.0)
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')
@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.account_type.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
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

26
mobile_service_shop/models/service_ticket.py

@ -0,0 +1,26 @@
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,
}

12
mobile_service_shop/reports/mobile_service_ticket.xml

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

83
mobile_service_shop/reports/service_ticket_template.xml

@ -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%;">
<h2>Service Ticket</h2>
</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:-23%;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>

15
mobile_service_shop/security/ir.model.access.csv

@ -0,0 +1,15 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_mobile_service_shop_mobile_service_shop,access.mobile_service_shop.mobile_service_shop,model_mobile_service,mobile_service_group_executer,1,1,0,0
access_mobile_service_shop_mobile_service_shop11,access.mobile_service_shop.mobile_service_shop11,model_mobile_complaint,mobile_service_group_executer,1,0,0,0
access_mobile_service_shop_mobile_service_shop22,access.mobile_service_shop.mobile_service_shop22,model_mobile_service,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop33,access.mobile_service_shop.mobile_service_shop33,model_mobile_brand,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop44,access.mobile_service_shop.mobile_service_shop44,model_brand_model,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop66,access.mobile_service_shop.mobile_service_shop66,model_mobile_complaint,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop88,access.mobile_service_shop.mobile_service_shop88,model_product_template,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop99,access.mobile_service_shop.mobile_service_shop99,model_mobile_complaint_tree,mobile_service_group_executer,1,1,1,0
access_mobile_service_shop_mobile_service_shop111,access.mobile_service_shop.mobile_service_shop111,model_mobile_complaint_description,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop112,access.mobile_service_shop.mobile_service_shop112,model_terms_conditions,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop113,access.mobile_service_shop.mobile_service_shop113,model_mobile_complaint_tree,mobile_service_group_manager,1,1,1,1
access_mobile_service_shop_mobile_service_shop114,access.mobile_service_shop.mobile_service_shop114,model_mobile_complaint_description,mobile_service_group_executer,1,1,0,0
access_mobile_service_shop_mobile_service_shop115,access.mobile_service_shop.mobile_service_shop115,model_product_order_line,mobile_service_group_executer,1,1,1,1
access_mobile_service_shop_mobile_service_shop116,access.mobile_service_shop.mobile_service_shop116,model_mobile_invoice,mobile_service_group_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mobile_service_shop_mobile_service_shop access.mobile_service_shop.mobile_service_shop model_mobile_service mobile_service_group_executer 1 1 0 0
3 access_mobile_service_shop_mobile_service_shop11 access.mobile_service_shop.mobile_service_shop11 model_mobile_complaint mobile_service_group_executer 1 0 0 0
4 access_mobile_service_shop_mobile_service_shop22 access.mobile_service_shop.mobile_service_shop22 model_mobile_service mobile_service_group_manager 1 1 1 1
5 access_mobile_service_shop_mobile_service_shop33 access.mobile_service_shop.mobile_service_shop33 model_mobile_brand mobile_service_group_manager 1 1 1 1
6 access_mobile_service_shop_mobile_service_shop44 access.mobile_service_shop.mobile_service_shop44 model_brand_model mobile_service_group_manager 1 1 1 1
7 access_mobile_service_shop_mobile_service_shop66 access.mobile_service_shop.mobile_service_shop66 model_mobile_complaint mobile_service_group_manager 1 1 1 1
8 access_mobile_service_shop_mobile_service_shop88 access.mobile_service_shop.mobile_service_shop88 model_product_template mobile_service_group_manager 1 1 1 1
9 access_mobile_service_shop_mobile_service_shop99 access.mobile_service_shop.mobile_service_shop99 model_mobile_complaint_tree mobile_service_group_executer 1 1 1 0
10 access_mobile_service_shop_mobile_service_shop111 access.mobile_service_shop.mobile_service_shop111 model_mobile_complaint_description mobile_service_group_manager 1 1 1 1
11 access_mobile_service_shop_mobile_service_shop112 access.mobile_service_shop.mobile_service_shop112 model_terms_conditions mobile_service_group_manager 1 1 1 1
12 access_mobile_service_shop_mobile_service_shop113 access.mobile_service_shop.mobile_service_shop113 model_mobile_complaint_tree mobile_service_group_manager 1 1 1 1
13 access_mobile_service_shop_mobile_service_shop114 access.mobile_service_shop.mobile_service_shop114 model_mobile_complaint_description mobile_service_group_executer 1 1 0 0
14 access_mobile_service_shop_mobile_service_shop115 access.mobile_service_shop.mobile_service_shop115 model_product_order_line mobile_service_group_executer 1 1 1 1
15 access_mobile_service_shop_mobile_service_shop116 access.mobile_service_shop.mobile_service_shop116 model_mobile_invoice mobile_service_group_manager 1 1 1 1

36
mobile_service_shop/security/security.xml

@ -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">[('technicion_name','=',user.id),('service_state','!=','draft')]</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">[]</field>
<field name="groups" eval="[(4,ref('mobile_service_group_manager'))]"/>
</record>
</odoo>

BIN
mobile_service_shop/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
mobile_service_shop/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

542
mobile_service_shop/static/description/index.html

@ -0,0 +1,542 @@
<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 Manager
</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 an application for Mobile Service shop which helps in managing the daily activities inside a service center.
This module is integrated with accounting and inventory modules.This module has a feature for adding complaint templates
which makes it user-friendly application. It helps in generating service tickets also.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
<strong>Manager</strong> :- Manager has the complete access across mobile shop management <br/>
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Service status tracking..</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Access Rights From Multiple Level. </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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
When you install the module, an extra menu named Mobile Service is created.
Here you can see service requests and 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
This is the service request creation form. Service request can be create according to the device brand and model.
Also we can assign the service request a technician and provide 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Product will be only visible in the parts inventory if 'is a mobile part' is checked.
<br>You can provide a brand, model and colour 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
The parts used during the service process will be automatically added to 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
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>
</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>

BIN
mobile_service_shop/static/description/mobile-service-shop1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop17.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop18.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
mobile_service_shop/static/description/mobile-service-shop9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

BIN
mobile_service_shop/static/description/web-icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

594
mobile_service_shop/views/mobile_service_views.xml

@ -0,0 +1,594 @@
<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"/>
</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"/>
<field name="contact_no"/>
<field name="technicion_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': 'technicion_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_right oe_button_box" style="width: 300px;" name="buttons">
<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" 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="technicion_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.view</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-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"/><br/>
<field name="service_state"/>
</div>
</div>
<div class="oe_clear"></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<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_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.view</field>
<field name="model">brand.model</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-src="kanban_image('brand.model', 'image_medium', record.id.raw_value)"/>
</div>
<div class="oe_kanban_content">
<div>
<strong class="o_kanban_record_title"><h4><field name="mobile_brand_name"/></h4></strong>
</div>
<div class="text-muted o_kanban_record_subtitle">
<h6><field name="mobile_brand_models"/><br/></h6>
</div>
</div>
<div class="oe_clear"></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<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_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_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_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="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="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="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="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="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="technicion_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="domain">[]</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="technicion_name"/>
<field name="return_date"/>
<field name="service_state"/>
</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_type">form</field>
<field name="view_mode">tree,form</field>
<field name="rental_view_id" ref="mobile_brand_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</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_type">form</field>
<field name="view_mode">tree,form,kanban,pivot,graph</field>
<field name="search_view_id" ref="mobile_service_request_search_view"/>
<field name="rental_view_id" ref="mobile_service_request_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</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_type">form</field>
<field name="view_mode">tree,form</field>
<field name="rental_view_id" ref="mobile_complaint_type_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</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_type">form</field>
<field name="view_mode">tree,form</field>
<field name="rental_view_id" ref="mobile_complaint_template_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</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_type">form</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>
<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_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="rental_view_id" ref="mobile_brand_model_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</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="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="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="view_type">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 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" name="Car Rental" sequence="20"/>
<menuitem action="action_mobile_service_request" id="mobile_service_shop_menu2" parent="mobile_service_main_menu"
name="Service Request" sequence="1"/>
<menuitem action="product_template_action_product" id="mobile_service_shop_parts " parent="mobile_service_main_menu"
name="Parts inventory" sequence="1"/>
<menuitem id="mobile_service_shop_configuration" parent="mobile_service_main_menu"
name="Configuration" sequence="3"/>
<menuitem action="action_mobile_brand" id="mobile_service_shop_conf1" parent="mobile_service_shop_configuration"
name="Brand" sequence="1"/>
<menuitem action="action_mobile_complaint_type" id="mobile_service_shop_conf2" parent="mobile_service_shop_configuration"
name="Complaint Type" sequence="3"/>
<menuitem action="action_mobile_complaint_template" id="mobile_service_shop_conf6" parent="mobile_service_shop_configuration"
name="Complaint Templates" sequence="3"/>
<menuitem action="action_mobile_brand_models" id="mobile_service_shop_conf3" parent="mobile_service_shop_configuration"
name="Models" sequence="2"/>
<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>

5
mobile_service_shop/wizard/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import mobile_create_invoice

138
mobile_service_shop/wizard/mobile_create_invoice.py

@ -0,0 +1,138 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from odoo import api, fields, models, _
from odoo.exceptions import Warning, UserError
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.multi
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.invoice']
inv_line_obj = self.env['account.invoice.line']
supplier = service_id.person_name
inv_data = {
'name': supplier.name,
'type': 'out_invoice',
'reference': supplier.name,
'account_id': supplier.property_account_receivable_id.id,
'partner_id': supplier.id,
'currency_id': service_id.account_type.company_id.currency_id.id,
'journal_id': service_id.journal_type.id,
'origin': service_id.name,
'company_id': service_id.account_type.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 = {
'name': product_id.name,
'account_id': income_account,
'price_unit': self.amount,
'quantity': 1,
'product_id': product_id.id,
'invoice_id': inv_id.id,
}
inv_line_obj.create(inv_line_data)
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 = {
'name': line_data.product_id.name,
'account_id': income_account,
'price_unit': price,
'quantity': qty,
'uom_id': uom_id.id,
'product_id': line_data.product_id.id,
'invoice_id': inv_id.id,
}
inv_line_obj.create(inv_line_data)
line_data.qty_invoiced = line_data.qty_invoiced + qty
# inv_id.action_invoice_open()
if flag != 1:
raise UserError(_('Nothing to create invoice'))
imd = service_id.env['ir.model.data']
action = imd.xmlid_to_object('account.action_invoice_tree1')
list_view_id = imd.xmlid_to_res_id('account.invoice_tree')
form_view_id = imd.xmlid_to_res_id('account.invoice_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.invoice',
}
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,
}

39
mobile_service_shop/wizard/mobile_create_invoice_views.xml

@ -0,0 +1,39 @@
<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_type">form</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="rental_view_id" ref="view_mobile_create_inv"/>-->
</record>
</odoo>

32
personal_info/README.rst

@ -0,0 +1,32 @@
Contact First And Last Name v11
===========================
This module will helps you to give the personal details for your contact
Features
========
* Personal details like nationality,personal mobile , email, id proof details etc for Contacts.
Tech
====
* [Python] - Models
* [XML] - Odoo views
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.
Developer: Tintuk Tomin @ cybrosys, odoo@cybrosys.com
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

3
personal_info/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

38
personal_info/__manifest__.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Tintuk Tomin(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU AGPL (v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# 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 AGPL (AGPL v3) for more details.
#
##############################################################################
{
'name': 'Personal Information in Contacts',
'version': '12.0.1.0.0',
'summary': """This module will helps you to give personal details in your contact.""",
'description': "Module helps you to manage the personal information of your partner as well as in the contacts.",
'category': "Human Resource",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base','contacts','first_last_name','gender_contact'],
'data': ['security/ir.model.access.csv',
'views/info_view.xml'
],
'demo': [],
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'application': True,
}

6
personal_info/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <first_last_name>
#### 09.04.2019
#### Version 11.0.1.0.0
##### ADD
- Initial commit

3
personal_info/models/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import personal

22
personal_info/models/personal.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from odoo import api, models, fields
class FirstNameLastName(models.Model):
_inherit = 'res.partner'
dob = fields.Date(string="Date of Birth")
nationality = fields.Char(string="Nationality")
personal_number = fields.Char(string="Personal Number")
personal_email = fields.Char(string="Email")
marital = fields.Selection([
('single', 'Single'),
('married', 'Married'),
('cohabitant', 'Legal Cohabitant'),
('widower', 'Widower'),
('divorced', 'Divorced')], string='Marital Status')
social_twitter = fields.Char('Twitter Account')
social_facebook = fields.Char('Facebook Account')
social_github = fields.Char('GitHub Account')
social_linkedin = fields.Char('LinkedIn Account')
social_youtube = fields.Char('Youtube Account')

2
personal_info/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
res_partner_id,res.partner.name,model_res_partner,hr.group_hr_manager,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 res_partner_id res.partner.name model_res_partner hr.group_hr_manager 1 1 1 1

BIN
personal_info/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
personal_info/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

340
personal_info/static/description/index.html

@ -0,0 +1,340 @@
<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;">
Personal Information in Contacts
</h2>
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
Provision for enter the personal informations
</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">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;">
Provides option add more personal details for all contacts including partners.
</h3>
</div>
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 300;margin: 0px !important;">
Configuration
</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;">
No additional configuration is required.
</h3>
</div>
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner1.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 14% 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
First name, Last name, Nick name and gender for partners.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
New tab for personal informaions.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Names and gender
</h3>
<div class="oe_row oe_spaced">
<img src="personal-details-cybrosys.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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
New tab for personal info
</h3>
<div class="oe_row oe_spaced">
<img src="personal-details-cybrosys-1.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>

BIN
personal_info/static/description/personal-details-cybrosys-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
personal_info/static/description/personal-details-cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

33
personal_info/views/info_view.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_partner_simple_form_personal_info" model="ir.ui.view">
<field name="name">res.partner.simplified.form.personal.info</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@name='internal_notes']" position="before">
<page name='personal_information' string="Personal Information" attrs="{'invisible': [('company_type', '=', 'company')]}">
<group col="2">
<group string="Personal Info" name="personal_info" >
<field name="dob" string="Date of Birth"/>
<field name="nationality" string="Nationality"/>
<field name="marital" string="Maritial Status"/>
<field name="personal_number" string="Personal Number"/>
<field name="personal_email" string="Personal Email"/>
</group>
<group string="Social Media" name="social_media">
<field name="social_twitter"/>
<field name="social_facebook"/>
<field name="social_github"/>
<field name="social_linkedin"/>
<field name="social_youtube"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</data>
</odoo>

28
pos_restaurant_floor_facility/README.rst

@ -0,0 +1,28 @@
====================================
Floor Wise Charges in Restaurant v12
====================================
This module adds floor wise charging facility in POS Restaurant.
Installation
============
Just select it from available modules to install it, there is no need to extra installations.
Configuration
=============
Nothing to configure.
Usage
=====
* Create some Facility and its charging percentage.
* POS-> Configuration-> Floor Facility.
* Add created facility to floors.
* POS-> Configuration-> Floor Plans-> Add Facility Lines
* On clicking a product in pos screen, Amount will add automatically.
Credits
=======
Developer: Nilmar Shereef(v10) @ cybrosys, odoo@cybrosys.com
Akshay Babu(v12)

22
pos_restaurant_floor_facility/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import models

43
pos_restaurant_floor_facility/__manifest__.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Floor Wise Charge in Restaurant',
'version': '12.0.1.0.0',
'summary': """Product Price Change Based on Floor of POS Restaurant.""",
'description': """Module adds the facility charge of floor with each products in POS restaurant""",
'author': 'Cybrosys Techno Solutions',
'website': "http://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'category': 'Point Of Sale',
'depends': ['point_of_sale',
'pos_restaurant'],
'data': [
'security/ir.model.access.csv',
'views/pos_restaurant_extra_facility.xml',
'views/templates.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
}

23
pos_restaurant_floor_facility/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import pos_restaurant_extra_facility

64
pos_restaurant_floor_facility/models/pos_restaurant_extra_facility.py

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nilmar Shereef(<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import models, fields, api
class FacilityRestaurant(models.Model):
_inherit = "restaurant.floor"
rest_floor_facility = fields.One2many('restaurant.floor.line', 'ref_field', string='Floor Facility')
facility_service_percentage = fields.Float(compute='onchange_rest_facility', string="Active Facility Charge %")
@api.multi
@api.depends('rest_floor_facility')
def onchange_rest_facility(self):
for rec in self:
sum_of_percentage = 0.0
if rec.rest_floor_facility:
for records in rec.rest_floor_facility:
sum_of_percentage += records.line_percentage
rec.facility_service_percentage = sum_of_percentage
class FacilityRestaurantLines(models.Model):
_name = "restaurant.floor.line"
name = fields.Many2one('restaurant.floor.facility')
line_percentage = fields.Float(string="Extra Charging Percentage")
ref_field = fields.Many2one('restaurant.floor', invisible=True, ondelete='cascade')
@api.onchange('name')
def onchange_facility(self):
if self.name:
self.line_percentage = self.name.percentage
class FloorFacility(models.Model):
_name = "restaurant.floor.facility"
name = fields.Char(string="Name", required=True,)
percentage = fields.Float(string="Extra Charging Percentage(%)", required=True,
help="Increment percentage of the each Product Price ")
description = fields.Html(string="Description")

5
pos_restaurant_floor_facility/security/ir.model.access.csv

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_restaurant.floor.line1,restaurant.floor.line11,model_restaurant_floor_line,point_of_sale.group_pos_user,1,0,0,0
access_restaurant.floor.facility1,restaurant.floor.facility11,model_restaurant_floor_facility,point_of_sale.group_pos_user,1,0,0,0
access_restaurant.floor.line,restaurant.floor.line,model_restaurant_floor_line,point_of_sale.group_pos_manager,1,1,1,1
access_restaurant.floor.facility,restaurant.floor.facility,model_restaurant_floor_facility,point_of_sale.group_pos_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_restaurant.floor.line1 restaurant.floor.line11 model_restaurant_floor_line point_of_sale.group_pos_user 1 0 0 0
3 access_restaurant.floor.facility1 restaurant.floor.facility11 model_restaurant_floor_facility point_of_sale.group_pos_user 1 0 0 0
4 access_restaurant.floor.line restaurant.floor.line model_restaurant_floor_line point_of_sale.group_pos_manager 1 1 1 1
5 access_restaurant.floor.facility restaurant.floor.facility model_restaurant_floor_facility point_of_sale.group_pos_manager 1 1 1 1

BIN
pos_restaurant_floor_facility/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
pos_restaurant_floor_facility/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
pos_restaurant_floor_facility/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

369
pos_restaurant_floor_facility/static/description/index.html

@ -0,0 +1,369 @@
<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;">
Floor Wise Charges in Restaurant
</h2>
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
User can set floor facility charges on Products
</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: 1% 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 allows users to set floor facility charges on Products,i.e
extra charges are set for products according to the floor used by customers.
</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% 25% 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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Facilities With Charging Percentage.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Facility Lines in Floor Master.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Enables Separate Price in Floors Wise.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Simple Configuration.
</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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Facility Master - Tree View
</h3>
<div class="oe_row oe_spaced">
<img src="pos-restaurant-cybrosys-1.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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Facility Master - Form View
<ul>
<li>Facilities with its charging percentage.</li>
<li>Images and bullet points of facility.</li>
</ul>
</h3>
<div class="oe_row oe_spaced">
<img src="pos-restaurant-cybrosys-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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Floor Master With Facility Lines - Form View
<ul>
<li>Facility lines with its charging percentage.</li>
<li>User can alter its charges from this lines.</li>
<li>Automated total affecting facility percentage of floor.</li>
</ul>
</h3>
<div class="oe_row oe_spaced">
<img src="pos-restaurant-cybrosys-3.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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Floor Wise Price Change - POS Screen
<ul>
<li>Floor facility charge will added with actual price of product.</li>
</ul>
</h3>
<div class="oe_row oe_spaced">
<img src="pos-restaurant-cybrosys-4.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>

BIN
pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
pos_restaurant_floor_facility/static/description/pos-restaurant-cybrosys-4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

22
pos_restaurant_floor_facility/static/src/js/facility_floor.js

@ -0,0 +1,22 @@
odoo.define('pos_restaurant_floor_facility.floor_facility_rate_addition', function (require) {
'use strict';
var models = require('point_of_sale.models');
var screens = require('point_of_sale.screens');
var restaurant = require('pos_restaurant.floors');
models.load_fields("restaurant.floor",['facility_service_percentage']);
screens.ProductScreenWidget.include({
click_product: function(product) {
console.log(screens);
if(product.to_weight && this.pos.config.iface_electronic_scale){
this.gui.show_screen('scale',{product: product});
}else{
this.pos.get_order().add_product(product,{ price: product.list_price +
(product.list_price * this.pos.table.floor.facility_service_percentage)/100});
}
},
});
});

20
pos_restaurant_floor_facility/static/src/js/facility_floor.js~

@ -0,0 +1,20 @@
odoo.define('pos_restaurant_floor_facility.floor_facility_rate_addition', function (require) {
'use strict';
alert("aaaaaaaa");
var models = require('point_of_sale.models');
var screens = require('point_of_sale.screens');
var restaurant = require('pos_restaurant.floors');
models.load_fields("restaurant.floor",['facility_service_percentage']);
screens.ProductScreenWidget.include({
click_product: function(product) {
if(product.to_weight && this.pos.config.iface_electronic_scale){
this.gui.show_screen('scale',{product: product});
}else{
this.pos.get_order().add_product(product,{ price: product.price +
(product.price * this.pos.table.floor.facility_service_percentage)/100});
}
}
});
});

69
pos_restaurant_floor_facility/views/pos_restaurant_extra_facility.xml

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="restaurant_extra_feature_form_view" model="ir.ui.view">
<field name="name">Floor View Extra</field>
<field name="model">restaurant.floor</field>
<field name="inherit_id" ref="pos_restaurant.view_restaurant_floor_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='background_color']" position="after">
<field name="facility_service_percentage"/>
</xpath>
<xpath expr="//field[@name='table_ids']" position="after">
<group col="1">
<field name="rest_floor_facility">
<tree string='Floor Facility' editable="bottom">
<field name="name" />
<field name="line_percentage" />
</tree>
</field>
</group>
</xpath>
</field>
</record>
<record id="extra_features_form_view" model="ir.ui.view">
<field name="name">Floor Facility Form</field>
<field name="model">restaurant.floor.facility</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="percentage"/>
</group>
</group>
<field name="description"/>
</sheet>
</form>
</field>
</record>
<record id="extra_features_tree_view" model="ir.ui.view">
<field name="name">Floor Facility Tree</field>
<field name="model">restaurant.floor.facility</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="percentage"/>
</tree>
</field>
</record>
<record id="action_restaurant_extra_features" model="ir.actions.act_window">
<field name="name">Floor Facility</field>
<field name="res_model">restaurant.floor.facility</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a new facility.
</p>
</field>
</record>
<menuitem id="menu_restaurant_extra_features" name="Floor Facility" sequence="31" parent="point_of_sale.menu_point_config_product" action="action_restaurant_extra_features"/>
</data>
</odoo>

10
pos_restaurant_floor_facility/views/templates.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_restaurant_floor_facility/static/src/js/facility_floor.js"></script>
</xpath>
</template>
</data>
</odoo>
Loading…
Cancel
Save