diff --git a/access_restriction_by_ip/README.rst b/access_restriction_by_ip/README.rst new file mode 100644 index 000000000..cf4bdc936 --- /dev/null +++ b/access_restriction_by_ip/README.rst @@ -0,0 +1,20 @@ +Access Restriction By IP V16 +============================ + +This module will restrict users access to his account from the specified IP only. If user access his +account from non-specified IP, login will be restricted and a warning message will be displayed in +login page. + +If no IP is specified for a user, then there will not be restriction by IP. He can access from any IP. + + +Credits +======= +Cybrosys Techno Solutions + +Author +------ +* Niyas Raphy +* V14 Muhammad P +* V15 Nikhil Ravi +* V16 VISHNU KP diff --git a/access_restriction_by_ip/__init__.py b/access_restriction_by_ip/__init__.py new file mode 100644 index 000000000..8ca207817 --- /dev/null +++ b/access_restriction_by_ip/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from . import controllers +from . import models + + diff --git a/access_restriction_by_ip/__manifest__.py b/access_restriction_by_ip/__manifest__.py new file mode 100644 index 000000000..27f722010 --- /dev/null +++ b/access_restriction_by_ip/__manifest__.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': 'Access Restriction By IP', + 'summary': """User Can Access His Account Only From Specified IP Address""", + 'version': '16.0.1.0.0', + 'description': """User Can Access His Account Only From Specified IP Address""", + 'live_test_url': 'https://youtu.be/nn6dAL6eKPc', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'category': 'Tools', + 'depends': ['base', 'mail'], + 'license': 'AGPL-3', + 'data': [ + 'security/ir.model.access.csv', + 'views/allowed_ips_view.xml', + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, + 'application': False, +} + diff --git a/access_restriction_by_ip/controllers/__init__.py b/access_restriction_by_ip/controllers/__init__.py new file mode 100644 index 000000000..1939c6696 --- /dev/null +++ b/access_restriction_by_ip/controllers/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from . import main + diff --git a/access_restriction_by_ip/controllers/main.py b/access_restriction_by_ip/controllers/main.py new file mode 100644 index 000000000..721b041c8 --- /dev/null +++ b/access_restriction_by_ip/controllers/main.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from odoo.addons.web.controllers import utils +from odoo.addons.web.controllers import home +from odoo.http import request +from odoo.exceptions import Warning +import odoo +import odoo.modules.registry +from odoo.tools.translate import _ +from odoo import http + + +class Home(home.Home): + + @http.route('/web/login', type='http', auth="public") + def web_login(self, redirect=None, **kw): + utils.ensure_db() + request.params['login_success'] = False + if request.httprequest.method == 'GET' and redirect and request.session.uid: + return request.redirect(redirect) + if not request.uid: + request.uid = odoo.SUPERUSER_ID + values = request.params.copy() + try: + values['databases'] = http.db_list() + except odoo.exceptions.AccessDenied: + values['databases'] = None + if request.httprequest.method == 'POST': + old_uid = request.uid + ip_address = request.httprequest.environ['REMOTE_ADDR'] + if request.params['login']: + user_rec = request.env['res.users'].sudo().search( + [('login', '=', request.params['login'])]) + if user_rec.allowed_ips: + ip_list = [] + for rec in user_rec.allowed_ips: + ip_list.append(rec.ip_address) + if ip_address in ip_list: + try: + uid = request.session.authenticate( + request.session.db, request.params['login'], + request.params['password']) + request.params['login_success'] = True + return request.redirect( + self._login_redirect(uid, redirect=redirect)) + except odoo.exceptions.AccessDenied as e: + request.uid = old_uid + if e.args == odoo.exceptions.AccessDenied().args: + values['error'] = _("Wrong login/password") + else: + request.update_env = old_uid + values['error'] = _("Not allowed to login from this IP") + else: + try: + uid = request.session.authenticate(request.session.db, + request.params[ + 'login'], + request.params[ + 'password']) + request.params['login_success'] = True + return request.redirect( + self._login_redirect(uid, redirect=redirect)) + except odoo.exceptions.AccessDenied as e: + request.update_env = old_uid + if e.args == odoo.exceptions.AccessDenied().args: + values['error'] = _("Wrong login/password") + return request.render('web.login', values) diff --git a/access_restriction_by_ip/doc/RELEASE_NOTES.md b/access_restriction_by_ip/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..2eed8cb06 --- /dev/null +++ b/access_restriction_by_ip/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module + +#### 12.12.2021 +#### Version 15.0.1.0.0 +#### ADD Initial Commit for access_restriction_by_ip \ No newline at end of file diff --git a/access_restriction_by_ip/models/__init__.py b/access_restriction_by_ip/models/__init__.py new file mode 100644 index 000000000..ca519c454 --- /dev/null +++ b/access_restriction_by_ip/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from . import allowed_ips + + diff --git a/access_restriction_by_ip/models/allowed_ips.py b/access_restriction_by_ip/models/allowed_ips.py new file mode 100644 index 000000000..105e2a2f3 --- /dev/null +++ b/access_restriction_by_ip/models/allowed_ips.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from odoo import models, fields + + +class ResUsersInherit(models.Model): + _inherit = 'res.users' + + allowed_ips = fields.One2many('allowed.ips', 'users_ip', string='IP') + + +class AllowedIPs(models.Model): + _name = 'allowed.ips' + + users_ip = fields.Many2one('res.users', string='IP') + ip_address = fields.Char(string='Allowed IP') diff --git a/access_restriction_by_ip/security/ir.model.access.csv b/access_restriction_by_ip/security/ir.model.access.csv new file mode 100644 index 000000000..225f726ab --- /dev/null +++ b/access_restriction_by_ip/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 +access_allowed_ips,access.allowed.ips,access_restriction_by_ip.model_allowed_ips,base.group_user,1,1,1,1 diff --git a/access_restriction_by_ip/static/description/assets/icons/check.png b/access_restriction_by_ip/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/check.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/chevron.png b/access_restriction_by_ip/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/chevron.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/cogs.png b/access_restriction_by_ip/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/cogs.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/consultation.png b/access_restriction_by_ip/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/consultation.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/ecom-black.png b/access_restriction_by_ip/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/ecom-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/education-black.png b/access_restriction_by_ip/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/education-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/hotel-black.png b/access_restriction_by_ip/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/hotel-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/license.png b/access_restriction_by_ip/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/license.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/lifebuoy.png b/access_restriction_by_ip/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/lifebuoy.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/manufacturing-black.png b/access_restriction_by_ip/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/manufacturing-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/pos-black.png b/access_restriction_by_ip/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/pos-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/puzzle.png b/access_restriction_by_ip/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/puzzle.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/restaurant-black.png b/access_restriction_by_ip/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/restaurant-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/service-black.png b/access_restriction_by_ip/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/service-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/trading-black.png b/access_restriction_by_ip/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/trading-black.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/training.png b/access_restriction_by_ip/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/training.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/update.png b/access_restriction_by_ip/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/update.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/user.png b/access_restriction_by_ip/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/user.png differ diff --git a/access_restriction_by_ip/static/description/assets/icons/wrench.png b/access_restriction_by_ip/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/icons/wrench.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/categories.png b/access_restriction_by_ip/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/categories.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/check-box.png b/access_restriction_by_ip/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/check-box.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/compass.png b/access_restriction_by_ip/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/compass.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/corporate.png b/access_restriction_by_ip/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/corporate.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/customer-support.png b/access_restriction_by_ip/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/customer-support.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/cybrosys-logo.png b/access_restriction_by_ip/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/cybrosys-logo.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/features.png b/access_restriction_by_ip/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/features.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/logo.png b/access_restriction_by_ip/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/logo.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/pictures.png b/access_restriction_by_ip/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/pictures.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/pie-chart.png b/access_restriction_by_ip/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/pie-chart.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/right-arrow.png b/access_restriction_by_ip/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/right-arrow.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/star.png b/access_restriction_by_ip/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/star.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/support.png b/access_restriction_by_ip/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/support.png differ diff --git a/access_restriction_by_ip/static/description/assets/misc/whatsapp.png b/access_restriction_by_ip/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/misc/whatsapp.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/approval_image.png b/access_restriction_by_ip/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/approval_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/budget_image.png b/access_restriction_by_ip/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/budget_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/export_image.png b/access_restriction_by_ip/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/export_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/magento_image.png b/access_restriction_by_ip/static/description/assets/modules/magento_image.png new file mode 100644 index 000000000..39de0820f Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/magento_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/pos_image.png b/access_restriction_by_ip/static/description/assets/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/pos_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/modules/shopify_image.png b/access_restriction_by_ip/static/description/assets/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/modules/shopify_image.png differ diff --git a/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_1.png b/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_1.png new file mode 100644 index 000000000..add7948ef Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_1.png differ diff --git a/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_2.png b/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_2.png new file mode 100644 index 000000000..84643f1bb Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/screenshots/access_restriction_by_ip_2.png differ diff --git a/access_restriction_by_ip/static/description/assets/screenshots/hero.gif b/access_restriction_by_ip/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..1a2e70c4a Binary files /dev/null and b/access_restriction_by_ip/static/description/assets/screenshots/hero.gif differ diff --git a/access_restriction_by_ip/static/description/banner.png b/access_restriction_by_ip/static/description/banner.png new file mode 100644 index 000000000..273effef7 Binary files /dev/null and b/access_restriction_by_ip/static/description/banner.png differ diff --git a/access_restriction_by_ip/static/description/icon.png b/access_restriction_by_ip/static/description/icon.png new file mode 100644 index 000000000..3d87a4c2e Binary files /dev/null and b/access_restriction_by_ip/static/description/icon.png differ diff --git a/access_restriction_by_ip/static/description/index.html b/access_restriction_by_ip/static/description/index.html new file mode 100644 index 000000000..3c919b4a5 --- /dev/null +++ b/access_restriction_by_ip/static/description/index.html @@ -0,0 +1,557 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Access Restriction By IP

+

User can access his account only from specified IP's

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module will restrict the users access to his account from specified IP address only +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Admin Access +

+ Administrator can set a IP or a group of IP address for each users.

+
+
+ + User Restriction +

+ Users can access their account only from the specified IP's.

+
+
+ + Restricted Login. +

+ Accessing system from a non-specified IP will restrict the user login.

+
+
+ + Warning +

+ A warning message will be displayed.

+
+
+
+
+ + Userwise IP +

+ If no IP is set to user means there is not any restriction by IP. IP Address for each users can be set from users form view

+
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Setting IP address for User

+

User will be able to access his account only from this IP's

+ +
+ +
+

User accessing his account + goes here

+

On accessing account from a non specified IP.

+ +
+
+
+ + + + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/access_restriction_by_ip/views/allowed_ips_view.xml b/access_restriction_by_ip/views/allowed_ips_view.xml new file mode 100644 index 000000000..a5a528fb1 --- /dev/null +++ b/access_restriction_by_ip/views/allowed_ips_view.xml @@ -0,0 +1,21 @@ + + + + + res.users + res.users + + + + + + + + + + + + + + + diff --git a/account_payment_approval/README.rst b/account_payment_approval/README.rst new file mode 100644 index 000000000..264b9abc0 --- /dev/null +++ b/account_payment_approval/README.rst @@ -0,0 +1,19 @@ +Payment Approval v15 +==================== +Enables to use the approval feature in customer and vendor payments. + +Installation +============ +No additional files neeeded. + +Configuration +============= + +No configurations needed. + +Credits +======= +Developer: v13.0 Mashood K U @ cybrosys, odoo@cybrosys.com + v14.0 Minhaj T @ cybrosys, odoo@cybrosys.com + v15.0 Mohammed Shahil M P T @ cybrosys, odoo@cybrosys.com + v16.0 Neenu Merlin Jose @ cybrosys, odoo@cybrosys.com diff --git a/account_payment_approval/__init__.py b/account_payment_approval/__init__.py new file mode 100644 index 000000000..f2c5a4636 --- /dev/null +++ b/account_payment_approval/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/account_payment_approval/__manifest__.py b/account_payment_approval/__manifest__.py new file mode 100644 index 000000000..b08eec39d --- /dev/null +++ b/account_payment_approval/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Payment Approvals', + 'version': '16.0.1.0.0', + 'category': 'Accounting', + 'summary': """ This modules enables approval feature in the payment.""", + 'description': """This modules enables approval feature in the payment. """, + 'author': ' Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'account'], + 'data': [ + 'views/res_config_settings_views.xml', + 'views/account_payment_view.xml', + ], + 'license': 'LGPL-3', + 'images': ['static15/description/banner.png'], + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/account_payment_approval/doc/RELEASE_NOTES.md b/account_payment_approval/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8419abcdb --- /dev/null +++ b/account_payment_approval/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 17.09.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for Payment Approval diff --git a/account_payment_approval/models/__init__.py b/account_payment_approval/models/__init__.py new file mode 100644 index 000000000..ee06b56c8 --- /dev/null +++ b/account_payment_approval/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import account_payment +from . import res_config_settings diff --git a/account_payment_approval/models/account_payment.py b/account_payment_approval/models/account_payment.py new file mode 100644 index 000000000..ec835f798 --- /dev/null +++ b/account_payment_approval/models/account_payment.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, _ +from odoo.exceptions import UserError, ValidationError + + +class AccountMove(models.Model): + _inherit = "account.move" + + state = fields.Selection( + selection_add=[('waiting_approval', 'Waiting For Approval'), + ('approved', 'Approved'), + ('rejected', 'Rejected')], + ondelete={'waiting_approval': 'set default', 'approved': 'set default', 'rejected': 'set default'}) + + +class AccountPayment(models.Model): + _inherit = "account.payment" + _inherits = {'account.move': 'move_id'} + + def _check_is_approver(self): + approval = self.env['ir.config_parameter'].sudo().get_param( + 'account_payment_approval.payment_approval') + approver_id = int(self.env['ir.config_parameter'].sudo().get_param( + 'account_payment_approval.approval_user_id')) + self.is_approver = True if self.env.user.id == approver_id and approval else False + + is_approver = fields.Boolean(compute=_check_is_approver, readonly=True) + + def action_post(self): + """Overwrites the _post() to validate the payment in the 'approved' stage too. + Currently Odoo allows payment posting only in draft stage. + """ + validation = self._check_payment_approval() + if validation: + if self.state == ('posted', 'cancel', 'waiting_approval', 'rejected'): + raise UserError(_("Only a draft or approved payment can be posted.")) + if any(inv.state != 'posted' for inv in self.reconciled_invoice_ids): + raise ValidationError(_("The payment cannot be processed because the invoice is not open!")) + self.move_id._post(soft=False) + + def _check_payment_approval(self): + if self.state == "draft": + first_approval = self.env['ir.config_parameter'].sudo().get_param( + 'account_payment_approval.payment_approval') + if first_approval: + amount = float(self.env['ir.config_parameter'].sudo().get_param( + 'account_payment_approval.approval_amount')) + payment_currency_id = int(self.env['ir.config_parameter'].sudo().get_param( + 'account_payment_approval.approval_currency_id')) + payment_amount = self.amount + if payment_currency_id: + if self.currency_id and self.currency_id.id != payment_currency_id: + currency_id = self.env['res.currency'].browse(payment_currency_id) + payment_amount = self.currency_id._convert( + self.amount, currency_id, self.company_id, + self.date or fields.Date.today(), round=True) + if payment_amount > amount: + self.write({ + 'state': 'waiting_approval' + }) + return False + return True + + def approve_transfer(self): + if self.is_approver: + self.write({ + 'state': 'approved' + }) + + def reject_transfer(self): + self.write({ + 'state': 'rejected' + }) diff --git a/account_payment_approval/models/res_config_settings.py b/account_payment_approval/models/res_config_settings.py new file mode 100644 index 000000000..a1f7cf040 --- /dev/null +++ b/account_payment_approval/models/res_config_settings.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + def _get_account_manager_ids(self): + user_ids = self.env['res.users'].search([]) + account_manager_ids = user_ids.filtered(lambda l: l.has_group('account.group_account_manager')) + return [('id', 'in', account_manager_ids.ids)] + + payment_approval = fields.Boolean('Payment Approval', config_parameter='account_payment_approval.payment_approval') + approval_user_id = fields.Many2one('res.users', string="Payment Approver", required=False, + domain=_get_account_manager_ids, + config_parameter='account_payment_approval.approval_user_id') + approval_amount = fields.Float( + 'Minimum Approval Amount', config_parameter='account_payment_approval.approval_amount', + help="If amount is 0.00, All the payments go through approval.") + approval_currency_id = fields.Many2one('res.currency', string='Approval Currency', + config_parameter='account_payment_approval.approval_currency_id', + help="Converts the payment amount to this currency if chosen.") diff --git a/account_payment_approval/static/description/assets/icons/check.png b/account_payment_approval/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/check.png differ diff --git a/account_payment_approval/static/description/assets/icons/chevron.png b/account_payment_approval/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/chevron.png differ diff --git a/account_payment_approval/static/description/assets/icons/cogs.png b/account_payment_approval/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/cogs.png differ diff --git a/account_payment_approval/static/description/assets/icons/consultation.png b/account_payment_approval/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/consultation.png differ diff --git a/account_payment_approval/static/description/assets/icons/ecom-black.png b/account_payment_approval/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/ecom-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/education-black.png b/account_payment_approval/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/education-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/hotel-black.png b/account_payment_approval/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/hotel-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/license.png b/account_payment_approval/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/license.png differ diff --git a/account_payment_approval/static/description/assets/icons/lifebuoy.png b/account_payment_approval/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/lifebuoy.png differ diff --git a/account_payment_approval/static/description/assets/icons/manufacturing-black.png b/account_payment_approval/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/manufacturing-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/pos-black.png b/account_payment_approval/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/pos-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/puzzle.png b/account_payment_approval/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/puzzle.png differ diff --git a/account_payment_approval/static/description/assets/icons/restaurant-black.png b/account_payment_approval/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/restaurant-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/service-black.png b/account_payment_approval/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/service-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/trading-black.png b/account_payment_approval/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/trading-black.png differ diff --git a/account_payment_approval/static/description/assets/icons/training.png b/account_payment_approval/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/training.png differ diff --git a/account_payment_approval/static/description/assets/icons/update.png b/account_payment_approval/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/update.png differ diff --git a/account_payment_approval/static/description/assets/icons/user.png b/account_payment_approval/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/user.png differ diff --git a/account_payment_approval/static/description/assets/icons/wrench.png b/account_payment_approval/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/account_payment_approval/static/description/assets/icons/wrench.png differ diff --git a/account_payment_approval/static/description/assets/misc/categories.png b/account_payment_approval/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/categories.png differ diff --git a/account_payment_approval/static/description/assets/misc/check-box.png b/account_payment_approval/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/check-box.png differ diff --git a/account_payment_approval/static/description/assets/misc/compass.png b/account_payment_approval/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/compass.png differ diff --git a/account_payment_approval/static/description/assets/misc/corporate.png b/account_payment_approval/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/corporate.png differ diff --git a/account_payment_approval/static/description/assets/misc/customer-support.png b/account_payment_approval/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/customer-support.png differ diff --git a/account_payment_approval/static/description/assets/misc/cybrosys-logo.png b/account_payment_approval/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/cybrosys-logo.png differ diff --git a/account_payment_approval/static/description/assets/misc/features.png b/account_payment_approval/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/features.png differ diff --git a/account_payment_approval/static/description/assets/misc/logo.png b/account_payment_approval/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/logo.png differ diff --git a/account_payment_approval/static/description/assets/misc/pictures.png b/account_payment_approval/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/pictures.png differ diff --git a/account_payment_approval/static/description/assets/misc/pie-chart.png b/account_payment_approval/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/pie-chart.png differ diff --git a/account_payment_approval/static/description/assets/misc/right-arrow.png b/account_payment_approval/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/right-arrow.png differ diff --git a/account_payment_approval/static/description/assets/misc/star.png b/account_payment_approval/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/star.png differ diff --git a/account_payment_approval/static/description/assets/misc/support.png b/account_payment_approval/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/support.png differ diff --git a/account_payment_approval/static/description/assets/misc/whatsapp.png b/account_payment_approval/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/account_payment_approval/static/description/assets/misc/whatsapp.png differ diff --git a/account_payment_approval/static/description/assets/modules/1.png b/account_payment_approval/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/1.png differ diff --git a/account_payment_approval/static/description/assets/modules/2.png b/account_payment_approval/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/2.png differ diff --git a/account_payment_approval/static/description/assets/modules/3.png b/account_payment_approval/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/3.png differ diff --git a/account_payment_approval/static/description/assets/modules/4.png b/account_payment_approval/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/4.png differ diff --git a/account_payment_approval/static/description/assets/modules/5.gif b/account_payment_approval/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/5.gif differ diff --git a/account_payment_approval/static/description/assets/modules/6.png b/account_payment_approval/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/account_payment_approval/static/description/assets/modules/6.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/1.png b/account_payment_approval/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..5eee6fe85 Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/1.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/2.png b/account_payment_approval/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..2f6c863b1 Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/2.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/3.png b/account_payment_approval/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..4bf2ddd2c Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/3.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/4.png b/account_payment_approval/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..7237984d8 Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/4.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/5.png b/account_payment_approval/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..7f8aae53c Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/5.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/6.png b/account_payment_approval/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..e99f8cf3f Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/6.png differ diff --git a/account_payment_approval/static/description/assets/screenshots/hero.gif b/account_payment_approval/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..ef1955ac2 Binary files /dev/null and b/account_payment_approval/static/description/assets/screenshots/hero.gif differ diff --git a/account_payment_approval/static/description/banner.png b/account_payment_approval/static/description/banner.png new file mode 100644 index 000000000..29bcb6544 Binary files /dev/null and b/account_payment_approval/static/description/banner.png differ diff --git a/account_payment_approval/static/description/icon.png b/account_payment_approval/static/description/icon.png new file mode 100644 index 000000000..2cf9b06cb Binary files /dev/null and b/account_payment_approval/static/description/icon.png differ diff --git a/account_payment_approval/static/description/index.html b/account_payment_approval/static/description/index.html new file mode 100644 index 000000000..efb998cdb --- /dev/null +++ b/account_payment_approval/static/description/index.html @@ -0,0 +1,563 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Payment Approval

+

Enables to use the approval feature in + customer and vendor payments.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module helps the accounting department to have a control over the payments. + It enables payment approval feature in the payment transaction. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Approval stage in payment. +
+
+ + Enable/disable payment approval from the settings. +
+
+ + Approval feature can be applied based on the given amount. +
+
+ + Currency wise amount specification. +
+
+ + Quick access of the approval stages like Waiting For Approval, Approved, Rejected etc + from the filter window. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+
+

+

Goto Settings and click on Invoicing

+ + +
+
+

Enable Payment Approval

+ +
+ +
+

Fill the fields.

+ +
+ +
+

+

Once the user tries to create a payment, it goes through payment approvals.

+ + +
+
+

+

Approvar can approve or reject request.

+ + +
+
+

+

User will be able to filter the payment records with 'Waiting For Approval', 'Approved' and 'Rejected'.

+ + +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/account_payment_approval/views/account_payment_view.xml b/account_payment_approval/views/account_payment_view.xml new file mode 100644 index 000000000..66b13f85a --- /dev/null +++ b/account_payment_approval/views/account_payment_view.xml @@ -0,0 +1,45 @@ + + + + account.payment.form + account.payment + + + + + + + + + + diff --git a/employee_documents_expiry/README.md b/employee_documents_expiry/README.md new file mode 100644 index 000000000..e810886aa --- /dev/null +++ b/employee_documents_expiry/README.md @@ -0,0 +1,40 @@ +Employee Documents +------------------ +Supporting Addon for HR, Manages Employee Related Documents + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: Tintuk Tomin (odoo@cybrosys.com) + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/employee_documents_expiry/__init__.py b/employee_documents_expiry/__init__.py new file mode 100644 index 000000000..e48f2d890 --- /dev/null +++ b/employee_documents_expiry/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/employee_documents_expiry/__manifest__.py b/employee_documents_expiry/__manifest__.py new file mode 100644 index 000000000..8c1521a1d --- /dev/null +++ b/employee_documents_expiry/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Employee Documents', + 'version': '16.0.1.0.0', + 'summary': """Manages Employee Documents With Expiry Notifications.""", + 'description': """Manages Employee Related Documents with Expiry Notifications.""", + 'category': 'Generic Modules/Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'hr'], + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_check_list_view.xml', + 'views/employee_document_view.xml', + ], + 'demo': ['data/data.xml'], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_documents_expiry/data/data.xml b/employee_documents_expiry/data/data.xml new file mode 100644 index 000000000..0583e0bb4 --- /dev/null +++ b/employee_documents_expiry/data/data.xml @@ -0,0 +1,27 @@ + + + + + + Education Certificate + entry + + + Salary Certificate + entry + + + Experience Certificate + entry + + + Experience Certificate + exit + + + Salary Certificate + exit + + + + \ No newline at end of file diff --git a/employee_documents_expiry/doc/RELEASE_NOTES.md b/employee_documents_expiry/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..ac79b7c46 --- /dev/null +++ b/employee_documents_expiry/doc/RELEASE_NOTES.md @@ -0,0 +1,10 @@ +## Module + +#### 10.10.2021 +#### Version 16.0.1.0.0 +#### ADD +Initial commit for Employee Documents Expiry + + + + diff --git a/employee_documents_expiry/models/__init__.py b/employee_documents_expiry/models/__init__.py new file mode 100644 index 000000000..745c3e7f6 --- /dev/null +++ b/employee_documents_expiry/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import employee_documents +from . import employee_entry_exit_check_list diff --git a/employee_documents_expiry/models/employee_documents.py b/employee_documents_expiry/models/employee_documents.py new file mode 100644 index 000000000..531ade041 --- /dev/null +++ b/employee_documents_expiry/models/employee_documents.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from datetime import datetime, date, timedelta + +from odoo import models, fields, api, _ + + +class HrEmployeeDocument(models.Model): + _name = 'hr.employee.document' + _description = 'HR Employee Documents' + + def mail_reminder(self): + now = datetime.now() + timedelta(days=1) + date_now = now.date() + match = self.search([]) + for doc in match: + if doc.expiry_date: + exp_date = doc.expiry_date - timedelta(days=7) + if date_now >= exp_date: + mail_content = " Hello " + str(doc.employee_ref.name) + ",
Your Document " + str(doc.name) + "is going to expire on " + \ + str(doc.expiry_date) + ". Please renew it before expiry date" + main_content = { + 'subject': _('Document-%s Expired On %s') % (str(doc.name), str(doc.expiry_date)), + 'author_id': self.env.user.partner_id.id, + 'body_html': mail_content, + 'email_to': doc.employee_ref.work_email, + } + self.env['mail.mail'].create(main_content).send() + + @api.onchange('expiry_date') + def check_expr_date(self): + for each in self: + exp_date = each.expiry_date + if exp_date and exp_date < date.today(): + return { + 'warning': { + 'title': _('Document Expired.'), + 'message': _("Your Document Is Already Expired.") + } + } + + name = fields.Char(string='Document Number', required=True, copy=False) + document_name = fields.Many2one('employee.checklist', string='Document', required=True) + description = fields.Text(string='Description', copy=False) + expiry_date = fields.Date(string='Expiry Date', copy=False) + employee_ref = fields.Many2one('hr.employee', copy=False) + doc_attachment_id = fields.Many2many('ir.attachment', 'doc_attach_rel', 'doc_id', 'attach_id3', string="Attachment", + help='You can attach the copy of your document', copy=False) + issue_date = fields.Date(string='Issue Date', default=fields.Date.context_today, copy=False) + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + def _document_count(self): + for rec in self: + rec.document_count = self.env['hr.employee.document'].search_count([('employee_ref', '=', rec.id)]) + + def document_view(self): + self.ensure_one() + return { + 'name': _('Documents'), + 'domain': [('employee_ref', '=', self.id)], + 'res_model': 'hr.employee.document', + 'type': 'ir.actions.act_window', + 'view_mode': 'tree,form', + 'view_type': 'form', + 'help': _('''

+ Click to Create for New Documents +

'''), + 'limit': 80, + 'context': {'default_employee_ref': self.id} + } + document_count = fields.Integer(compute='_document_count', string='# Documents') + + +class HrEmployeeAttachment(models.Model): + _inherit = 'ir.attachment' + + doc_attach_rel = fields.Many2many('hr.employee.document', 'doc_attachment_id', 'attach_id3', 'doc_id', + string="Attachment", invisible=1) diff --git a/employee_documents_expiry/models/employee_entry_exit_check_list.py b/employee_documents_expiry/models/employee_entry_exit_check_list.py new file mode 100644 index 000000000..7e58bc0fe --- /dev/null +++ b/employee_documents_expiry/models/employee_entry_exit_check_list.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class EmployeeEntryDocuments(models.Model): + _name = 'employee.checklist' + _inherit = 'mail.thread' + _description = "Employee Documents" + + def name_get(self): + result = [] + for each in self: + if each.document_type == 'entry': + name = each.name + '_en' + elif each.document_type == 'exit': + name = each.name + '_ex' + elif each.document_type == 'other': + name = each.name + '_ot' + result.append((each.id, name)) + return result + + name = fields.Char(string='Document Name', copy=False, required=1) + document_type = fields.Selection([('entry', 'Entry Process'), + ('exit', 'Exit Process'), + ('other', 'Other')], string='Checklist Type', required=1) diff --git a/employee_documents_expiry/security/ir.model.access.csv b/employee_documents_expiry/security/ir.model.access.csv new file mode 100644 index 000000000..bb52b71f5 --- /dev/null +++ b/employee_documents_expiry/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_hr_employee_checklist_user,employee.checklist.user,model_employee_checklist,hr.group_hr_user,1,1,1,1 +access_hr_employee_checklist_emp,employee.checklist.emp,model_employee_checklist,base.group_user,1,1,1,0 +access_hr_employee_document_employee,hr.employee.document_employee,model_hr_employee_document,base.group_user,1,1,1,0 +access_hr_employee_document_manager,hr.employee.document_manager,model_hr_employee_document,hr.group_hr_manager,1,1,1,1 +access_hr_employee_document_user,hr.employee.document_user,model_hr_employee_document,hr.group_hr_user,1,1,1,0 + diff --git a/employee_documents_expiry/static/description/assets/icons/check.png b/employee_documents_expiry/static/description/assets/icons/check.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/check.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/chevron.png b/employee_documents_expiry/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/chevron.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/cogs.png b/employee_documents_expiry/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/cogs.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/consultation.png b/employee_documents_expiry/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/consultation.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/ecom-black.png b/employee_documents_expiry/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/ecom-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/education-black.png b/employee_documents_expiry/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/education-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/hotel-black.png b/employee_documents_expiry/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/hotel-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/license.png b/employee_documents_expiry/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/license.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/lifebuoy.png b/employee_documents_expiry/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/manufacturing-black.png b/employee_documents_expiry/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/pos-black.png b/employee_documents_expiry/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/pos-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/puzzle.png b/employee_documents_expiry/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/puzzle.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/restaurant-black.png b/employee_documents_expiry/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/service-black.png b/employee_documents_expiry/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/service-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/trading-black.png b/employee_documents_expiry/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/trading-black.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/training.png b/employee_documents_expiry/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/training.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/update.png b/employee_documents_expiry/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/update.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/user.png b/employee_documents_expiry/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/user.png differ diff --git a/employee_documents_expiry/static/description/assets/icons/wrench.png b/employee_documents_expiry/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_documents_expiry/static/description/assets/icons/wrench.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/categories.png b/employee_documents_expiry/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/categories.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/check.png b/employee_documents_expiry/static/description/assets/misc/check.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/check.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/compass.png b/employee_documents_expiry/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/compass.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/corporate.png b/employee_documents_expiry/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/corporate.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/customer-support.png b/employee_documents_expiry/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/customer-support.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/cybrosys-logo.png b/employee_documents_expiry/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/cybrosys-logo.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/logo.png b/employee_documents_expiry/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/logo.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/pictures.png b/employee_documents_expiry/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/pictures.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/pie-chart.png b/employee_documents_expiry/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/pie-chart.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/right-arrow.png b/employee_documents_expiry/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/right-arrow.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/star.png b/employee_documents_expiry/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/star.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/support.png b/employee_documents_expiry/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/support.png differ diff --git a/employee_documents_expiry/static/description/assets/misc/whatsapp.png b/employee_documents_expiry/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/misc/whatsapp.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/approval_image.png b/employee_documents_expiry/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/approval_image.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/budget_image.png b/employee_documents_expiry/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/budget_image.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/gantt_image.png b/employee_documents_expiry/static/description/assets/modules/gantt_image.png new file mode 100644 index 000000000..4810fc34d Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/gantt_image.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/library_image.png b/employee_documents_expiry/static/description/assets/modules/library_image.png new file mode 100644 index 000000000..77be44d63 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/library_image.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/pos_order_image.png b/employee_documents_expiry/static/description/assets/modules/pos_order_image.png new file mode 100644 index 000000000..1217263a6 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/pos_order_image.png differ diff --git a/employee_documents_expiry/static/description/assets/modules/whatsapp_image.gif b/employee_documents_expiry/static/description/assets/modules/whatsapp_image.gif new file mode 100644 index 000000000..4c0c52982 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/modules/whatsapp_image.gif differ diff --git a/employee_documents_expiry/static/description/assets/screenshots/demo1.png b/employee_documents_expiry/static/description/assets/screenshots/demo1.png new file mode 100644 index 000000000..e3f5f3296 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/screenshots/demo1.png differ diff --git a/employee_documents_expiry/static/description/assets/screenshots/demo2.png b/employee_documents_expiry/static/description/assets/screenshots/demo2.png new file mode 100644 index 000000000..01da402bc Binary files /dev/null and b/employee_documents_expiry/static/description/assets/screenshots/demo2.png differ diff --git a/employee_documents_expiry/static/description/assets/screenshots/demo3.png b/employee_documents_expiry/static/description/assets/screenshots/demo3.png new file mode 100644 index 000000000..fa4fe6913 Binary files /dev/null and b/employee_documents_expiry/static/description/assets/screenshots/demo3.png differ diff --git a/employee_documents_expiry/static/description/assets/screenshots/hero.png b/employee_documents_expiry/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..b5f9076cf Binary files /dev/null and b/employee_documents_expiry/static/description/assets/screenshots/hero.png differ diff --git a/employee_documents_expiry/static/description/banner.png b/employee_documents_expiry/static/description/banner.png new file mode 100644 index 000000000..c0aa245ce Binary files /dev/null and b/employee_documents_expiry/static/description/banner.png differ diff --git a/employee_documents_expiry/static/description/icon.png b/employee_documents_expiry/static/description/icon.png new file mode 100644 index 000000000..6ff26828e Binary files /dev/null and b/employee_documents_expiry/static/description/icon.png differ diff --git a/employee_documents_expiry/static/description/index.html b/employee_documents_expiry/static/description/index.html new file mode 100644 index 000000000..299f4fcbe --- /dev/null +++ b/employee_documents_expiry/static/description/index.html @@ -0,0 +1,602 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

+ Employee Documents

+

Manages Employee Related Documents.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Each and every detail associated with an employee is useful for any organization for better Human + resource management. So the employee documents with such necessary information must be saved and + used accordingly. 'Employee Documents' is a useful tool that can help you to store and manage the + employee related documents like certificates, appraisal reports, passport, license etc. The + application also allows you to set an alert message on reaching the expiration/any other related + dates of a document (like an expiration of passport). +
+
+ + + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Manage Employee Documents

+

+ Easily manage documents of employees

+
+
+ +
+
+ +
+
+

+ Documents Types

+

+ Different document types.

+
+
+ + +
+
+ +
+
+

+ Expiry Date

+

+ Expiry Date for Documents.

+
+
+ +
+
+ +
+
+

+ Expiry Date Validation

+

+ Validation for Expiry Date.

+
+
+ +
+
+ +
+
+

+ Mail Notifications

+

+ Mail Notification Based on Expiry Date.

+
+
+ +
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Click on the super button

+

Documents Super Button..

+ +
+ +
+

Document Form

+

Fill in the form to add a new document.

+ +
+ +
+

Notification Mails +

+

Notification mails for expired documents..

+ +
+ +
+
+ + + + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 27707 +

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/employee_documents_expiry/views/employee_check_list_view.xml b/employee_documents_expiry/views/employee_check_list_view.xml new file mode 100644 index 000000000..c698be1ac --- /dev/null +++ b/employee_documents_expiry/views/employee_check_list_view.xml @@ -0,0 +1,34 @@ + + + + + employee.checklist.form + employee.checklist + +
+ + + + + + +
+ + +
+
+
+
+ + + employee.checklist.tree + employee.checklist + + + + + + + + +
\ No newline at end of file diff --git a/employee_documents_expiry/views/employee_document_view.xml b/employee_documents_expiry/views/employee_document_view.xml new file mode 100644 index 000000000..dd9b9ce15 --- /dev/null +++ b/employee_documents_expiry/views/employee_document_view.xml @@ -0,0 +1,67 @@ + + + + + HR Employee Data Expiration + + code + model.mail_reminder() + 1 + days + -1 + + + + hr.employee.document.form + hr.employee.document + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + hr.employee.document.tree + hr.employee.document + + + + + + + + + + + hr.employee.form.view + hr.employee + + +
+ +
+
+
+ +
\ No newline at end of file diff --git a/employee_dynamic_fields/README.rst b/employee_dynamic_fields/README.rst new file mode 100644 index 000000000..34ce5d68c --- /dev/null +++ b/employee_dynamic_fields/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Employee Dynamic Fields +======================= + +Employee Dynamic Fields + +Installation +============ +- www.odoo.com/documentation/13.0/setup/install.html +- Install our custom addon + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: + Version 14: Minhaj T @cybrosys + Version 15: Musthafa C @cybrosys + Version 16: Viswanth K @cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ \ No newline at end of file diff --git a/employee_dynamic_fields/__init__.py b/employee_dynamic_fields/__init__.py new file mode 100644 index 000000000..391a73402 --- /dev/null +++ b/employee_dynamic_fields/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models +from . import wizard diff --git a/employee_dynamic_fields/__manifest__.py b/employee_dynamic_fields/__manifest__.py new file mode 100644 index 000000000..af1f5cd92 --- /dev/null +++ b/employee_dynamic_fields/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Employee Dynamic Fields', + 'version': '16.0.1.0.0', + 'summary': """Ability To Add Custom Fields in Employee From User Level""", + 'description': """Ability To Add Custom Fields in Employee From User Level,Employee Custom Fields, + Employee Dynamic Fields, odoo13, Dynamic Employee Fields, Dynamic Fields, Create Dynamic Fields, Community odoo Studio""", + 'category': 'Extra Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['hr'], + 'data': [ + 'data/widget_data.xml', + 'security/ir.model.access.csv', + 'security/employee_security_group.xml', + 'wizard/employee_fields_view.xml', + 'views/ir_fields_search_view.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_dynamic_fields/data/widget_data.xml b/employee_dynamic_fields/data/widget_data.xml new file mode 100644 index 000000000..8f1ba671a --- /dev/null +++ b/employee_dynamic_fields/data/widget_data.xml @@ -0,0 +1,40 @@ + + + + + + image + Image + + + + many2many_tags + Many2many Tags + + + + binary + Binary + + + + radio + Radio + + + + priority + Priority + + + + monetary + Monetary + + + + selection + Selection + + + diff --git a/employee_dynamic_fields/doc/RELEASE_NOTES.md b/employee_dynamic_fields/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..516c75484 --- /dev/null +++ b/employee_dynamic_fields/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 31.08.2022 +#### Version 16.0.1.0.0 +##### ADD + +- Initial Commit for employee_dynamic_fields + + diff --git a/employee_dynamic_fields/models/__init__.py b/employee_dynamic_fields/models/__init__.py new file mode 100644 index 000000000..ebb5fbd46 --- /dev/null +++ b/employee_dynamic_fields/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import ir_model_fields +from . import field_widgets + + diff --git a/employee_dynamic_fields/models/field_widgets.py b/employee_dynamic_fields/models/field_widgets.py new file mode 100644 index 000000000..04a1d5b8d --- /dev/null +++ b/employee_dynamic_fields/models/field_widgets.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import api, models, fields, _ + + +class FieldWidgets(models.Model): + """We can't filter a selection field dynamically + so when we select a field its widgets also need to change according to the selected + field type, we can't do it by a 'selection' field, need a 'Many2one' field. + """ + + _name = 'employee.field.widgets' + _rec_name = 'description' + _description = 'Field Widgets' + + name = fields.Char(string="Name") + description = fields.Char(string="Description") diff --git a/employee_dynamic_fields/models/ir_model_fields.py b/employee_dynamic_fields/models/ir_model_fields.py new file mode 100644 index 000000000..2e2e0df05 --- /dev/null +++ b/employee_dynamic_fields/models/ir_model_fields.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import api, models, fields, _ + + +class IrModelFields(models.Model): + """Adding a new field to understand the dynamically created fields.""" + + _inherit = 'ir.model.fields' + + is_employee_dynamic = fields.Boolean(string="Dynamic Field") diff --git a/employee_dynamic_fields/security/employee_security_group.xml b/employee_dynamic_fields/security/employee_security_group.xml new file mode 100644 index 000000000..a925aa4cc --- /dev/null +++ b/employee_dynamic_fields/security/employee_security_group.xml @@ -0,0 +1,8 @@ + + + + + Create Employee Custom Fields + + + diff --git a/employee_dynamic_fields/security/ir.model.access.csv b/employee_dynamic_fields/security/ir.model.access.csv new file mode 100644 index 000000000..ae8548803 --- /dev/null +++ b/employee_dynamic_fields/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +"access_wizard_employee_dynamic_fields_base_user","wizard.employee.dynamic.fields.base.user","model_employee_dynamic_fields",,1,1,1,1 +"access_employee_field_widgets_base_user","wizard.employee.field.widgets.base.user","model_employee_field_widgets",,1,1,1,1 + diff --git a/employee_dynamic_fields/static/description/assets/icons/check.png b/employee_dynamic_fields/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/check.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/chevron.png b/employee_dynamic_fields/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/chevron.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/cogs.png b/employee_dynamic_fields/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/cogs.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/consultation.png b/employee_dynamic_fields/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/consultation.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/ecom-black.png b/employee_dynamic_fields/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/ecom-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/education-black.png b/employee_dynamic_fields/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/education-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/hotel-black.png b/employee_dynamic_fields/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/hotel-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/license.png b/employee_dynamic_fields/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/license.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/lifebuoy.png b/employee_dynamic_fields/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/manufacturing-black.png b/employee_dynamic_fields/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/pos-black.png b/employee_dynamic_fields/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/pos-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/puzzle.png b/employee_dynamic_fields/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/puzzle.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/restaurant-black.png b/employee_dynamic_fields/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/service-black.png b/employee_dynamic_fields/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/service-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/trading-black.png b/employee_dynamic_fields/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/trading-black.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/training.png b/employee_dynamic_fields/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/training.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/update.png b/employee_dynamic_fields/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/update.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/user.png b/employee_dynamic_fields/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/user.png differ diff --git a/employee_dynamic_fields/static/description/assets/icons/wrench.png b/employee_dynamic_fields/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/icons/wrench.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/categories.png b/employee_dynamic_fields/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/categories.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/check-box.png b/employee_dynamic_fields/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/check-box.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/compass.png b/employee_dynamic_fields/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/compass.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/corporate.png b/employee_dynamic_fields/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/corporate.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/customer-support.png b/employee_dynamic_fields/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/customer-support.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/cybrosys-logo.png b/employee_dynamic_fields/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/cybrosys-logo.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/features.png b/employee_dynamic_fields/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/features.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/logo.png b/employee_dynamic_fields/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/logo.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/pictures.png b/employee_dynamic_fields/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/pictures.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/pie-chart.png b/employee_dynamic_fields/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/pie-chart.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/right-arrow.png b/employee_dynamic_fields/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/right-arrow.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/star.png b/employee_dynamic_fields/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/star.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/support.png b/employee_dynamic_fields/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/support.png differ diff --git a/employee_dynamic_fields/static/description/assets/misc/whatsapp.png b/employee_dynamic_fields/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/misc/whatsapp.png differ diff --git a/employee_dynamic_fields/static/description/assets/modules/1.png b/employee_dynamic_fields/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/1.png differ diff --git a/employee_dynamic_fields/static/description/assets/modules/2.png b/employee_dynamic_fields/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/2.png differ diff --git a/employee_dynamic_fields/static/description/assets/modules/3.png b/employee_dynamic_fields/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/3.png differ diff --git a/employee_dynamic_fields/static/description/assets/modules/4.png b/employee_dynamic_fields/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/4.png differ diff --git a/employee_dynamic_fields/static/description/assets/modules/5.gif b/employee_dynamic_fields/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/5.gif differ diff --git a/employee_dynamic_fields/static/description/assets/modules/6.png b/employee_dynamic_fields/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/modules/6.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/1.png b/employee_dynamic_fields/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..591f4ac14 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/1.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/2.png b/employee_dynamic_fields/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..56b7a0a6e Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/2.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/3.png b/employee_dynamic_fields/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..10f7e7b92 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/3.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/4.png b/employee_dynamic_fields/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..b2da2fff9 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/4.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/5.png b/employee_dynamic_fields/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..c137c2948 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/5.png differ diff --git a/employee_dynamic_fields/static/description/assets/screenshots/hero.gif b/employee_dynamic_fields/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..8735f3fd4 Binary files /dev/null and b/employee_dynamic_fields/static/description/assets/screenshots/hero.gif differ diff --git a/employee_dynamic_fields/static/description/banner.png b/employee_dynamic_fields/static/description/banner.png new file mode 100644 index 000000000..7c11665ca Binary files /dev/null and b/employee_dynamic_fields/static/description/banner.png differ diff --git a/employee_dynamic_fields/static/description/icon.png b/employee_dynamic_fields/static/description/icon.png new file mode 100644 index 000000000..74bc6a6ba Binary files /dev/null and b/employee_dynamic_fields/static/description/icon.png differ diff --git a/employee_dynamic_fields/static/description/index.html b/employee_dynamic_fields/static/description/index.html new file mode 100644 index 000000000..e08f3502f --- /dev/null +++ b/employee_dynamic_fields/static/description/index.html @@ -0,0 +1,558 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Employee Dynamic Fields

+

Create Custom Fields in Employee from User level.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Employee Dynamic Fields module helps with easy creation of custom fields in employee without any coding. + This module helps to add new fields on the employee form as per one's requirement. + From the Employee menu, one can click create fields and can create a new custom field without any coding. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Creates custom fields in employee without coding +
+
+ + Can easily set the position of fields +
+
+ + Can select widgets for fields +
+
+ + Can set the field properties (help,required,copied,read-only,indexed) +
+
+ + Can easily filter the dynamically created fields from settings +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Create Employee Custom Fields

+

After installation, Give Access to the user to 'Create Employee Custom Fields' from User settings.

+ +
+ +
+

Create Fields

+

Click 'Create Fields' menu to create custom fields.

+ +
+ +
+

Widgets

+

Fill in the details (also can select 'Widgets' if needed) and click create fields , a new field will create.

+ +
+ +
+

Employee View

+

A new field is created in the employee view.

+ +
+ +
+

Filter Dynamically Created Fields

+

Can filter the dynamically created fields from the settings.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/employee_dynamic_fields/views/ir_fields_search_view.xml b/employee_dynamic_fields/views/ir_fields_search_view.xml new file mode 100644 index 000000000..c2133bf4e --- /dev/null +++ b/employee_dynamic_fields/views/ir_fields_search_view.xml @@ -0,0 +1,15 @@ + + + + + ir.model.fields.employee.dynamic.fields + ir.model.fields + + + + + + + + + diff --git a/employee_dynamic_fields/wizard/__init__.py b/employee_dynamic_fields/wizard/__init__.py new file mode 100644 index 000000000..08bfcf80a --- /dev/null +++ b/employee_dynamic_fields/wizard/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import employee_fields + + diff --git a/employee_dynamic_fields/wizard/employee_fields.py b/employee_dynamic_fields/wizard/employee_fields.py new file mode 100644 index 000000000..775b6937b --- /dev/null +++ b/employee_dynamic_fields/wizard/employee_fields.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Techno Solutions () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +import xml.etree.ElementTree as xee +from odoo import api, models, fields, _ + + +class EmployeeDynamicFields(models.TransientModel): + _name = 'employee.dynamic.fields' + _description = 'Dynamic Fields' + _inherit = 'ir.model.fields' + + @api.model + def get_possible_field_types(self): + """Return all available field types other than 'one2many' and 'reference' fields.""" + field_list = sorted((key, key) for key in fields.MetaField.by_type) + field_list.remove(('one2many', 'one2many')) + field_list.remove(('reference', 'reference')) + return field_list + + def set_domain(self): + """Return the fields that currently present in the form""" + view_id = self.env.ref('hr.view_employee_form') + view_arch = str(view_id.arch_base) + doc = xee.fromstring(view_arch) + print("doc===", doc) + field_list = [] + for tag in doc.findall('.//field'): + print("tag==", tag) + field_list.append(tag.attrib['name']) + model_id = self.env['ir.model'].sudo().search([('model', '=', 'hr.employee')]) + return [('model_id', '=', model_id.id), ('state', '=', 'base'), ('name', 'in', field_list)] + + def _set_default(self): + model_id = self.env['ir.model'].sudo().search([('model', '=', 'hr.employee')]) + return [('id', '=', model_id.id)] + + def create_fields(self): + self.env['ir.model.fields'].sudo().create({'name': self.name, + 'field_description': self.field_description, + 'model_id': self.model_id.id, + 'ttype': self.field_type, + 'relation': self.ref_model_id.model, + 'required': self.required, + 'index': self.index, + 'store': self.store, + 'help': self.help, + 'readonly': self.readonly, + 'selection': self.selection_field, + 'copied': self.copied, + 'is_employee_dynamic': True + }) + inherit_id = self.env.ref('hr.view_employee_form') + arch_base = _('' + '' + '' + '' + '' + '') % (self.position_field.name, self.position, self.name) + if self.widget: + arch_base = _('' + '' + '' + '' + '' + '') % (self.position_field.name, self.position, self.name, self.widget.name) + + self.env['ir.ui.view'].sudo().create({'name': 'employee.dynamic.fields', + 'type': 'form', + 'model': 'hr.employee', + 'mode': 'extension', + 'inherit_id': inherit_id.id, + 'arch_base': arch_base, + 'active': True}) + return { + 'type': 'ir.actions.client', + 'tag': 'reload', + } + + position_field = fields.Many2one('ir.model.fields', string='Field Name', + domain=set_domain, required=True) + position = fields.Selection([('before', 'Before'), + ('after', 'After')], string='Position', required=True) + model_id = fields.Many2one('ir.model', string='Model', required=True, index=True, ondelete='cascade', + help="The model this field belongs to", domain=_set_default) + ref_model_id = fields.Many2one('ir.model', string='Model', index=True) + # In odoo 13 the field 'selection' is deprecated, so adding a new field to get the selection values. + selection_field = fields.Char(string="Selection Options") + rel_field = fields.Many2one('ir.model.fields', string='Related Field') + field_type = fields.Selection(selection='get_possible_field_types', string='Field Type', required=True) + ttype = fields.Selection(string="Field Type", related='field_type') + widget = fields.Many2one('employee.field.widgets', string='Widget') + groups = fields.Many2many('res.groups', 'employee_dynamic_fields_group_rel', 'field_id', 'group_id') + extra_features = fields.Boolean(string="Show Extra Properties") + + @api.depends('field_type') + @api.onchange('field_type') + def onchange_field_type(self): + if self.field_type: + if self.field_type == 'binary': + return {'domain': {'widget': [('name', '=', 'image')]}} + elif self.field_type == 'many2many': + return {'domain': {'widget': [('name', 'in', ['many2many_tags', 'binary'])]}} + elif self.field_type == 'selection': + return {'domain': { + 'widget': [('name', 'in', ['radio', 'priority'])]}} + elif self.field_type == 'float': + return {'domain': {'widget': [('name', '=', 'monetary')]}} + elif self.field_type == 'many2one': + return {'domain': {'widget': [('name', '=', 'selection')]}} + else: + return {'domain': {'widget': [('id', '=', False)]}} + return {'domain': {'widget': [('id', '=', False)]}} + + +class Employee(models.Model): + _description = 'Employee' + _inherit = 'hr.employee' + + x_currency_id = fields.Many2one('res.currency', string='Currency') diff --git a/employee_dynamic_fields/wizard/employee_fields_view.xml b/employee_dynamic_fields/wizard/employee_fields_view.xml new file mode 100644 index 000000000..a54b3c17f --- /dev/null +++ b/employee_dynamic_fields/wizard/employee_fields_view.xml @@ -0,0 +1,74 @@ + + + + + employee.dynamic.fields.form + employee.dynamic.fields + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + Create Custom Fields + employee.dynamic.fields + form + + new + + + + + +
diff --git a/employee_orientation/README.rst b/employee_orientation/README.rst new file mode 100644 index 000000000..b471b923d --- /dev/null +++ b/employee_orientation/README.rst @@ -0,0 +1,49 @@ +Employee Orientation v16 +======================== +This module developed to manage employee orientation&training programs. + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Anusha @cybrosys, odoo@cybrosys.com + Niyas V11 @cybrosys, odoo@cybrosys.com + Kavya Raveendran V12 odoo@cybrosys.com + Nimisha Murali V13 @cybrosys odoo@cybrosys.com + Muhammed P V14 @cybrosys odoo@cybrosys.com + Gion V15 @cybrosys odoo@cybrosys.com + Sabeel B V16 @cybrosys odoo@cybrosys.com + + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + + + diff --git a/employee_orientation/__init__.py b/employee_orientation/__init__.py new file mode 100644 index 000000000..bba0631a1 --- /dev/null +++ b/employee_orientation/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models +from . import wizard diff --git a/employee_orientation/__manifest__.py b/employee_orientation/__manifest__.py new file mode 100644 index 000000000..dce68120a --- /dev/null +++ b/employee_orientation/__manifest__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': "Employee Orientation & Training", + 'version': '16.0.1.0.0', + 'category': "Generic Modules/Human Resources", + 'summary': """Employee Orientation/Training Program""", + 'description': 'Complete Employee Orientation/Training Program', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'hr'], + 'data': [ + 'data/orientation_request_mail_template.xml', + 'views/orientation_checklist_line.xml', + 'views/employee_orientation.xml', + 'views/orientation_checklist.xml', + 'views/orientation_checklists_request.xml', + 'views/orientation_checklist_sequence.xml', + 'views/print_pack_certificates_template.xml', + 'views/report.xml', + 'views/employee_training.xml', + 'wizard/orientation_complete.xml', + 'security/ir.model.access.csv', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_orientation/data/orientation_request_mail_template.xml b/employee_orientation/data/orientation_request_mail_template.xml new file mode 100644 index 000000000..bcb9645d4 --- /dev/null +++ b/employee_orientation/data/orientation_request_mail_template.xml @@ -0,0 +1,135 @@ + + + + + Employee Orientation Request + {{(object.user_id.login or object.company_id.email)}} + {{(object.partner_id.work_email)}} + Employee Orientation Request + + + +
+

+ Hello + , +

+

+ You are requested to conduct orientation program listed below. +

+

+ Check Line: + +

+

+ Employee: + +

+ +

+ Expected Date: + +

+
+
+

+ Thank you! +

+
+
+

+ + + +

+
+
+ + + + +
+ Phone: + +
+
+ +
+ Web : + + + +
+ +
+

+
+
+
+
+ + + Employee Training program + {{(object.user_id.email or object.company_id.email)}} + {{(object.program_convener_id.login)}} + Employee Training Request + + + +
+

+ Hello + , +

+

+ You are requested to conduct + + Training program for + + department + + from + + to + + + . +

+
+

+ Thank you! +

+
+
+

+ + + +

+
+
+ + + + + +
+ Phone: + +
+
+ +
+ Web : + + + +
+
+

+
+
+
+
+
+
\ No newline at end of file diff --git a/employee_orientation/doc/RELEASE_NOTES.md b/employee_orientation/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..7396a9981 --- /dev/null +++ b/employee_orientation/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 25.08.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial Commit + + diff --git a/employee_orientation/models/__init__.py b/employee_orientation/models/__init__.py new file mode 100644 index 000000000..75fb79bf4 --- /dev/null +++ b/employee_orientation/models/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import orientation_checklist_line +from . import orientation_checklist +from . import employee_orientation +from . import orientation_checklist_request +from . import employee_training +from . import report diff --git a/employee_orientation/models/employee_orientation.py b/employee_orientation/models/employee_orientation.py new file mode 100644 index 000000000..57fa20f82 --- /dev/null +++ b/employee_orientation/models/employee_orientation.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models, _ + + +class Orientation(models.Model): + _name = 'employee.orientation' + _description = "Employee Orientation" + _inherit = 'mail.thread' + + name = fields.Char(string='Employee Orientation', readonly=True, default=lambda self: _('New')) + employee_id = fields.Many2one('hr.employee', string='Employee', required=True) + department_id = fields.Many2one('hr.department', string='Department', related='employee_id.department_id', + required=True) + date = fields.Datetime(string="Date") + responsible_user_id = fields.Many2one('res.users', string='Responsible User') + employee_company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + parent_id = fields.Many2one('hr.employee', string='Manager', related='employee_id.parent_id') + job_id = fields.Many2one('hr.job', string='Job Title', related='employee_id.job_id', + domain="[('department_id', '=', department_id)]") + orientation_id = fields.Many2one('orientation.checklist', string='Orientation Checklist', + domain="[('checklist_department_id','=', department_id)]", required=True) + note = fields.Text('Description') + orientation_request_ids = fields.One2many('orientation.request', 'request_orientation_id', string='Orientation Request') + state = fields.Selection([ + ('draft', 'Draft'), + ('confirm', 'Confirmed'), + ('cancel', 'Canceled'), + ('complete', 'Completed'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') + + def confirm_orientation(self): + self.write({'state': 'confirm'}) + for values in self.orientation_id.checklist_line_ids: + self.env['orientation.request'].create({ + 'request_name': values.line_name, + 'request_orientation_id': self.id, + 'partner_id': values.responsible_user_id.id, + 'request_date': self.date, + 'employee_id': self.employee_id.id, + }) + + def cancel_orientation(self): + for request in self.orientation_request_ids: + request.state = 'cancel' + self.write({'state': 'cancel'}) + + def complete_orientation(self): + force_complete = False + for request in self.orientation_request_ids: + if request.state == 'new': + force_complete = True + if force_complete: + return { + 'name': 'Complete Orientation', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'orientation.force.complete', + 'type': 'ir.actions.act_window', + 'context': {'default_orientation_id': self.id}, + 'target': 'new', + } + self.write({'state': 'complete'}) + + @api.model + def create(self, vals): + vals['name'] = self.env['ir.sequence'].next_by_code('employee.orientation') + result = super(Orientation, self).create(vals) + return result diff --git a/employee_orientation/models/employee_training.py b/employee_orientation/models/employee_training.py new file mode 100644 index 000000000..6a423ee59 --- /dev/null +++ b/employee_orientation/models/employee_training.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta +from odoo import api, fields, models, _ + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + certificates = fields.Boolean(default=True, string="Certificates") + + +class EmployeeTraining(models.Model): + _name = 'employee.training' + _rec_name = 'program_name' + _description = "Employee Training" + _inherit = 'mail.thread' + + program_name = fields.Char(string='Training Program', required=True) + program_department_id = fields.Many2one('hr.department', string='Department', required=True) + program_convener_id = fields.Many2one('res.users', string='Responsible User', size=32, required=True) + training_ids = fields.One2many('hr.employee', string='Employee Details', compute="employee_details") + note_id = fields.Text('Description') + date_from = fields.Datetime(string="Date From") + date_to = fields.Datetime(string="Date To") + user_id = fields.Many2one('res.users', string='users', default=lambda self: self.env.user) + company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + + state = fields.Selection([ + ('new', 'New'), + ('confirm', 'Confirmed'), + ('cancel', 'Canceled'), + ('complete', 'Completed'), + ('print', 'Print'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='new') + + @api.depends('program_department_id') + def employee_details(self): + datas = self.env['hr.employee'].search([('department_id', '=', self.program_department_id.id)]) + self.training_ids = datas + + def print_event(self): + self.ensure_one() + started_date = datetime.strftime(self.create_date, "%Y-%m-%d ") + duration = (self.write_date - self.create_date).days + pause = relativedelta(hours=0) + difference = relativedelta(self.write_date, self.create_date) - pause + hours = difference.hours + minutes = difference.minutes + data = { + 'dept_id': self.program_department_id.id, + 'program_name': self.program_name, + 'company_name': self.company_id.name, + 'date_to': started_date, + 'duration': duration, + 'hours': hours, + 'minutes': minutes, + 'program_convener': self.program_convener_id.name, + + } + return self.env.ref('employee_orientation.print_pack_certificates').report_action(self, data=data) + + def complete_event(self): + self.write({'state': 'complete'}) + + def confirm_event(self): + self.write({'state': 'confirm'}) + + def cancel_event(self): + self.write({'state': 'cancel'}) + + def confirm_send_mail(self): + self.ensure_one() + ir_model_data = self.env['ir.model.data'] + try: + template_id = ir_model_data._xmlid_lookup('employee_orientation.orientation_training_mailer')[2] + except ValueError: + template_id = False + try: + compose_form_id = ir_model_data._xmlid_lookup('mail.email_compose_message_wizard_form')[2] + except ValueError: + compose_form_id = False + ctx = dict(self.env.context or {}) + ctx.update({ + 'default_model': 'employee.training', + '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, + } diff --git a/employee_orientation/models/orientation_checklist.py b/employee_orientation/models/orientation_checklist.py new file mode 100644 index 000000000..0fe0ea7ef --- /dev/null +++ b/employee_orientation/models/orientation_checklist.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, _ + + +class OrientationChecklist(models.Model): + _name = 'orientation.checklist' + _description = "Checklist" + _rec_name = 'checklist_name' + _inherit = 'mail.thread' + + checklist_name = fields.Char(string='Name', required=True) + checklist_department_id = fields.Many2one('hr.department', string='Department', required=True) + active = fields.Boolean(string='Active', default=True, + help="Set active to false to hide the Orientation Checklist without removing it.") + checklist_line_ids = fields.Many2many('checklist.line', 'checklist_line_rel', String="Checklist") + + + + + + + diff --git a/employee_orientation/models/orientation_checklist_line.py b/employee_orientation/models/orientation_checklist_line.py new file mode 100644 index 000000000..e61319ce9 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_line.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class ChecklistLine(models.Model): + _name = 'checklist.line' + _rec_name = 'line_name' + + line_name = fields.Char(string='Name', required=True) + responsible_user_id = fields.Many2one('res.users', string='Responsible User', required=True) diff --git a/employee_orientation/models/orientation_checklist_request.py b/employee_orientation/models/orientation_checklist_request.py new file mode 100644 index 000000000..2339f5ad6 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_request.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api +from odoo.tools.translate import _ + + +class OrientationChecklistRequest(models.Model): + _name = 'orientation.request' + _description = "Employee Orientation Request" + _rec_name = 'request_name' + _inherit = 'mail.thread' + + request_name = fields.Char(string='Name') + request_orientation_id = fields.Many2one('employee.orientation', string='Employee Orientation') + employee_company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + partner_id = fields.Many2one('res.users', string='Responsible User') + request_date = fields.Date(string="Date") + employee_id = fields.Many2one('hr.employee', string='Employee') + request_expected_date = fields.Date(string="Expected Date") + attachment_id_1 = fields.Many2many('ir.attachment', 'orientation_rel_1', string="Attachment") + note = fields.Text('Description') + user_id = fields.Many2one('res.users', string='users', default=lambda self: self.env.user) + company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + state = fields.Selection([ + ('new', 'New'), + ('cancel', 'Cancel'), + ('complete', 'Completed'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='new') + + def confirm_send_mail(self): + self.ensure_one() + ir_model_data = self.env['ir.model.data'] + try: + template_id = ir_model_data._xmlid_lookup('employee_orientation.orientation_request_mailer')[2] + print(template_id) + except ValueError: + template_id = False + try: + compose_form_id = ir_model_data._xmlid_lookup('mail.email_compose_message_wizard_form')[2] + except ValueError: + compose_form_id = False + ctx = dict(self.env.context or {}) + print(template_id) + ctx.update({ + 'default_model': 'orientation.request', + '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, + } + + def confirm_request(self): + self.write({'state': "complete"}) + + def cancel_request(self): + self.write({'state': "cancel"}) diff --git a/employee_orientation/models/report.py b/employee_orientation/models/report.py new file mode 100644 index 000000000..b9c50966d --- /dev/null +++ b/employee_orientation/models/report.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, _ + + +class PackingReportValues(models.AbstractModel): + _name = 'report.employee_orientation.print_pack_template' + + @api.model + def _get_report_values(self, docids, data=None): + + lst = [] + empl_obj = self.env['hr.employee'].search([('department_id', '=', data['dept_id'])]) + docs = self.env['hr.employee'].browse(docids) + + for line in empl_obj: + lst.append({ + 'doc_ids': docs.ids, + 'doc_model': 'hr.employee', + 'name': line.name, + 'department_id': line.department_id.name, + 'program_name': data['program_name'], + 'company_name': data['company_name'], + 'date_to': data['date_to'], + 'program_convener': data['program_convener'], + 'duration': data['duration'], + 'hours': data['hours'], + 'minutes': data['minutes'], + }) + print(lst) + return { + 'data': lst, + } + diff --git a/employee_orientation/security/ir.model.access.csv b/employee_orientation/security/ir.model.access.csv new file mode 100644 index 000000000..b94468166 --- /dev/null +++ b/employee_orientation/security/ir.model.access.csv @@ -0,0 +1,10 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_user_orientation_request,orientation.request,model_orientation_request,hr.group_hr_user,1,1,1,1 +access_user_checklist_line,checklist.line,model_checklist_line,hr.group_hr_user,1,1,1,1 +access_user_employee_orientation,employee.orientation,model_employee_orientation,hr.group_hr_user,1,1,1,1 +access_manager_employee_orientation_request,orientation.checklist,model_orientation_checklist,hr.group_hr_user,1,1,1,1 +access_user_employee_training,employee.training,model_employee_training,hr.group_hr_user,1,1,1,1 +access_manager_employee_training,employee.training,model_employee_training,base.group_user,1,1,0,0 +access_manager_orientation_request,orientation.request,model_orientation_request,base.group_user,1,1,0,0 +access_orientation_complete,orientation.complete,model_orientation_force_complete,hr.group_hr_user,1,1,1,1 + diff --git a/employee_orientation/static/description/assets/icons/check.png b/employee_orientation/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_orientation/static/description/assets/icons/check.png differ diff --git a/employee_orientation/static/description/assets/icons/chevron.png b/employee_orientation/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/chevron.png differ diff --git a/employee_orientation/static/description/assets/icons/cogs.png b/employee_orientation/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/cogs.png differ diff --git a/employee_orientation/static/description/assets/icons/consultation.png b/employee_orientation/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_orientation/static/description/assets/icons/consultation.png differ diff --git a/employee_orientation/static/description/assets/icons/ecom-black.png b/employee_orientation/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/ecom-black.png differ diff --git a/employee_orientation/static/description/assets/icons/education-black.png b/employee_orientation/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_orientation/static/description/assets/icons/education-black.png differ diff --git a/employee_orientation/static/description/assets/icons/hotel-black.png b/employee_orientation/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_orientation/static/description/assets/icons/hotel-black.png differ diff --git a/employee_orientation/static/description/assets/icons/license.png b/employee_orientation/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_orientation/static/description/assets/icons/license.png differ diff --git a/employee_orientation/static/description/assets/icons/lifebuoy.png b/employee_orientation/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_orientation/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_orientation/static/description/assets/icons/manufacturing-black.png b/employee_orientation/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_orientation/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_orientation/static/description/assets/icons/pos-black.png b/employee_orientation/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/pos-black.png differ diff --git a/employee_orientation/static/description/assets/icons/puzzle.png b/employee_orientation/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/puzzle.png differ diff --git a/employee_orientation/static/description/assets/icons/restaurant-black.png b/employee_orientation/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_orientation/static/description/assets/icons/service-black.png b/employee_orientation/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_orientation/static/description/assets/icons/service-black.png differ diff --git a/employee_orientation/static/description/assets/icons/trading-black.png b/employee_orientation/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_orientation/static/description/assets/icons/trading-black.png differ diff --git a/employee_orientation/static/description/assets/icons/training.png b/employee_orientation/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_orientation/static/description/assets/icons/training.png differ diff --git a/employee_orientation/static/description/assets/icons/update.png b/employee_orientation/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_orientation/static/description/assets/icons/update.png differ diff --git a/employee_orientation/static/description/assets/icons/user.png b/employee_orientation/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_orientation/static/description/assets/icons/user.png differ diff --git a/employee_orientation/static/description/assets/icons/wrench.png b/employee_orientation/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_orientation/static/description/assets/icons/wrench.png differ diff --git a/employee_orientation/static/description/assets/misc/categories.png b/employee_orientation/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/categories.png differ diff --git a/employee_orientation/static/description/assets/misc/check-box.png b/employee_orientation/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/check-box.png differ diff --git a/employee_orientation/static/description/assets/misc/compass.png b/employee_orientation/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/employee_orientation/static/description/assets/misc/compass.png differ diff --git a/employee_orientation/static/description/assets/misc/corporate.png b/employee_orientation/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/employee_orientation/static/description/assets/misc/corporate.png differ diff --git a/employee_orientation/static/description/assets/misc/customer-support.png b/employee_orientation/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/employee_orientation/static/description/assets/misc/customer-support.png differ diff --git a/employee_orientation/static/description/assets/misc/cybrosys-logo.png b/employee_orientation/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/employee_orientation/static/description/assets/misc/cybrosys-logo.png differ diff --git a/employee_orientation/static/description/assets/misc/features.png b/employee_orientation/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/features.png differ diff --git a/employee_orientation/static/description/assets/misc/logo.png b/employee_orientation/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/employee_orientation/static/description/assets/misc/logo.png differ diff --git a/employee_orientation/static/description/assets/misc/pictures.png b/employee_orientation/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/pictures.png differ diff --git a/employee_orientation/static/description/assets/misc/pie-chart.png b/employee_orientation/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/pie-chart.png differ diff --git a/employee_orientation/static/description/assets/misc/right-arrow.png b/employee_orientation/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/right-arrow.png differ diff --git a/employee_orientation/static/description/assets/misc/star.png b/employee_orientation/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/employee_orientation/static/description/assets/misc/star.png differ diff --git a/employee_orientation/static/description/assets/misc/support.png b/employee_orientation/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/support.png differ diff --git a/employee_orientation/static/description/assets/misc/whatsapp.png b/employee_orientation/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/employee_orientation/static/description/assets/misc/whatsapp.png differ diff --git a/employee_orientation/static/description/assets/modules/1.png b/employee_orientation/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/employee_orientation/static/description/assets/modules/1.png differ diff --git a/employee_orientation/static/description/assets/modules/2.png b/employee_orientation/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/employee_orientation/static/description/assets/modules/2.png differ diff --git a/employee_orientation/static/description/assets/modules/3.png b/employee_orientation/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/employee_orientation/static/description/assets/modules/3.png differ diff --git a/employee_orientation/static/description/assets/modules/4.png b/employee_orientation/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/employee_orientation/static/description/assets/modules/4.png differ diff --git a/employee_orientation/static/description/assets/modules/5.gif b/employee_orientation/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/employee_orientation/static/description/assets/modules/5.gif differ diff --git a/employee_orientation/static/description/assets/modules/6.png b/employee_orientation/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/employee_orientation/static/description/assets/modules/6.png differ diff --git a/employee_orientation/static/description/assets/screenshots/hero.gif b/employee_orientation/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..5c7638127 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/hero.gif differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-1.png b/employee_orientation/static/description/assets/screenshots/orientation-1.png new file mode 100644 index 000000000..e4ce8e40c Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-1.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-2.png b/employee_orientation/static/description/assets/screenshots/orientation-2.png new file mode 100644 index 000000000..168a23734 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-2.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-3.png b/employee_orientation/static/description/assets/screenshots/orientation-3.png new file mode 100644 index 000000000..3a8af2e63 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-3.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-4.png b/employee_orientation/static/description/assets/screenshots/orientation-4.png new file mode 100644 index 000000000..1b62eeb71 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-4.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-5.png b/employee_orientation/static/description/assets/screenshots/orientation-5.png new file mode 100644 index 000000000..bf5c1007f Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-5.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-6.png b/employee_orientation/static/description/assets/screenshots/orientation-6.png new file mode 100644 index 000000000..8dd854bdb Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-6.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-7.png b/employee_orientation/static/description/assets/screenshots/orientation-7.png new file mode 100644 index 000000000..3578b1e17 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-7.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-8.png b/employee_orientation/static/description/assets/screenshots/orientation-8.png new file mode 100644 index 000000000..e202eab0c Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-8.png differ diff --git a/employee_orientation/static/description/assets/screenshots/orientation-9.png b/employee_orientation/static/description/assets/screenshots/orientation-9.png new file mode 100644 index 000000000..410ed63b9 Binary files /dev/null and b/employee_orientation/static/description/assets/screenshots/orientation-9.png differ diff --git a/employee_orientation/static/description/banner.png b/employee_orientation/static/description/banner.png new file mode 100644 index 000000000..1077a4c4e Binary files /dev/null and b/employee_orientation/static/description/banner.png differ diff --git a/employee_orientation/static/description/icon.png b/employee_orientation/static/description/icon.png new file mode 100644 index 000000000..d9fbf5900 Binary files /dev/null and b/employee_orientation/static/description/icon.png differ diff --git a/employee_orientation/static/description/index.html b/employee_orientation/static/description/index.html new file mode 100644 index 000000000..55d29807e --- /dev/null +++ b/employee_orientation/static/description/index.html @@ -0,0 +1,588 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Employee Orientation & Training +

+

This may help reduce turnover and increase productivity

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Employee orientation/training is the process by which an employee acquires the necessary skills, + knowledge, behaviors, and contacts to effectively transition into a new organization.It can enhance the + overall satisfaction of employees and can encourage a positive attitude about the employer. Employees + view companies that offer meaningful benefits as more caring and engaged with their needs. This may help + reduce turnover and increase productivity. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+ + + +
+ + Makes the Employee Orientation Program easier +
+
+
+
+ + Systematical Workflow +
+
+ + Allows to Create Employee Training Programs +
+
+ + Email Notification for each Responsible person +
+
+ + Certificates for training program attendees +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Orientation Checklist

+ + +
+ +
+

Orientation Checklist Line

+ + +
+ +
+

Employee Orientation

+ + +
+ +
+

Automatic creation of checklist lines

+ + +
+ +
+

Orientation Request

+

Confirming orientation will create orientation requests automatically.

+ +

Orientation requests with the corresponding employee orientation are added

+ + +
+ +
+

Email Template

+ + +
+ +
+

Employee Training

+ + +
+ +
+

Print Certificates

+

Book issued history in each book.

+ +
+ + +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/employee_orientation/views/employee_orientation.xml b/employee_orientation/views/employee_orientation.xml new file mode 100644 index 000000000..1844246a9 --- /dev/null +++ b/employee_orientation/views/employee_orientation.xml @@ -0,0 +1,107 @@ + + + + + employee.orientation.tree + employee.orientation + + + + + + + + + + + + + employee.orientation.form + employee.orientation + +
+
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + employee.orientation.search + employee.orientation + + + + + + + + + + Employee Orientation + ir.actions.act_window + employee.orientation + tree,form + + [] + {} + + + Create Employee Orientation. + + + + +
+
diff --git a/employee_orientation/views/employee_training.xml b/employee_orientation/views/employee_training.xml new file mode 100644 index 000000000..774ef5bea --- /dev/null +++ b/employee_orientation/views/employee_training.xml @@ -0,0 +1,104 @@ + + + + + employee.training.tree + employee.training + + + + + + + + + + + employee.training.form + employee.training + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + employee.training.search + employee.training + + + + + + + + + Employee Training Program + ir.actions.act_window + employee.training + tree,form + + [] + {} + + + Create Employee Training Program. + + + + + + hr.employee.inherit.form + hr.employee + + 30 + + + + + + +
+
diff --git a/employee_orientation/views/orientation_checklist.xml b/employee_orientation/views/orientation_checklist.xml new file mode 100644 index 000000000..9170480a2 --- /dev/null +++ b/employee_orientation/views/orientation_checklist.xml @@ -0,0 +1,81 @@ + + + + + orientation.checklist.tree + orientation.checklist + + + + + + + + + + + orientation.checklist.form + orientation.checklist + + +
+ + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + orientation.checklist.search + orientation.checklist + + + + + + + + + + + Orientation Checklist + ir.actions.act_window + orientation.checklist + tree,form + + [] + {'search_default_active': True} + + + Create Orientation Checklists. + + + + + +
+
diff --git a/employee_orientation/views/orientation_checklist_line.xml b/employee_orientation/views/orientation_checklist_line.xml new file mode 100644 index 000000000..4aaa78e70 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_line.xml @@ -0,0 +1,80 @@ + + + + + checklist.line.tree + checklist.line + + + + + + + + + + checklist.line.form + checklist.line + + +
+ + + + + + +
+
+
+ + checklist.line.search + checklist.line + + + + + + + + + + + Orientation Checklist Line + ir.actions.act_window + checklist.line + tree,form + + [] + {} + + + Create Orientation Checklists Lines. + + + + + + + + + + +
+
diff --git a/employee_orientation/views/orientation_checklist_sequence.xml b/employee_orientation/views/orientation_checklist_sequence.xml new file mode 100644 index 000000000..4a8268817 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_sequence.xml @@ -0,0 +1,14 @@ + + + + + + + Employee Orientation + employee.orientation + OR + 3 + + + + \ No newline at end of file diff --git a/employee_orientation/views/orientation_checklists_request.xml b/employee_orientation/views/orientation_checklists_request.xml new file mode 100644 index 000000000..63545526e --- /dev/null +++ b/employee_orientation/views/orientation_checklists_request.xml @@ -0,0 +1,79 @@ + + + + + orientation.request.tree + orientation.request + + + + + + + + + + + orientation.request.form + orientation.request + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + orientation.request.search + orientation.request + + + + + + + + + Orientation Request + ir.actions.act_window + orientation.request + tree,form + + [] + {} + + + Create Orientation Requests. + + + + +
+
diff --git a/employee_orientation/views/print_pack_certificates_template.xml b/employee_orientation/views/print_pack_certificates_template.xml new file mode 100644 index 000000000..dfa17ace5 --- /dev/null +++ b/employee_orientation/views/print_pack_certificates_template.xml @@ -0,0 +1,86 @@ + + + + + + \ No newline at end of file diff --git a/employee_orientation/views/report.xml b/employee_orientation/views/report.xml new file mode 100644 index 000000000..87feb56fd --- /dev/null +++ b/employee_orientation/views/report.xml @@ -0,0 +1,12 @@ + + + + + Certificates + employee.training + qweb-pdf + employee_orientation.print_pack_template + employee_orientation.print_pack_template + + + diff --git a/employee_orientation/wizard/__init__.py b/employee_orientation/wizard/__init__.py new file mode 100644 index 000000000..72c16ef89 --- /dev/null +++ b/employee_orientation/wizard/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import orientation_complete diff --git a/employee_orientation/wizard/orientation_complete.py b/employee_orientation/wizard/orientation_complete.py new file mode 100644 index 000000000..d6f60cc3a --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import api, fields, models, _ + + +class OrientationForceComplete(models.TransientModel): + _name = 'orientation.force.complete' + + name = fields.Char() + orientation_id = fields.Many2one('employee.orientation', string='Orientation') + orientation_lines = fields.One2many('orientation.request', string='Orientation Lines', compute='pending_lines') + + @api.onchange('orientation_id') + def pending_lines(self): + pending = [] + + for data in self.orientation_id.orientation_request_ids: + if data.state == 'new': + pending.append(data.id) + self.update({'orientation_lines': pending}) + + def force_complete(self): + for line in self.orientation_lines: + if line.state != 'cancel': + line.state = 'complete' + self.orientation_id.write({'state': 'complete'}) + + + diff --git a/employee_orientation/wizard/orientation_complete.xml b/employee_orientation/wizard/orientation_complete.xml new file mode 100644 index 000000000..b86022b1a --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.xml @@ -0,0 +1,23 @@ + + + + + orientation.force.complete.form + orientation.force.complete + +
+

+ Please make sure that orientations programs are already done. +

+ +
+
+
\ No newline at end of file diff --git a/employee_stages/README.rst b/employee_stages/README.rst new file mode 100755 index 000000000..84b531b8e --- /dev/null +++ b/employee_stages/README.rst @@ -0,0 +1,15 @@ +EMPLOYEE STAGES +=============== +Manage different stages of an employee. + +Configuration +============= + +No additional configurations needed + +Credits +======= +Developer: V13 Varsha Vivek K @ cybrosys, Contact: odoo@cybrosys.com + V14 Minhaj T @ cybrosys, Contact: odoo@cybrosys.com + V15 Aiswarya J P @ cybrosys, Contact: odoo@cybrosys.com + V16 Viswanth k @ cybrosys, Contact: odoo@cybrosys.com diff --git a/employee_stages/__init__.py b/employee_stages/__init__.py new file mode 100755 index 000000000..7bdbb3680 --- /dev/null +++ b/employee_stages/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Cybrosys Technologies () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models + diff --git a/employee_stages/__manifest__.py b/employee_stages/__manifest__.py new file mode 100755 index 000000000..f46e6275b --- /dev/null +++ b/employee_stages/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Cybrosys Technologies () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Employee Stages', + 'version': '16.0.1.0.1', + 'summary': """Manages Employee Stages""", + 'description': """This module is used to tracking employee's different stages.""", + 'category': "Generic Modules/Human Resources", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'hr'], + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_stages_view.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} + + diff --git a/employee_stages/doc/RELEASE_NOTES.md b/employee_stages/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..85de33b92 --- /dev/null +++ b/employee_stages/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 23.08.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for Employee Stages diff --git a/employee_stages/models/__init__.py b/employee_stages/models/__init__.py new file mode 100755 index 000000000..4833243fc --- /dev/null +++ b/employee_stages/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Cybrosys Technologies () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import employee_stages + diff --git a/employee_stages/models/employee_stages.py b/employee_stages/models/employee_stages.py new file mode 100755 index 000000000..4202eb5c7 --- /dev/null +++ b/employee_stages/models/employee_stages.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Cybrosys Technologies () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from datetime import date +from odoo import models, fields, api + + +class EmployeeFormInherit(models.Model): + _inherit = 'hr.employee' + + @api.model + def create(self, vals): + result = super(EmployeeFormInherit, self).create(vals) + result.stages_history.sudo().create({'start_date': date.today(), + 'employee_id': result.id, + 'state': 'joined'}) + return result + + def start_grounding(self): + self.state = 'grounding' + self.stages_history.sudo().create({'start_date': date.today(), + 'employee_id': self.id, + 'state': 'grounding'}) + + def set_as_employee(self): + self.state = 'employment' + stage_obj = self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'test_period')]) + if stage_obj: + stage_obj.sudo().write({'end_date': date.today()}) + self.stages_history.sudo().create({'start_date': date.today(), + 'employee_id': self.id, + 'state': 'employment'}) + + def start_notice_period(self): + self.state = 'notice_period' + stage_obj = self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'employment')]) + if stage_obj: + stage_obj.sudo().write({'end_date': date.today()}) + self.stages_history.sudo().create({'start_date': date.today(), + 'employee_id': self.id, + 'state': 'notice_period'}) + + def relived(self): + self.state = 'relieved' + self.active = False + stage_obj = self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'notice_period')]) + if stage_obj: + stage_obj.sudo().write({'end_date': date.today()}) + self.stages_history.sudo().create({'end_date': date.today(), + 'employee_id': self.id, + 'state': 'relieved'}) + + def start_test_period(self): + self.state = 'test_period' + self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'grounding')]).sudo().write({'end_date': date.today()}) + self.stages_history.sudo().create({'start_date': date.today(), + 'employee_id': self.id, + 'state': 'test_period'}) + + def terminate(self): + self.state = 'terminate' + self.active = False + stage_obj = self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'employment')]) + + if stage_obj: + stage_obj.sudo().write({'end_date': date.today()}) + else: + self.stages_history.search([('employee_id', '=', self.id), + ('state', '=', 'grounding')]).sudo().write({'end_date': date.today()}) + self.stages_history.sudo().create({'end_date': date.today(), + 'employee_id': self.id, + 'state': 'terminate'}) + + state = fields.Selection([('joined', 'Slap On'), + ('grounding', 'Grounding'), + ('test_period', 'Test Period'), + ('employment', 'Employment'), + ('notice_period', 'Notice Period'), + ('relieved', 'Resigned'), + ('terminate', 'Terminated')], string='Status', default='joined', + track_visibility='always', copy=False, + help="Employee Stages.\nSlap On: Joined\nGrounding: Training\nTest period : Probation") + stages_history = fields.One2many('hr.employee.status.history', 'employee_id', string='Stage History', + help='It shows the duration and history of each stages') + + +class EmployeeStageHistory(models.Model): + _name = 'hr.employee.status.history' + _description = 'Status History' + + start_date = fields.Date(string='Start Date') + end_date = fields.Date(string='End Date') + duration = fields.Integer(compute='get_duration', string='Duration(days)') + + def get_duration(self): + self.duration = 0 + for each in self: + if each.end_date and each.start_date: + duration = fields.Date.from_string(each.end_date) - fields.Date.from_string(each.start_date) + each.duration = duration.days + + state = fields.Selection([('joined', 'Slap On'), + ('grounding', 'Grounding'), + ('test_period', 'Test Period'), + ('employment', 'Employment'), + ('notice_period', 'Notice Period'), + ('relieved', 'Resigned'), + ('terminate', 'Terminated')], string='Stage') + employee_id = fields.Many2one('hr.employee', invisible=1) + + +class WizardEmployee(models.TransientModel): + _name = 'wizard.employee.stage' + + def set_as_employee(self): + context = self._context + employee_obj = self.env['hr.employee'].search([('id', '=', context.get('employee_id'))]) + if self.related_user: + employee_obj.user_id = self.related_user + employee_obj.set_as_employee() + + related_user = fields.Many2one('res.users', string="Related User") + + +class HrEmployeePublic(models.Model): + _inherit = 'hr.employee.public' + + state = fields.Selection(related='employee_id.state', string='Stage') diff --git a/employee_stages/security/ir.model.access.csv b/employee_stages/security/ir.model.access.csv new file mode 100755 index 000000000..fb8ce590e --- /dev/null +++ b/employee_stages/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_wizard_employee_stage_manager,wizard.employee.stage.manager,model_wizard_employee_stage,hr.group_hr_manager,1,1,1,1 +access_wizard_employee_stage_hr_user,wizard.employee.stage.user,model_wizard_employee_stage,hr.group_hr_user,1,1,1,0 +access_hr_employee_status_history_manager,hr.employee.status.history.manager,model_hr_employee_status_history,hr.group_hr_manager,1,1,1,1 +access_hr_employee_status_history_hr_user,hr.employee.status.history.user,model_hr_employee_status_history,hr.group_hr_user,1,1,1,0 + + diff --git a/employee_stages/static/description/assets/icons/check.png b/employee_stages/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_stages/static/description/assets/icons/check.png differ diff --git a/employee_stages/static/description/assets/icons/chevron.png b/employee_stages/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_stages/static/description/assets/icons/chevron.png differ diff --git a/employee_stages/static/description/assets/icons/cogs.png b/employee_stages/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_stages/static/description/assets/icons/cogs.png differ diff --git a/employee_stages/static/description/assets/icons/consultation.png b/employee_stages/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_stages/static/description/assets/icons/consultation.png differ diff --git a/employee_stages/static/description/assets/icons/ecom-black.png b/employee_stages/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_stages/static/description/assets/icons/ecom-black.png differ diff --git a/employee_stages/static/description/assets/icons/education-black.png b/employee_stages/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_stages/static/description/assets/icons/education-black.png differ diff --git a/employee_stages/static/description/assets/icons/hotel-black.png b/employee_stages/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_stages/static/description/assets/icons/hotel-black.png differ diff --git a/employee_stages/static/description/assets/icons/license.png b/employee_stages/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_stages/static/description/assets/icons/license.png differ diff --git a/employee_stages/static/description/assets/icons/lifebuoy.png b/employee_stages/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_stages/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_stages/static/description/assets/icons/manufacturing-black.png b/employee_stages/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_stages/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_stages/static/description/assets/icons/pos-black.png b/employee_stages/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_stages/static/description/assets/icons/pos-black.png differ diff --git a/employee_stages/static/description/assets/icons/puzzle.png b/employee_stages/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_stages/static/description/assets/icons/puzzle.png differ diff --git a/employee_stages/static/description/assets/icons/restaurant-black.png b/employee_stages/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_stages/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_stages/static/description/assets/icons/service-black.png b/employee_stages/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_stages/static/description/assets/icons/service-black.png differ diff --git a/employee_stages/static/description/assets/icons/trading-black.png b/employee_stages/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_stages/static/description/assets/icons/trading-black.png differ diff --git a/employee_stages/static/description/assets/icons/training.png b/employee_stages/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_stages/static/description/assets/icons/training.png differ diff --git a/employee_stages/static/description/assets/icons/update.png b/employee_stages/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_stages/static/description/assets/icons/update.png differ diff --git a/employee_stages/static/description/assets/icons/user.png b/employee_stages/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_stages/static/description/assets/icons/user.png differ diff --git a/employee_stages/static/description/assets/icons/wrench.png b/employee_stages/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_stages/static/description/assets/icons/wrench.png differ diff --git a/employee_stages/static/description/assets/misc/categories.png b/employee_stages/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/employee_stages/static/description/assets/misc/categories.png differ diff --git a/employee_stages/static/description/assets/misc/check-box.png b/employee_stages/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/employee_stages/static/description/assets/misc/check-box.png differ diff --git a/employee_stages/static/description/assets/misc/compass.png b/employee_stages/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/employee_stages/static/description/assets/misc/compass.png differ diff --git a/employee_stages/static/description/assets/misc/corporate.png b/employee_stages/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/employee_stages/static/description/assets/misc/corporate.png differ diff --git a/employee_stages/static/description/assets/misc/customer-support.png b/employee_stages/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/employee_stages/static/description/assets/misc/customer-support.png differ diff --git a/employee_stages/static/description/assets/misc/cybrosys-logo.png b/employee_stages/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/employee_stages/static/description/assets/misc/cybrosys-logo.png differ diff --git a/employee_stages/static/description/assets/misc/features.png b/employee_stages/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/employee_stages/static/description/assets/misc/features.png differ diff --git a/employee_stages/static/description/assets/misc/logo.png b/employee_stages/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/employee_stages/static/description/assets/misc/logo.png differ diff --git a/employee_stages/static/description/assets/misc/pictures.png b/employee_stages/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/employee_stages/static/description/assets/misc/pictures.png differ diff --git a/employee_stages/static/description/assets/misc/pie-chart.png b/employee_stages/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/employee_stages/static/description/assets/misc/pie-chart.png differ diff --git a/employee_stages/static/description/assets/misc/right-arrow.png b/employee_stages/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/employee_stages/static/description/assets/misc/right-arrow.png differ diff --git a/employee_stages/static/description/assets/misc/star.png b/employee_stages/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/employee_stages/static/description/assets/misc/star.png differ diff --git a/employee_stages/static/description/assets/misc/support.png b/employee_stages/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/employee_stages/static/description/assets/misc/support.png differ diff --git a/employee_stages/static/description/assets/misc/whatsapp.png b/employee_stages/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/employee_stages/static/description/assets/misc/whatsapp.png differ diff --git a/employee_stages/static/description/assets/modules/1.png b/employee_stages/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/employee_stages/static/description/assets/modules/1.png differ diff --git a/employee_stages/static/description/assets/modules/2.png b/employee_stages/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/employee_stages/static/description/assets/modules/2.png differ diff --git a/employee_stages/static/description/assets/modules/3.png b/employee_stages/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/employee_stages/static/description/assets/modules/3.png differ diff --git a/employee_stages/static/description/assets/modules/4.png b/employee_stages/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/employee_stages/static/description/assets/modules/4.png differ diff --git a/employee_stages/static/description/assets/modules/5.gif b/employee_stages/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/employee_stages/static/description/assets/modules/5.gif differ diff --git a/employee_stages/static/description/assets/modules/6.png b/employee_stages/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/employee_stages/static/description/assets/modules/6.png differ diff --git a/employee_stages/static/description/assets/screenshots/1.png b/employee_stages/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..ea7136a2a Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/1.png differ diff --git a/employee_stages/static/description/assets/screenshots/2.png b/employee_stages/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..659d5d888 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/2.png differ diff --git a/employee_stages/static/description/assets/screenshots/3.png b/employee_stages/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..770eafc16 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/3.png differ diff --git a/employee_stages/static/description/assets/screenshots/4.png b/employee_stages/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..71dc93497 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/4.png differ diff --git a/employee_stages/static/description/assets/screenshots/5.png b/employee_stages/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..8a7830f24 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/5.png differ diff --git a/employee_stages/static/description/assets/screenshots/6.png b/employee_stages/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..297ce8cd7 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/6.png differ diff --git a/employee_stages/static/description/assets/screenshots/7.png b/employee_stages/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..842604c71 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/7.png differ diff --git a/employee_stages/static/description/assets/screenshots/8.png b/employee_stages/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..46e3fd298 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/8.png differ diff --git a/employee_stages/static/description/assets/screenshots/9.png b/employee_stages/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..4d306abae Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/9.png differ diff --git a/employee_stages/static/description/assets/screenshots/hero.gif b/employee_stages/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..1f7eeb270 Binary files /dev/null and b/employee_stages/static/description/assets/screenshots/hero.gif differ diff --git a/employee_stages/static/description/banner.png b/employee_stages/static/description/banner.png new file mode 100644 index 000000000..deb7db74a Binary files /dev/null and b/employee_stages/static/description/banner.png differ diff --git a/employee_stages/static/description/icon.png b/employee_stages/static/description/icon.png new file mode 100644 index 000000000..f7f216c9a Binary files /dev/null and b/employee_stages/static/description/icon.png differ diff --git a/employee_stages/static/description/index.html b/employee_stages/static/description/index.html new file mode 100644 index 000000000..4a6aa3db5 --- /dev/null +++ b/employee_stages/static/description/index.html @@ -0,0 +1,609 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Employee Stages

+

Manages Employee Stages

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Every employee may undergo different stages during his term in a company. + It may be probation, training, employment etc. + The stages may vary according to the organisation. + It is important to track such stages systematically to assess the performance indices of an employee. + So here we are providing a new module which will facilitate the management of different stages of an employee. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Managing employee's different stages +
+
+ + Added employee's current stage in the tree view +
+
+ + Added employee's current stage in kanban view +
+ +
+ + Added group by stage in search view +
+
+ + Added Employee filter in search view +
+
+ + Added default search for employees in the search bar +
+
+ + Automatically recording the stage history +
+
+ + Computing the duration of each stage +
+
+ + Option to set 'Related User' while converting to the employee. +
+
+ + Automatically inactive the employee while terminating or relieving the employee +
+ + +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

View Different Stages of Employee

+

Here we can see different stages of the employee, buttons to change the stages and overall history.

+ +
+ +
+

Status History Tab

+

Status History tab tracking the Start date, End date and Duration of each stage.

+ +
+ +
+

Automatic Inactivation of resigned employee

+

When an employee's state has reached to 'Terminated' stage then the system will automatically inactive this employee.

+ +
+ +
+

Option to add Related user

+

We have an option to add 'Related User' when we set to 'Employment' stage.

+ +
+ +
+

Kanban View

+

Current stage is visible in the Kanban view.

+ +
+ +
+

Tree View

+

Current stage is visible in the Tree view.

+ +
+ +
+

Search Bar

+

Added default search for employees in the search bar.

+ +
+ +
+

Group by filter in Search View

+

Search View using Filters Group By.

+ +
+ +
+

Search View using Filters

+

Added Employee filter in search view.

+ +
+ + + +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/employee_stages/views/employee_stages_view.xml b/employee_stages/views/employee_stages_view.xml new file mode 100755 index 000000000..e1ff9254a --- /dev/null +++ b/employee_stages/views/employee_stages_view.xml @@ -0,0 +1,124 @@ + + + + wizard.employee.form + wizard.employee.stage + +
+ + + +
+
+
+
+
+ + + Set as Employee + wizard.employee.stage + form + + new + + + + hr.employee.form.view + hr.employee + + + + + + + +
\ No newline at end of file diff --git a/hr_payroll_community/views/hr_leave_type_view.xml b/hr_payroll_community/views/hr_leave_type_view.xml new file mode 100644 index 000000000..06a1b8179 --- /dev/null +++ b/hr_payroll_community/views/hr_leave_type_view.xml @@ -0,0 +1,18 @@ + + + + + + hr_leave_type.form.inherit + hr.leave.type + + + + + + + + + + \ No newline at end of file diff --git a/hr_payroll_community/views/hr_payroll_report.xml b/hr_payroll_community/views/hr_payroll_report.xml new file mode 100644 index 000000000..2cde4f740 --- /dev/null +++ b/hr_payroll_community/views/hr_payroll_report.xml @@ -0,0 +1,32 @@ + + + + + Contribution Register PDF + hr.contribution.register + qweb-pdf + + hr_payroll_community.report_contributionregister + hr_payroll_community.report_contributionregister + + + + Payslip + hr.payslip + qweb-pdf + hr_payroll_community.report_payslip + hr_payroll_community.report_payslip + + ('Payslip - %s' % (object.employee_id.name)) + + + + Payslip Details + hr.payslip + qweb-pdf + + hr_payroll_community.report_payslipdetails + hr_payroll_community.report_payslipdetails + ('Payslip Details - %s' % (object.employee_id.name)) + + diff --git a/hr_payroll_community/views/hr_payslip_views.xml b/hr_payroll_community/views/hr_payslip_views.xml new file mode 100644 index 000000000..8e2fb05ef --- /dev/null +++ b/hr_payroll_community/views/hr_payslip_views.xml @@ -0,0 +1,414 @@ + + + + + hr.payslip.line.tree + hr.payslip.line + + + + + + + + + + + + + + + + + + hr.payslip.line.form + hr.payslip.line + +
+ + + + + + + + + + + + + + + + +
+
+
+ + hr.payslip.line.select + hr.payslip.line + + + + + + + + + + + + + + + + + + + + + hr.payslip.tree + hr.payslip + + + + + + + + + + + + + + + hr.payslip.kanban + hr.payslip + + + + +
+
+
+ +
+
+ + + +
+
+ + - + +
+
+ +
+
+
+
+
+
+
+
+ + + + + Payslip Computation Details + hr.payslip.line + {'default_slip_id': active_id,'search_default_slip_id': active_id} + + + + hr.payslip.form + hr.payslip + +
+
+
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ +
+
+ + + hr.payslip.select + hr.payslip + + + + + + + + + + + + + + + + + + + Employee Payslips + hr.payslip + tree,kanban,form + + + + + + + hr.payslip + Payslips + tree,form + {'search_default_employee_id': [active_id], 'default_employee_id': active_id} + + + + + + hr.payslip.run.search + hr.payslip.run + + + + + + + + + + + + + hr.payslip.run.tree + hr.payslip.run + + + + + + + + + + + + + hr.payslip.run.kanban + hr.payslip.run + + + + +
+
+
+ +
+
+ + + +
+
+ + - + + + + +
+
+
+
+
+
+
+
+ + + hr.payslip.run.form + hr.payslip.run + +
+
+
+ + +
+
+
+ + + Payslips Batches + hr.payslip.run + tree,kanban,form + + + + + + + + Payslip Lines + hr.payslip.line + [('register_id', '=', active_id)] + {'default_register_id': active_id, 'search_default_register_id': 1} + + +
diff --git a/hr_payroll_community/views/hr_salary_rule_views.xml b/hr_payroll_community/views/hr_salary_rule_views.xml new file mode 100644 index 000000000..b7708b06a --- /dev/null +++ b/hr_payroll_community/views/hr_salary_rule_views.xml @@ -0,0 +1,381 @@ + + + + + + + + hr.payroll.structure.tree + hr.payroll.structure + + + + + + + + + + + hr.payroll.structure.kanban + hr.payroll.structure + + + + +
+
+
+ +
+
+
+
+ Code: +
+
+
+
+
+
+
+
+ + hr.payroll.structure.tree + hr.payroll.structure + children_ids + + + + + + + + + + hr.payroll.structure.select + hr.payroll.structure + + + + + + + + hr.payroll.structure.form + hr.payroll.structure + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + Salary Structures + hr.payroll.structure + tree,kanban,form + + + + + + + hr.salary.rule.category.form + hr.salary.rule.category + +
+ + + + + + + + +
+
+
+ + hr.salary.rule.category.tree + hr.salary.rule.category + + + + + + + + + + hr.salary.rule.category.select + hr.salary.rule.category + + + + + + + + Salary Rule Categories + hr.salary.rule.category + + + + + + + + hr.contribution.register.tree + hr.contribution.register + + + + + + + + + hr.contribution.register.kanban + hr.contribution.register + + + + +
+
+
+ +
+
+
+
+
+
+
+
+ + hr.contribution.register.search + hr.contribution.register + + + + + + + + + hr.contribution.register.form + hr.contribution.register + +
+ + + + + + + + + + +
+
+ + Contribution Registers + hr.contribution.register + tree,kanban,form + +

+ Add a new contribution register +

+ A contribution register is a third party involved in the salary + payment of the employees. It can be the social security, the + state or anyone that collect or inject money on payslips. +

+
+
+ + + + + + hr.salary.rule.list + hr.salary.rule + + + + + + + + + + + + hr.salary.rule.kanban + hr.salary.rule + + + + +
+
+
+ +
+
+ +
+
+
+
+ Code: +
+
+
+
+
+
+
+
+ + hr.salary.rule.tree + hr.salary.rule + child_ids + + + + + + + + + + + + hr.salary.rule.form + hr.salary.rule + +
+
+
+ + hr.salary.rule.select + hr.salary.rule + + + + + + + + + + + + + Salary Rules + hr.salary.rule + tree,kanban,form + [('parent_rule_id','=',False)] + + + + + + + All Children Rules + hr.salary.rule + [('parent_rule_id', '=', active_id)] + +
+
diff --git a/hr_payroll_community/views/report_contributionregister_templates.xml b/hr_payroll_community/views/report_contributionregister_templates.xml new file mode 100644 index 000000000..021e6c0f1 --- /dev/null +++ b/hr_payroll_community/views/report_contributionregister_templates.xml @@ -0,0 +1,72 @@ + + + + diff --git a/hr_payroll_community/views/report_payslip_templates.xml b/hr_payroll_community/views/report_payslip_templates.xml new file mode 100644 index 000000000..876ce15de --- /dev/null +++ b/hr_payroll_community/views/report_payslip_templates.xml @@ -0,0 +1,75 @@ + + + + diff --git a/hr_payroll_community/views/report_payslipdetails_templates.xml b/hr_payroll_community/views/report_payslipdetails_templates.xml new file mode 100644 index 000000000..ee6a99af5 --- /dev/null +++ b/hr_payroll_community/views/report_payslipdetails_templates.xml @@ -0,0 +1,101 @@ + + + + diff --git a/hr_payroll_community/views/res_config_settings_views.xml b/hr_payroll_community/views/res_config_settings_views.xml new file mode 100644 index 000000000..d0211c85b --- /dev/null +++ b/hr_payroll_community/views/res_config_settings_views.xml @@ -0,0 +1,71 @@ + + + + Payroll + ir.module.module + kanban,tree,form + + + + + + res.config.settings.view.form.inherit.hr.payroll + res.config.settings + + + + +
+ + + +

Payroll

+
+
+
+ Payroll Rules +
+ Payroll rules that apply to your country +
+
+
+
+
+
+

Accounting

+
+
+
+ +
+
+
+
+
+
+
+
+
+ + + Settings + ir.actions.act_window + res.config.settings + form + inline + {'module' : 'hr_payroll_community'} + + + +
diff --git a/hr_payroll_community/wizard/__init__.py b/hr_payroll_community/wizard/__init__.py new file mode 100644 index 000000000..67788d428 --- /dev/null +++ b/hr_payroll_community/wizard/__init__.py @@ -0,0 +1,4 @@ +#-*- coding:utf-8 -*- + +from . import hr_payroll_payslips_by_employees +from . import hr_payroll_contribution_register_report diff --git a/hr_payroll_community/wizard/hr_payroll_contribution_register_report.py b/hr_payroll_community/wizard/hr_payroll_contribution_register_report.py new file mode 100644 index 000000000..b1a57022c --- /dev/null +++ b/hr_payroll_community/wizard/hr_payroll_contribution_register_report.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +from datetime import datetime +from dateutil import relativedelta + +from odoo import api, fields, models + + +class PayslipLinesContributionRegister(models.TransientModel): + _name = 'payslip.lines.contribution.register' + _description = 'Payslip Lines by Contribution Registers' + + date_from = fields.Date(string='Date From', required=True, + default=datetime.now().strftime('%Y-%m-01')) + date_to = fields.Date(string='Date To', required=True, + default=str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10]) + + def print_report(self): + active_ids = self.env.context.get('active_ids', []) + datas = { + 'ids': active_ids, + 'model': 'hr.contribution.register', + 'form': self.read()[0] + } + return self.env.ref('hr_payroll_community.action_contribution_register').report_action([], data=datas) diff --git a/hr_payroll_community/wizard/hr_payroll_contribution_register_report_views.xml b/hr_payroll_community/wizard/hr_payroll_contribution_register_report_views.xml new file mode 100644 index 000000000..2cfe066f9 --- /dev/null +++ b/hr_payroll_community/wizard/hr_payroll_contribution_register_report_views.xml @@ -0,0 +1,32 @@ + + + + + payslip.lines.contribution.register + payslip.lines.contribution.register + +
+ + + + + +
+
+
+
+
+ + + PaySlip Lines + ir.actions.act_window + payslip.lines.contribution.register + form + new + + report + + +
diff --git a/hr_payroll_community/wizard/hr_payroll_payslips_by_employees.py b/hr_payroll_community/wizard/hr_payroll_payslips_by_employees.py new file mode 100644 index 000000000..14043bb3e --- /dev/null +++ b/hr_payroll_community/wizard/hr_payroll_payslips_by_employees.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class HrPayslipEmployees(models.TransientModel): + _name = 'hr.payslip.employees' + _description = 'Generate payslips for all selected employees' + + employee_ids = fields.Many2many('hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees') + + def compute_sheet(self): + payslips = self.env['hr.payslip'] + [data] = self.read() + active_id = self.env.context.get('active_id') + if active_id: + [run_data] = self.env['hr.payslip.run'].browse(active_id).read(['date_start', 'date_end', 'credit_note']) + from_date = run_data.get('date_start') + to_date = run_data.get('date_end') + if not data['employee_ids']: + raise UserError(_("You must select employee(s) to generate payslip(s).")) + for employee in self.env['hr.employee'].browse(data['employee_ids']): + slip_data = self.env['hr.payslip'].onchange_employee_id(from_date, to_date, employee.id, contract_id=False) + res = { + 'employee_id': employee.id, + 'name': slip_data['value'].get('name'), + 'struct_id': slip_data['value'].get('struct_id'), + 'contract_id': slip_data['value'].get('contract_id'), + 'payslip_run_id': active_id, + 'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids')], + 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids')], + 'date_from': from_date, + 'date_to': to_date, + 'credit_note': run_data.get('credit_note'), + 'company_id': employee.company_id.id, + } + payslips += self.env['hr.payslip'].create(res) + payslips.compute_sheet() + return {'type': 'ir.actions.act_window_close'} diff --git a/hr_payroll_community/wizard/hr_payroll_payslips_by_employees_views.xml b/hr_payroll_community/wizard/hr_payroll_payslips_by_employees_views.xml new file mode 100644 index 000000000..45f99f144 --- /dev/null +++ b/hr_payroll_community/wizard/hr_payroll_payslips_by_employees_views.xml @@ -0,0 +1,32 @@ + + + + + hr_payroll_payslip_employees + hr.payslip.employees + +
+
+
+ + This wizard will generate payslips for all selected employee(s) based on the dates and credit note specified on Payslips Run. + + + + + + +
+
+
+ + + Generate Payslips + hr.payslip.employees + tree,form + + new + + +
diff --git a/invoice_stock_move/README.rst b/invoice_stock_move/README.rst new file mode 100644 index 000000000..aa08b102e --- /dev/null +++ b/invoice_stock_move/README.rst @@ -0,0 +1,40 @@ +Stock Picking From Invoice +========================== +This Module Enables To Create Stocks Picking From Customer/Supplier Invoice + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Saritha Sahadevan @cybrosys, odoo@cybrosys.com + Muhammed P V14 @cybrosys, odoo@cybrosys.com + Midilaj V K V15 @cybrosys, odoo@cybrosys.com + Vishnu kp V16 @cybrosys, odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/invoice_stock_move/__init__.py b/invoice_stock_move/__init__.py new file mode 100644 index 000000000..26bd4be6e --- /dev/null +++ b/invoice_stock_move/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models diff --git a/invoice_stock_move/__manifest__.py b/invoice_stock_move/__manifest__.py new file mode 100644 index 000000000..8996b8cfd --- /dev/null +++ b/invoice_stock_move/__manifest__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': "Stock Picking From Invoice", + 'version': '16.0.1.0.0', + 'summary': """Stock Picking From Customer/Supplier Invoice""", + 'description': """This Module Enables To Create Stocks Picking From Customer/Supplier Invoice""", + 'author': "Cybrosys Techno Solutions", + 'live_test_url': 'https://www.youtube.com/watch?v=M_orDkIFIM4&feature=youtu.be', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'category': 'Accounting', + 'depends': ['base', 'account', 'stock', 'payment'], + 'data': ['views/invoice_stock_move_view.xml'], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, + 'sequence':1 +} diff --git a/invoice_stock_move/doc/RELEASE_NOTES.md b/invoice_stock_move/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..030085f9c --- /dev/null +++ b/invoice_stock_move/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 23.12.2021 +#### Version 16.0.1.0.0 +#### ADD + +Initial Commit diff --git a/invoice_stock_move/models/__init__.py b/invoice_stock_move/models/__init__.py new file mode 100644 index 000000000..e3b3df6b5 --- /dev/null +++ b/invoice_stock_move/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import invoice_stock diff --git a/invoice_stock_move/models/invoice_stock.py b/invoice_stock_move/models/invoice_stock.py new file mode 100644 index 000000000..d63f68a1f --- /dev/null +++ b/invoice_stock_move/models/invoice_stock.py @@ -0,0 +1,173 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo.exceptions import UserError +from odoo import models, fields, api, _ + + +class InvoiceStockMove(models.Model): + _inherit = 'account.move' + + def _get_stock_type_ids(self): + data = self.env['stock.picking.type'].search([]) + if self._context.get('default_move_type') == 'out_invoice': + for line in data: + if line.code == 'outgoing': + return line + if self._context.get('default_move_type') == 'in_invoice': + for line in data: + if line.code == 'incoming': + return line + + picking_count = fields.Integer(string="Count", copy=False) + invoice_picking_id = fields.Many2one('stock.picking', string="Picking Id", copy=False) + + picking_type_id = fields.Many2one('stock.picking.type', 'Picking Type', + default=_get_stock_type_ids, + help="This will determine picking type of incoming shipment") + + state = fields.Selection([ + ('draft', 'Draft'), + ('proforma', 'Pro-forma'), + ('proforma2', 'Pro-forma'), + ('posted', 'Posted'), + ('post', 'Post'), + ('cancel', 'Cancelled'), + ('done', 'Received'), + ], string='Status', index=True, readonly=True, default='draft', + track_visibility='onchange', copy=False) + + def action_stock_move(self): + if not self.picking_type_id: + raise UserError(_( + " Please select a picking type")) + for order in self: + if not self.invoice_picking_id: + pick = {} + if self.picking_type_id.code == 'outgoing': + pick = { + 'picking_type_id': self.picking_type_id.id, + 'partner_id': self.partner_id.id, + 'origin': self.name, + 'location_dest_id': self.partner_id.property_stock_customer.id, + 'location_id': self.picking_type_id.default_location_src_id.id, + 'move_type': 'direct' + } + if self.picking_type_id.code == 'incoming': + pick = { + 'picking_type_id': self.picking_type_id.id, + 'partner_id': self.partner_id.id, + 'origin': self.name, + 'location_dest_id': self.picking_type_id.default_location_dest_id.id, + 'location_id': self.partner_id.property_stock_supplier.id, + 'move_type': 'direct' + } + picking = self.env['stock.picking'].create(pick) + self.invoice_picking_id = picking.id + self.picking_count = len(picking) + moves = order.invoice_line_ids.filtered( + lambda r: r.product_id.type in ['product', 'consu'])._create_stock_moves(picking) + move_ids = moves._action_confirm() + move_ids._action_assign() + + def action_view_picking(self): + action = self.env.ref('stock.action_picking_tree_ready') + result = action.read()[0] + result.pop('id', None) + result['context'] = {} + result['domain'] = [('id', '=', self.invoice_picking_id.id)] + pick_ids = sum([self.invoice_picking_id.id]) + if pick_ids: + res = self.env.ref('stock.view_picking_form', False) + result['views'] = [(res and res.id or False, 'form')] + result['res_id'] = pick_ids or False + return result + + def _reverse_moves(self, default_values_list=None, cancel=False): + ''' Reverse a recordset of account.move. + If cancel parameter is true, the reconcilable or liquidity lines + of each original move will be reconciled with its reverse's. + :param default_values_list: A list of default values to consider per move. + ('type' & 'reversed_entry_id' are computed in the method). + :return: An account.move recordset, reverse of the current self. + ''' + + if self.picking_type_id.code == 'outgoing': + data = self.env['stock.picking.type'].search( + [('company_id', '=', self.company_id.id), ('code', '=', 'incoming')], limit=1) + self.picking_type_id = data.id + elif self.picking_type_id.code == 'incoming': + data = self.env['stock.picking.type'].search( + [('company_id', '=', self.company_id.id), ('code', '=', 'outgoing')], limit=1) + self.picking_type_id = data.id + reverse_moves = super(InvoiceStockMove, self)._reverse_moves() + return reverse_moves + + +class SupplierInvoiceLine(models.Model): + _inherit = 'account.move.line' + + def _create_stock_moves(self, picking): + moves = self.env['stock.move'] + done = self.env['stock.move'].browse() + for line in self: + price_unit = line.price_unit + if picking.picking_type_id.code == 'outgoing': + template = { + 'name': line.name or '', + 'product_id': line.product_id.id, + 'product_uom': line.product_uom_id.id, + 'location_id': picking.picking_type_id.default_location_src_id.id, + 'location_dest_id': line.move_id.partner_id.property_stock_customer.id, + 'picking_id': picking.id, + 'state': 'draft', + 'company_id': line.move_id.company_id.id, + 'price_unit': price_unit, + 'picking_type_id': picking.picking_type_id.id, + 'route_ids': 1 and [ + (6, 0, [x.id for x in self.env['stock.rule'].search([('id', 'in', (2, 3))])])] or [], + 'warehouse_id': picking.picking_type_id.warehouse_id.id, + } + if picking.picking_type_id.code == 'incoming': + template = { + 'name': line.name or '', + 'product_id': line.product_id.id, + 'product_uom': line.product_uom_id.id, + 'location_id': line.move_id.partner_id.property_stock_supplier.id, + 'location_dest_id': picking.picking_type_id.default_location_dest_id.id, + 'picking_id': picking.id, + 'state': 'draft', + 'company_id': line.move_id.company_id.id, + 'price_unit': price_unit, + 'picking_type_id': picking.picking_type_id.id, + 'route_ids': 1 and [ + (6, 0, [x.id for x in self.env['stock.rule'].search([('id', 'in', (2, 3))])])] or [], + 'warehouse_id': picking.picking_type_id.warehouse_id.id, + } + diff_quantity = line.quantity + tmp = template.copy() + tmp.update({ + 'product_uom_qty': diff_quantity, + }) + template['product_uom_qty'] = diff_quantity + done += moves.create(template) + return done diff --git a/invoice_stock_move/static/description/assets/icons/check.png b/invoice_stock_move/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/check.png differ diff --git a/invoice_stock_move/static/description/assets/icons/chevron.png b/invoice_stock_move/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/chevron.png differ diff --git a/invoice_stock_move/static/description/assets/icons/cogs.png b/invoice_stock_move/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/cogs.png differ diff --git a/invoice_stock_move/static/description/assets/icons/consultation.png b/invoice_stock_move/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/consultation.png differ diff --git a/invoice_stock_move/static/description/assets/icons/ecom-black.png b/invoice_stock_move/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/ecom-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/education-black.png b/invoice_stock_move/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/education-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/hotel-black.png b/invoice_stock_move/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/hotel-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/license.png b/invoice_stock_move/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/license.png differ diff --git a/invoice_stock_move/static/description/assets/icons/lifebuoy.png b/invoice_stock_move/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/lifebuoy.png differ diff --git a/invoice_stock_move/static/description/assets/icons/manufacturing-black.png b/invoice_stock_move/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/manufacturing-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/pos-black.png b/invoice_stock_move/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/pos-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/puzzle.png b/invoice_stock_move/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/puzzle.png differ diff --git a/invoice_stock_move/static/description/assets/icons/restaurant-black.png b/invoice_stock_move/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/restaurant-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/service-black.png b/invoice_stock_move/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/service-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/trading-black.png b/invoice_stock_move/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/trading-black.png differ diff --git a/invoice_stock_move/static/description/assets/icons/training.png b/invoice_stock_move/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/training.png differ diff --git a/invoice_stock_move/static/description/assets/icons/update.png b/invoice_stock_move/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/update.png differ diff --git a/invoice_stock_move/static/description/assets/icons/user.png b/invoice_stock_move/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/user.png differ diff --git a/invoice_stock_move/static/description/assets/icons/wrench.png b/invoice_stock_move/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/invoice_stock_move/static/description/assets/icons/wrench.png differ diff --git a/invoice_stock_move/static/description/assets/misc/categories.png b/invoice_stock_move/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/categories.png differ diff --git a/invoice_stock_move/static/description/assets/misc/check-box.png b/invoice_stock_move/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/check-box.png differ diff --git a/invoice_stock_move/static/description/assets/misc/compass.png b/invoice_stock_move/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/compass.png differ diff --git a/invoice_stock_move/static/description/assets/misc/corporate.png b/invoice_stock_move/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/corporate.png differ diff --git a/invoice_stock_move/static/description/assets/misc/customer-support.png b/invoice_stock_move/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/customer-support.png differ diff --git a/invoice_stock_move/static/description/assets/misc/cybrosys-logo.png b/invoice_stock_move/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/cybrosys-logo.png differ diff --git a/invoice_stock_move/static/description/assets/misc/features.png b/invoice_stock_move/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/features.png differ diff --git a/invoice_stock_move/static/description/assets/misc/logo.png b/invoice_stock_move/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/logo.png differ diff --git a/invoice_stock_move/static/description/assets/misc/pictures.png b/invoice_stock_move/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/pictures.png differ diff --git a/invoice_stock_move/static/description/assets/misc/pie-chart.png b/invoice_stock_move/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/pie-chart.png differ diff --git a/invoice_stock_move/static/description/assets/misc/right-arrow.png b/invoice_stock_move/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/right-arrow.png differ diff --git a/invoice_stock_move/static/description/assets/misc/star.png b/invoice_stock_move/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/star.png differ diff --git a/invoice_stock_move/static/description/assets/misc/support.png b/invoice_stock_move/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/support.png differ diff --git a/invoice_stock_move/static/description/assets/misc/whatsapp.png b/invoice_stock_move/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/invoice_stock_move/static/description/assets/misc/whatsapp.png differ diff --git a/invoice_stock_move/static/description/assets/modules/budget_image.png b/invoice_stock_move/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..b50130c7d Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/budget_image.png differ diff --git a/invoice_stock_move/static/description/assets/modules/dynamic_image.png b/invoice_stock_move/static/description/assets/modules/dynamic_image.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/dynamic_image.png differ diff --git a/invoice_stock_move/static/description/assets/modules/employee_image.png b/invoice_stock_move/static/description/assets/modules/employee_image.png new file mode 100644 index 000000000..30ad58232 Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/employee_image.png differ diff --git a/invoice_stock_move/static/description/assets/modules/gantt_image.png b/invoice_stock_move/static/description/assets/modules/gantt_image.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/gantt_image.png differ diff --git a/invoice_stock_move/static/description/assets/modules/quotation_image.png b/invoice_stock_move/static/description/assets/modules/quotation_image.png new file mode 100644 index 000000000..499b1a72f Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/quotation_image.png differ diff --git a/invoice_stock_move/static/description/assets/modules/whatsapp_image.png b/invoice_stock_move/static/description/assets/modules/whatsapp_image.png new file mode 100644 index 000000000..f5174ab22 Binary files /dev/null and b/invoice_stock_move/static/description/assets/modules/whatsapp_image.png differ diff --git a/invoice_stock_move/static/description/assets/screenshots/demo2.png b/invoice_stock_move/static/description/assets/screenshots/demo2.png new file mode 100644 index 000000000..3294df4de Binary files /dev/null and b/invoice_stock_move/static/description/assets/screenshots/demo2.png differ diff --git a/invoice_stock_move/static/description/assets/screenshots/demo3.png b/invoice_stock_move/static/description/assets/screenshots/demo3.png new file mode 100644 index 000000000..aa3b188e4 Binary files /dev/null and b/invoice_stock_move/static/description/assets/screenshots/demo3.png differ diff --git a/invoice_stock_move/static/description/assets/screenshots/demo4.png b/invoice_stock_move/static/description/assets/screenshots/demo4.png new file mode 100644 index 000000000..1194a145a Binary files /dev/null and b/invoice_stock_move/static/description/assets/screenshots/demo4.png differ diff --git a/invoice_stock_move/static/description/assets/screenshots/hero.gif b/invoice_stock_move/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..1be1f8489 Binary files /dev/null and b/invoice_stock_move/static/description/assets/screenshots/hero.gif differ diff --git a/invoice_stock_move/static/description/banner.png b/invoice_stock_move/static/description/banner.png new file mode 100644 index 000000000..216c130e0 Binary files /dev/null and b/invoice_stock_move/static/description/banner.png differ diff --git a/invoice_stock_move/static/description/icon.png b/invoice_stock_move/static/description/icon.png new file mode 100644 index 000000000..6abb07698 Binary files /dev/null and b/invoice_stock_move/static/description/icon.png differ diff --git a/invoice_stock_move/static/description/index.html b/invoice_stock_move/static/description/index.html new file mode 100644 index 000000000..42b6905b3 --- /dev/null +++ b/invoice_stock_move/static/description/index.html @@ -0,0 +1,543 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Stock Picking From Invoice

+

This Module Enables To Stock Pickings From Customer/Supplier Invoice

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Currently in Odoo , We cannot transfer stocks directly from customer/supplier invoice. We need to + depend sales module or purchase module to transfer or receive goods. This module enable to transfer + stocks from invoices without depending sales and purchase module. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Stock Picking From Customer Invoice + +
+
+ + Stock Picking From Supplier bill + +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Invoice page

+

Create invoice

+ +
+ +
+

Transfer Button in Customer invoice

+

Added an extra transfer button in invoice page

+ +
+ +
+

Shipment Smart Button

+

Shipment smart button for viewing the transfer in inventory

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/invoice_stock_move/views/invoice_stock_move_view.xml b/invoice_stock_move/views/invoice_stock_move_view.xml new file mode 100644 index 000000000..165ae21c8 --- /dev/null +++ b/invoice_stock_move/views/invoice_stock_move_view.xml @@ -0,0 +1,30 @@ + + + + + Move Name + account.move + + + + + + + + + \ No newline at end of file diff --git a/laundry_management/README.rst b/laundry_management/README.rst new file mode 100755 index 000000000..964d99f75 --- /dev/null +++ b/laundry_management/README.rst @@ -0,0 +1,42 @@ +Laundry Management v15 +====================== +This module helps you to manage laundry service. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Jesni Banu@cybrosys + Nilmar Shereef@cybrosys + Version 13: Nimisha Murali@cybrosys + Version 14: Minhaj T @cybrosys + Version 15: Gion @cybrosys + Version 16: Neenu Merlin Jose @cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/laundry_management/__init__.py b/laundry_management/__init__.py new file mode 100755 index 000000000..81be42017 --- /dev/null +++ b/laundry_management/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models +from . import reports diff --git a/laundry_management/__manifest__.py b/laundry_management/__manifest__.py new file mode 100755 index 000000000..524096ff6 --- /dev/null +++ b/laundry_management/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Laundry Management', + 'version': '16.0.1.0.0', + 'summary': """Complete Laundry Service Management""", + 'description': 'This module is very useful to manage all process of laundry service', + "category": "Industries", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'mail', 'sale', 'account', 'uom'], + 'data': [ + 'data/data.xml', + 'security/laundry_security.xml', + 'security/ir.model.access.csv', + 'views/laundry_view.xml', + 'views/washing_view.xml', + 'views/config_view.xml', + 'views/laundry_report.xml', + 'views/laundry_label.xml', + ], + 'images': ['static15/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/laundry_management/data/data.xml b/laundry_management/data/data.xml new file mode 100755 index 000000000..457e4f5b7 --- /dev/null +++ b/laundry_management/data/data.xml @@ -0,0 +1,8 @@ + + + + Laundry Service + service + order + + \ No newline at end of file diff --git a/laundry_management/doc/RELEASE_NOTES.md b/laundry_management/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..34f96ed56 --- /dev/null +++ b/laundry_management/doc/RELEASE_NOTES.md @@ -0,0 +1,10 @@ +## Module + +#### 14.09.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial commit for Laundry Management + + + + diff --git a/laundry_management/models/__init__.py b/laundry_management/models/__init__.py new file mode 100755 index 000000000..6868859f5 --- /dev/null +++ b/laundry_management/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import laundry diff --git a/laundry_management/models/laundry.py b/laundry_management/models/laundry.py new file mode 100755 index 000000000..0f8ef920e --- /dev/null +++ b/laundry_management/models/laundry.py @@ -0,0 +1,476 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +import time +from datetime import datetime +from odoo import models, fields, api, _ +from odoo.exceptions import UserError + + +class LaundryManagement(models.Model): + _name = 'laundry.order' + _inherit = 'mail.thread' + _description = "Laundry Order" + _order = 'order_date desc, id desc' + + @api.model + def create(self, vals): + vals['name'] = self.env['ir.sequence'].next_by_code('laundry.order') + return super(LaundryManagement, self).create(vals) + + @api.depends('order_lines') + def get_total(self): + total = 0 + for obj in self: + for each in obj.order_lines: + total += each.amount + obj.total_amount = total + + def confirm_order(self): + self.state = 'order' + sale_obj = self.env['sale.order'].create( + {'partner_id': self.partner_id.id, + 'partner_invoice_id': self.partner_invoice_id.id, + 'partner_shipping_id': self.partner_shipping_id.id}) + self.sale_obj = sale_obj + product_id = self.env.ref('laundry_management.laundry_service') + self.env['sale.order.line'].create({'product_id': product_id.id, + 'name': 'Laundry Service', + 'price_unit': self.total_amount, + 'order_id': sale_obj.id + }) + for each in self: + for obj in each.order_lines: + self.env['washing.washing'].create( + {'name': obj.product_id.name + '-Washing', + 'user_id': obj.washing_type.assigned_person.id, + 'description': obj.description, + 'laundry_obj': obj.id, + 'state': 'draft', + 'washing_date': datetime.now().strftime( + '%Y-%m-%d %H:%M:%S')}) + + def create_invoice(self): + if self.sale_obj.state in ['draft', 'sent']: + self.sale_obj.action_confirm() + self.invoice_status = self.sale_obj.invoice_status + return { + 'name': 'Create Invoice', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'sale.advance.payment.inv', + 'type': 'ir.actions.act_window', + 'context': {'laundry_sale_obj': self.sale_obj.id}, + 'target': 'new' + } + + def return_dress(self): + self.state = 'return' + + def cancel_order(self): + self.state = 'cancel' + + def _invoice_count(self): + wrk_ordr_ids = self.env['account.move'].search([('invoice_origin', '=', self.sale_obj.name)]) + self.invoice_count = len(wrk_ordr_ids) + + def _work_count(self): + if self.id: + wrk_ordr_ids = self.env['washing.washing'].search([('laundry_obj.laundry_obj.id', '=', self.id)]) + self.work_count = len(wrk_ordr_ids) + else: + self.work_count = False + + def action_view_laundry_works(self): + + work_obj = self.env['washing.washing'].search( + [('laundry_obj.laundry_obj.id', '=', self.id)]) + work_ids = [] + for each in work_obj: + work_ids.append(each.id) + view_id = self.env.ref('laundry_management.washing_form_view').id + if work_ids: + if len(work_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'washing.washing', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Works'), + 'res_id': work_ids and work_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', work_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'washing.washing', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Works'), + # 'res_id': work_ids + } + return value + + def action_view_invoice(self): + self.ensure_one() + inv_obj = self.env['account.move'].search( + [('invoice_origin', '=', self.sale_obj.name)]) + inv_ids = [] + for each in inv_obj: + inv_ids.append(each.id) + view_id = self.env.ref('account.view_move_form').id + if inv_ids: + if len(inv_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.move', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Invoice'), + 'res_id': inv_ids and inv_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', inv_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'account.move', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Invoice'), + # 'res_id': inv_ids + } + return value + + name = fields.Char(string="Label", copy=False) + invoice_status = fields.Selection([ + ('upselling', 'Upselling Opportunity'), + ('invoiced', 'Fully Invoiced'), + ('to invoice', 'To Invoice'), + ('no', 'Nothing to Invoice') + ], string='Invoice Status', invisible=1, related='sale_obj.invoice_status', + store=True) + sale_obj = fields.Many2one('sale.order', invisible=1) + invoice_count = fields.Integer(compute='_invoice_count', + string='# Invoice') + work_count = fields.Integer(compute='_work_count', string='# Works') + partner_id = fields.Many2one('res.partner', string='Customer', + readonly=True, + states={'draft': [('readonly', False)], + 'order': [('readonly', False)]}, + required=True, + change_default=True, index=True, + ) + partner_invoice_id = fields.Many2one('res.partner', + string='Invoice Address', + readonly=True, required=True, + states={ + 'draft': [('readonly', False)], + 'order': [('readonly', False)]}, + help="Invoice address for current sales order.") + partner_shipping_id = fields.Many2one('res.partner', + string='Delivery Address', + readonly=True, required=True, + states={ + 'draft': [('readonly', False)], + 'order': [('readonly', False)]}, + help="Delivery address for current sales order.") + order_date = fields.Datetime(string="Date", + default=datetime.now().strftime( + '%Y-%m-%d %H:%M:%S')) + laundry_person = fields.Many2one('res.users', string='Laundry Person', + required=1) + order_lines = fields.One2many('laundry.order.line', 'laundry_obj', + required=1, ondelete='cascade') + total_amount = fields.Float(compute='get_total', string='Total', store=1) + currency_id = fields.Many2one("res.currency", string="Currency") + note = fields.Text(string='Terms and conditions') + state = fields.Selection([ + ('draft', 'Draft'), + ('order', 'Laundry Order'), + ('process', 'Processing'), + ('done', 'Done'), + ('return', 'Returned'), + ('cancel', 'Cancelled'), + ], string='Status', readonly=True, copy=False, index=True, + track_visibility='onchange', default='draft') + + +class LaundryManagementLine(models.Model): + _name = 'laundry.order.line' + _description = "Laundry Order Line" + + @api.depends('washing_type', 'extra_work', 'qty') + def get_amount(self): + for obj in self: + total = obj.washing_type.amount * obj.qty + for each in obj.extra_work: + total += each.amount * obj.qty + obj.amount = total + + product_id = fields.Many2one('product.product', string='Dress', required=1) + qty = fields.Integer(string='No of items', required=1) + description = fields.Text(string='Description') + washing_type = fields.Many2one('washing.type', string='Washing Type', + required=1) + extra_work = fields.Many2many('washing.work', string='Extra Work') + amount = fields.Float(compute='get_amount', string='Amount') + laundry_obj = fields.Many2one('laundry.order', invisible=1) + state = fields.Selection([ + ('draft', 'Draft'), + ('wash', 'Washing'), + ('extra_work', 'Make Over'), + ('done', 'Done'), + ('cancel', 'Cancelled'), + ], string='Status', readonly=True, copy=False, index=True, default='draft') + + +class WashingType(models.Model): + _name = 'washing.type' + _description = "Washing TYpe" + + name = fields.Char(string='Name', required=1) + assigned_person = fields.Many2one('res.users', string='Assigned Person', + required=1) + amount = fields.Float(string='Service Charge', required=1) + + +class ExtraWork(models.Model): + _name = 'washing.work' + _description = 'Washing Work' + + name = fields.Char(string='Name', required=1) + assigned_person = fields.Many2one('res.users', string='Assigned Person', + required=1) + amount = fields.Float(string='Service Charge', required=1) + + +class Washing(models.Model): + _name = 'washing.washing' + _description = 'Washing Washing' + + def start_wash(self): + if not self.laundry_works: + self.laundry_obj.state = 'wash' + self.laundry_obj.laundry_obj.state = 'process' + for each in self: + for obj in each.product_line: + self.env['sale.order.line'].create( + {'product_id': obj.product_id.id, + 'name': obj.name, + 'price_unit': obj.price_unit, + 'order_id': each.laundry_obj.laundry_obj.sale_obj.id, + 'product_uom_qty': obj.quantity, + 'product_uom': obj.uom_id.id, + }) + self.state = 'process' + + def set_to_done(self): + self.state = 'done' + + f = 0 + if not self.laundry_works: + if self.laundry_obj.extra_work: + for each in self.laundry_obj.extra_work: + self.create({'name': each.name, + 'user_id': each.assigned_person.id, + 'description': self.laundry_obj.description, + 'laundry_obj': self.laundry_obj.id, + 'state': 'draft', + 'laundry_works': True, + 'washing_date': datetime.now().strftime( + '%Y-%m-%d %H:%M:%S')}) + self.laundry_obj.state = 'extra_work' + laundry_obj = self.search([('laundry_obj.laundry_obj', '=', + self.laundry_obj.laundry_obj.id)]) + for each in laundry_obj: + if each.state != 'done' or each.state == 'cancel': + f = 1 + break + if f == 0: + self.laundry_obj.laundry_obj.state = 'done' + laundry_obj1 = self.search([('laundry_obj', '=', self.laundry_obj.id)]) + f1 = 0 + for each in laundry_obj1: + if each.state != 'done' or each.state == 'cancel': + f1 = 1 + break + if f1 == 0: + self.laundry_obj.state = 'done' + + @api.depends('product_line') + def get_total(self): + total = 0 + for obj in self: + for each in obj.product_line: + total += each.subtotal + obj.total_amount = total + + name = fields.Char(string='Work') + laundry_works = fields.Boolean(default=False, invisible=1) + user_id = fields.Many2one('res.users', string='Assigned Person') + washing_date = fields.Datetime(string='Date') + description = fields.Text(string='Description') + state = fields.Selection([ + ('draft', 'Draft'), + ('process', 'Process'), + ('done', 'Done'), + ('cancel', 'Cancelled'), + ], string='Status', readonly=True, copy=False, index=True, default='draft') + laundry_obj = fields.Many2one('laundry.order.line', invisible=1) + product_line = fields.One2many('wash.order.line', 'wash_obj', + string='Products', ondelete='cascade') + total_amount = fields.Float(compute='get_total', string='Grand Total') + + +class SaleOrderInherit(models.Model): + _name = 'wash.order.line' + _description = 'Washing Order LINE' + + @api.depends('price_unit', 'quantity') + def compute_amount(self): + total = 0 + for obj in self: + total += obj.price_unit * obj.quantity + obj.subtotal = total + + wash_obj = fields.Many2one('washing.washing', string='Order Reference', + ondelete='cascade') + name = fields.Text(string='Description', required=True) + uom_id = fields.Many2one('uom.uom', 'Unit of Measure ', required=True) + quantity = fields.Integer(string='Quantity') + product_id = fields.Many2one('product.product', string='Product') + price_unit = fields.Float('Unit Price', default=0.0, + related='product_id.list_price') + subtotal = fields.Float(compute='compute_amount', string='Subtotal', + readonly=True, store=True) + + +class LaundryManagementInvoice(models.TransientModel): + _inherit = 'sale.advance.payment.inv' + + def create_invoices(self): + context = self._context + if context.get('laundry_sale_obj'): + sale_orders = self.env['sale.order'].browse( + context.get('laundry_sale_obj')) + + else: + sale_orders = self.env['sale.order'].browse( + self._context.get('active_ids', [])) + if self.advance_payment_method == 'delivered': + sale_orders._create_invoices() + elif self.advance_payment_method == 'all': + sale_orders._create_invoices()(final=True) + else: + # Create deposit product if necessary + if not self.product_id: + vals = self._prepare_deposit_product() + self.product_id = self.env['product.product'].create(vals) + + self.env['ir.config_parameter'].sudo().set_param('sale.default_deposit_product_id', self.product_id.id) + sale_line_obj = self.env['sale.order.line'] + for order in sale_orders: + if self.advance_payment_method == 'percentage': + amount = order.amount_untaxed * self.amount / 100 + else: + amount = self.amount + if self.product_id.invoice_policy != 'order': + raise UserError(_( + 'The product used to invoice a down payment should have an invoice policy set to "Ordered' + ' quantities". Please update your deposit product to be able to create a deposit invoice.')) + if self.product_id.type != 'service': + raise UserError(_( + "The product used to invoice a down payment should be of type 'Service'. Please use another " + "product or update this product.")) + taxes = self.product_id.taxes_id.filtered( + lambda + r: not order.company_id or r.company_id == order.company_id) + if order.fiscal_position_id and taxes: + tax_ids = order.fiscal_position_id.map_tax(taxes).ids + else: + tax_ids = taxes.ids + so_line = sale_line_obj.create({ + 'name': _('Advance: %s') % (time.strftime('%m %Y'),), + 'price_unit': amount, + 'product_uom_qty': 0.0, + 'order_id': order.id, + 'discount': 0.0, + 'product_uom': self.product_id.uom_id.id, + 'product_id': self.product_id.id, + 'tax_id': [(6, 0, tax_ids)], + }) + self._create_invoice(order, so_line, amount) + if self._context.get('open_invoices', False): + return sale_orders.action_view_invoice() + return {'type': 'ir.actions.act_window_close'} + + def _create_invoice(self, order, so_line, amount): + if ( + self.advance_payment_method == 'percentage' and self.amount <= 0.00) or ( + self.advance_payment_method == 'fixed' and self.fixed_amount <= 0.00): + raise UserError( + _('The value of the down payment amount must be positive.')) + if self.advance_payment_method == 'percentage': + amount = order.amount_untaxed * self.amount / 100 + name = _("Down payment of %s%%") % (self.amount,) + else: + amount = self.fixed_amount + name = _('Down Payment') + + invoice_vals = { + 'move_type': 'out_invoice', + 'invoice_origin': order.name, + 'invoice_user_id': order.user_id.id, + 'narration': order.note, + 'partner_id': order.partner_invoice_id.id, + 'fiscal_position_id': order.fiscal_position_id.id or order.partner_id.property_account_position_id.id, + 'partner_shipping_id': order.partner_shipping_id.id, + 'currency_id': order.pricelist_id.currency_id.id, + 'ref': order.client_order_ref, + 'invoice_payment_term_id': order.payment_term_id.id, + 'team_id': order.team_id.id, + 'campaign_id': order.campaign_id.id, + 'medium_id': order.medium_id.id, + 'source_id': order.source_id.id, + 'invoice_line_ids': [(0, 0, { + 'name': name, + 'price_unit': amount, + 'quantity': 1.0, + 'product_id': self.product_id.id, + 'product_uom_id': so_line.product_uom.id, + + 'sale_line_ids': [(6, 0, [so_line.id])], + 'analytic_tag_ids': [(6, 0, so_line.analytic_tag_ids.ids)], + 'analytic_account_id': order.analytic_account_id.id or False, + })], + } + if order.fiscal_position_id: + invoice_vals['fiscal_position_id'] = order.fiscal_position_id.id + invoice = self.env['account.move'].create(invoice_vals) + invoice.message_post_with_view('mail.message_origin_link', + values={'self': invoice, + 'origin': order}, + subtype_id=self.env.ref( + 'mail.mt_note').id) diff --git a/laundry_management/reports/__init__.py b/laundry_management/reports/__init__.py new file mode 100755 index 000000000..5deb7ab66 --- /dev/null +++ b/laundry_management/reports/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import laundry_report diff --git a/laundry_management/reports/laundry_report.py b/laundry_management/reports/laundry_report.py new file mode 100755 index 000000000..a90833dd6 --- /dev/null +++ b/laundry_management/reports/laundry_report.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, tools + + +class DifferedCheckHistory(models.Model): + _name = "report.laundry.order" + _description = "Laundry Order Analysis" + _auto = False + + name = fields.Char(string="Label") + invoice_status = fields.Selection([ + ('upselling', 'Upselling Opportunity'), + ('invoiced', 'Fully Invoiced'), + ('to invoice', 'To Invoice'), + ('no', 'Nothing to Invoice') + ], string='Invoice Status', store=True) + partner_id = fields.Many2one('res.partner', string='Customer') + partner_invoice_id = fields.Many2one('res.partner', string='Invoice Address') + partner_shipping_id = fields.Many2one('res.partner', string='Delivery Address') + order_date = fields.Datetime(string="Date") + laundry_person = fields.Many2one('res.users', string='Laundry Person') + total_amount = fields.Float(string='Total') + currency_id = fields.Many2one("res.currency", string="Currency") + state = fields.Selection([ + ('draft', 'Draft'), + ('order', 'Laundry Order'), + ('process', 'Processing'), + ('done', 'Done'), + ('return', 'Returned'), + ('cancel', 'Cancelled'), + ], string='Status') + + _order = 'name desc' + + def _select(self): + select_str = """ + SELECT + (select 1 ) AS nbr, + t.id as id, + t.name as name, + t.invoice_status as invoice_status, + t.partner_id as partner_id, + t.partner_invoice_id as partner_invoice_id, + t.partner_shipping_id as partner_shipping_id, + t.order_date as order_date, + t.laundry_person as laundry_person, + t.total_amount as total_amount, + t.currency_id as currency_id, + t.state as state + """ + return select_str + + def _group_by(self): + group_by_str = """ + GROUP BY + t.id, + name, + invoice_status, + partner_id, + partner_invoice_id, + partner_shipping_id, + order_date, + laundry_person, + total_amount, + currency_id, + state + """ + return group_by_str + + def init(self): + tools.sql.drop_view_if_exists(self._cr, 'report_laundry_order') + self._cr.execute(""" + CREATE view report_laundry_order as + %s + FROM laundry_order t + %s + """ % (self._select(), self._group_by())) diff --git a/laundry_management/security/ir.model.access.csv b/laundry_management/security/ir.model.access.csv new file mode 100755 index 000000000..2433d0414 --- /dev/null +++ b/laundry_management/security/ir.model.access.csv @@ -0,0 +1,19 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +laundry_model_access_right_user,laundry_model_access_right,model_laundry_order,laundry_group_user,1,1,0,0 +laundry_model_access_right_manager,laundry_model_access_right1,model_laundry_order,laundry_group_manager,1,1,1,1 +laundry_order_line_model_access_right_user,laundry_order_line_model_access_right,model_laundry_order_line,laundry_group_user,1,1,0,0 +laundry_order_line_model_access_right_manager,laundry_order_line_model_access_right1,model_laundry_order_line,laundry_group_manager,1,1,1,1 +laundry_washing_type_model_access_right_user,laundry_washing_type_model_access_right,model_washing_type,laundry_group_user,1,0,0,0 +laundry_washing_type_model_access_right_manager,laundry_washing_type_model_access_right1,model_washing_type,laundry_group_manager,1,1,1,1 +laundry_washing_work_model_access_right_user,laundry_model_washing_work_access_right,model_washing_work,laundry_group_user,1,0,0,0 +laundry_washing_work_model_access_right_manager,laundry_model_washing_work_access_right1,model_washing_work,laundry_group_manager,1,1,1,1 +laundry_washing_washing_model_access_right_user,laundry_model_washing_washing_access_right,model_washing_washing,laundry_group_user,1,1,1,0 +laundry_washing_washing_model_access_right_manager,laundry_model_washing_washing_access_right1,model_washing_washing,laundry_group_manager,1,1,1,1 +laundry_wash_order_line_model_access_right_user,laundry_model_wash_order_line_access_right,model_wash_order_line,laundry_group_user,1,1,1,0 +laundry_wash_order_line_model_access_right_manager,laundry_model_wash_order_line_access_right1,model_wash_order_line,laundry_group_manager,1,1,1,1 +laundry_report_laundry_order_model_access_right_user,laundry_model_report_laundry_order_access_right,model_report_laundry_order,laundry_group_user,1,0,0,0 +laundry_report_laundry_order_model_access_right_manager,laundry_model_report_laundry_order_access_right1,model_report_laundry_order,laundry_group_manager,1,1,1,1 +laundry_report_laundry_order_model_access_right_manager1,laundry_model_report_laundry_order_access_right11,sale.model_sale_order,laundry_group_manager,1,1,1,1 +laundry_report_laundry_order_model_access_right_manager12,laundry_model_report_laundry_order_access_right112,sale.model_sale_order_line,laundry_group_manager,1,1,1,1 +laundry_report_laundry_order_model_access_right_manager11,laundry_model_report_laundry_order_access_right111,sale.model_sale_order,laundry_group_user,1,1,1,1 +laundry_report_laundry_order_model_access_right_manager112,laundry_model_report_laundry_order_access_right1112,sale.model_sale_order_line,laundry_group_user,1,1,1,1 \ No newline at end of file diff --git a/laundry_management/security/laundry_security.xml b/laundry_management/security/laundry_security.xml new file mode 100755 index 000000000..b07069253 --- /dev/null +++ b/laundry_management/security/laundry_security.xml @@ -0,0 +1,34 @@ + + + + + Laundry + 18 + + + User + + + + + Manager + + + + + + laundry manager: full access + + [(1,'=',1)] + + + + user: own document only + + [('laundry_person.id','=',user.id)] + + + + + + diff --git a/laundry_management/static/description/assets/icons/check.png b/laundry_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/laundry_management/static/description/assets/icons/check.png differ diff --git a/laundry_management/static/description/assets/icons/chevron.png b/laundry_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/laundry_management/static/description/assets/icons/chevron.png differ diff --git a/laundry_management/static/description/assets/icons/cogs.png b/laundry_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/laundry_management/static/description/assets/icons/cogs.png differ diff --git a/laundry_management/static/description/assets/icons/consultation.png b/laundry_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/laundry_management/static/description/assets/icons/consultation.png differ diff --git a/laundry_management/static/description/assets/icons/ecom-black.png b/laundry_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/laundry_management/static/description/assets/icons/ecom-black.png differ diff --git a/laundry_management/static/description/assets/icons/education-black.png b/laundry_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/laundry_management/static/description/assets/icons/education-black.png differ diff --git a/laundry_management/static/description/assets/icons/hotel-black.png b/laundry_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/laundry_management/static/description/assets/icons/hotel-black.png differ diff --git a/laundry_management/static/description/assets/icons/license.png b/laundry_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/laundry_management/static/description/assets/icons/license.png differ diff --git a/laundry_management/static/description/assets/icons/lifebuoy.png b/laundry_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/laundry_management/static/description/assets/icons/lifebuoy.png differ diff --git a/laundry_management/static/description/assets/icons/manufacturing-black.png b/laundry_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/laundry_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/laundry_management/static/description/assets/icons/pos-black.png b/laundry_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/laundry_management/static/description/assets/icons/pos-black.png differ diff --git a/laundry_management/static/description/assets/icons/puzzle.png b/laundry_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/laundry_management/static/description/assets/icons/puzzle.png differ diff --git a/laundry_management/static/description/assets/icons/restaurant-black.png b/laundry_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/laundry_management/static/description/assets/icons/restaurant-black.png differ diff --git a/laundry_management/static/description/assets/icons/service-black.png b/laundry_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/laundry_management/static/description/assets/icons/service-black.png differ diff --git a/laundry_management/static/description/assets/icons/trading-black.png b/laundry_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/laundry_management/static/description/assets/icons/trading-black.png differ diff --git a/laundry_management/static/description/assets/icons/training.png b/laundry_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/laundry_management/static/description/assets/icons/training.png differ diff --git a/laundry_management/static/description/assets/icons/update.png b/laundry_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/laundry_management/static/description/assets/icons/update.png differ diff --git a/laundry_management/static/description/assets/icons/user.png b/laundry_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/laundry_management/static/description/assets/icons/user.png differ diff --git a/laundry_management/static/description/assets/icons/wrench.png b/laundry_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/laundry_management/static/description/assets/icons/wrench.png differ diff --git a/laundry_management/static/description/assets/misc/categories.png b/laundry_management/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/laundry_management/static/description/assets/misc/categories.png differ diff --git a/laundry_management/static/description/assets/misc/check-box.png b/laundry_management/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/laundry_management/static/description/assets/misc/check-box.png differ diff --git a/laundry_management/static/description/assets/misc/compass.png b/laundry_management/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/laundry_management/static/description/assets/misc/compass.png differ diff --git a/laundry_management/static/description/assets/misc/corporate.png b/laundry_management/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/laundry_management/static/description/assets/misc/corporate.png differ diff --git a/laundry_management/static/description/assets/misc/customer-support.png b/laundry_management/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/laundry_management/static/description/assets/misc/customer-support.png differ diff --git a/laundry_management/static/description/assets/misc/cybrosys-logo.png b/laundry_management/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/laundry_management/static/description/assets/misc/cybrosys-logo.png differ diff --git a/laundry_management/static/description/assets/misc/features.png b/laundry_management/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/laundry_management/static/description/assets/misc/features.png differ diff --git a/laundry_management/static/description/assets/misc/logo.png b/laundry_management/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/laundry_management/static/description/assets/misc/logo.png differ diff --git a/laundry_management/static/description/assets/misc/pictures.png b/laundry_management/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/laundry_management/static/description/assets/misc/pictures.png differ diff --git a/laundry_management/static/description/assets/misc/pie-chart.png b/laundry_management/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/laundry_management/static/description/assets/misc/pie-chart.png differ diff --git a/laundry_management/static/description/assets/misc/right-arrow.png b/laundry_management/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/laundry_management/static/description/assets/misc/right-arrow.png differ diff --git a/laundry_management/static/description/assets/misc/star.png b/laundry_management/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/laundry_management/static/description/assets/misc/star.png differ diff --git a/laundry_management/static/description/assets/misc/support.png b/laundry_management/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/laundry_management/static/description/assets/misc/support.png differ diff --git a/laundry_management/static/description/assets/misc/whatsapp.png b/laundry_management/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/laundry_management/static/description/assets/misc/whatsapp.png differ diff --git a/laundry_management/static/description/assets/modules/1.png b/laundry_management/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/laundry_management/static/description/assets/modules/1.png differ diff --git a/laundry_management/static/description/assets/modules/2.png b/laundry_management/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/laundry_management/static/description/assets/modules/2.png differ diff --git a/laundry_management/static/description/assets/modules/3.png b/laundry_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/laundry_management/static/description/assets/modules/3.png differ diff --git a/laundry_management/static/description/assets/modules/4.png b/laundry_management/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/laundry_management/static/description/assets/modules/4.png differ diff --git a/laundry_management/static/description/assets/modules/5.gif b/laundry_management/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/laundry_management/static/description/assets/modules/5.gif differ diff --git a/laundry_management/static/description/assets/modules/6.png b/laundry_management/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/laundry_management/static/description/assets/modules/6.png differ diff --git a/laundry_management/static/description/assets/screenshots/eight.png b/laundry_management/static/description/assets/screenshots/eight.png new file mode 100644 index 000000000..e43cb4d7f Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/eight.png differ diff --git a/laundry_management/static/description/assets/screenshots/five.png b/laundry_management/static/description/assets/screenshots/five.png new file mode 100644 index 000000000..83d13ed68 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/five.png differ diff --git a/laundry_management/static/description/assets/screenshots/four.png b/laundry_management/static/description/assets/screenshots/four.png new file mode 100644 index 000000000..ed33b351d Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/four.png differ diff --git a/laundry_management/static/description/assets/screenshots/hero.gif b/laundry_management/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..71aeeb120 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/hero.gif differ diff --git a/laundry_management/static/description/assets/screenshots/leven.png b/laundry_management/static/description/assets/screenshots/leven.png new file mode 100644 index 000000000..8a1ea9375 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/leven.png differ diff --git a/laundry_management/static/description/assets/screenshots/one.png b/laundry_management/static/description/assets/screenshots/one.png new file mode 100644 index 000000000..a75c08d54 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/one.png differ diff --git a/laundry_management/static/description/assets/screenshots/seven.png b/laundry_management/static/description/assets/screenshots/seven.png new file mode 100644 index 000000000..f9c720845 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/seven.png differ diff --git a/laundry_management/static/description/assets/screenshots/six.png b/laundry_management/static/description/assets/screenshots/six.png new file mode 100644 index 000000000..99edb1b6b Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/six.png differ diff --git a/laundry_management/static/description/assets/screenshots/ten.png b/laundry_management/static/description/assets/screenshots/ten.png new file mode 100644 index 000000000..a4536bb87 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/ten.png differ diff --git a/laundry_management/static/description/assets/screenshots/three.png b/laundry_management/static/description/assets/screenshots/three.png new file mode 100644 index 000000000..a9543f923 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/three.png differ diff --git a/laundry_management/static/description/assets/screenshots/two.png b/laundry_management/static/description/assets/screenshots/two.png new file mode 100644 index 000000000..e739472a2 Binary files /dev/null and b/laundry_management/static/description/assets/screenshots/two.png differ diff --git a/laundry_management/static/description/banner.png b/laundry_management/static/description/banner.png new file mode 100644 index 000000000..232897511 Binary files /dev/null and b/laundry_management/static/description/banner.png differ diff --git a/laundry_management/static/description/icon.png b/laundry_management/static/description/icon.png new file mode 100644 index 000000000..090a4e1d1 Binary files /dev/null and b/laundry_management/static/description/icon.png differ diff --git a/laundry_management/static/description/index.html b/laundry_management/static/description/index.html new file mode 100644 index 000000000..7558090cd --- /dev/null +++ b/laundry_management/static/description/index.html @@ -0,0 +1,608 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Laundry Management

+

Helps You To Manage Laundry Service.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This is an industrial specific module by Cybrosys Technologies for Laundry Management. It + manages the laundry process with assigning works to workers. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Recording Laundry Order. +
+
+ + Make Invoices. +
+
+ + Billing Facility for Extra Works. +
+
+ + Detailed Laundry Work Analysis Report. +
+
+ + Configuration for Washing Type. +
+
+ + Assigning Works. +
+
+ + Separate View for Works. +
+
+ + Label Printing for Every Order. +
+
+ + Access Rights From Multiple Level. +
+
+ + Config. for Extra Works (Ironing/Patching etc.) +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Recording Laundry Order

+

Laundry Management -> Laundry Management -> Laundry Order
+ + When you install this module, an extra menu Laundry Management will created in main + menu. Youcan see the different sub menus under the main menu. Here you can create + Laundry Order via clicking the 'Create' button. There you can specify the customer, + laundry person, order lines with washing type and Extra works for your orders. +

+ +

+ When you confirm the Laundry Order the corresponding works will created under the + assigned person. There you can add extra products also. It will also add in Billing. +

+ + + + +
+ +
+

Laundry Label

+

You can print label for each order from the print menu.

+ +
+ +
+

Laundry Works

+

Laundry Management -> Laundry Management -> Laundry Works
+ This is the Separate Laundry Works Form. Here you can see the work status of Laundry Works +

+ +

+ If there is any extra works , it will created as work When you finish the main work. Then we can + see the status of that order line is become 'Make Over' +

+ + +
+

Invoice

+

You can create Invoice via the button 'Create Invoice' when the order reaches to 'Done' + state.

+ +

+ You can see all the Invoice through the smart button "Invoices" from the Laundry Order form. +

+ +
+
+

Configuration

+

You can configure washing types from the menu Laundry Management -> Configuration -> + Washing Type by specifying the name, assigned person and service charge.

+ + +

You can configure additional works from the menu Laundry Management -> Configuration -> + Additional Works by specifying the name, assigned person and service charge

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/laundry_management/views/config_view.xml b/laundry_management/views/config_view.xml new file mode 100755 index 000000000..d0964cc70 --- /dev/null +++ b/laundry_management/views/config_view.xml @@ -0,0 +1,90 @@ + + + + + + washing.type.form + washing.type + +
+ + + + + + + + + + + +
+
+
+ + + washing.type.tree + washing.type + + + + + + + + + + + Washing Type + ir.actions.act_window + washing.type + tree,form + + + + washing.work.form + washing.work + +
+ + + + + + + + + + + +
+
+
+ + + washing.work.tree + washing.work + + + + + + + + + + + Additional Works + ir.actions.act_window + washing.work + tree,form + + + + + + + + +
+
\ No newline at end of file diff --git a/laundry_management/views/laundry_label.xml b/laundry_management/views/laundry_label.xml new file mode 100755 index 000000000..6d76a33dc --- /dev/null +++ b/laundry_management/views/laundry_label.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + Laundry Order Label + laundry.order + qweb-pdf + laundry_management.laundry_order_label + laundry_management.laundry_order_label + + report + + + + diff --git a/laundry_management/views/laundry_report.xml b/laundry_management/views/laundry_report.xml new file mode 100755 index 000000000..f2086e03d --- /dev/null +++ b/laundry_management/views/laundry_report.xml @@ -0,0 +1,27 @@ + + + + + + report.laundry.order.pivot + report.laundry.order + + + + + + + + + Laundry Order Analysis + report.laundry.order + pivot + {'group_by_no_leaf':1,'group_by':[]} + This report allows you to analyse the performance of your Laundry Mangement. + + + + + + + \ No newline at end of file diff --git a/laundry_management/views/laundry_view.xml b/laundry_management/views/laundry_view.xml new file mode 100755 index 000000000..8a5fb5ad3 --- /dev/null +++ b/laundry_management/views/laundry_view.xml @@ -0,0 +1,123 @@ + + + + + + Laundry Order Code + laundry.order + + LO + + + + laundry.order.form + laundry.order + +
+
+
+ +
+ + +
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+ + + + + + laundry.order.tree + laundry.order + + + + + + + + + + + + + + Laundry Management + ir.actions.act_window + laundry.order + tree,form + [] + +

+ Click to create a New Order. +

+
+
+ + + + + + + \ No newline at end of file diff --git a/laundry_management/views/washing_view.xml b/laundry_management/views/washing_view.xml new file mode 100755 index 000000000..1a1c6b72a --- /dev/null +++ b/laundry_management/views/washing_view.xml @@ -0,0 +1,77 @@ + + + + + + washing.washing.form + washing.washing + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + washing.washing.tree + washing.washing + + + + + + + + + + + + Washing + ir.actions.act_window + washing.washing + tree,form + [('user_id','=', uid)] + + + + + + \ No newline at end of file diff --git a/login_user_detail/README.rst b/login_user_detail/README.rst new file mode 100644 index 000000000..274b1f9c2 --- /dev/null +++ b/login_user_detail/README.rst @@ -0,0 +1,55 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--1-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +User Log Details +================ + +This module developed to record login details of user. + +Installation +============ + +Just select it from available modules to install it, there is no need to extra installations. + +Configuration +============= + +Nothing to configure. + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: + Saritha @ cybrosys + Muhammad P @ cybrosys + Noorjahan P @ cybrosys + V16 Sabeel B @ cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + + diff --git a/login_user_detail/__init__.py b/login_user_detail/__init__.py new file mode 100644 index 000000000..4d63b6757 --- /dev/null +++ b/login_user_detail/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Your Name (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/login_user_detail/__manifest__.py b/login_user_detail/__manifest__.py new file mode 100644 index 000000000..c04bc5cc9 --- /dev/null +++ b/login_user_detail/__manifest__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': "User Log Details", + 'version': '16.0.1.0.0', + 'summary': """Login User Details & IP Address""", + 'description': """This module records login information of user""", + 'author': "Cybrosys Techno Solutions ", + 'company': "Cybrosys Techno Solutions ", + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'category': 'Tools', + 'depends': ['base'], + 'license': 'AGPL-3', + 'data': [ + 'security/ir.model.access.csv', + 'views/login_user_views.xml'], + 'demo': [], + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, +} diff --git a/login_user_detail/doc/RELEASE_NOTES.md b/login_user_detail/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..3a21f19f6 --- /dev/null +++ b/login_user_detail/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 01.09.2022 +#### Version 16.0.1.0.0 +#### ADD +- Initial Commit for login_user_details \ No newline at end of file diff --git a/login_user_detail/models/__init__.py b/login_user_detail/models/__init__.py new file mode 100644 index 000000000..52c913351 --- /dev/null +++ b/login_user_detail/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Your Name (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import login_user_details diff --git a/login_user_detail/models/login_user_details.py b/login_user_detail/models/login_user_details.py new file mode 100644 index 000000000..6e0670a06 --- /dev/null +++ b/login_user_detail/models/login_user_details.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Your Name (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +import logging +from itertools import chain +from odoo.http import request +from odoo import models, fields, api + +_logger = logging.getLogger(__name__) +USER_PRIVATE_FIELDS = ['password'] +concat = chain.from_iterable + + +class LoginUserDetail(models.Model): + _inherit = 'res.users' + + @api.model + def _check_credentials(self, password, user_agent_env): + result = super(LoginUserDetail, self)._check_credentials(password, user_agent_env) + ip_address = request.httprequest.environ['REMOTE_ADDR'] + vals = {'name': self.name, + 'ip_address': ip_address + } + self.env['login.detail'].sudo().create(vals) + return result + + +class LoginUpdate(models.Model): + _name = 'login.detail' + _description = 'Login Details' + + name = fields.Char(string="User Name") + date_time = fields.Datetime(string="Login Date And Time", default=lambda self: fields.datetime.now()) + ip_address = fields.Char(string="IP Address") diff --git a/login_user_detail/security/ir.model.access.csv b/login_user_detail/security/ir.model.access.csv new file mode 100644 index 000000000..7935bc9e7 --- /dev/null +++ b/login_user_detail/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 +access_login_user_detail,login_user_detail_login_detail,model_login_detail,,1,1,1,1 diff --git a/login_user_detail/static/description/assets/icons/check.png b/login_user_detail/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/login_user_detail/static/description/assets/icons/check.png differ diff --git a/login_user_detail/static/description/assets/icons/chevron.png b/login_user_detail/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/chevron.png differ diff --git a/login_user_detail/static/description/assets/icons/cogs.png b/login_user_detail/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/cogs.png differ diff --git a/login_user_detail/static/description/assets/icons/consultation.png b/login_user_detail/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/login_user_detail/static/description/assets/icons/consultation.png differ diff --git a/login_user_detail/static/description/assets/icons/ecom-black.png b/login_user_detail/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/ecom-black.png differ diff --git a/login_user_detail/static/description/assets/icons/education-black.png b/login_user_detail/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/login_user_detail/static/description/assets/icons/education-black.png differ diff --git a/login_user_detail/static/description/assets/icons/hotel-black.png b/login_user_detail/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/login_user_detail/static/description/assets/icons/hotel-black.png differ diff --git a/login_user_detail/static/description/assets/icons/license.png b/login_user_detail/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/login_user_detail/static/description/assets/icons/license.png differ diff --git a/login_user_detail/static/description/assets/icons/lifebuoy.png b/login_user_detail/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/login_user_detail/static/description/assets/icons/lifebuoy.png differ diff --git a/login_user_detail/static/description/assets/icons/manufacturing-black.png b/login_user_detail/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/login_user_detail/static/description/assets/icons/manufacturing-black.png differ diff --git a/login_user_detail/static/description/assets/icons/pos-black.png b/login_user_detail/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/pos-black.png differ diff --git a/login_user_detail/static/description/assets/icons/puzzle.png b/login_user_detail/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/puzzle.png differ diff --git a/login_user_detail/static/description/assets/icons/restaurant-black.png b/login_user_detail/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/restaurant-black.png differ diff --git a/login_user_detail/static/description/assets/icons/service-black.png b/login_user_detail/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/login_user_detail/static/description/assets/icons/service-black.png differ diff --git a/login_user_detail/static/description/assets/icons/trading-black.png b/login_user_detail/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/login_user_detail/static/description/assets/icons/trading-black.png differ diff --git a/login_user_detail/static/description/assets/icons/training.png b/login_user_detail/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/login_user_detail/static/description/assets/icons/training.png differ diff --git a/login_user_detail/static/description/assets/icons/update.png b/login_user_detail/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/login_user_detail/static/description/assets/icons/update.png differ diff --git a/login_user_detail/static/description/assets/icons/user.png b/login_user_detail/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/login_user_detail/static/description/assets/icons/user.png differ diff --git a/login_user_detail/static/description/assets/icons/wrench.png b/login_user_detail/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/login_user_detail/static/description/assets/icons/wrench.png differ diff --git a/login_user_detail/static/description/assets/misc/categories.png b/login_user_detail/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/categories.png differ diff --git a/login_user_detail/static/description/assets/misc/check-box.png b/login_user_detail/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/check-box.png differ diff --git a/login_user_detail/static/description/assets/misc/compass.png b/login_user_detail/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/login_user_detail/static/description/assets/misc/compass.png differ diff --git a/login_user_detail/static/description/assets/misc/corporate.png b/login_user_detail/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/login_user_detail/static/description/assets/misc/corporate.png differ diff --git a/login_user_detail/static/description/assets/misc/customer-support.png b/login_user_detail/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/login_user_detail/static/description/assets/misc/customer-support.png differ diff --git a/login_user_detail/static/description/assets/misc/cybrosys-logo.png b/login_user_detail/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/login_user_detail/static/description/assets/misc/cybrosys-logo.png differ diff --git a/login_user_detail/static/description/assets/misc/features.png b/login_user_detail/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/features.png differ diff --git a/login_user_detail/static/description/assets/misc/logo.png b/login_user_detail/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/login_user_detail/static/description/assets/misc/logo.png differ diff --git a/login_user_detail/static/description/assets/misc/pictures.png b/login_user_detail/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/pictures.png differ diff --git a/login_user_detail/static/description/assets/misc/pie-chart.png b/login_user_detail/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/pie-chart.png differ diff --git a/login_user_detail/static/description/assets/misc/right-arrow.png b/login_user_detail/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/right-arrow.png differ diff --git a/login_user_detail/static/description/assets/misc/star.png b/login_user_detail/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/login_user_detail/static/description/assets/misc/star.png differ diff --git a/login_user_detail/static/description/assets/misc/support.png b/login_user_detail/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/support.png differ diff --git a/login_user_detail/static/description/assets/misc/whatsapp.png b/login_user_detail/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/login_user_detail/static/description/assets/misc/whatsapp.png differ diff --git a/login_user_detail/static/description/assets/modules/1.png b/login_user_detail/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/login_user_detail/static/description/assets/modules/1.png differ diff --git a/login_user_detail/static/description/assets/modules/2.png b/login_user_detail/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/login_user_detail/static/description/assets/modules/2.png differ diff --git a/login_user_detail/static/description/assets/modules/3.png b/login_user_detail/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/login_user_detail/static/description/assets/modules/3.png differ diff --git a/login_user_detail/static/description/assets/modules/4.png b/login_user_detail/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/login_user_detail/static/description/assets/modules/4.png differ diff --git a/login_user_detail/static/description/assets/modules/5.gif b/login_user_detail/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/login_user_detail/static/description/assets/modules/5.gif differ diff --git a/login_user_detail/static/description/assets/modules/6.png b/login_user_detail/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/login_user_detail/static/description/assets/modules/6.png differ diff --git a/login_user_detail/static/description/assets/screenshots/hero.gif b/login_user_detail/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..fea981e63 Binary files /dev/null and b/login_user_detail/static/description/assets/screenshots/hero.gif differ diff --git a/login_user_detail/static/description/assets/screenshots/screenshot-1.png b/login_user_detail/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 000000000..d9da9101a Binary files /dev/null and b/login_user_detail/static/description/assets/screenshots/screenshot-1.png differ diff --git a/login_user_detail/static/description/banner.png b/login_user_detail/static/description/banner.png new file mode 100644 index 000000000..99298bf4b Binary files /dev/null and b/login_user_detail/static/description/banner.png differ diff --git a/login_user_detail/static/description/icon.png b/login_user_detail/static/description/icon.png new file mode 100644 index 000000000..202d3cbb3 Binary files /dev/null and b/login_user_detail/static/description/icon.png differ diff --git a/login_user_detail/static/description/index.html b/login_user_detail/static/description/index.html new file mode 100644 index 000000000..1a8806c8e --- /dev/null +++ b/login_user_detail/static/description/index.html @@ -0,0 +1,521 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

User Log Details +

+

User Log Details, Record login date, IP Address of login user.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ User Log Details, Record login date,IP Address of login user. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + + User Log Details. +

+ View user log details, login date & IP address.

+
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

+ Login Details

+

+ View login details such as user name, IP address, date and time.

+ +
+
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/login_user_detail/views/login_user_views.xml b/login_user_detail/views/login_user_views.xml new file mode 100644 index 000000000..1b49d4f1c --- /dev/null +++ b/login_user_detail/views/login_user_views.xml @@ -0,0 +1,42 @@ + + + + + Login User Details + login.detail + +
+ + + + + + + +
+
+
+ + + Login User Details + login.detail + + + + + + + + + + + Login User Details + login.detail + tree,form + + + + +
+
\ No newline at end of file diff --git a/medical_lab_management/README.rst b/medical_lab_management/README.rst new file mode 100644 index 000000000..5fd45a0c6 --- /dev/null +++ b/medical_lab_management/README.rst @@ -0,0 +1,43 @@ +Medical Lab Management v16 +========================== +Helps You To Manage Medical Lab Operations. + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Anusha P P @ cybrosys + Niyas Raphy @ cybrosys + V14 Muhammad P @ cybrosys + V15 Mily Shajan @ cybrosys + V16 Sabeel B @ cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + diff --git a/medical_lab_management/__init__.py b/medical_lab_management/__init__.py new file mode 100644 index 000000000..627a7d13f --- /dev/null +++ b/medical_lab_management/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/medical_lab_management/__manifest__.py b/medical_lab_management/__manifest__.py new file mode 100644 index 000000000..153f8d75e --- /dev/null +++ b/medical_lab_management/__manifest__.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': "Medical Lab Management", + 'version': '16.0.1.0.0', + 'summary': """Manage Medical Lab Operations.""", + 'description': """Manage Medical Lab General Operations, Odoo15, Odoo 15""", + 'author': "Cybrosys Techno Solutions", + 'maintainer': 'Cybrosys Techno Solutions', + 'company': "Cybrosys Techno Solutions", + 'website': "https://www.cybrosys.com", + 'category': 'Industries', + 'depends': ['base', 'mail', 'account', 'contacts'], + 'data': [ + 'security/lab_users.xml', + 'security/ir.model.access.csv', + 'views/res_partner.xml', + 'views/lab_patient_view.xml', + 'views/test_unit_view.xml', + 'views/lab_test_type.xml', + 'views/lab_test_content_type.xml', + 'views/physician_specialty.xml', + 'views/physician_details.xml', + 'views/lab_request.xml', + 'views/lab_appointment.xml', + 'views/account_invoice.xml', + 'report/report.xml', + 'report/lab_test_report.xml', + 'report/lab_patient_card.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/medical_lab_management/doc/RELEASE_NOTES.md b/medical_lab_management/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..5f5e46ac6 --- /dev/null +++ b/medical_lab_management/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 30.08.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial Commit + + diff --git a/medical_lab_management/models/__init__.py b/medical_lab_management/models/__init__.py new file mode 100644 index 000000000..dbb0454a3 --- /dev/null +++ b/medical_lab_management/models/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import physician_speciality +from . import res_partner +from . import lab_patient +from . import testing_unit +from . import lab_test_type +from . import lab_test_content_type +from . import lab_appointment +from . import lab_request +from . import account_invoice + + diff --git a/medical_lab_management/models/account_invoice.py b/medical_lab_management/models/account_invoice.py new file mode 100644 index 000000000..03de99157 --- /dev/null +++ b/medical_lab_management/models/account_invoice.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class LabRequestInvoices(models.Model): + _inherit = 'account.move' + + is_lab_invoice = fields.Boolean(string="Is Lab Invoice") + lab_request = fields.Many2one('lab.appointment', string="Lab Appointment", help="Source Document") + + def action_invoice_paid(self): + res = super(LabRequestInvoices, self).action_invoice_paid() + lab_app_obj = self.env['lab.appointment'].search([('id', '=', self.lab_request.id)]) + for obj in lab_app_obj: + obj.write({'state': 'invoiced'}) + return res diff --git a/medical_lab_management/models/lab_appointment.py b/medical_lab_management/models/lab_appointment.py new file mode 100644 index 000000000..e1c5f283d --- /dev/null +++ b/medical_lab_management/models/lab_appointment.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +import datetime +from odoo.exceptions import UserError +from odoo import fields, models, api, _ + + +class Appointment(models.Model): + _name = 'lab.appointment' + _inherit = ['mail.thread'] + _rec_name = 'name' + _description = "Appointment" + _order = 'appointment_date' + + user_id = fields.Many2one('res.users', 'Responsible', readonly=True) + patient_id = fields.Many2one('lab.patient', string='Patient', required=True, select=True, + help='Patient Name') + name = fields.Char(string='Appointment ID', readonly=True, default=lambda self: _('New')) + date = fields.Datetime(string='Requested Date', default=lambda s: fields.Datetime.now(), + help="This is the date in which patient appointment is noted") + appointment_date = fields.Datetime(string='Appointment Date', default=lambda s: fields.Datetime.now(), + help="This is the appointment date") + physician_id = fields.Many2one('res.partner', string='Referred By', select=True) + comment = fields.Text(string='Comments') + appointment_lines = fields.One2many('lab.appointment.lines', 'test_line_appointment', string="Test Request") + + request_count = fields.Integer(compute="_compute_state", string='# of Requests', copy=False, default=0) + inv_count = fields.Integer(compute="_compute_state", string='# of Invoices', copy=False, default=0) + state = fields.Selection([ + ('draft', 'Draft'), + ('confirm', 'Confirmed'), + ('request_lab', 'Lab Requested'), + ('completed', 'Test Result'), + ('to_invoice', 'To Invoice'), + ('invoiced', 'Done'), + ('cancel', 'Cancelled'), + ], string='Status', readonly=True, copy=False, index=True, tracking=True, default='draft', + ) + + priority = fields.Selection([ + ('0', 'Low'), + ('1', 'Normal'), + ('2', 'High') + ], size=1) + + _defaults = { + 'priority': '0', + } + + @api.model + def create(self, vals): + if vals: + vals['name'] = self.env['ir.sequence'].next_by_code('lab.appointment') or _('New') + result = super(Appointment, self).create(vals) + return result + + def _compute_state(self): + for obj in self: + obj.request_count = self.env['lab.request'].search_count([('app_id', '=', obj.id)]) + obj.inv_count = self.env['account.move'].search_count([('lab_request', '=', obj.id)]) + + def create_invoice(self): + invoice_obj = self.env["account.move"] + for lab in self: + lab.write({'state': 'to_invoice'}) + if lab.patient_id: + curr_invoice = { + 'partner_id': lab.patient_id.patient.id, + 'state': 'draft', + 'move_type': 'out_invoice', + 'invoice_date': str(datetime.datetime.now()), + 'invoice_origin': "Lab Test# : " + lab.name, + 'lab_request': lab.id, + 'is_lab_invoice': True, + } + + inv_ids = invoice_obj.create(curr_invoice) + inv_id = inv_ids.id + + if inv_ids: + journal = self.env['account.journal'].search([('type', '=', 'sale')], limit=1) + prd_account_id = journal.default_account_id.id + list_value = [] + if lab.appointment_lines: + for line in lab.appointment_lines: + list_value.append((0, 0, { + 'name': line.lab_test.lab_test, + 'price_unit': line.cost, + 'quantity': 1.0, + 'account_id': prd_account_id, + 'move_id': inv_id, + })) + print(list_value) + inv_ids.write({'invoice_line_ids': list_value}) + + self.write({'state': 'invoiced'}) + view_id = self.env.ref('account.view_move_form').id + return { + 'view_mode': 'form', + 'res_model': 'account.move', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Lab Invoices'), + 'res_id': inv_id + } + + def action_request(self): + if self.appointment_lines: + for line in self.appointment_lines: + data = self.env['lab.test'].search([('lab_test', '=', line.lab_test.lab_test)]) + self.env['lab.request'].create({'lab_request_id': self.name, + 'app_id': self.id, + 'lab_requestor': self.patient_id.id, + 'lab_requesting_date': self.appointment_date, + 'test_request': line.lab_test.id, + 'request_line': [(6, 0, [x.id for x in data.test_lines])], + }) + self.state = 'request_lab' + else: + raise UserError(_('Please Select Lab Test.')) + + def confirm_appointment(self): + message_body = "Dear " + self.patient_id.patient.name + "," + "
Your Appointment Has been Confirmed " \ + + "
Appointment ID : " + self.name + "
Date : " + str(self.appointment_date) + \ + '

Thank you' + + template_obj = self.env['mail.mail'] + template_data = { + 'subject': 'Appointment Confirmation', + 'body_html': message_body, + 'email_from': 'michaelmorbius915@gmail.com', + 'email_to': self.patient_id.email + } + template_id = template_obj.create(template_data) + template_obj.send(template_id) + self.write({'state': 'confirm'}) + + def cancel_appointment(self): + return self.write({'state': 'cancel'}) + + +class LabAppointmentLines(models.Model): + _name = 'lab.appointment.lines' + _description = 'Lab Appointment ' + + lab_test = fields.Many2one('lab.test', string="Test") + cost = fields.Float(string="Cost") + requesting_date = fields.Date(string="Date") + test_line_appointment = fields.Many2one('lab.appointment', string="Appointment") + + @api.onchange('lab_test') + def cost_update(self): + if self.lab_test: + self.cost = self.lab_test.test_cost + + +class LabPatientInherit(models.Model): + _inherit = 'lab.patient' + + app_count = fields.Integer(compute="_compute_state", string='# of Appointments', copy=False, default=0) + + def _compute_state(self): + for obj in self: + obj.app_count = self.env['lab.appointment'].search_count([('patient_id', '=', obj.id)]) diff --git a/medical_lab_management/models/lab_patient.py b/medical_lab_management/models/lab_patient.py new file mode 100644 index 000000000..00b02575e --- /dev/null +++ b/medical_lab_management/models/lab_patient.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from dateutil.relativedelta import relativedelta +from odoo import models, fields, api, _ + + +class LabPatient(models.Model): + _name = 'lab.patient' + _rec_name = 'patient' + _description = 'Patient' + + patient = fields.Many2one('res.partner', string='Partner', required=True) + patient_image = fields.Binary(string='Photo') + patient_id = fields.Char(string='Patient ID', readonly=True) + name = fields.Char(string='Patient ID', default=lambda self: _('New')) + title = fields.Selection([ + ('ms', 'Miss'), + ('mister', 'Mister'), + ('mrs', 'Mrs'), + ], string='Title', default='mister', required=True) + emergency_contact = fields.Many2one( + 'res.partner', string='Emergency Contact') + gender = fields.Selection( + [('m', 'Male'), ('f', 'Female'), + ('ot', 'Other')], 'Gender', required=True) + dob = fields.Date(string='Date Of Birth', required=True) + age = fields.Char(string='Age', compute='compute_age') + blood_group = fields.Selection( + [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), + ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], + 'Blood Group') + visa_info = fields.Char(string='Visa Info', size=64) + id_proof_number = fields.Char(string='ID Proof Number') + note = fields.Text(string='Note') + date = fields.Datetime(string='Date Requested', default=lambda s: fields.Datetime.now(), invisible=True) + phone = fields.Char(string="Phone", required=True) + email = fields.Char(string="Email", required=True) + + def compute_age(self): + for data in self: + if data.dob: + dob = fields.Datetime.from_string(data.dob) + date = fields.Datetime.from_string(data.date) + delta = relativedelta(date, dob) + data.age = str(delta.years) + 'years' + else: + data.age = '' + + @api.model + def create(self, vals): + sequence = self.env['ir.sequence'].next_by_code('lab.patient') + vals['name'] = sequence or _('New') + result = super(LabPatient, self).create(vals) + return result + + @api.onchange('patient') + def detail_get(self): + self.phone = self.patient.phone + self.email = self.patient.email + diff --git a/medical_lab_management/models/lab_request.py b/medical_lab_management/models/lab_request.py new file mode 100644 index 000000000..86b4f2b74 --- /dev/null +++ b/medical_lab_management/models/lab_request.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +import datetime +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class LabRequest(models.Model): + _name = 'lab.request' + _inherit = ['mail.thread'] + _rec_name = 'lab_request_id' + _description = 'Lab Request' + + name = fields.Char(string='Lab Test', size=16, readonly=True, required=True, help="Lab result ID", default=lambda *a: '#') + lab_request_id = fields.Char(string='Appointment ID', help="Lab appointment ID") + app_id = fields.Many2one('lab.appointment', string='Appointment') + lab_requestor = fields.Many2one('lab.patient', string='Patient', required=True, select=True, + help='Patient Name') + test_request = fields.Many2one('lab.test', string='Test') + lab_requesting_date = fields.Datetime(string='Requested Date') + comment = fields.Text('Comment') + request_line = fields.One2many('lab.test.attribute', 'test_request_reverse', string="Test Lines") + state = fields.Selection([ + ('draft', 'Draft'), + ('sample_collection', 'Sample Collected'), + ('test_in_progress', 'Test In Progress'), + ('completed', 'Completed'), + ('cancel', 'Cancelled'), + + ], string='Status', readonly=True, copy=False, index=True, tracking=True, default='draft') + + @api.model + def create(self, vals): + sequence = self.env['ir.sequence'].next_by_code('lab.request') + vals['name'] = sequence or '/' + return super(LabRequest, self).create(vals) + + def set_to_sample_collection(self): + return self.write({'state': 'sample_collection'}) + + def set_to_test_in_progress(self): + return self.write({'state': 'test_in_progress'}) + + def cancel_lab_test(self): + return self.write({'state': 'cancel'}) + + def set_to_test_completed(self): + if not self.request_line: + raise ValidationError(_("No Result Lines Entered !")) + req_obj = self.env['lab.request'].search_count([('app_id', '=', self.app_id.id), + ('id', '!=', self.id)]) + req_obj_count = self.env['lab.request'].search_count([('app_id', '=', self.app_id.id), + ('id', '!=', self.id), + ('state', '=', 'completed')]) + if req_obj == req_obj_count: + app_obj = self.env['lab.appointment'].search([('id', '=', self.app_id.id)]) + app_obj.write({'state': 'completed'}) + return self.write({'state': 'completed'}) + + def print_lab_test(self): + return self.env.ref('medical_lab_management.print_lab_test').report_action(self) + + diff --git a/medical_lab_management/models/lab_test_content_type.py b/medical_lab_management/models/lab_test_content_type.py new file mode 100644 index 000000000..82b588d80 --- /dev/null +++ b/medical_lab_management/models/lab_test_content_type.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class LabTestContentType(models.Model): + _name = 'lab.test.content_type' + _rec_name = 'content_type_name' + _description = "Content" + + content_type_name = fields.Char(string="Name", required=True, help="Content type name") + content_type_code = fields.Char(string="Code") + parent_test = fields.Many2one('lab.test', string="Test Category") + + + + diff --git a/medical_lab_management/models/lab_test_type.py b/medical_lab_management/models/lab_test_type.py new file mode 100644 index 000000000..474e3241a --- /dev/null +++ b/medical_lab_management/models/lab_test_type.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class LabTestType(models.Model): + _name = 'lab.test' + _description = "Lab Test" + _rec_name = 'lab_test' + _inherit = ['mail.thread'] + + lab_test = fields.Char(string="Test Name", required=True, help="Name of lab test ") + lab_test_code = fields.Char(string="Test Code", required=True) + test_lines = fields.One2many('lab.test.attribute', 'test_line_reverse', string="Attribute") + test_cost = fields.Float(string="Cost", required=True) + + +class LabTestAttribute(models.Model): + _name = 'lab.test.attribute' + _description = "Lab Test Attributes" + + test_content = fields.Many2one('lab.test.content_type', string="Content") + result = fields.Char(string="Result") + unit = fields.Many2one('test.unit', string="Unit") + interval = fields.Char(string="Reference Intervals") + test_line_reverse = fields.Many2one('lab.test', string="Attribute") + test_request_reverse = fields.Many2one('lab.request', string="Request") diff --git a/medical_lab_management/models/physician_speciality.py b/medical_lab_management/models/physician_speciality.py new file mode 100644 index 000000000..09a226902 --- /dev/null +++ b/medical_lab_management/models/physician_speciality.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class PhysicianSpeciality(models.Model): + _name = 'physician.speciality' + _description = 'Medical Specialty' + + code = fields.Char(string='ID') + name = fields.Char(string='Specialty', help='Name of the specialty', required=True) + + _sql_constraints = [ + ('name_uniq', 'UNIQUE(name)', 'Name must be unique!'), + ] diff --git a/medical_lab_management/models/res_partner.py b/medical_lab_management/models/res_partner.py new file mode 100644 index 000000000..c05b92464 --- /dev/null +++ b/medical_lab_management/models/res_partner.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class ResPartnerPatient(models.Model): + _inherit = 'res.partner' + _description = "Patient" + + is_patient = fields.Boolean(string='Is Patient') + is_physician = fields.Boolean(string='Is Physician') + speciality = fields.Many2one('physician.speciality', string='Speciality') + hospital = fields.Many2one('res.partner', string='Hospital') + + diff --git a/medical_lab_management/models/testing_unit.py b/medical_lab_management/models/testing_unit.py new file mode 100644 index 000000000..9855c4a47 --- /dev/null +++ b/medical_lab_management/models/testing_unit.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha P P @ cybrosys and Niyas Raphy @ cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields + + +class TestingUnit(models.Model): + _name = 'test.unit' + _rec_name = 'code' + _description = "Test Unit" + + unit = fields.Char(string="Unit", required=True) + code = fields.Char(string="code", required=True) diff --git a/medical_lab_management/report/lab_patient_card.xml b/medical_lab_management/report/lab_patient_card.xml new file mode 100644 index 000000000..c1890825e --- /dev/null +++ b/medical_lab_management/report/lab_patient_card.xml @@ -0,0 +1,61 @@ + + + + + + \ No newline at end of file diff --git a/medical_lab_management/report/lab_test_report.xml b/medical_lab_management/report/lab_test_report.xml new file mode 100644 index 000000000..0c2731485 --- /dev/null +++ b/medical_lab_management/report/lab_test_report.xml @@ -0,0 +1,50 @@ + + + + + + + diff --git a/medical_lab_management/report/report.xml b/medical_lab_management/report/report.xml new file mode 100644 index 000000000..04d2d5221 --- /dev/null +++ b/medical_lab_management/report/report.xml @@ -0,0 +1,22 @@ + + + + + Lab Test Result + lab.request + qweb-pdf + medical_lab_management.report_patient_labtest + medical_lab_management.report_patient_labtest + + + + + + \ No newline at end of file diff --git a/medical_lab_management/security/ir.model.access.csv b/medical_lab_management/security/ir.model.access.csv new file mode 100644 index 000000000..d694f8b26 --- /dev/null +++ b/medical_lab_management/security/ir.model.access.csv @@ -0,0 +1,19 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_lab_request_user,lab.request,model_lab_request,group_lab_management_user,1,1,1,1 +access_lab_patient_user,lab.patient,model_lab_patient,group_lab_management_user,1,1,1,1 +access_lab_appointment_user,lab.appointment,model_lab_appointment,group_lab_management_user,1,1,1,1 +access_test_unit_user,test.unit,model_test_unit,group_lab_management_user,1,0,0,0 +access_lab_physician_user,physician.speciality,model_physician_speciality,group_lab_management_user,1,1,1,1 +access_lab_test_user,lab.test,model_lab_test,group_lab_management_user,1,0,0,0 +access_lab_appointment_line_user,lab.appointment.lines,model_lab_appointment_lines,group_lab_management_user,1,1,1,1 +access_lab_test_content_type_user,lab.test.content_type,model_lab_test_content_type,group_lab_management_user,1,0,0,0 +access_lab_test_attribute_user,lab.test.attribute,model_lab_test_attribute,group_lab_management_user,1,1,1,1 +access_lab_request_technician,lab.request,model_lab_request,group_lab_management_technician,1,1,1,1 +access_lab_patient_technician,lab.patient,model_lab_patient,group_lab_management_technician,1,1,1,1 +access_lab_appointment_technician,lab.appointment,model_lab_appointment,group_lab_management_technician,1,1,1,1 +access_test_unit_technician,test.unit,model_test_unit,group_lab_management_technician,1,1,1,1 +access_lab_physician_technician,physician.speciality,model_physician_speciality,group_lab_management_technician,1,0,0,0 +access_lab_test_technician,lab.test,model_lab_test,group_lab_management_technician,1,1,1,1 +access_lab_test_content_type_technician,lab.test.content_type,model_lab_test_content_type,group_lab_management_technician,1,1,1,1 +access_lab_appointment_line_technician,lab.appointment.lines,model_lab_appointment_lines,group_lab_management_technician,1,1,1,1 +access_lab_test_attribute_technician,lab.test.attribute,model_lab_test_attribute,group_lab_management_technician,1,1,1,1 \ No newline at end of file diff --git a/medical_lab_management/security/lab_users.xml b/medical_lab_management/security/lab_users.xml new file mode 100644 index 000000000..28cf8cee3 --- /dev/null +++ b/medical_lab_management/security/lab_users.xml @@ -0,0 +1,20 @@ + + + + Lab Management + + + + Lab User + + + + + + Lab Manager + + + + + + \ No newline at end of file diff --git a/medical_lab_management/static/description/assets/icons/check.png b/medical_lab_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/check.png differ diff --git a/medical_lab_management/static/description/assets/icons/chevron.png b/medical_lab_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/chevron.png differ diff --git a/medical_lab_management/static/description/assets/icons/cogs.png b/medical_lab_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/cogs.png differ diff --git a/medical_lab_management/static/description/assets/icons/consultation.png b/medical_lab_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/consultation.png differ diff --git a/medical_lab_management/static/description/assets/icons/ecom-black.png b/medical_lab_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/ecom-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/education-black.png b/medical_lab_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/education-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/hotel-black.png b/medical_lab_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/hotel-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/license.png b/medical_lab_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/license.png differ diff --git a/medical_lab_management/static/description/assets/icons/lifebuoy.png b/medical_lab_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/lifebuoy.png differ diff --git a/medical_lab_management/static/description/assets/icons/manufacturing-black.png b/medical_lab_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/pos-black.png b/medical_lab_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/pos-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/puzzle.png b/medical_lab_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/puzzle.png differ diff --git a/medical_lab_management/static/description/assets/icons/restaurant-black.png b/medical_lab_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/restaurant-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/service-black.png b/medical_lab_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/service-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/trading-black.png b/medical_lab_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/trading-black.png differ diff --git a/medical_lab_management/static/description/assets/icons/training.png b/medical_lab_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/training.png differ diff --git a/medical_lab_management/static/description/assets/icons/update.png b/medical_lab_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/update.png differ diff --git a/medical_lab_management/static/description/assets/icons/user.png b/medical_lab_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/user.png differ diff --git a/medical_lab_management/static/description/assets/icons/wrench.png b/medical_lab_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/medical_lab_management/static/description/assets/icons/wrench.png differ diff --git a/medical_lab_management/static/description/assets/misc/categories.png b/medical_lab_management/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/categories.png differ diff --git a/medical_lab_management/static/description/assets/misc/check-box.png b/medical_lab_management/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/check-box.png differ diff --git a/medical_lab_management/static/description/assets/misc/compass.png b/medical_lab_management/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/compass.png differ diff --git a/medical_lab_management/static/description/assets/misc/corporate.png b/medical_lab_management/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/corporate.png differ diff --git a/medical_lab_management/static/description/assets/misc/customer-support.png b/medical_lab_management/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/customer-support.png differ diff --git a/medical_lab_management/static/description/assets/misc/cybrosys-logo.png b/medical_lab_management/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/cybrosys-logo.png differ diff --git a/medical_lab_management/static/description/assets/misc/features.png b/medical_lab_management/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/features.png differ diff --git a/medical_lab_management/static/description/assets/misc/logo.png b/medical_lab_management/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/logo.png differ diff --git a/medical_lab_management/static/description/assets/misc/pictures.png b/medical_lab_management/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/pictures.png differ diff --git a/medical_lab_management/static/description/assets/misc/pie-chart.png b/medical_lab_management/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/pie-chart.png differ diff --git a/medical_lab_management/static/description/assets/misc/right-arrow.png b/medical_lab_management/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/right-arrow.png differ diff --git a/medical_lab_management/static/description/assets/misc/star.png b/medical_lab_management/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/star.png differ diff --git a/medical_lab_management/static/description/assets/misc/support.png b/medical_lab_management/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/support.png differ diff --git a/medical_lab_management/static/description/assets/misc/whatsapp.png b/medical_lab_management/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/medical_lab_management/static/description/assets/misc/whatsapp.png differ diff --git a/medical_lab_management/static/description/assets/modules/1.png b/medical_lab_management/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/1.png differ diff --git a/medical_lab_management/static/description/assets/modules/2.png b/medical_lab_management/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/2.png differ diff --git a/medical_lab_management/static/description/assets/modules/3.png b/medical_lab_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/3.png differ diff --git a/medical_lab_management/static/description/assets/modules/4.png b/medical_lab_management/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/4.png differ diff --git a/medical_lab_management/static/description/assets/modules/5.gif b/medical_lab_management/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/5.gif differ diff --git a/medical_lab_management/static/description/assets/modules/6.png b/medical_lab_management/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/medical_lab_management/static/description/assets/modules/6.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/checked.png b/medical_lab_management/static/description/assets/screenshots/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/checked.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/cybrosys.png b/medical_lab_management/static/description/assets/screenshots/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/cybrosys.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/hero.gif b/medical_lab_management/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..69927f5d5 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/hero.gif differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-1.png b/medical_lab_management/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 000000000..eb772e98c Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-1.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-10.png b/medical_lab_management/static/description/assets/screenshots/screenshot-10.png new file mode 100644 index 000000000..b555c1329 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-10.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-11.png b/medical_lab_management/static/description/assets/screenshots/screenshot-11.png new file mode 100644 index 000000000..75a2b0f58 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-11.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-12.png b/medical_lab_management/static/description/assets/screenshots/screenshot-12.png new file mode 100644 index 000000000..7f5ddf1ef Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-12.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-13.png b/medical_lab_management/static/description/assets/screenshots/screenshot-13.png new file mode 100644 index 000000000..4fd68e78e Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-13.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-14.png b/medical_lab_management/static/description/assets/screenshots/screenshot-14.png new file mode 100644 index 000000000..ab3df78d5 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-14.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-2.png b/medical_lab_management/static/description/assets/screenshots/screenshot-2.png new file mode 100644 index 000000000..acd162a5b Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-2.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-3.png b/medical_lab_management/static/description/assets/screenshots/screenshot-3.png new file mode 100644 index 000000000..8b73e26e5 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-3.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-4.png b/medical_lab_management/static/description/assets/screenshots/screenshot-4.png new file mode 100644 index 000000000..dffc0f6c3 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-4.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-5.png b/medical_lab_management/static/description/assets/screenshots/screenshot-5.png new file mode 100644 index 000000000..3204d9ee0 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-5.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-6.png b/medical_lab_management/static/description/assets/screenshots/screenshot-6.png new file mode 100644 index 000000000..f944eace7 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-6.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-7.png b/medical_lab_management/static/description/assets/screenshots/screenshot-7.png new file mode 100644 index 000000000..26a51658b Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-7.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-8.png b/medical_lab_management/static/description/assets/screenshots/screenshot-8.png new file mode 100644 index 000000000..b62ed1781 Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-8.png differ diff --git a/medical_lab_management/static/description/assets/screenshots/screenshot-9.png b/medical_lab_management/static/description/assets/screenshots/screenshot-9.png new file mode 100644 index 000000000..9162d459f Binary files /dev/null and b/medical_lab_management/static/description/assets/screenshots/screenshot-9.png differ diff --git a/medical_lab_management/static/description/banner.png b/medical_lab_management/static/description/banner.png new file mode 100644 index 000000000..50ab04eaa Binary files /dev/null and b/medical_lab_management/static/description/banner.png differ diff --git a/medical_lab_management/static/description/icon.png b/medical_lab_management/static/description/icon.png new file mode 100644 index 000000000..dddb6375a Binary files /dev/null and b/medical_lab_management/static/description/icon.png differ diff --git a/medical_lab_management/static/description/index.html b/medical_lab_management/static/description/index.html new file mode 100644 index 000000000..75c3bc83d --- /dev/null +++ b/medical_lab_management/static/description/index.html @@ -0,0 +1,653 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

+ Medical Lab Management

+

Manage Lab Activities.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This app helps the user to systematically perform the activities of a Medical Laboratory. + The app simplifies the activities like Patient Management, Appointment Management, Test Requests Management, Lab Results Management, and so on. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + + Community & Enterprise Support. +

+ Available in Odoo 15.0 Community and Enterprise.

+
+ +
+ + + Manage Patients. +

+ Manage each patients in detail.

+
+ +
+
+ + + Issue Patient Card. +

+ Gives a patient report.

+
+ +
+ + + Manage Referrals of Patients. +

+ Manages refered persons of each patients.

+
+ +
+ + + Manage Appointments. +

+ Manages appointments for each patients.

+
+ +
+ + + Mail Notification For Appointments. +

+ Gives a notification mail when appointment is confirmed.

+
+
+ + + Manage Lab Requests. +

+ Manage lab requests of each patients.

+
+ +
+ + + Print Lab Test Result Of Patient. +

+ Detailed Lab Report of each patients.

+
+ +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

+ Create Patients

+

+ It creates each patients for lab test.

+ +
+ +
+

+ Go to Laboratory -> Patient -> Print -> Patient Card

+

Issues Patient card +

+ +
+ +
+

+ Create Appointments

+

Go to Laboratory -> Appointments->Create Appointments.

+ +
+
+

+ Mail Notification For Appointments

+

When we confirm the appointment the appointment details will be sent through E-Mail

+ +
+
+

+ Lab Request

+

creates lab request of each patients

+ +
+
+

+ Lab Test Result

+

Issues Lab Test Result Report

+ +
+
+

+ Create invoice for lab test.

+

Invoices are created for each lab test.

+ +
+
+

+ You can see today's appointments here

+

Here,we can view today's appointments of all patients..

+ +
+
+

+ Go to Laboratory -> Configuration -> Lab test..

+

Create Lab tests..

+ +
+
+

+ Go to Laboratory -> Configuration -> Test Contents.

+

Create Lab test contents.

+ +
+
+

+ Go to Laboratory -> Configuration -> Testing Unit.

+

Create Lab test units..

+ +
+
+

+ Referral Physician

+

We can add referral physician details..

+
+
+ +

There are two type of User Access

+ + +
+
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/medical_lab_management/views/account_invoice.xml b/medical_lab_management/views/account_invoice.xml new file mode 100644 index 000000000..167560a3e --- /dev/null +++ b/medical_lab_management/views/account_invoice.xml @@ -0,0 +1,30 @@ + + + + + account.invoice.cust.invoice_form + account.move + + + + + + + + + + + account.invoice.cust.invoice_filter_form + account.move + + + + + + + + + + + + \ No newline at end of file diff --git a/medical_lab_management/views/lab_appointment.xml b/medical_lab_management/views/lab_appointment.xml new file mode 100644 index 000000000..8bcbe2878 --- /dev/null +++ b/medical_lab_management/views/lab_appointment.xml @@ -0,0 +1,231 @@ + + + + + Invoices + account.move + tree,form,kanban,graph,pivot + + [('is_lab_invoice','=',True)] + + +

+ Create Invoices. +

+
+
+ + + 1 + tree + + + + + 2 + form + + + + + + Appointment Kanban + lab.appointment + + + + +
+
+ +
    +
  • Name :
  • +
  • Lab Request ID :
  • +
  • Appointment Date :
  • +
+
+
+
+
+
+
+
+
+ + + lab.appointment.tree + lab.appointment + + + + + + + + + + + + lab.appointment.form + lab.appointment + + +
+
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + + lab.appointment.search + lab.appointment + + + + + + + + + + + + + + + + + + + + Appointments + ir.actions.act_window + lab.appointment + tree,form,kanban + + [] + {} + +

+ Create Appointments. +

+
+
+ + + + Appointments + ir.actions.act_window + lab.appointment + tree,form + + [('appointment_date', '>=',((datetime.date.today()- datetime.timedelta(days=0)).strftime('%Y-%m-%d 00:00:00'))), + ('appointment_date', '<=',((datetime.date.today()- datetime.timedelta(days=0)).strftime('%Y-%m-%d 23:59:59')))] + + {} + +

+ Create Appointments. +

+
+
+ + + Appointment + lab.appointment + ID + 3 + + + + + + + + + + + lab.patient.form + lab.patient + + + + + + + + + +
+
diff --git a/medical_lab_management/views/lab_patient_view.xml b/medical_lab_management/views/lab_patient_view.xml new file mode 100644 index 000000000..2aba9ee9f --- /dev/null +++ b/medical_lab_management/views/lab_patient_view.xml @@ -0,0 +1,159 @@ + + + + + + Patient Kanban + lab.patient + + + + + +
+
+ +
+
+ +
    +
  • Name :
  • +
  • Patient ID :
  • +
+
+
+
+
+
+
+
+
+ + + lab.patient.tree + lab.patient + + + + + + + + + + + + + + lab.patient.form + lab.patient + + +
+ +
+
+ +
+

+ +

+

+ + + + +
+ +
+

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + lab.patient.search + lab.patient + + + + + + + + + + + + + + + + + + Patients + ir.actions.act_window + lab.patient + kanban,tree,form + + [] + {} + +

+ Create Patients. +

+
+
+ + + Patient + lab.patient + PID + 3 + + + + + + + +
+
diff --git a/medical_lab_management/views/lab_request.xml b/medical_lab_management/views/lab_request.xml new file mode 100644 index 000000000..ad9ace78f --- /dev/null +++ b/medical_lab_management/views/lab_request.xml @@ -0,0 +1,120 @@ + + + + + lab.request.tree + lab.request + + + + + + + + + + + + lab.request.form + lab.request + +
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + lab.request.search + lab.request + + + + + + + + + + + + + + + + + Lab Request + ir.actions.act_window + lab.request + tree,form + + [] + {} + +

+ Create Lab request. +

+
+
+ + + Lab Request + lab.request + LR + 3 + + + + + +
+
diff --git a/medical_lab_management/views/lab_test_content_type.xml b/medical_lab_management/views/lab_test_content_type.xml new file mode 100644 index 000000000..5424b026e --- /dev/null +++ b/medical_lab_management/views/lab_test_content_type.xml @@ -0,0 +1,72 @@ + + + + + lab.test.content_type.tree + lab.test.content_type + + + + + + + + + + + lab.test.content_type.form + lab.test.content_type + + +
+ + + + + + + + +
+
+
+ + + lab.test.content_type.search + lab.test.content_type + + + + + + + + + + + + + + + + Test Contents + ir.actions.act_window + lab.test.content_type + tree,form + [] + + {} + +

+ Create Test Contents. +

+
+
+ + +
+
diff --git a/medical_lab_management/views/lab_test_type.xml b/medical_lab_management/views/lab_test_type.xml new file mode 100644 index 000000000..41be81746 --- /dev/null +++ b/medical_lab_management/views/lab_test_type.xml @@ -0,0 +1,102 @@ + + + + + lab.test.tree + lab.test + + + + + + + + + + + + lab.test.form + lab.test + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + lab.test.search + lab.test + + + + + + + + + + + + + + Lab Test + ir.actions.act_window + lab.test + tree,form + + [] + {} + +

+ Create Lab Tests. +

+
+
+ + + + + lab.test.attribute.form + lab.test.attribute + + +
+ + + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/medical_lab_management/views/physician_details.xml b/medical_lab_management/views/physician_details.xml new file mode 100644 index 000000000..93ba3e1a4 --- /dev/null +++ b/medical_lab_management/views/physician_details.xml @@ -0,0 +1,26 @@ + + + + + Physician + ir.actions.act_window + res.partner + tree,form + [('is_physician','=',1)] + {'default_customer':0, 'default_supplier':0 , 'default_is_physician':1} + + +

+ Click to add physician. +

+
+
+ + + +
+
diff --git a/medical_lab_management/views/physician_specialty.xml b/medical_lab_management/views/physician_specialty.xml new file mode 100644 index 000000000..a3d5e680c --- /dev/null +++ b/medical_lab_management/views/physician_specialty.xml @@ -0,0 +1,18 @@ + + + + + physician.speciality.form + physician.speciality + + +
+ + + + +
+
+
+
+
diff --git a/medical_lab_management/views/res_partner.xml b/medical_lab_management/views/res_partner.xml new file mode 100644 index 000000000..3981f0155 --- /dev/null +++ b/medical_lab_management/views/res_partner.xml @@ -0,0 +1,22 @@ + + + + + res.partner.form + res.partner + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/medical_lab_management/views/test_unit_view.xml b/medical_lab_management/views/test_unit_view.xml new file mode 100644 index 000000000..0d6e6fa69 --- /dev/null +++ b/medical_lab_management/views/test_unit_view.xml @@ -0,0 +1,71 @@ + + + + + test.unit.tree + test.unit + + + + + + + + + + test.unit.form + test.unit + + +
+ + + + + + + + + + +
+
+
+ + test.unit.search + test.unit + + + + + + + + + + + + Testing Units + ir.actions.act_window + test.unit + tree,form + + [] + {} + +

+ Create Testing Units. +

+
+
+ + +
+
\ No newline at end of file diff --git a/one2many_mass_select_delete/README.rst b/one2many_mass_select_delete/README.rst new file mode 100644 index 000000000..cd0c81ce5 --- /dev/null +++ b/one2many_mass_select_delete/README.rst @@ -0,0 +1,27 @@ +====================================== +One2many Mass Select Delete Widget v16 +====================================== + +One2many Mass Select/Deselect Widget. + +Installation +============ +Just select it from available modules to install it, there is no need to extra installations. + +Configuration +============= + + + + +Features +======== +* Mass Selection. +* Mass Deletion. + +Credits +======= +Developer: Nilmar Shereef @ cybrosys, shereef@cybrosys.in + version 16: Midilaj VK@cybrosys + + diff --git a/one2many_mass_select_delete/__manifest__.py b/one2many_mass_select_delete/__manifest__.py new file mode 100644 index 000000000..a6fe36671 --- /dev/null +++ b/one2many_mass_select_delete/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'One2many Mass Select Delete Widget', + 'version': "16.0.1.0.0", + 'summary': """One2many Mass Select/Deselect Widget""", + 'description': """One2many Mass Select/ Deselect Widget""", + 'category': 'Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['web'], + 'assets': { + 'web.assets_backend': [ + 'one2many_mass_select_delete/static/src/js/widget.js', + ], + 'web.assets_qweb': [ + 'one2many_mass_select_delete/static/src/xml/widget_view.xml', + ], + }, + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/one2many_mass_select_delete/doc/RELEASE_NOTES.md b/one2many_mass_select_delete/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..91d545873 --- /dev/null +++ b/one2many_mass_select_delete/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 17.01.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for One2many Mass Select Delete Widget Module diff --git a/one2many_mass_select_delete/static/description/assets/icons/check.png b/one2many_mass_select_delete/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/check.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/chevron.png b/one2many_mass_select_delete/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/chevron.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/cogs.png b/one2many_mass_select_delete/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/cogs.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/consultation.png b/one2many_mass_select_delete/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/consultation.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/ecom-black.png b/one2many_mass_select_delete/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/ecom-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/education-black.png b/one2many_mass_select_delete/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/education-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/hotel-black.png b/one2many_mass_select_delete/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/hotel-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/license.png b/one2many_mass_select_delete/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/license.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/lifebuoy.png b/one2many_mass_select_delete/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/lifebuoy.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/manufacturing-black.png b/one2many_mass_select_delete/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/manufacturing-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/pos-black.png b/one2many_mass_select_delete/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/pos-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/puzzle.png b/one2many_mass_select_delete/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/puzzle.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/restaurant-black.png b/one2many_mass_select_delete/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/restaurant-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/service-black.png b/one2many_mass_select_delete/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/service-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/trading-black.png b/one2many_mass_select_delete/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/trading-black.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/training.png b/one2many_mass_select_delete/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/training.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/update.png b/one2many_mass_select_delete/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/update.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/user.png b/one2many_mass_select_delete/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/user.png differ diff --git a/one2many_mass_select_delete/static/description/assets/icons/wrench.png b/one2many_mass_select_delete/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/icons/wrench.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/categories.png b/one2many_mass_select_delete/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/categories.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/check-box.png b/one2many_mass_select_delete/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/check-box.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/compass.png b/one2many_mass_select_delete/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/compass.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/corporate.png b/one2many_mass_select_delete/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/corporate.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/customer-support.png b/one2many_mass_select_delete/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/customer-support.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/cybrosys-logo.png b/one2many_mass_select_delete/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/cybrosys-logo.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/features.png b/one2many_mass_select_delete/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/features.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/logo.png b/one2many_mass_select_delete/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/logo.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/pictures.png b/one2many_mass_select_delete/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/pictures.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/pie-chart.png b/one2many_mass_select_delete/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/pie-chart.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/right-arrow.png b/one2many_mass_select_delete/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/right-arrow.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/star.png b/one2many_mass_select_delete/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/star.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/support.png b/one2many_mass_select_delete/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/support.png differ diff --git a/one2many_mass_select_delete/static/description/assets/misc/whatsapp.png b/one2many_mass_select_delete/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/misc/whatsapp.png differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/1.png b/one2many_mass_select_delete/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/1.png differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/2.png b/one2many_mass_select_delete/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/2.png differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/3.png b/one2many_mass_select_delete/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/3.png differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/4.png b/one2many_mass_select_delete/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/4.png differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/5.gif b/one2many_mass_select_delete/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/5.gif differ diff --git a/one2many_mass_select_delete/static/description/assets/modules/6.png b/one2many_mass_select_delete/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/modules/6.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/fifth5.png b/one2many_mass_select_delete/static/description/assets/screenshots/fifth5.png new file mode 100644 index 000000000..edda4f51d Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/fifth5.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/first1.png b/one2many_mass_select_delete/static/description/assets/screenshots/first1.png new file mode 100644 index 000000000..8ab224406 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/first1.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/fourth4.png b/one2many_mass_select_delete/static/description/assets/screenshots/fourth4.png new file mode 100644 index 000000000..ea33c07ff Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/fourth4.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/hero.gif b/one2many_mass_select_delete/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..0537ec6f8 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/hero.gif differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/second2.png b/one2many_mass_select_delete/static/description/assets/screenshots/second2.png new file mode 100644 index 000000000..f0ac1f856 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/second2.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/sixth.png b/one2many_mass_select_delete/static/description/assets/screenshots/sixth.png new file mode 100644 index 000000000..c8f086078 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/sixth.png differ diff --git a/one2many_mass_select_delete/static/description/assets/screenshots/third3.png b/one2many_mass_select_delete/static/description/assets/screenshots/third3.png new file mode 100644 index 000000000..f09135ba5 Binary files /dev/null and b/one2many_mass_select_delete/static/description/assets/screenshots/third3.png differ diff --git a/one2many_mass_select_delete/static/description/banner.png b/one2many_mass_select_delete/static/description/banner.png new file mode 100644 index 000000000..42d7af8e6 Binary files /dev/null and b/one2many_mass_select_delete/static/description/banner.png differ diff --git a/one2many_mass_select_delete/static/description/icon.png b/one2many_mass_select_delete/static/description/icon.png new file mode 100644 index 000000000..bf1924d49 Binary files /dev/null and b/one2many_mass_select_delete/static/description/icon.png differ diff --git a/one2many_mass_select_delete/static/description/index.html b/one2many_mass_select_delete/static/description/index.html new file mode 100644 index 000000000..decf7f10e --- /dev/null +++ b/one2many_mass_select_delete/static/description/index.html @@ -0,0 +1,554 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

One2many + Mass Select/ Deselect Widget

+

Managing Multiple + Selection/Deselection of One2many Fields.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ If we want to Select/Deselect a few order lines from a lengthy Sale Order/Purchase Order (Case: 10+ Order + lines), We have two ways, individually delete orderline one by one from Purchase/Sale order or create a new + order. This module eliminates this issue by introducing a new widget "Mass Select/ Deselect Widget"; which can + be used in any One2Many fields to perform mass select/deselect . +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + + Mass Selection +
+
+ + + Mass Deletion. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Configuration

+

Add the widget "one2many_delete" in the one2many field .

+ +
+ +
+

n One2Many Fields

+

We can see a new widget with two buttons and selection option for One2Many fields. .

+ +
+ +
+

Before Selection

+ +
+ +
+

After Selection

+ +
+ +
+

Before Deletion

+ +
+ +
+

After Deletion

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/one2many_mass_select_delete/static/src/js/widget.js b/one2many_mass_select_delete/static/src/js/widget.js new file mode 100644 index 000000000..6d6a86a76 --- /dev/null +++ b/one2many_mass_select_delete/static/src/js/widget.js @@ -0,0 +1,146 @@ +odoo.define('one2many_mass_select_delete.form_widgets', function (require) { + "use strict"; + + var core = require('web.core'); + var utils = require('web.utils'); + var fieldRegistry = require('web.field_registry'); + var ListRenderer = require('web.ListRenderer'); + var rpc = require('web.rpc'); + var FieldOne2Many = require('web.relational_fields').FieldOne2Many; + var _t = core._t; + + ListRenderer.include({ + _updateSelection: function () { + this.selection = []; + var self = this; + var $inputs = this.$('tbody .o_list_record_selector input:visible:not(:disabled)'); + var allChecked = $inputs.length > 0; + $inputs.each(function (index, input) { + if (input.checked) { + self.selection.push($(input).closest('tr').data('id')); + } else { + allChecked = false; + } + }); + if(this.selection.length > 0){ + $('.button_delete_order_lines').show() + $('.button_select_order_lines').show() + + }else{ + $('.button_delete_order_lines').hide() + $('.button_select_order_lines').hide() + } + this.$('thead .o_list_record_selector input').prop('checked', allChecked); + this.trigger_up('selection_changed', { selection: this.selection }); + this._updateFooter(); + }, + }) + + var One2manyDelete = FieldOne2Many.extend({ + template: 'One2manyDelete', + events: { + "click .button_delete_order_lines": "delete_selected_lines", + "click .button_select_order_lines": "selected_lines", + }, + init: function() { + this._super.apply(this, arguments); + }, + delete_selected_lines: function() + { + var self=this; + var current_model = this.recordData[this.name].model; + var selected_lines = self.find_deleted_lines(); + if (selected_lines.length === 0) + { + return this.displayNotification({ message: _t('Please Select at least One Record.'), type: 'danger' }); + } + + var w_response = confirm("Dou You Want to Delete ?"); + if (w_response) { + rpc.query({ + 'model': current_model, + 'method': 'unlink', + 'args': [selected_lines], + }).then(function(result){ + self.trigger_up('reload'); + }); + } + }, + selected_lines: function() + { + var self=this; + var current_model = this.recordData[this.name].model; + var selected_lines = self.find_selected_lines(); + if (selected_lines.length === 0) + { + return this.displayNotification({ message: _t('Please Select at least One Record.'), type: 'danger' }); + } + var w_response = confirm("Dou You Want to Select ?"); + if (w_response) { + + rpc.query({ + 'model': current_model, + 'method': 'unlink', + 'args': [selected_lines], + }).then(function(result){ + self.trigger_up('reload'); + }); + } + }, + _getRenderer: function () { + if (this.view.arch.tag === 'kanban') { + return One2ManyKanbanRenderer; + } + if (this.view.arch.tag === 'tree') { + return ListRenderer.extend({ + init: function (parent, state, params) { + this._super.apply(this, arguments); + this.hasSelectors = true; + }, + }); + } + return this._super.apply(this, arguments); + }, + find_deleted_lines: function () { + var self=this; + var selected_list =[]; + this.$el.find('td.o_list_record_selector input:checked') + .closest('tr').each(function () { + selected_list.push(parseInt(self._getResId($(this).data('id')))); + }); + return selected_list; + }, + + find_selected_lines: function () + { var self = this; + var selected_list =[]; + var selected_list1 =[]; + var selected_list2 =[]; + this.$el.find('td.o_list_record_selector input:checked') + .closest('tr').each(function () { + selected_list.push(parseInt(self._getResId($(this).data('id')))); + }); + if (selected_list.length != 0) { + this.$el.find('td.o_list_record_selector') + .closest('tr').each(function () { + selected_list1.push(parseInt(self._getResId($(this).data('id')))); + }); + selected_list2 = selected_list1.filter(function (x) { + return selected_list.indexOf(x) < 0 + }); + } + return selected_list2; + }, + _getResId: function (recordId) { + var record; + utils.traverse_records(this.recordData[this.name], function (r) { + if (r.id === recordId) { + record = r; + } + }); + return record.res_id; + }, + + }); + fieldRegistry.add('one2many_delete', One2manyDelete); +}); \ No newline at end of file diff --git a/one2many_mass_select_delete/static/src/xml/widget_view.xml b/one2many_mass_select_delete/static/src/xml/widget_view.xml new file mode 100644 index 000000000..f9b2d12ac --- /dev/null +++ b/one2many_mass_select_delete/static/src/xml/widget_view.xml @@ -0,0 +1,20 @@ + + + +
+ + + + + +
+
+
diff --git a/project_report_pdf/README.rst b/project_report_pdf/README.rst new file mode 100644 index 000000000..bf16ad5aa --- /dev/null +++ b/project_report_pdf/README.rst @@ -0,0 +1,25 @@ +Project Report v16 +================== +PDF and XLS Reports for Project Module. + + +Features +======== +* Project Task Report XLS [With advanced Filtration] +* Project Task Report PDF [With advanced Filtration] + +Credits +======= +Cybrosys Techno Solutions + +Author +------ +* Developer v9: Avinash Nk @ cybrosys +* Developer v10: Treesa @ cybrosys +* Developer V11: Akshay @ cybrosys +* Developer V12: Akshay @ cybrosys +* Developer V13: Vinaya S B @ cybrosys +* Developer V14: Muhammed P @ cybrosys +* Developer V15: IRFAN @ cybrosys +* Developer V16: VISWANTH @ cybrosys + diff --git a/project_report_pdf/__init__.py b/project_report_pdf/__init__.py new file mode 100644 index 000000000..2a4aae2a7 --- /dev/null +++ b/project_report_pdf/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +from . import wizard +from . import controllers +from . import report + diff --git a/project_report_pdf/__manifest__.py b/project_report_pdf/__manifest__.py new file mode 100644 index 000000000..60e765b17 --- /dev/null +++ b/project_report_pdf/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +{ + 'name': 'Project Report XLS & PDF', + 'version': '16.0.1.0.0', + "category": "Project", + 'author': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'maintainer': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'summary': """Advanced PDF & XLS Reports for Project With Filtrations""", + 'description': """Advanced PDF & XLS Reports for Project With Filtrations, Odoo 16, Odoo16""", + 'depends': ['base', 'project'], + 'license': 'AGPL-3', + 'data': ['security/ir.model.access.csv', + 'wizard/project_report_wizard_view.xml', + 'report/project_report_pdf_view.xml', + 'views/project_report_button.xml', + 'views/project_report.xml' + ], + 'assets': { + 'web.assets_backend': [ + 'project_report_pdf/static/src/js/action_manager.js', + ], + }, + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, +} diff --git a/project_report_pdf/controllers/__init__.py b/project_report_pdf/controllers/__init__.py new file mode 100644 index 000000000..deec4a8b8 --- /dev/null +++ b/project_report_pdf/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/project_report_pdf/controllers/main.py b/project_report_pdf/controllers/main.py new file mode 100644 index 000000000..0dfbebbe8 --- /dev/null +++ b/project_report_pdf/controllers/main.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +import json +from odoo import http +from odoo.http import content_disposition, request +# from odoo.addons.web.controllers.main import _serialize_exception +from odoo.tools import html_escape + + +class XLSXReportController(http.Controller): + + @http.route('/xlsx_reports', type='http', auth='user', methods=['POST'], csrf=False) + def get_report_xlsx(self, model, options, output_format, report_name, **kw): + uid = request.session.uid + report_obj = request.env[model].with_user(uid) + options = json.loads(options) + token = 'dummy-because-api-expects-one' + try: + if output_format == 'xlsx': + response = request.make_response( + None, + headers=[ + ('Content-Type', 'application/vnd.ms-excel'), + ('Content-Disposition', content_disposition(report_name + '.xlsx')) + ] + ) + report_obj.get_xlsx_report(options, response) + response.set_cookie('fileToken', token) + return response + except Exception as e: + se = _serialize_exception(e) + error = { + 'code': 200, + 'message': 'Odoo Server Error', + 'data': se + } + return request.make_response(html_escape(json.dumps(error))) \ No newline at end of file diff --git a/project_report_pdf/doc/RELEASE_NOTES.md b/project_report_pdf/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..d83061d79 --- /dev/null +++ b/project_report_pdf/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 2.09.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for project_report_pdf + diff --git a/project_report_pdf/report/__init__.py b/project_report_pdf/report/__init__.py new file mode 100644 index 000000000..660f478e8 --- /dev/null +++ b/project_report_pdf/report/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Akshay Babu() +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +from . import project_report_pdf diff --git a/project_report_pdf/report/project_report_pdf.py b/project_report_pdf/report/project_report_pdf.py new file mode 100644 index 000000000..26375348e --- /dev/null +++ b/project_report_pdf/report/project_report_pdf.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo.http import request +from odoo import models, api + + +class ProjectReportParser(models.AbstractModel): + _name = 'report.project_report_pdf.project_report_template' + + def _get_report_values(self, docids, data=None): + name = data['record'] + wizard_record = request.env['wizard.project.report'].search([])[-1] + task_obj = request.env['project.task'] + users_selected = [] + stages_selected = [] + for elements in wizard_record.partner_select: + users_selected.append(elements.id) + for elements in wizard_record.stage_select: + stages_selected.append(elements.id) + if wizard_record.partner_select: + if wizard_record.stage_select: + current_task = task_obj.search([('project_id', '=', name), + ('user_ids', 'in', users_selected), + ('stage_id', 'in', stages_selected)]) + + else: + current_task = task_obj.search([('project_id', '=', name), + ('user_ids', 'in', users_selected)]) + + else: + if wizard_record.stage_select: + current_task = task_obj.search([('project_id', '=', name), + ('stage_id', 'in', stages_selected)]) + else: + current_task = task_obj.search([('project_id', '=', name)]) + vals = [] + for i in current_task: + new = [] + new.clear() + for o in i.user_ids: + new.append(o.name) + assignees_name = ' , '.join([str(elem) for elem in new]) + vals.append({ + 'name': i.name, + 'user_id': assignees_name, + 'stage_id': i.stage_id.name, + }) + if current_task: + return { + 'vals': vals, + 'name': current_task[0].project_id.name, + 'manager': current_task[0].project_id.user_id.name, + 'date_start': current_task[0].project_id.date_start, + 'date_end': current_task[0].project_id.date, + } + else: + return { + 'vals': vals, + 'name': current_task.project_id.name, + 'manager': current_task.project_id.user_id.name, + 'date_start': current_task.project_id.date_start, + 'date_end': current_task.project_id.date, + } diff --git a/project_report_pdf/report/project_report_pdf_view.xml b/project_report_pdf/report/project_report_pdf_view.xml new file mode 100644 index 000000000..a49c9f88e --- /dev/null +++ b/project_report_pdf/report/project_report_pdf_view.xml @@ -0,0 +1,46 @@ + + + + \ No newline at end of file diff --git a/project_report_pdf/security/ir.model.access.csv b/project_report_pdf/security/ir.model.access.csv new file mode 100644 index 000000000..3e5157f58 --- /dev/null +++ b/project_report_pdf/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 +access_wizard_project_report,wizard.project.report,model_wizard_project_report,,1,1,1,1 \ No newline at end of file diff --git a/project_report_pdf/static/description/assets/icons/check.png b/project_report_pdf/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/check.png differ diff --git a/project_report_pdf/static/description/assets/icons/chevron.png b/project_report_pdf/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/chevron.png differ diff --git a/project_report_pdf/static/description/assets/icons/cogs.png b/project_report_pdf/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/cogs.png differ diff --git a/project_report_pdf/static/description/assets/icons/consultation.png b/project_report_pdf/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/consultation.png differ diff --git a/project_report_pdf/static/description/assets/icons/ecom-black.png b/project_report_pdf/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/ecom-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/education-black.png b/project_report_pdf/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/education-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/hotel-black.png b/project_report_pdf/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/hotel-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/license.png b/project_report_pdf/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/license.png differ diff --git a/project_report_pdf/static/description/assets/icons/lifebuoy.png b/project_report_pdf/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/lifebuoy.png differ diff --git a/project_report_pdf/static/description/assets/icons/manufacturing-black.png b/project_report_pdf/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/manufacturing-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/pos-black.png b/project_report_pdf/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/pos-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/puzzle.png b/project_report_pdf/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/puzzle.png differ diff --git a/project_report_pdf/static/description/assets/icons/restaurant-black.png b/project_report_pdf/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/restaurant-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/service-black.png b/project_report_pdf/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/service-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/trading-black.png b/project_report_pdf/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/trading-black.png differ diff --git a/project_report_pdf/static/description/assets/icons/training.png b/project_report_pdf/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/training.png differ diff --git a/project_report_pdf/static/description/assets/icons/update.png b/project_report_pdf/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/update.png differ diff --git a/project_report_pdf/static/description/assets/icons/user.png b/project_report_pdf/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/user.png differ diff --git a/project_report_pdf/static/description/assets/icons/wrench.png b/project_report_pdf/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/project_report_pdf/static/description/assets/icons/wrench.png differ diff --git a/project_report_pdf/static/description/assets/misc/categories.png b/project_report_pdf/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/categories.png differ diff --git a/project_report_pdf/static/description/assets/misc/check-box.png b/project_report_pdf/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/check-box.png differ diff --git a/project_report_pdf/static/description/assets/misc/compass.png b/project_report_pdf/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/compass.png differ diff --git a/project_report_pdf/static/description/assets/misc/corporate.png b/project_report_pdf/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/corporate.png differ diff --git a/project_report_pdf/static/description/assets/misc/customer-support.png b/project_report_pdf/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/customer-support.png differ diff --git a/project_report_pdf/static/description/assets/misc/cybrosys-logo.png b/project_report_pdf/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/cybrosys-logo.png differ diff --git a/project_report_pdf/static/description/assets/misc/features.png b/project_report_pdf/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/features.png differ diff --git a/project_report_pdf/static/description/assets/misc/logo.png b/project_report_pdf/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/logo.png differ diff --git a/project_report_pdf/static/description/assets/misc/pictures.png b/project_report_pdf/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/pictures.png differ diff --git a/project_report_pdf/static/description/assets/misc/pie-chart.png b/project_report_pdf/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/pie-chart.png differ diff --git a/project_report_pdf/static/description/assets/misc/right-arrow.png b/project_report_pdf/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/right-arrow.png differ diff --git a/project_report_pdf/static/description/assets/misc/star.png b/project_report_pdf/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/star.png differ diff --git a/project_report_pdf/static/description/assets/misc/support.png b/project_report_pdf/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/support.png differ diff --git a/project_report_pdf/static/description/assets/misc/whatsapp.png b/project_report_pdf/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/project_report_pdf/static/description/assets/misc/whatsapp.png differ diff --git a/project_report_pdf/static/description/assets/modules/1.png b/project_report_pdf/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/1.png differ diff --git a/project_report_pdf/static/description/assets/modules/2.png b/project_report_pdf/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/2.png differ diff --git a/project_report_pdf/static/description/assets/modules/3.png b/project_report_pdf/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/3.png differ diff --git a/project_report_pdf/static/description/assets/modules/4.png b/project_report_pdf/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/4.png differ diff --git a/project_report_pdf/static/description/assets/modules/5.gif b/project_report_pdf/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/5.gif differ diff --git a/project_report_pdf/static/description/assets/modules/6.png b/project_report_pdf/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/project_report_pdf/static/description/assets/modules/6.png differ diff --git a/project_report_pdf/static/description/assets/screenshots/1.png b/project_report_pdf/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..06bc461f7 Binary files /dev/null and b/project_report_pdf/static/description/assets/screenshots/1.png differ diff --git a/project_report_pdf/static/description/assets/screenshots/2.png b/project_report_pdf/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..edb822e09 Binary files /dev/null and b/project_report_pdf/static/description/assets/screenshots/2.png differ diff --git a/project_report_pdf/static/description/assets/screenshots/3.png b/project_report_pdf/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..a6e33b2c7 Binary files /dev/null and b/project_report_pdf/static/description/assets/screenshots/3.png differ diff --git a/project_report_pdf/static/description/assets/screenshots/4.png b/project_report_pdf/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..d819361cf Binary files /dev/null and b/project_report_pdf/static/description/assets/screenshots/4.png differ diff --git a/project_report_pdf/static/description/assets/screenshots/hero.gif b/project_report_pdf/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..84a9d49d9 Binary files /dev/null and b/project_report_pdf/static/description/assets/screenshots/hero.gif differ diff --git a/project_report_pdf/static/description/banner.png b/project_report_pdf/static/description/banner.png new file mode 100644 index 000000000..57eebc5b2 Binary files /dev/null and b/project_report_pdf/static/description/banner.png differ diff --git a/project_report_pdf/static/description/icon.png b/project_report_pdf/static/description/icon.png new file mode 100644 index 000000000..91b80e56a Binary files /dev/null and b/project_report_pdf/static/description/icon.png differ diff --git a/project_report_pdf/static/description/index.html b/project_report_pdf/static/description/index.html new file mode 100644 index 000000000..af9ad1858 --- /dev/null +++ b/project_report_pdf/static/description/index.html @@ -0,0 +1,562 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Project Report PDF & XLS

+

Export Project Report to PDF & XLS

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module enhances the project management with intuitive reports. + Reports consist of task details with respect to the selected project. + The user can use the filter facilities from report wizard to get the optimized reports. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + PDF Reports +

+ PDF Reports in Project.

+
+
+ + XLS Reports +

+ XLS Reports in Project

+
+
+ + Detailed Reports +

+ Detailed Report on Tasks

+
+
+ + Advanced Filters
+

+ Advanced Filters for Report

+
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Go to project

+

To get to the project, go to Configuration -> Project

+ +
+ +
+

Filter Project Reports

+

You can filter the project report via selecting the appropriate options from the wizard.

+ +
+ +
+

Export to PDF

+

PDF Report Of Data Import/Export Plugin Project.

+ +
+
+

Export to Excel

+

Excel Report Of Data Import/Export Plugin Project

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/project_report_pdf/static/src/js/action_manager.js b/project_report_pdf/static/src/js/action_manager.js new file mode 100644 index 000000000..c61fa821d --- /dev/null +++ b/project_report_pdf/static/src/js/action_manager.js @@ -0,0 +1,21 @@ +/** @odoo-module */ + +import { registry } from "@web/core/registry"; +import { download } from "@web/core/network/download"; +import framework from 'web.framework'; +import session from 'web.session'; + +registry.category("ir.actions.report handlers").add("xlsx", async (action) => { + if (action.report_type === 'xlsx') { + framework.blockUI(); + var def = $.Deferred(); + session.get_file({ + url: '/xlsx_reports', + data: action.data, + success: def.resolve.bind(def), + error: (error) => this.call('crash_manager', 'rpc_error', error), + complete: framework.unblockUI, + }); + return def; + } +}); \ No newline at end of file diff --git a/project_report_pdf/views/action_manager.xml b/project_report_pdf/views/action_manager.xml new file mode 100644 index 000000000..21b670d75 --- /dev/null +++ b/project_report_pdf/views/action_manager.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/salon_management/views/salon_booking_views.xml b/salon_management/views/salon_booking_views.xml new file mode 100644 index 000000000..c562dd5f5 --- /dev/null +++ b/salon_management/views/salon_booking_views.xml @@ -0,0 +1,58 @@ + + + + + salon.booking.view.form + salon.booking + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+ + salon.booking.view.tree + salon.booking + + + + + + + + + + + + + Salon Bookings + salon.booking + tree,form + + +
\ No newline at end of file diff --git a/salon_management/views/salon_management_menus.xml b/salon_management/views/salon_management_menus.xml new file mode 100644 index 000000000..776d9d7e3 --- /dev/null +++ b/salon_management/views/salon_management_menus.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/salon_management/views/salon_management_views.xml b/salon_management/views/salon_management_views.xml new file mode 100644 index 000000000..32e1bd481 --- /dev/null +++ b/salon_management/views/salon_management_views.xml @@ -0,0 +1,233 @@ + + + + salon.stage.view.form + salon.stage + +
+ +

+ + +

+
+
+
+
+ + salon.service.view.form + salon.service + +
+ + + + + + + + +
+
+
+ + salon.service.view.tree + salon.service + + + + + + + + + + + salon.chair.view.form + salon.chair + +
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + salon.chair.view.tree + salon.chair + + + + + + + + salon_management.view.dashboard.kanban + salon.chair + kanban + + + + + + + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+ + Today's Collection : + + + + +
+
+
+
+ + Today's Collection : + + + + +
+
+
+
+ + Free After (Hours) : + + + + +
+
+
+
+ + Reserved For Booking + +
+
+
+
+
+
+
+
+ + salon.working.view.form + salon.working.hours + +
+ +

+ +

+ + + + + + + + +
+
+
+
+ + salon.working.view.tree + salon.working.hours + + + + + + + + + + + Services + salon.service + tree,form + + + + Chairs + salon.chair + tree,form + + + + Dashboard + salon.chair + kanban,form + {} + + + + Working Hours + salon.working.hours + tree,form + + +
diff --git a/salon_management/views/salon_order_views.xml b/salon_management/views/salon_order_views.xml new file mode 100644 index 000000000..d1e44fc27 --- /dev/null +++ b/salon_management/views/salon_order_views.xml @@ -0,0 +1,204 @@ + + + + + + salon.order.view.tree + salon.order + + + + + + + + + + + + + + + salon.order.view.kanban + salon.order + + + + + + + +
+ +
+
+ +
+
+ Customer : + +
+ Chair : + +
+
+
+ Amount : + +
+ +
+ Date : + +
+
+
+
+ + + + + + + salon.order.view.form + salon.order + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+
+
+ + + + + +
+ + + + + + + + + Salon Orders + salon.order + kanban,tree,form + + + + Salon Orders + salon.order + kanban,tree,form + [('chair_id', '=', active_id)] + + + + \ No newline at end of file diff --git a/timesheets_by_employee/README.rst b/timesheets_by_employee/README.rst new file mode 100644 index 000000000..772588d8d --- /dev/null +++ b/timesheets_by_employee/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--1-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Timesheets by Employees v15 +=========================== + +This module allows to print the timesheets of selected employee. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: Kavya Raveendran @ cybrosys, Contact: odoo@cybrosys.com + version 14: Muhammed P @cybrosys,Contact: odoo@cybrosys.com + version 15: Abhishek E T @cybrosys,Contact: odoo@cybrosys.com + version 16:Sumith Sivan @cybrosys,Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + diff --git a/timesheets_by_employee/__init__.py b/timesheets_by_employee/__init__.py new file mode 100644 index 000000000..8e650324b --- /dev/null +++ b/timesheets_by_employee/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Kavya Raveendran (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from . import report +from . import wizard diff --git a/timesheets_by_employee/__manifest__.py b/timesheets_by_employee/__manifest__.py new file mode 100644 index 000000000..9ca9010e0 --- /dev/null +++ b/timesheets_by_employee/__manifest__.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## + +{ + 'name': 'Timesheet PDF Report', + 'version': '16.0.1.0.0', + "category": "Generic Modules/Human Resources", + 'sequence': 25, + 'summary': 'Timesheet PDF Report of Employees', + 'description': 'Timesheet PDF Report of Employees', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['hr', 'hr_timesheet'], + 'data': [ + 'security/ir.model.access.csv', + 'report/timesheet_reports.xml', + 'report/timesheet_templates.xml', + 'wizard/timesheet_report_views.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/timesheets_by_employee/doc/RELEASE_NOTES.md b/timesheets_by_employee/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..3ee31e73d --- /dev/null +++ b/timesheets_by_employee/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 19.9.2022 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for Timesheet PDF Report Module \ No newline at end of file diff --git a/timesheets_by_employee/report/__init__.py b/timesheets_by_employee/report/__init__.py new file mode 100644 index 000000000..cf82bc280 --- /dev/null +++ b/timesheets_by_employee/report/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Kavya Raveendran (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from . import timesheet_report diff --git a/timesheets_by_employee/report/timesheet_report.py b/timesheets_by_employee/report/timesheet_report.py new file mode 100644 index 000000000..b776ab772 --- /dev/null +++ b/timesheets_by_employee/report/timesheet_report.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Kavya Raveendran (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from odoo import api, fields, models + + +class ReportTimesheet(models.AbstractModel): + _name = 'report.timesheets_by_employee.report_timesheets' + _description = 'Timesheet Report' + + def get_timesheets(self, docs): + """input : name of employee, the starting date and ending date + output: timesheets by that particular employee within that period and + the total duration + """ + if docs.from_date and docs.to_date: + record = self.env['account.analytic.line'].search( + [('user_id', '=', docs.user_id[0].id), + ('date', '>=', docs.from_date), ('date', '<=', docs.to_date)]) + elif docs.from_date: + record = self.env['account.analytic.line'].search( + [('user_id', '=', docs.user_id[0].id), + ('date', '>=', docs.from_date)]) + elif docs.to_date: + record = self.env['account.analytic.line'].search( + [('user_id', '=', docs.user_id[0].id), + ('date', '<=', docs.to_date)]) + else: + record = self.env['account.analytic.line'].search( + [('user_id', '=', docs.user_id[0].id)]) + records = [] + total = 0 + for rec in record: + vals = {'project': rec.project_id.name, + 'user': rec.user_id.partner_id.name, + 'duration': rec.unit_amount, + 'date': rec.date, + } + total += rec.unit_amount + records.append(vals) + return [records, total] + + @api.model + def _get_report_values(self, docids, data=None): + """we are overwriting this function because we need to show values from + other models in the report we pass the objects in the docargs dictionary + """ + docs = self.env['timesheet.report'].browse( + self.env.context.get('active_id')) + identification = [] + for rec in self.env['hr.employee'].search( + [('user_id', '=', docs.user_id[0].id)]): + if rec: + identification.append({'id': rec.id, 'name': rec.name}) + timesheets = self.get_timesheets(docs) + company_id = self.env['res.company'].search( + [('name', '=', docs.user_id[0].company_id.name)]) + period = None + if docs.from_date and docs.to_date: + period = "From " + str(docs.from_date) + " To " + str(docs.to_date) + elif docs.from_date: + period = "From " + str(docs.from_date) + elif docs.to_date: + period = "To " + str(docs.to_date) + if len(identification) > 1: + return { + 'doc_ids': self.ids, + 'docs': docs, + 'timesheets': timesheets[0], + 'total': timesheets[1], + 'company': company_id, + 'identification': identification, + 'period': period, + } + else: + return { + 'doc_ids': self.ids, + 'docs': docs, + 'timesheets': timesheets[0], + 'total': timesheets[1], + 'identification': identification, + 'company': company_id, + 'period': period, + } diff --git a/timesheets_by_employee/report/timesheet_reports.xml b/timesheets_by_employee/report/timesheet_reports.xml new file mode 100644 index 000000000..6c248f20b --- /dev/null +++ b/timesheets_by_employee/report/timesheet_reports.xml @@ -0,0 +1,12 @@ + + + + + Timesheets + timesheet.report + qweb-pdf + timesheets_by_employee.report_timesheets + timesheets_by_employee.report_timesheets + + + \ No newline at end of file diff --git a/timesheets_by_employee/report/timesheet_templates.xml b/timesheets_by_employee/report/timesheet_templates.xml new file mode 100644 index 000000000..841c6448b --- /dev/null +++ b/timesheets_by_employee/report/timesheet_templates.xml @@ -0,0 +1,44 @@ + + + + \ No newline at end of file diff --git a/timesheets_by_employee/security/ir.model.access.csv b/timesheets_by_employee/security/ir.model.access.csv new file mode 100644 index 000000000..944013dd3 --- /dev/null +++ b/timesheets_by_employee/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 +access_timesheet_report,timesheet.report,model_timesheet_report,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/timesheets_by_employee/static/description/assets/icons/check.png b/timesheets_by_employee/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/check.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/chevron.png b/timesheets_by_employee/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/chevron.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/cogs.png b/timesheets_by_employee/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/cogs.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/consultation.png b/timesheets_by_employee/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/consultation.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/ecom-black.png b/timesheets_by_employee/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/ecom-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/education-black.png b/timesheets_by_employee/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/education-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/hotel-black.png b/timesheets_by_employee/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/hotel-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/license.png b/timesheets_by_employee/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/license.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/lifebuoy.png b/timesheets_by_employee/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/lifebuoy.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/manufacturing-black.png b/timesheets_by_employee/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/manufacturing-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/pos-black.png b/timesheets_by_employee/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/pos-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/puzzle.png b/timesheets_by_employee/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/puzzle.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/restaurant-black.png b/timesheets_by_employee/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/restaurant-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/service-black.png b/timesheets_by_employee/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/service-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/trading-black.png b/timesheets_by_employee/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/trading-black.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/training.png b/timesheets_by_employee/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/training.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/update.png b/timesheets_by_employee/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/update.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/user.png b/timesheets_by_employee/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/user.png differ diff --git a/timesheets_by_employee/static/description/assets/icons/wrench.png b/timesheets_by_employee/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/timesheets_by_employee/static/description/assets/icons/wrench.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/categories.png b/timesheets_by_employee/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/categories.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/check-box.png b/timesheets_by_employee/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/check-box.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/compass.png b/timesheets_by_employee/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/compass.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/corporate.png b/timesheets_by_employee/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/corporate.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/customer-support.png b/timesheets_by_employee/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/customer-support.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/cybrosys-logo.png b/timesheets_by_employee/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/cybrosys-logo.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/features.png b/timesheets_by_employee/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/features.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/logo.png b/timesheets_by_employee/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/logo.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/pictures.png b/timesheets_by_employee/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/pictures.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/pie-chart.png b/timesheets_by_employee/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/pie-chart.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/right-arrow.png b/timesheets_by_employee/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/right-arrow.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/star.png b/timesheets_by_employee/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/star.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/support.png b/timesheets_by_employee/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/support.png differ diff --git a/timesheets_by_employee/static/description/assets/misc/whatsapp.png b/timesheets_by_employee/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/misc/whatsapp.png differ diff --git a/timesheets_by_employee/static/description/assets/modules/1.png b/timesheets_by_employee/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/1.png differ diff --git a/timesheets_by_employee/static/description/assets/modules/2.png b/timesheets_by_employee/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/2.png differ diff --git a/timesheets_by_employee/static/description/assets/modules/3.png b/timesheets_by_employee/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/3.png differ diff --git a/timesheets_by_employee/static/description/assets/modules/4.png b/timesheets_by_employee/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/4.png differ diff --git a/timesheets_by_employee/static/description/assets/modules/5.gif b/timesheets_by_employee/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/5.gif differ diff --git a/timesheets_by_employee/static/description/assets/modules/6.png b/timesheets_by_employee/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/modules/6.png differ diff --git a/timesheets_by_employee/static/description/assets/screenshots/1.png b/timesheets_by_employee/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..617b3efd9 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/screenshots/1.png differ diff --git a/timesheets_by_employee/static/description/assets/screenshots/2.png b/timesheets_by_employee/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..873a35a0d Binary files /dev/null and b/timesheets_by_employee/static/description/assets/screenshots/2.png differ diff --git a/timesheets_by_employee/static/description/assets/screenshots/3.png b/timesheets_by_employee/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..c63e395de Binary files /dev/null and b/timesheets_by_employee/static/description/assets/screenshots/3.png differ diff --git a/timesheets_by_employee/static/description/assets/screenshots/hero.gif b/timesheets_by_employee/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..ebbafe496 Binary files /dev/null and b/timesheets_by_employee/static/description/assets/screenshots/hero.gif differ diff --git a/timesheets_by_employee/static/description/banner.png b/timesheets_by_employee/static/description/banner.png new file mode 100644 index 000000000..ac5cbdc80 Binary files /dev/null and b/timesheets_by_employee/static/description/banner.png differ diff --git a/timesheets_by_employee/static/description/icon.png b/timesheets_by_employee/static/description/icon.png new file mode 100644 index 000000000..265b51e58 Binary files /dev/null and b/timesheets_by_employee/static/description/icon.png differ diff --git a/timesheets_by_employee/static/description/index.html b/timesheets_by_employee/static/description/index.html new file mode 100644 index 000000000..48bfc3da0 --- /dev/null +++ b/timesheets_by_employee/static/description/index.html @@ -0,0 +1,537 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Timesheet PDF Report of Employee

+

A Module for print timesheets of selected employee. + +.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module crafted by Cybrosys Technologies, allows the end user to print the timesheets of selected employee. The module will further group all timesheet lines of selected employee in wizard based on its period. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + +Community & Enterprise +
+
+ + +Perform period wise grouping of timesheet lines +
+
+ + Print the timesheets of selected employees +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Timesheets -> Reporting -> Print Timesheets

+ +
+ +
+

Wizard to Generate Timesheet Report with Dates

+ +
+ +
+

PDF Report of Employee Timesheet

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/timesheets_by_employee/wizard/__init__.py b/timesheets_by_employee/wizard/__init__.py new file mode 100644 index 000000000..9526a5ea4 --- /dev/null +++ b/timesheets_by_employee/wizard/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Kavya Raveendran (odoo@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 . +# +############################################################################## +from . import timesheet_report diff --git a/timesheets_by_employee/wizard/timesheet_report.py b/timesheets_by_employee/wizard/timesheet_report.py new file mode 100644 index 000000000..edeedb870 --- /dev/null +++ b/timesheets_by_employee/wizard/timesheet_report.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Kavya Raveendran (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## + +from odoo import fields, models + + +class TimesheetReport(models.TransientModel): + _name = 'timesheet.report' + _description = 'Timesheet Report Wizard' + + user_id = fields.Many2one('res.users', string="Employee", required=True) + from_date = fields.Date(string="Starting Date") + to_date = fields.Date(string="Ending Date") + + def print_timesheet(self): + """Redirects to the report with the values obtained from the wizard + 'data['form']': name of employee and the date duration""" + data = { + 'employee': self.user_id.id, + 'start_date': self.from_date, + 'end_date': self.to_date, + } + return self.env.ref( + 'timesheets_by_employee.action_report_print_timesheets').\ + report_action(self, data=data) diff --git a/timesheets_by_employee/wizard/timesheet_report_views.xml b/timesheets_by_employee/wizard/timesheet_report_views.xml new file mode 100644 index 000000000..d8b472a68 --- /dev/null +++ b/timesheets_by_employee/wizard/timesheet_report_views.xml @@ -0,0 +1,36 @@ + + + + + timesheet.report.form + timesheet.report + +
+ + + + + + + + +
+
+
+
+
+
+ + + Timesheet Report + timesheet.report + ir.actions.act_window + form + + new + + +
+
\ No newline at end of file diff --git a/todo_list/README.rst b/todo_list/README.rst new file mode 100644 index 000000000..e9b1d7c19 --- /dev/null +++ b/todo_list/README.rst @@ -0,0 +1,44 @@ +ToDo List +========= +* ToDo List for Odoo 16 community editions + +Installation +============ + - www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.odoo.com/documentation/user/14.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: +(v14) Mily Shajan @ Cybrosys +(v15) Neethu U M @ Cybrosys +(v16) Viswanth k @ Cybrosys + + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ + diff --git a/todo_list/__init__.py b/todo_list/__init__.py new file mode 100644 index 000000000..f2c5a4636 --- /dev/null +++ b/todo_list/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/todo_list/__manifest__.py b/todo_list/__manifest__.py new file mode 100644 index 000000000..32d11ef78 --- /dev/null +++ b/todo_list/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': "To Do List", + 'summary': """ + Create Todo List Using Activities""", + 'description': """ + Scheduling Activities For each model and General Activities. + """, + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'live_test_url': 'https://youtu.be/LGiDWPFdkbks', + 'category': 'Tools', + 'version': '16.0.1.0.0', + 'depends': ['base', 'mail'], + 'data': [ + 'security/security.xml', + 'security/ir.model.access.csv', + 'data/recurring.xml', + 'data/general.xml', + 'views/views.xml', + ], + 'license': 'LGPL-3', + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, + 'application': True, +} diff --git a/todo_list/data/general.xml b/todo_list/data/general.xml new file mode 100644 index 000000000..df17b1c87 --- /dev/null +++ b/todo_list/data/general.xml @@ -0,0 +1,8 @@ + + + + + Activity + + + diff --git a/todo_list/data/recurring.xml b/todo_list/data/recurring.xml new file mode 100644 index 000000000..487b20a2d --- /dev/null +++ b/todo_list/data/recurring.xml @@ -0,0 +1,14 @@ + + + + Recurring Todo Activity + + code + model.action_date() + + 1 + days + -1 + + + \ No newline at end of file diff --git a/todo_list/doc/RELEASE_NOTES.md b/todo_list/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..a65fdece4 --- /dev/null +++ b/todo_list/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 16.09.2022 +#### Version 16.0.1.0.0 +##### ADD + +- Initial Commit for todo_list + + diff --git a/todo_list/models/__init__.py b/todo_list/models/__init__.py new file mode 100644 index 000000000..0c4eccefd --- /dev/null +++ b/todo_list/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import todo diff --git a/todo_list/models/todo.py b/todo_list/models/todo.py new file mode 100644 index 000000000..50e586811 --- /dev/null +++ b/todo_list/models/todo.py @@ -0,0 +1,150 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from datetime import timedelta + +from odoo import models, fields, api +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT + + +class MailActivity(models.Model): + _name = 'mail.activity' + _inherit = ['mail.activity', 'mail.thread'] + _rec_name = 'summary' + + date_deadline = fields.Date('Due Date', index=True, required=True, + default=fields.Date.context_today, store=True) + user_id = fields.Many2one('res.users', string='user', index=True, + tracking=True, default=lambda self: self.env.user) + res_model_id = fields.Many2one( + 'ir.model', 'Document Model', + index=True, ondelete='cascade', required=True, + default=lambda self: self.env.ref('todo_list.model_activity_general')) + res_id = fields.Many2oneReference(string='Related Document ID', index=True, + required=True, model_field='res_model', + default=lambda self: self.env.ref( + 'todo_list.general_activities')) + priority = fields.Selection([ + ('0', 'Normal'), + ('1', 'Important'), + ('2', 'Very Important'), + ('3', 'Urgent'), + ], default='0', index=True, store=True) + recurring = fields.Boolean(string="Recurring", store=True) + state = fields.Selection([ + ('today', 'Today'), + ('planned', 'Planned'), + ('done', 'Done'), + ('overdue', 'Expired'), + ('cancel', 'Cancelled'), ], 'State', + compute='_compute_state', store=True) + interval = fields.Selection( + [('Daily', 'Daily'), + ('Weekly', 'Weekly'), + ('Monthly', 'Monthly'), + ('Quarterly', 'Quarterly'), + ('Yearly', 'Yearly')], + string='Recurring Interval', ) + new_date = fields.Date(string="Next Due Date", store=True) + + def action_done(self): + """Function done button""" + self.write({'state': 'done'}) + if self.recurring: + self.env['mail.activity'].create({ + 'res_id': self.res_id, + 'res_model_id': self.res_model_id.id, + 'summary': self.summary, + 'priority': self.priority, + 'date_deadline': self.new_date, + 'recurring': self.recurring, + 'interval': self.interval, + 'activity_type_id': self.activity_type_id.id, + 'new_date': self.get_date(), + 'user_id': self.user_id.id + }) + + def get_date(self): + """ function for get new due date on new record""" + date_deadline = self.new_date if self.new_date else self.date_deadline + new_date = False + if self.interval == 'Daily': + new_date = ( + date_deadline + timedelta(days=1)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif self.interval == 'Weekly': + new_date = ( + date_deadline + timedelta(days=7)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif self.interval == 'Monthly': + new_date = ( + date_deadline + timedelta(days=30)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif self.interval == 'Quarterly': + new_date = ( + date_deadline + timedelta(days=90)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif self.interval == 'Yearly': + new_date = ( + date_deadline + timedelta(days=365)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + return new_date + + @api.onchange('interval', 'date_deadline') + def onchange_recurring(self): + """ function for show new due date""" + self.new_date = False + if self.recurring: + self.new_date = self.get_date() + + def action_date(self): + """ Function for automated actions for deadline""" + today = fields.date.today() + dates = self.env['mail.activity'].search( + [('state', 'in', ['today', 'planned']), + ('date_deadline', '=', today), + ('recurring', '=', True)]) + for rec in dates: + self.env['mail.activity'].create( + {'res_id': rec.res_id, + 'res_model_id': rec.res_model_id.id, + 'summary': rec.summary, + 'priority': rec.priority, + 'interval': rec.interval, + 'recurring': rec.recurring, + 'date_deadline': rec.new_date, + 'new_date': rec.get_date(), + 'activity_type_id': rec.activity_type_id.id, + 'user_id': rec.user_id.id + }) + rec.state = 'done' + + def action_cancel(self): + """ function for cancel button""" + return self.write({'state': 'cancel'}) + + +class ActivityGeneral(models.Model): + _name = 'activity.general' + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char('Name') diff --git a/todo_list/security/ir.model.access.csv b/todo_list/security/ir.model.access.csv new file mode 100644 index 000000000..412a09bed --- /dev/null +++ b/todo_list/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 +access_activity_general,access.activity.general,model_activity_general,base.group_user,1,1,1,1 diff --git a/todo_list/security/security.xml b/todo_list/security/security.xml new file mode 100644 index 000000000..fe7e3bb87 --- /dev/null +++ b/todo_list/security/security.xml @@ -0,0 +1,10 @@ + + + + Personal Todo + + [('user_id','=',user.id)] + + + + \ No newline at end of file diff --git a/todo_list/static/description/assets/icons/check.png b/todo_list/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/todo_list/static/description/assets/icons/check.png differ diff --git a/todo_list/static/description/assets/icons/chevron.png b/todo_list/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/todo_list/static/description/assets/icons/chevron.png differ diff --git a/todo_list/static/description/assets/icons/cogs.png b/todo_list/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/todo_list/static/description/assets/icons/cogs.png differ diff --git a/todo_list/static/description/assets/icons/consultation.png b/todo_list/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/todo_list/static/description/assets/icons/consultation.png differ diff --git a/todo_list/static/description/assets/icons/ecom-black.png b/todo_list/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/todo_list/static/description/assets/icons/ecom-black.png differ diff --git a/todo_list/static/description/assets/icons/education-black.png b/todo_list/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/todo_list/static/description/assets/icons/education-black.png differ diff --git a/todo_list/static/description/assets/icons/hotel-black.png b/todo_list/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/todo_list/static/description/assets/icons/hotel-black.png differ diff --git a/todo_list/static/description/assets/icons/license.png b/todo_list/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/todo_list/static/description/assets/icons/license.png differ diff --git a/todo_list/static/description/assets/icons/lifebuoy.png b/todo_list/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/todo_list/static/description/assets/icons/lifebuoy.png differ diff --git a/todo_list/static/description/assets/icons/manufacturing-black.png b/todo_list/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/todo_list/static/description/assets/icons/manufacturing-black.png differ diff --git a/todo_list/static/description/assets/icons/pos-black.png b/todo_list/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/todo_list/static/description/assets/icons/pos-black.png differ diff --git a/todo_list/static/description/assets/icons/puzzle.png b/todo_list/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/todo_list/static/description/assets/icons/puzzle.png differ diff --git a/todo_list/static/description/assets/icons/restaurant-black.png b/todo_list/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/todo_list/static/description/assets/icons/restaurant-black.png differ diff --git a/todo_list/static/description/assets/icons/service-black.png b/todo_list/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/todo_list/static/description/assets/icons/service-black.png differ diff --git a/todo_list/static/description/assets/icons/trading-black.png b/todo_list/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/todo_list/static/description/assets/icons/trading-black.png differ diff --git a/todo_list/static/description/assets/icons/training.png b/todo_list/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/todo_list/static/description/assets/icons/training.png differ diff --git a/todo_list/static/description/assets/icons/update.png b/todo_list/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/todo_list/static/description/assets/icons/update.png differ diff --git a/todo_list/static/description/assets/icons/user.png b/todo_list/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/todo_list/static/description/assets/icons/user.png differ diff --git a/todo_list/static/description/assets/icons/wrench.png b/todo_list/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/todo_list/static/description/assets/icons/wrench.png differ diff --git a/todo_list/static/description/assets/misc/categories.png b/todo_list/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/todo_list/static/description/assets/misc/categories.png differ diff --git a/todo_list/static/description/assets/misc/check-box.png b/todo_list/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/todo_list/static/description/assets/misc/check-box.png differ diff --git a/todo_list/static/description/assets/misc/compass.png b/todo_list/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/todo_list/static/description/assets/misc/compass.png differ diff --git a/todo_list/static/description/assets/misc/corporate.png b/todo_list/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/todo_list/static/description/assets/misc/corporate.png differ diff --git a/todo_list/static/description/assets/misc/customer-support.png b/todo_list/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/todo_list/static/description/assets/misc/customer-support.png differ diff --git a/todo_list/static/description/assets/misc/cybrosys-logo.png b/todo_list/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/todo_list/static/description/assets/misc/cybrosys-logo.png differ diff --git a/todo_list/static/description/assets/misc/features.png b/todo_list/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/todo_list/static/description/assets/misc/features.png differ diff --git a/todo_list/static/description/assets/misc/logo.png b/todo_list/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/todo_list/static/description/assets/misc/logo.png differ diff --git a/todo_list/static/description/assets/misc/pictures.png b/todo_list/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/todo_list/static/description/assets/misc/pictures.png differ diff --git a/todo_list/static/description/assets/misc/pie-chart.png b/todo_list/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/todo_list/static/description/assets/misc/pie-chart.png differ diff --git a/todo_list/static/description/assets/misc/right-arrow.png b/todo_list/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/todo_list/static/description/assets/misc/right-arrow.png differ diff --git a/todo_list/static/description/assets/misc/star.png b/todo_list/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/todo_list/static/description/assets/misc/star.png differ diff --git a/todo_list/static/description/assets/misc/support.png b/todo_list/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/todo_list/static/description/assets/misc/support.png differ diff --git a/todo_list/static/description/assets/misc/whatsapp.png b/todo_list/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/todo_list/static/description/assets/misc/whatsapp.png differ diff --git a/todo_list/static/description/assets/modules/1.png b/todo_list/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/todo_list/static/description/assets/modules/1.png differ diff --git a/todo_list/static/description/assets/modules/2.png b/todo_list/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/todo_list/static/description/assets/modules/2.png differ diff --git a/todo_list/static/description/assets/modules/3.png b/todo_list/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/todo_list/static/description/assets/modules/3.png differ diff --git a/todo_list/static/description/assets/modules/4.png b/todo_list/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/todo_list/static/description/assets/modules/4.png differ diff --git a/todo_list/static/description/assets/modules/5.gif b/todo_list/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/todo_list/static/description/assets/modules/5.gif differ diff --git a/todo_list/static/description/assets/modules/6.png b/todo_list/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/todo_list/static/description/assets/modules/6.png differ diff --git a/todo_list/static/description/assets/screenshots/1.png b/todo_list/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..c6f3f12eb Binary files /dev/null and b/todo_list/static/description/assets/screenshots/1.png differ diff --git a/todo_list/static/description/assets/screenshots/2.png b/todo_list/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..107752d4b Binary files /dev/null and b/todo_list/static/description/assets/screenshots/2.png differ diff --git a/todo_list/static/description/assets/screenshots/3.png b/todo_list/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..fb1758823 Binary files /dev/null and b/todo_list/static/description/assets/screenshots/3.png differ diff --git a/todo_list/static/description/assets/screenshots/4.png b/todo_list/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..4635898da Binary files /dev/null and b/todo_list/static/description/assets/screenshots/4.png differ diff --git a/todo_list/static/description/assets/screenshots/hero.gif b/todo_list/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..e63dd890b Binary files /dev/null and b/todo_list/static/description/assets/screenshots/hero.gif differ diff --git a/todo_list/static/description/banner.png b/todo_list/static/description/banner.png new file mode 100644 index 000000000..51555e88c Binary files /dev/null and b/todo_list/static/description/banner.png differ diff --git a/todo_list/static/description/icon.png b/todo_list/static/description/icon.png new file mode 100644 index 000000000..a822553cb Binary files /dev/null and b/todo_list/static/description/icon.png differ diff --git a/todo_list/static/description/index.html b/todo_list/static/description/index.html new file mode 100644 index 000000000..47cb65774 --- /dev/null +++ b/todo_list/static/description/index.html @@ -0,0 +1,541 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

ToDo List

+

Scheduling & Listing out Activities in Odoo

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ The ToDo list module in Odoo helps to schedule and listing out activities which should be done. You can create general ToDo activities, prioritize each activity, assign recurrence on activities, filtering activities based on the user. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Schedule general ToDo activities +
+
+ + Recurring option for each activity +
+
+ + Prioritize each activity +
+
+ + Activities can be filtered based on created user +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Default Kanban view of the activity menu

+ +
+ +
+

Color highlighted details tree view helping you to visualize activities which are overdue and due today

+ +
+ +
+

Activity prioritization and description tab

+ +
+
+

Activity filtering options based on creator, and due date

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/todo_list/views/views.xml b/todo_list/views/views.xml new file mode 100644 index 000000000..8ab8da0ad --- /dev/null +++ b/todo_list/views/views.xml @@ -0,0 +1,224 @@ + + + + + + mail.activity.model.search + mail.activity + + + + + + + + + + + + + + + + + + + mail.activity.kanban.inherit + mail.activity + + + + +
+ +
+
+ + + +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ + + mail.activity.tree + mail.activity + + + + + + + + + + + + + + + mail.activity.form + mail.activity + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + + Activity + mail.activity + kanban,tree,form + + + +

+ Create your ToDo List +

+
+
+ + + kanban + + + + + + + tree + + + + + + form + + + + + Activity Types + mail.activity.type + tree,form + + + + + + + +
+
\ No newline at end of file diff --git a/total_payable_receivable/README.rst b/total_payable_receivable/README.rst new file mode 100644 index 000000000..871ca44bc --- /dev/null +++ b/total_payable_receivable/README.rst @@ -0,0 +1,43 @@ +Total Payable & Receivable +========================== +This module will make total payable and receivable field in customer and vendor form + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: Niyas Raphy @ cybrosys +(v13) Nimisha Murali @ cybrosys +(v14, v15) Aneesh @ Cybrosys +(v16) Viswanth @ cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/total_payable_receivable/__init__.py b/total_payable_receivable/__init__.py new file mode 100644 index 000000000..88054b442 --- /dev/null +++ b/total_payable_receivable/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: odoo@cybrosys.com +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models diff --git a/total_payable_receivable/__manifest__.py b/total_payable_receivable/__manifest__.py new file mode 100644 index 000000000..2c912771c --- /dev/null +++ b/total_payable_receivable/__manifest__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: odoo@cybrosys.com +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Payable And Receivable Amount', + 'summary': """Amount Payable & Receivable In Partner Form""", + 'version': '16.0.1.0.0', + 'description': """Amount Payable & Receivable In Partner Form""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'category': 'Accounting', + 'depends': ['base', 'sale', 'purchase'], + 'license': 'AGPL-3', + 'data': [ + 'views/total_payable_receivable_view.xml', + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, +} diff --git a/total_payable_receivable/doc/RELEASE_NOTES.md b/total_payable_receivable/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..77d16c75f --- /dev/null +++ b/total_payable_receivable/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 25.08.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial commit for Payable And Receivable Amount diff --git a/total_payable_receivable/models/__init__.py b/total_payable_receivable/models/__init__.py new file mode 100644 index 000000000..cf1aef625 --- /dev/null +++ b/total_payable_receivable/models/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: odoo@cybrosys.com +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import total_payable_receivable diff --git a/total_payable_receivable/models/total_payable_receivable.py b/total_payable_receivable/models/total_payable_receivable.py new file mode 100644 index 000000000..d212e4792 --- /dev/null +++ b/total_payable_receivable/models/total_payable_receivable.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: odoo@cybrosys.com +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import api, models, fields + + +class ResPartner(models.Model): + _name = 'res.partner' + _inherit = 'res.partner' + + partner_credit = fields.Monetary(compute='credit_debit_get',string='Total Receivable', help="Total amount this customer owes you.") + partner_debit = fields.Monetary(compute='credit_debit_get',string='Total Payable',help="Total amount you have to pay to this vendor.") + + + @api.depends_context('force_company') + def credit_debit_get(self): + # partner_debit = 0.0 + tables, where_clause, where_params = self.env['account.move.line'].with_context(state='posted', company_id=self.env.company.id)._query_get() + where_params = [tuple(self.ids)] + where_params + if where_clause: + where_clause = 'AND ' + where_clause + self._cr.execute("""SELECT account_move_line.partner_id, a.account_type, SUM(account_move_line.amount_residual) + FROM """ + tables + """ + LEFT JOIN account_account a ON (account_move_line.account_id=a.id) + WHERE a.account_type IN ('asset_receivable','liability_payable') + AND account_move_line.partner_id IN %s + AND account_move_line.reconciled IS FALSE + """ + where_clause + """ + GROUP BY account_move_line.partner_id, a.account_type + """, where_params) + treated = self.browse() + queryy = self.env.cr.dictfetchall() + for i in queryy: + partner = self.browse(i['partner_id']) + if i['account_type'] == 'asset_receivable': + self.partner_credit = i['sum'] + if not self.partner_debit: + self.partner_debit = False + treated |= partner + elif i['account_type'] == 'liability_payable': + self.partner_debit = -i['sum'] + if not self.partner_credit: + self.partner_credit = False + treated |= partner + remaining = (self - treated) + remaining.partner_debit = False + remaining.partner_credit = False diff --git a/total_payable_receivable/static/description/assets/icons/check.png b/total_payable_receivable/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/check.png differ diff --git a/total_payable_receivable/static/description/assets/icons/chevron.png b/total_payable_receivable/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/chevron.png differ diff --git a/total_payable_receivable/static/description/assets/icons/cogs.png b/total_payable_receivable/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/cogs.png differ diff --git a/total_payable_receivable/static/description/assets/icons/consultation.png b/total_payable_receivable/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/consultation.png differ diff --git a/total_payable_receivable/static/description/assets/icons/ecom-black.png b/total_payable_receivable/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/ecom-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/education-black.png b/total_payable_receivable/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/education-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/hotel-black.png b/total_payable_receivable/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/hotel-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/license.png b/total_payable_receivable/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/license.png differ diff --git a/total_payable_receivable/static/description/assets/icons/lifebuoy.png b/total_payable_receivable/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/lifebuoy.png differ diff --git a/total_payable_receivable/static/description/assets/icons/manufacturing-black.png b/total_payable_receivable/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/manufacturing-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/pos-black.png b/total_payable_receivable/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/pos-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/puzzle.png b/total_payable_receivable/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/puzzle.png differ diff --git a/total_payable_receivable/static/description/assets/icons/restaurant-black.png b/total_payable_receivable/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/restaurant-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/service-black.png b/total_payable_receivable/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/service-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/trading-black.png b/total_payable_receivable/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/trading-black.png differ diff --git a/total_payable_receivable/static/description/assets/icons/training.png b/total_payable_receivable/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/training.png differ diff --git a/total_payable_receivable/static/description/assets/icons/update.png b/total_payable_receivable/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/update.png differ diff --git a/total_payable_receivable/static/description/assets/icons/user.png b/total_payable_receivable/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/user.png differ diff --git a/total_payable_receivable/static/description/assets/icons/wrench.png b/total_payable_receivable/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/total_payable_receivable/static/description/assets/icons/wrench.png differ diff --git a/total_payable_receivable/static/description/assets/misc/categories.png b/total_payable_receivable/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/categories.png differ diff --git a/total_payable_receivable/static/description/assets/misc/check-box.png b/total_payable_receivable/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/check-box.png differ diff --git a/total_payable_receivable/static/description/assets/misc/compass.png b/total_payable_receivable/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/compass.png differ diff --git a/total_payable_receivable/static/description/assets/misc/corporate.png b/total_payable_receivable/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/corporate.png differ diff --git a/total_payable_receivable/static/description/assets/misc/customer-support.png b/total_payable_receivable/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/customer-support.png differ diff --git a/total_payable_receivable/static/description/assets/misc/cybrosys-logo.png b/total_payable_receivable/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/cybrosys-logo.png differ diff --git a/total_payable_receivable/static/description/assets/misc/features.png b/total_payable_receivable/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/features.png differ diff --git a/total_payable_receivable/static/description/assets/misc/logo.png b/total_payable_receivable/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/logo.png differ diff --git a/total_payable_receivable/static/description/assets/misc/pictures.png b/total_payable_receivable/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/pictures.png differ diff --git a/total_payable_receivable/static/description/assets/misc/pie-chart.png b/total_payable_receivable/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/pie-chart.png differ diff --git a/total_payable_receivable/static/description/assets/misc/right-arrow.png b/total_payable_receivable/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/right-arrow.png differ diff --git a/total_payable_receivable/static/description/assets/misc/star.png b/total_payable_receivable/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/star.png differ diff --git a/total_payable_receivable/static/description/assets/misc/support.png b/total_payable_receivable/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/support.png differ diff --git a/total_payable_receivable/static/description/assets/misc/whatsapp.png b/total_payable_receivable/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/total_payable_receivable/static/description/assets/misc/whatsapp.png differ diff --git a/total_payable_receivable/static/description/assets/modules/1.png b/total_payable_receivable/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/1.png differ diff --git a/total_payable_receivable/static/description/assets/modules/2.png b/total_payable_receivable/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/2.png differ diff --git a/total_payable_receivable/static/description/assets/modules/3.png b/total_payable_receivable/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/3.png differ diff --git a/total_payable_receivable/static/description/assets/modules/4.png b/total_payable_receivable/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/4.png differ diff --git a/total_payable_receivable/static/description/assets/modules/5.gif b/total_payable_receivable/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/5.gif differ diff --git a/total_payable_receivable/static/description/assets/modules/6.png b/total_payable_receivable/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/total_payable_receivable/static/description/assets/modules/6.png differ diff --git a/total_payable_receivable/static/description/assets/screenshots/1.png b/total_payable_receivable/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..7a57c04c6 Binary files /dev/null and b/total_payable_receivable/static/description/assets/screenshots/1.png differ diff --git a/total_payable_receivable/static/description/assets/screenshots/hero.png b/total_payable_receivable/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..bc586896d Binary files /dev/null and b/total_payable_receivable/static/description/assets/screenshots/hero.png differ diff --git a/total_payable_receivable/static/description/banner.png b/total_payable_receivable/static/description/banner.png new file mode 100644 index 000000000..88bbcb790 Binary files /dev/null and b/total_payable_receivable/static/description/banner.png differ diff --git a/total_payable_receivable/static/description/icon.png b/total_payable_receivable/static/description/icon.png new file mode 100644 index 000000000..733ca6691 Binary files /dev/null and b/total_payable_receivable/static/description/icon.png differ diff --git a/total_payable_receivable/static/description/index.html b/total_payable_receivable/static/description/index.html new file mode 100644 index 000000000..8a72074b9 --- /dev/null +++ b/total_payable_receivable/static/description/index.html @@ -0,0 +1,515 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Payable And Receivable Amounts

+

It shows total payable & receivable amount in partner form

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Amount payable and receivable is shown in the partner form of each Customers and Vendors. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Amount payable and receivable is shown in the partner form +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Partner Form

+

Screenshot of the partner form is shown below. + The fields 'Total Payable' and 'Total Receivable' is inside the Sales & Purchase tab under the section Sales

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/total_payable_receivable/views/total_payable_receivable_view.xml b/total_payable_receivable/views/total_payable_receivable_view.xml new file mode 100644 index 000000000..06a933782 --- /dev/null +++ b/total_payable_receivable/views/total_payable_receivable_view.xml @@ -0,0 +1,16 @@ + + + + + res.partner + res.partner + + + + + + + + + + diff --git a/user_login_alert/README.rst b/user_login_alert/README.rst new file mode 100644 index 000000000..7d7e15e74 --- /dev/null +++ b/user_login_alert/README.rst @@ -0,0 +1,36 @@ +User Login Alert v16 +==================== + +This module will help to send the notification to users on successful login to his account. + + +Working +======= +if user is continuously using the same system the user will be notified only once. If he changes +the browser or the OS from same system he will receive the mail. + +If user logged from another system and if he come back to his original system, for the first time +he will receive the email +Configuration +============= +For the working of this module, the outgoing mail configuration has to be configured . The Email will be send +to Users related partners Email ID. If the Email ID for the related partner of the user is not given, +then the notification mail will not send. + +Also install the "httpagentparser" python package, sudo pip install httpagentparser + +Credits +======= +Cybrosys Techno Solutions +Author + Niyas Raphy(v11) + Akshay Babu(v12) + Muhammad P(v14) + Noorjahan P(v15) + Viswanth K(v16) + + + +------ + +* Cybrosys Techno Solutions diff --git a/user_login_alert/__init__.py b/user_login_alert/__init__.py new file mode 100644 index 000000000..eea9191ae --- /dev/null +++ b/user_login_alert/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy(v11) and Akshay Babu(v12)()(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import controllers +from . import models diff --git a/user_login_alert/__manifest__.py b/user_login_alert/__manifest__.py new file mode 100644 index 000000000..231be83eb --- /dev/null +++ b/user_login_alert/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'User Login Alert', + 'summary': """Secure your Odoo account by alerts at right time. If any successful login to your + account happens, an alert mail will be send to you with the browser and IP details.""", + 'version': '16.0.1.0.0', + 'description': """Secure your Odoo account by alerts at right time. If any successful login to your + account happens, an alert mail will be send to you with the browser and IP details, Odoo 16, Odoo16""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'category': 'Tools', + 'depends': ['base', 'mail'], + 'license': 'AGPL-3', + 'data': [ + 'security/notification_group.xml', + 'views/logged_details_view.xml', + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, + 'external_dependencies': { + 'python': ['httpagentparser'], + }, +} + diff --git a/user_login_alert/controllers/__init__.py b/user_login_alert/controllers/__init__.py new file mode 100644 index 000000000..ea03d5885 --- /dev/null +++ b/user_login_alert/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy(v11) and Akshay Babu(v12)()(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import main diff --git a/user_login_alert/controllers/main.py b/user_login_alert/controllers/main.py new file mode 100644 index 000000000..7fa23f2cd --- /dev/null +++ b/user_login_alert/controllers/main.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy(v11) and Akshay Babu(v12)()(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +try: + import httpagentparser +except ImportError: + pass +from time import gmtime, strftime +from odoo.addons.web.controllers import home +from odoo.http import request +from odoo.exceptions import Warning +import odoo +import odoo.modules.registry +from odoo.tools.translate import _ +from odoo import http + + +class Home(home.Home): + + @http.route('/web/login', type='http', auth="public") + def web_login(self, redirect=None, **kw): + home.ensure_db() + request.params['login_success'] = False + if request.httprequest.method == 'GET' and redirect and request.session.uid: + return request.redirect(redirect) + + if not request.uid: + request.uid = odoo.SUPERUSER_ID + + values = request.params.copy() + try: + values['databases'] = http.db_list() + except odoo.exceptions.AccessDenied: + values['databases'] = None + if request.httprequest.method == 'POST': + old_uid = request.uid + uid = request.session.authenticate(request.session.db, + request.params['login'], + request.params['password']) + if uid is not False: + user_rec = request.env['res.users'].sudo().search( + [('id', '=', uid)]) + if user_rec.partner_id.email and user_rec.has_group( + 'user_login_alert.receive_login_notification'): + send_mail = 0 + agent = request.httprequest.environ.get('HTTP_USER_AGENT') + agent_details = httpagentparser.detect(agent) + user_os = agent_details['os']['name'] + browser_name = agent_details['browser']['name'] + ip_address = request.httprequest.environ['REMOTE_ADDR'] + if user_rec.last_logged_ip and user_rec.last_logged_browser and user_rec.last_logged_os: + if user_rec.last_logged_ip != ip_address or user_rec.last_logged_browser != browser_name or user_rec.last_logged_os != user_os: + send_mail = 1 + user_rec.last_logged_ip = ip_address + user_rec.last_logged_browser = browser_name + user_rec.last_logged_os = user_os + else: + send_mail = 0 + else: + send_mail = 1 + user_rec.last_logged_ip = ip_address + user_rec.last_logged_browser = browser_name + user_rec.last_logged_os = user_os + if send_mail == 1: + email_to = user_rec.partner_id.email + current_date_time = strftime("%Y-%m-%d %H:%M:%S", + gmtime()) + message_body = 'Hi ' + user_rec.name + ' , Your account has been ' \ + 'accessed successfully. The details of the ' \ + 'system from which the account is accessed ...,' + message_body += '' + message_body += '' \ + '' \ + '' \ + '' \ + '' \ + '' \ + '' \ + '' \ + '' + message_body += '
' + 'OS' + '' + user_os + '
' + 'Browser' + '' + browser_name + '
' + 'IP Address' + '' + ip_address + '
' + message_body += 'Thank you' + template_obj = request.env['mail.mail'] + template_data = { + 'subject': 'Login Alert : ' + current_date_time, + 'body_html': message_body, + 'email_from': request.env.user.company_id.email, + 'email_to': email_to + } + template_id = template_obj.create(template_data) + template_obj.send(template_id) + request.params['login_success'] = True + if not redirect: + redirect = '/web' + return request.redirect( + self._login_redirect(uid, redirect=redirect)) + request.uid = old_uid + values['error'] = _("Wrong login/password") + return request.render('web.login', values) diff --git a/user_login_alert/doc/RELEASE_NOTES.md b/user_login_alert/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..9a53f26b2 --- /dev/null +++ b/user_login_alert/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 05.09.2022 +#### Version 16.0.1.0.0 +#### ADD +Migration Of User Login Alert diff --git a/user_login_alert/models/__init__.py b/user_login_alert/models/__init__.py new file mode 100644 index 000000000..fb826fd79 --- /dev/null +++ b/user_login_alert/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy(v11) and Akshay Babu(v12)()(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import logged_details diff --git a/user_login_alert/models/logged_details.py b/user_login_alert/models/logged_details.py new file mode 100644 index 000000000..356d7a8a1 --- /dev/null +++ b/user_login_alert/models/logged_details.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Niyas Raphy(v11) and Akshay Babu(v12)()(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models, fields + + +class ResUsersInherit(models.Model): + _inherit = 'res.users' + + last_logged_ip = fields.Char(string='IP') + last_logged_browser = fields.Char(string='Browser') + last_logged_os = fields.Char(string='OS') diff --git a/user_login_alert/requirements.txt b/user_login_alert/requirements.txt new file mode 100644 index 000000000..55e961707 --- /dev/null +++ b/user_login_alert/requirements.txt @@ -0,0 +1 @@ +httpagentparser==1.8.1 \ No newline at end of file diff --git a/user_login_alert/security/notification_group.xml b/user_login_alert/security/notification_group.xml new file mode 100644 index 000000000..5867cb807 --- /dev/null +++ b/user_login_alert/security/notification_group.xml @@ -0,0 +1,8 @@ + + + + + Receive Login Notification + + + \ No newline at end of file diff --git a/user_login_alert/static/description/assets/icons/check.png b/user_login_alert/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/user_login_alert/static/description/assets/icons/check.png differ diff --git a/user_login_alert/static/description/assets/icons/chevron.png b/user_login_alert/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/chevron.png differ diff --git a/user_login_alert/static/description/assets/icons/cogs.png b/user_login_alert/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/cogs.png differ diff --git a/user_login_alert/static/description/assets/icons/consultation.png b/user_login_alert/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/user_login_alert/static/description/assets/icons/consultation.png differ diff --git a/user_login_alert/static/description/assets/icons/ecom-black.png b/user_login_alert/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/ecom-black.png differ diff --git a/user_login_alert/static/description/assets/icons/education-black.png b/user_login_alert/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/user_login_alert/static/description/assets/icons/education-black.png differ diff --git a/user_login_alert/static/description/assets/icons/hotel-black.png b/user_login_alert/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/user_login_alert/static/description/assets/icons/hotel-black.png differ diff --git a/user_login_alert/static/description/assets/icons/license.png b/user_login_alert/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/user_login_alert/static/description/assets/icons/license.png differ diff --git a/user_login_alert/static/description/assets/icons/lifebuoy.png b/user_login_alert/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/user_login_alert/static/description/assets/icons/lifebuoy.png differ diff --git a/user_login_alert/static/description/assets/icons/manufacturing-black.png b/user_login_alert/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/user_login_alert/static/description/assets/icons/manufacturing-black.png differ diff --git a/user_login_alert/static/description/assets/icons/pos-black.png b/user_login_alert/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/pos-black.png differ diff --git a/user_login_alert/static/description/assets/icons/puzzle.png b/user_login_alert/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/puzzle.png differ diff --git a/user_login_alert/static/description/assets/icons/restaurant-black.png b/user_login_alert/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/restaurant-black.png differ diff --git a/user_login_alert/static/description/assets/icons/service-black.png b/user_login_alert/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/user_login_alert/static/description/assets/icons/service-black.png differ diff --git a/user_login_alert/static/description/assets/icons/trading-black.png b/user_login_alert/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/user_login_alert/static/description/assets/icons/trading-black.png differ diff --git a/user_login_alert/static/description/assets/icons/training.png b/user_login_alert/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/user_login_alert/static/description/assets/icons/training.png differ diff --git a/user_login_alert/static/description/assets/icons/update.png b/user_login_alert/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/user_login_alert/static/description/assets/icons/update.png differ diff --git a/user_login_alert/static/description/assets/icons/user.png b/user_login_alert/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/user_login_alert/static/description/assets/icons/user.png differ diff --git a/user_login_alert/static/description/assets/icons/wrench.png b/user_login_alert/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/user_login_alert/static/description/assets/icons/wrench.png differ diff --git a/user_login_alert/static/description/assets/misc/categories.png b/user_login_alert/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/categories.png differ diff --git a/user_login_alert/static/description/assets/misc/check-box.png b/user_login_alert/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/check-box.png differ diff --git a/user_login_alert/static/description/assets/misc/compass.png b/user_login_alert/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/user_login_alert/static/description/assets/misc/compass.png differ diff --git a/user_login_alert/static/description/assets/misc/corporate.png b/user_login_alert/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/user_login_alert/static/description/assets/misc/corporate.png differ diff --git a/user_login_alert/static/description/assets/misc/customer-support.png b/user_login_alert/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/user_login_alert/static/description/assets/misc/customer-support.png differ diff --git a/user_login_alert/static/description/assets/misc/cybrosys-logo.png b/user_login_alert/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/user_login_alert/static/description/assets/misc/cybrosys-logo.png differ diff --git a/user_login_alert/static/description/assets/misc/features.png b/user_login_alert/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/features.png differ diff --git a/user_login_alert/static/description/assets/misc/logo.png b/user_login_alert/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/user_login_alert/static/description/assets/misc/logo.png differ diff --git a/user_login_alert/static/description/assets/misc/pictures.png b/user_login_alert/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/pictures.png differ diff --git a/user_login_alert/static/description/assets/misc/pie-chart.png b/user_login_alert/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/pie-chart.png differ diff --git a/user_login_alert/static/description/assets/misc/right-arrow.png b/user_login_alert/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/right-arrow.png differ diff --git a/user_login_alert/static/description/assets/misc/star.png b/user_login_alert/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/user_login_alert/static/description/assets/misc/star.png differ diff --git a/user_login_alert/static/description/assets/misc/support.png b/user_login_alert/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/support.png differ diff --git a/user_login_alert/static/description/assets/misc/whatsapp.png b/user_login_alert/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/user_login_alert/static/description/assets/misc/whatsapp.png differ diff --git a/user_login_alert/static/description/assets/modules/1.png b/user_login_alert/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/user_login_alert/static/description/assets/modules/1.png differ diff --git a/user_login_alert/static/description/assets/modules/2.png b/user_login_alert/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/user_login_alert/static/description/assets/modules/2.png differ diff --git a/user_login_alert/static/description/assets/modules/3.png b/user_login_alert/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/user_login_alert/static/description/assets/modules/3.png differ diff --git a/user_login_alert/static/description/assets/modules/4.png b/user_login_alert/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/user_login_alert/static/description/assets/modules/4.png differ diff --git a/user_login_alert/static/description/assets/modules/5.gif b/user_login_alert/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/user_login_alert/static/description/assets/modules/5.gif differ diff --git a/user_login_alert/static/description/assets/modules/6.png b/user_login_alert/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/user_login_alert/static/description/assets/modules/6.png differ diff --git a/user_login_alert/static/description/assets/screenshots/1.png b/user_login_alert/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..5694321e8 Binary files /dev/null and b/user_login_alert/static/description/assets/screenshots/1.png differ diff --git a/user_login_alert/static/description/assets/screenshots/2.png b/user_login_alert/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..6f463a1aa Binary files /dev/null and b/user_login_alert/static/description/assets/screenshots/2.png differ diff --git a/user_login_alert/static/description/assets/screenshots/hero.gif b/user_login_alert/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..54d5b16f3 Binary files /dev/null and b/user_login_alert/static/description/assets/screenshots/hero.gif differ diff --git a/user_login_alert/static/description/banner.png b/user_login_alert/static/description/banner.png new file mode 100644 index 000000000..b1308667f Binary files /dev/null and b/user_login_alert/static/description/banner.png differ diff --git a/user_login_alert/static/description/icon.png b/user_login_alert/static/description/icon.png new file mode 100644 index 000000000..5be013e9a Binary files /dev/null and b/user_login_alert/static/description/icon.png differ diff --git a/user_login_alert/static/description/index.html b/user_login_alert/static/description/index.html new file mode 100644 index 000000000..a2b0a17a3 --- /dev/null +++ b/user_login_alert/static/description/index.html @@ -0,0 +1,548 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

User Login Alert

+

User Will Be Notified On Successful Login

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module will send a notification email to the users email. + The notification email contains the IP address of the system, browser name and OS from which the account is accessed. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Community & Enterprise Support +

+ Available in Odoo 16.0 Community and Enterprise

+
+
+ + E-mail Notification +

+ Email notification on Log in

+
+
+ + Details +

+ Details of the system that accessed the account

+
+
+ + Information in Notification Email +

+ IP, OS and browser as well as log in time will be there in the notification email

+
+
+ + User Group +

+ User will receive notification only if user exist in group receive login notification

+
+
+
+ + + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

E-mail On Successful Login

+

User receives e-mail on successful login.

+ +
+ +
+

Adding user to the login notification group

+

User will receive notification only if he is added in this group

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/user_login_alert/views/logged_details_view.xml b/user_login_alert/views/logged_details_view.xml new file mode 100644 index 000000000..cf8b3c27a --- /dev/null +++ b/user_login_alert/views/logged_details_view.xml @@ -0,0 +1,25 @@ + + + + + res.users + res.users + + + + + + + + + + + + + + + + + + + diff --git a/website_floating_whatsapp_icon/README.rst b/website_floating_whatsapp_icon/README.rst new file mode 100644 index 000000000..7d0df4f79 --- /dev/null +++ b/website_floating_whatsapp_icon/README.rst @@ -0,0 +1,44 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Whatsapp Floating Icon in Website +================================= +Whatsapp Floating button in Website + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Noorjahan @cybrosys +* Developers: Athira PS V16 @cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/website_floating_whatsapp_icon/__init__.py b/website_floating_whatsapp_icon/__init__.py new file mode 100644 index 000000000..7e89f58d5 --- /dev/null +++ b/website_floating_whatsapp_icon/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Noorjahan N A () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import model \ No newline at end of file diff --git a/website_floating_whatsapp_icon/__manifest__.py b/website_floating_whatsapp_icon/__manifest__.py new file mode 100644 index 000000000..0394219d3 --- /dev/null +++ b/website_floating_whatsapp_icon/__manifest__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Noorjahan N A () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Whatsapp Floating Icon in Website', + 'version': '16.0.1.0.0', + 'category': 'Extra Tools', + 'summary': """Whatsapp Floating Icon in Website""", + 'description': """Whatsapp Floating Icon in Website, Website Floating WhatsApp Icon, Whatsapp Odoo Website,Whatsapp Odoo Coonector, Whatsapp website, Whatsapp""", + 'author': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'depends': ['base','website'], + 'data': [ + 'views/portal_whatsapp_view.xml', + 'views/website_inherited.xml', + ], + 'images': ['static/description/banner.png'], + 'assets': { + 'web.assets_frontend': [ + '/website_floating_whatsapp_icon/static/src/css/whatsapp.css', + ], + }, + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/website_floating_whatsapp_icon/doc/changelog.md b/website_floating_whatsapp_icon/doc/changelog.md new file mode 100644 index 000000000..8fcb58370 --- /dev/null +++ b/website_floating_whatsapp_icon/doc/changelog.md @@ -0,0 +1,10 @@ +## Module + +#### 16.09.2022 +#### Version 16.0.1.0.0 +#### ADD +- Initial commit + + + + diff --git a/website_floating_whatsapp_icon/model/__init__.py b/website_floating_whatsapp_icon/model/__init__.py new file mode 100644 index 000000000..2691cb3fd --- /dev/null +++ b/website_floating_whatsapp_icon/model/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Noorjahan N A () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import website \ No newline at end of file diff --git a/website_floating_whatsapp_icon/model/website.py b/website_floating_whatsapp_icon/model/website.py new file mode 100644 index 000000000..b227dd87a --- /dev/null +++ b/website_floating_whatsapp_icon/model/website.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies() +# Author: Noorjahan N A () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import fields, models + + +class Website(models.Model): + _inherit = 'website' + + mobile_number = fields.Char(string='Mobile Number') diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/check.png b/website_floating_whatsapp_icon/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/check.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/chevron.png b/website_floating_whatsapp_icon/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/chevron.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/cogs.png b/website_floating_whatsapp_icon/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/cogs.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/consultation.png b/website_floating_whatsapp_icon/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/consultation.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/ecom-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/ecom-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/education-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/education-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/hotel-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/hotel-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/license.png b/website_floating_whatsapp_icon/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/license.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/lifebuoy.png b/website_floating_whatsapp_icon/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/lifebuoy.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/logo.png b/website_floating_whatsapp_icon/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/logo.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/manufacturing-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/manufacturing-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/pos-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/pos-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/puzzle.png b/website_floating_whatsapp_icon/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/puzzle.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/restaurant-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/restaurant-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/service-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/service-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/trading-black.png b/website_floating_whatsapp_icon/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/trading-black.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/training.png b/website_floating_whatsapp_icon/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/training.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/update.png b/website_floating_whatsapp_icon/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/update.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/user.png b/website_floating_whatsapp_icon/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/user.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/icons/wrench.png b/website_floating_whatsapp_icon/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/icons/wrench.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/categories.png b/website_floating_whatsapp_icon/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/categories.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/check-box.png b/website_floating_whatsapp_icon/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/check-box.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/compass.png b/website_floating_whatsapp_icon/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/compass.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/corporate.png b/website_floating_whatsapp_icon/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/corporate.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/customer-support.png b/website_floating_whatsapp_icon/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/customer-support.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/cybrosys-logo.png b/website_floating_whatsapp_icon/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/cybrosys-logo.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/features.png b/website_floating_whatsapp_icon/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/features.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/logo.png b/website_floating_whatsapp_icon/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/logo.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/pictures.png b/website_floating_whatsapp_icon/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/pictures.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/pie-chart.png b/website_floating_whatsapp_icon/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/pie-chart.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/right-arrow.png b/website_floating_whatsapp_icon/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/right-arrow.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/star.png b/website_floating_whatsapp_icon/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/star.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/support.png b/website_floating_whatsapp_icon/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/support.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/misc/whatsapp.png b/website_floating_whatsapp_icon/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/misc/whatsapp.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/budget_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..b50130c7d Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/budget_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/credit_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/credit_image.png new file mode 100644 index 000000000..3ad04ecfd Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/credit_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/employee_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/employee_image.png new file mode 100644 index 000000000..30ad58232 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/employee_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/export_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..492980ad0 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/export_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/gantt_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/gantt_image.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/gantt_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/modules/quotation_image.png b/website_floating_whatsapp_icon/static/description/assets/modules/quotation_image.png new file mode 100644 index 000000000..499b1a72f Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/modules/quotation_image.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/screenshots/1.png b/website_floating_whatsapp_icon/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..0f0c7768b Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/screenshots/1.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/screenshots/2.png b/website_floating_whatsapp_icon/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..49107fb7b Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/screenshots/2.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/screenshots/3.png b/website_floating_whatsapp_icon/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..dc48d2298 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/screenshots/3.png differ diff --git a/website_floating_whatsapp_icon/static/description/assets/screenshots/hero.gif b/website_floating_whatsapp_icon/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..c9200ba0c Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/assets/screenshots/hero.gif differ diff --git a/website_floating_whatsapp_icon/static/description/banner.png b/website_floating_whatsapp_icon/static/description/banner.png new file mode 100644 index 000000000..c6a41b7ec Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/banner.png differ diff --git a/website_floating_whatsapp_icon/static/description/icon.png b/website_floating_whatsapp_icon/static/description/icon.png new file mode 100644 index 000000000..6c51fad85 Binary files /dev/null and b/website_floating_whatsapp_icon/static/description/icon.png differ diff --git a/website_floating_whatsapp_icon/static/description/index.html b/website_floating_whatsapp_icon/static/description/index.html new file mode 100644 index 000000000..4e232fd14 --- /dev/null +++ b/website_floating_whatsapp_icon/static/description/index.html @@ -0,0 +1,536 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Whatsapp Floating Icon in Website

+

Whatsapp Floating Icon in Website.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This module add a whatsapp icon in website in which the customers can communicate with website through whatsapp. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Easily access whatsapp from website. +
+
+ + Makes communication easier. +
+ + + + +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Mobile number in webiste form

+

In the website form view we can define the number along with country code required for communicating with the website responsible.

+ +
+ +
+

Whatsapp icon in website

+

There will be a whatsapp icon in the website.

+ +
+ +
+

Redirecting to whatsapp

+

By clicking on the whatsapp floating icon it will redirect to whatsapp web with the recipient as the number specified in corresponding website.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/website_floating_whatsapp_icon/static/src/css/whatsapp.css b/website_floating_whatsapp_icon/static/src/css/whatsapp.css new file mode 100644 index 000000000..91dd355b3 --- /dev/null +++ b/website_floating_whatsapp_icon/static/src/css/whatsapp.css @@ -0,0 +1,22 @@ +.cy_whatsapp_web{ + position:fixed; + width:60px; + height:60px; + bottom:40px; + right:40px; + background-color:#25d366; + color:#FFF; + border-radius:50px; + text-align:center; + font-size:30px; + z-index:100; +} + +.cy-icon{ + margin-top:16px; + color: white; +} + +.fa-whatsapp { + color:#FFF; +} \ No newline at end of file diff --git a/website_floating_whatsapp_icon/views/portal_whatsapp_view.xml b/website_floating_whatsapp_icon/views/portal_whatsapp_view.xml new file mode 100644 index 000000000..6cbe216bd --- /dev/null +++ b/website_floating_whatsapp_icon/views/portal_whatsapp_view.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/website_floating_whatsapp_icon/views/website_inherited.xml b/website_floating_whatsapp_icon/views/website_inherited.xml new file mode 100644 index 000000000..b39b05bd1 --- /dev/null +++ b/website_floating_whatsapp_icon/views/website_inherited.xml @@ -0,0 +1,13 @@ + + + + website.form.inherit + website + + + + +91 + + + + \ No newline at end of file diff --git a/website_product_attachments/README.rst b/website_product_attachments/README.rst new file mode 100644 index 000000000..7ea7fc6a5 --- /dev/null +++ b/website_product_attachments/README.rst @@ -0,0 +1,44 @@ +Product Attachments On Website +============================== +This Module allows customer to download documents +that are attached to the products from website + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Fasluca V10@ cybrosys, Contact: odoo@cybrosys.com + Kavya Raveendran V11@ cybrosys, Contact: odoo@cybrosys.com + Kavya Raveendran V12 @ cybrosys, Contact: odoo@cybrosys.com + Yadhukrishna V13 @cybrosys, odoo@cybrosys.com + JIBIN JAMES V14@cybrosys, Contact: odoo@cybrosys.com + Remya Rajeev V15@cybrosys, Contact: odoo@cybrosys.com + Viswanth V16@cybrosys, Contact: odoo@cybrosys.com +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/website_product_attachments/__init__.py b/website_product_attachments/__init__.py new file mode 100644 index 000000000..0d633edaa --- /dev/null +++ b/website_product_attachments/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Fasluca @ cybrosys,(odoo@cybrosys.com) +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +# -*- coding: utf-8 -*- +from . import controllers diff --git a/website_product_attachments/__manifest__.py b/website_product_attachments/__manifest__.py new file mode 100644 index 000000000..4d730cd32 --- /dev/null +++ b/website_product_attachments/__manifest__.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: Fasluca @ cybrosys,(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Product Attachments on Website', + 'version': '16.0.1.0.0', + 'summary': """This Module Allows Customer to Download Documents + That Are Attached to the Products From Website""", + 'description': 'This Module allows customer to download documents ' + 'that are attached to the products from website', + 'category': 'Website', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['website_sale'], + 'data': ['views/template.xml'], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/website_product_attachments/controllers/__init__.py b/website_product_attachments/controllers/__init__.py new file mode 100644 index 000000000..80597c81f --- /dev/null +++ b/website_product_attachments/controllers/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: v10.0 Fasluca @ cybrosys,(odoo@cybrosys.com) +# v11.0 Kavya Raveendran @ cybrosys,(odoo@cybrosys.com) +# v12.0 Kavya Raveendran @ cybrosys,(odoo@cybrosys.com) +# v13.0 Yadhukrishna @ cybrosys,(odoo@cybrosys.com) +# v14.0 Jibin James @ cybrosys,(odoo@cybrosys.com) +# v15.0 Remya Rajeev @ cybrosys,(odoo@cybrosys.com) +# v16.0 Viswanth @ cybrosys,(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +# -*- coding: utf-8 -*- +from . import website_product_attachment diff --git a/website_product_attachments/controllers/website_product_attachment.py b/website_product_attachments/controllers/website_product_attachment.py new file mode 100644 index 000000000..a26fb8c20 --- /dev/null +++ b/website_product_attachments/controllers/website_product_attachment.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Fasluca @ cybrosys,(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +# -*- coding: utf-8 -*- + +import base64 +from werkzeug.utils import redirect +import io +from odoo import http +from odoo.http import request +from odoo.addons.website.controllers.main import QueryURL +from odoo.addons.website_sale.controllers.main import WebsiteSale + + +class WebsiteSale(WebsiteSale): + + @http.route(['/shop/'], type='http', + auth="public", website=True) + def product(self, product, category='', search='', **kwargs): + res = super(WebsiteSale, self).product(product, category='', search='', + **kwargs) + attachments = request.env['ir.attachment'].sudo().search( + [('res_model', '=', 'product.template'), + ('res_id', '=', product.id)], order='id') + res.qcontext['attachments'] = attachments + return res + + def _get_attribute_exclusion(self, product, reference_product=None): + parent_combination = request.env['product.template.attribute.value'] + if reference_product: + parent_combination |= reference_product.product_template_attribute_value_ids + if reference_product.env.context.get('no_variant_attribute_values'): + # Add "no_variant" attribute values' exclusions + # They are kept in the context since they are not linked to this product variant + parent_combination |= reference_product.env.context.get( + 'no_variant_attribute_values') + return product._get_attribute_exclusions(parent_combination) + + @http.route(['/attachment/download', ], type='http', auth='public') + def download_attachment(self, attachment_id): + # Check if this is a valid attachment id + attachment = request.env['ir.attachment'].sudo().search( + [('id', '=', int(attachment_id))]) + + if attachment: + attachment = attachment[0] + else: + return redirect('/shop') + + if attachment["type"] == "url": + if attachment["url"]: + return redirect(attachment["url"]) + else: + return request.not_found() + elif attachment["datas"]: + data = io.BytesIO(base64.standard_b64decode(attachment["datas"])) + return http.send_file(data, filename=attachment['name'], + as_attachment=True) + else: + return request.not_found() diff --git a/website_product_attachments/doc/RELEASE_NOTES.md b/website_product_attachments/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..2960de454 --- /dev/null +++ b/website_product_attachments/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 13.09.2022 +#### Version 16.0.1.0.0 +#### ADD +Initial Commit for website_product_attachments. + + diff --git a/website_product_attachments/static/description/assets/icons/check.png b/website_product_attachments/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/check.png differ diff --git a/website_product_attachments/static/description/assets/icons/chevron.png b/website_product_attachments/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/chevron.png differ diff --git a/website_product_attachments/static/description/assets/icons/cogs.png b/website_product_attachments/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/cogs.png differ diff --git a/website_product_attachments/static/description/assets/icons/consultation.png b/website_product_attachments/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/consultation.png differ diff --git a/website_product_attachments/static/description/assets/icons/ecom-black.png b/website_product_attachments/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/ecom-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/education-black.png b/website_product_attachments/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/education-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/hotel-black.png b/website_product_attachments/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/hotel-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/license.png b/website_product_attachments/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/license.png differ diff --git a/website_product_attachments/static/description/assets/icons/lifebuoy.png b/website_product_attachments/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/lifebuoy.png differ diff --git a/website_product_attachments/static/description/assets/icons/manufacturing-black.png b/website_product_attachments/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/manufacturing-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/pos-black.png b/website_product_attachments/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/pos-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/puzzle.png b/website_product_attachments/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/puzzle.png differ diff --git a/website_product_attachments/static/description/assets/icons/restaurant-black.png b/website_product_attachments/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/restaurant-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/service-black.png b/website_product_attachments/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/service-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/trading-black.png b/website_product_attachments/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/trading-black.png differ diff --git a/website_product_attachments/static/description/assets/icons/training.png b/website_product_attachments/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/training.png differ diff --git a/website_product_attachments/static/description/assets/icons/update.png b/website_product_attachments/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/update.png differ diff --git a/website_product_attachments/static/description/assets/icons/user.png b/website_product_attachments/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/user.png differ diff --git a/website_product_attachments/static/description/assets/icons/wrench.png b/website_product_attachments/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/website_product_attachments/static/description/assets/icons/wrench.png differ diff --git a/website_product_attachments/static/description/assets/misc/categories.png b/website_product_attachments/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/categories.png differ diff --git a/website_product_attachments/static/description/assets/misc/check-box.png b/website_product_attachments/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/check-box.png differ diff --git a/website_product_attachments/static/description/assets/misc/compass.png b/website_product_attachments/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/compass.png differ diff --git a/website_product_attachments/static/description/assets/misc/corporate.png b/website_product_attachments/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/corporate.png differ diff --git a/website_product_attachments/static/description/assets/misc/customer-support.png b/website_product_attachments/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/customer-support.png differ diff --git a/website_product_attachments/static/description/assets/misc/cybrosys-logo.png b/website_product_attachments/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/cybrosys-logo.png differ diff --git a/website_product_attachments/static/description/assets/misc/features.png b/website_product_attachments/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/features.png differ diff --git a/website_product_attachments/static/description/assets/misc/logo.png b/website_product_attachments/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/logo.png differ diff --git a/website_product_attachments/static/description/assets/misc/pictures.png b/website_product_attachments/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/pictures.png differ diff --git a/website_product_attachments/static/description/assets/misc/pie-chart.png b/website_product_attachments/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/pie-chart.png differ diff --git a/website_product_attachments/static/description/assets/misc/right-arrow.png b/website_product_attachments/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/right-arrow.png differ diff --git a/website_product_attachments/static/description/assets/misc/star.png b/website_product_attachments/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/star.png differ diff --git a/website_product_attachments/static/description/assets/misc/support.png b/website_product_attachments/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/support.png differ diff --git a/website_product_attachments/static/description/assets/misc/whatsapp.png b/website_product_attachments/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/website_product_attachments/static/description/assets/misc/whatsapp.png differ diff --git a/website_product_attachments/static/description/assets/modules/1.png b/website_product_attachments/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/1.png differ diff --git a/website_product_attachments/static/description/assets/modules/2.png b/website_product_attachments/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/2.png differ diff --git a/website_product_attachments/static/description/assets/modules/3.png b/website_product_attachments/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/3.png differ diff --git a/website_product_attachments/static/description/assets/modules/4.png b/website_product_attachments/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/4.png differ diff --git a/website_product_attachments/static/description/assets/modules/5.gif b/website_product_attachments/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/5.gif differ diff --git a/website_product_attachments/static/description/assets/modules/6.png b/website_product_attachments/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/website_product_attachments/static/description/assets/modules/6.png differ diff --git a/website_product_attachments/static/description/assets/screenshots/1 .png b/website_product_attachments/static/description/assets/screenshots/1 .png new file mode 100644 index 000000000..ab071581d Binary files /dev/null and b/website_product_attachments/static/description/assets/screenshots/1 .png differ diff --git a/website_product_attachments/static/description/assets/screenshots/2 .png b/website_product_attachments/static/description/assets/screenshots/2 .png new file mode 100644 index 000000000..bf9e3e32c Binary files /dev/null and b/website_product_attachments/static/description/assets/screenshots/2 .png differ diff --git a/website_product_attachments/static/description/assets/screenshots/3 .png b/website_product_attachments/static/description/assets/screenshots/3 .png new file mode 100644 index 000000000..b599e78cf Binary files /dev/null and b/website_product_attachments/static/description/assets/screenshots/3 .png differ diff --git a/website_product_attachments/static/description/assets/screenshots/hero.gif b/website_product_attachments/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..b13bafa58 Binary files /dev/null and b/website_product_attachments/static/description/assets/screenshots/hero.gif differ diff --git a/website_product_attachments/static/description/banner.png b/website_product_attachments/static/description/banner.png new file mode 100644 index 000000000..df65629bf Binary files /dev/null and b/website_product_attachments/static/description/banner.png differ diff --git a/website_product_attachments/static/description/icon.png b/website_product_attachments/static/description/icon.png new file mode 100644 index 000000000..a9076a127 Binary files /dev/null and b/website_product_attachments/static/description/icon.png differ diff --git a/website_product_attachments/static/description/index.html b/website_product_attachments/static/description/index.html new file mode 100644 index 000000000..da2f1ddcc --- /dev/null +++ b/website_product_attachments/static/description/index.html @@ -0,0 +1,579 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Product Attachments on Website

+

Download Attachments of Products from Website

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ This Module allows customers to download documents from website that are attached to relevant products. +
+
+ + + +
+
+ +
+

+ Configuration +

+
+
+
+ No additional configuration required. +
+
+ + + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Attach Documents +

+ Allows users to attach documents

+
+
+ + Attachments from Website +

+ Download attachments from website

+
+ +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Attach Documents on Product Master

+

Attach your documents like, product specification on product master.

+ +
+ +
+

Attach Multiple Documents

+

Allow to attach multiple documents for products.

+ +
+ +
+

Visitors Can Download Attachments

+

Visitors of your e-commerce portal can download these attachments.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/website_product_attachments/views/template.xml b/website_product_attachments/views/template.xml new file mode 100644 index 000000000..203af80c8 --- /dev/null +++ b/website_product_attachments/views/template.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/whatsapp_mail_messaging/README.rst b/whatsapp_mail_messaging/README.rst new file mode 100644 index 000000000..e6a0460f0 --- /dev/null +++ b/whatsapp_mail_messaging/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Odoo Whatsapp Connector +======================= +Odoo Whatsapp Connector For Sales, Invoice and Floating button in Website + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Nishad@cybrosys + version 14: Sayooj A O @cybrosys, + version 15: Midilaj V K @cybrosys + version 16: Pranav T V @cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/whatsapp_mail_messaging/__init__.py b/whatsapp_mail_messaging/__init__.py new file mode 100644 index 000000000..9c65d6d4f --- /dev/null +++ b/whatsapp_mail_messaging/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import model +from . import wizard diff --git a/whatsapp_mail_messaging/__manifest__.py b/whatsapp_mail_messaging/__manifest__.py new file mode 100644 index 000000000..61c1e6615 --- /dev/null +++ b/whatsapp_mail_messaging/__manifest__.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Odoo Whatsapp Connector', + 'version': '16.0.1.0.0', + 'category': 'Extra Tools', + 'summary': """Odoo Whatsapp Connector For Sales, Invoice, and Floating button in Website""", + 'description': """Added options for sending Whatsapp messages and Mails in systray bar,sale order, invoices, + website portal view and share the access url of documents using share option available in each records through + Whatsapp web..""", + 'author': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'depends': ['sale', 'account', 'website','sale_management'], + 'data': [ + 'views/portal_whatsapp_view.xml', + 'views/sale_order_inherited.xml', + 'views/account_move_inherited.xml', + 'views/website_inherited.xml', + 'wizard/wh_message_wizard.xml', + 'wizard/portal_share_inherited.xml', + 'security/ir.model.access.csv', + ], + 'assets': { + 'web.assets_backend': [ + "whatsapp_mail_messaging/static/src/js/whatsapp_button.js", + "whatsapp_mail_messaging/static/src/js/mail_button.js" + ], + 'web.assets_frontend': [ + "whatsapp_mail_messaging/static/src/css/whatsapp.css" + ], + 'web.assets_qweb': [ + 'whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml', + 'whatsapp_mail_messaging/static/src/xml/mail_button.xml', + ], + }, + 'images': ['static/description/banner.gif'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/whatsapp_mail_messaging/doc/changelog.md b/whatsapp_mail_messaging/doc/changelog.md new file mode 100644 index 000000000..c27b99cb6 --- /dev/null +++ b/whatsapp_mail_messaging/doc/changelog.md @@ -0,0 +1,6 @@ +## Module + +#### 18.12.2021 +#### Version 16.0.1.0.0 +#### ADD +- Initial commit diff --git a/whatsapp_mail_messaging/model/__init__.py b/whatsapp_mail_messaging/model/__init__.py new file mode 100644 index 000000000..b999986f0 --- /dev/null +++ b/whatsapp_mail_messaging/model/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import website +from . import sale_order +from . import account_move diff --git a/whatsapp_mail_messaging/model/account_move.py b/whatsapp_mail_messaging/model/account_move.py new file mode 100644 index 000000000..0eda3f9b8 --- /dev/null +++ b/whatsapp_mail_messaging/model/account_move.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from itertools import groupby + +from odoo import models, _ +from odoo.exceptions import UserError + + +class Account(models.Model): + _inherit = 'account.move' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref( + 'whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Here is your invoice" + ' ' + self.name + ' ' + "amounting" + ' ' + str( + self.amount_total) + self.currency_id.symbol + ' ' + "from " + self.company_id.name + ". Please remit payment at your earliest convenience. " + '\n' + \ + "Please use the following communication for your payment" + ' ' + self.name + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + account_move_ids = self.env['account.move'].browse( + self.env.context.get('active_ids')) + partner_ids = [] + for account_move in account_move_ids: + partner_ids.append(account_move.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + account_move_numbers = account_move_ids.mapped('name') + account_move_numbers = "\n".join(account_move_numbers) + compose_form_id = self.env.ref( + 'whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + account_move_numbers + \ + ' ' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': account_move_ids[0].partner_id.id, + 'default_mobile': account_move_ids[0].partner_id.mobile, + 'default_image_1920': account_move_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected Invoices of more than one customer.' + 'Try select Invoices of an unique customer')) diff --git a/whatsapp_mail_messaging/model/sale_order.py b/whatsapp_mail_messaging/model/sale_order.py new file mode 100644 index 000000000..579bdb8b3 --- /dev/null +++ b/whatsapp_mail_messaging/model/sale_order.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from itertools import groupby + +from odoo import models, _ +from odoo.exceptions import UserError + + +class Sale(models.Model): + _inherit = 'sale.order' + + def action_send_whatsapp(self): + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your quotation" + ' ' + self.name + ' ' + "amounting" + ' ' + str( + self.amount_total) + self.currency_id.symbol + ' ' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': self.partner_id.id, + 'default_mobile': self.partner_id.mobile, + 'default_image_1920': self.partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + def check_customers(self, partner_ids): + partners = groupby(partner_ids) + return next(partners, True) and not next(partners, False) + + def action_whatsapp_multi(self): + sale_order_ids = self.env['sale.order'].browse(self.env.context.get('active_ids')) + partner_ids = [] + for sale in sale_order_ids: + partner_ids.append(sale.partner_id.id) + partner_check = self.check_customers(partner_ids) + if partner_check: + sale_numbers = sale_order_ids.mapped('name') + sale_numbers = "\n".join(sale_numbers) + compose_form_id = self.env.ref('whatsapp_mail_messaging.whatsapp_message_wizard_form').id + ctx = dict(self.env.context) + message = "Hi" + " " + self.partner_id.name + ',' + '\n' + "Your Orders are" + '\n' + sale_numbers + \ + ' ' + '\n' + "is ready for review.Do not hesitate to contact us if you have any questions." + ctx.update({ + 'default_message': message, + 'default_partner_id': sale_order_ids[0].partner_id.id, + 'default_mobile': sale_order_ids[0].partner_id.mobile, + 'default_image_1920': sale_order_ids[0].partner_id.image_1920, + }) + return { + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'whatsapp.message.wizard', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + else: + raise UserError(_( + 'It seems that you have selected orders of more than one customer.' + 'Try select orders of an unique customer')) diff --git a/whatsapp_mail_messaging/model/website.py b/whatsapp_mail_messaging/model/website.py new file mode 100644 index 000000000..945cfd0b4 --- /dev/null +++ b/whatsapp_mail_messaging/model/website.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import fields, models + + +class Website(models.Model): + _inherit = 'website' + + mobile_number = fields.Char(string='Mobile Number') diff --git a/whatsapp_mail_messaging/security/ir.model.access.csv b/whatsapp_mail_messaging/security/ir.model.access.csv new file mode 100644 index 000000000..df424fde7 --- /dev/null +++ b/whatsapp_mail_messaging/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 +access_whatsapp_message_wizard,access.whatsapp.message.wizard,model_whatsapp_message_wizard,base.group_user,1,1,1,1 + diff --git a/whatsapp_mail_messaging/static/description/assets/icons/check.png b/whatsapp_mail_messaging/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/check.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/chevron.png b/whatsapp_mail_messaging/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/chevron.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/cogs.png b/whatsapp_mail_messaging/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/cogs.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/consultation.png b/whatsapp_mail_messaging/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/consultation.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png b/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/ecom-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/education-black.png b/whatsapp_mail_messaging/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/education-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png b/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/hotel-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/license.png b/whatsapp_mail_messaging/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/license.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png b/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/lifebuoy.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png b/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/manufacturing-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png b/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/pos-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png b/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/puzzle.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png b/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/restaurant-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/service-black.png b/whatsapp_mail_messaging/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/service-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png b/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/trading-black.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/training.png b/whatsapp_mail_messaging/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/training.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/update.png b/whatsapp_mail_messaging/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/update.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/user.png b/whatsapp_mail_messaging/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/user.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/icons/wrench.png b/whatsapp_mail_messaging/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/icons/wrench.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/categories.png b/whatsapp_mail_messaging/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/categories.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/check-box.png b/whatsapp_mail_messaging/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/check-box.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/compass.png b/whatsapp_mail_messaging/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/compass.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/corporate.png b/whatsapp_mail_messaging/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/corporate.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/customer-support.png b/whatsapp_mail_messaging/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/customer-support.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/cybrosys-logo.png b/whatsapp_mail_messaging/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/cybrosys-logo.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/features.png b/whatsapp_mail_messaging/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/features.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/logo.png b/whatsapp_mail_messaging/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/logo.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/pictures.png b/whatsapp_mail_messaging/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/pictures.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/pie-chart.png b/whatsapp_mail_messaging/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/pie-chart.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/right-arrow.png b/whatsapp_mail_messaging/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/right-arrow.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/star.png b/whatsapp_mail_messaging/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/star.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/support.png b/whatsapp_mail_messaging/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/support.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/misc/whatsapp.png b/whatsapp_mail_messaging/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/misc/whatsapp.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/1.png b/whatsapp_mail_messaging/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/1.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/2.png b/whatsapp_mail_messaging/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/2.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/3.png b/whatsapp_mail_messaging/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/3.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/4.png b/whatsapp_mail_messaging/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/4.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/5.gif b/whatsapp_mail_messaging/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/5.gif differ diff --git a/whatsapp_mail_messaging/static/description/assets/modules/6.png b/whatsapp_mail_messaging/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/modules/6.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/1.png b/whatsapp_mail_messaging/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..9c3b405cc Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/1.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/10.png b/whatsapp_mail_messaging/static/description/assets/screenshots/10.png new file mode 100644 index 000000000..5e00a4ec5 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/10.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/11.png b/whatsapp_mail_messaging/static/description/assets/screenshots/11.png new file mode 100644 index 000000000..f44d97719 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/11.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/12.png b/whatsapp_mail_messaging/static/description/assets/screenshots/12.png new file mode 100644 index 000000000..68bc64364 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/12.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/13.png b/whatsapp_mail_messaging/static/description/assets/screenshots/13.png new file mode 100644 index 000000000..0d2c76be3 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/13.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/14.png b/whatsapp_mail_messaging/static/description/assets/screenshots/14.png new file mode 100644 index 000000000..7efffb7ec Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/14.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/15.png b/whatsapp_mail_messaging/static/description/assets/screenshots/15.png new file mode 100644 index 000000000..bd0bcb8a9 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/15.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/16.png b/whatsapp_mail_messaging/static/description/assets/screenshots/16.png new file mode 100644 index 000000000..55ca6e168 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/16.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/17.png b/whatsapp_mail_messaging/static/description/assets/screenshots/17.png new file mode 100644 index 000000000..263f759dd Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/17.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/18.png b/whatsapp_mail_messaging/static/description/assets/screenshots/18.png new file mode 100644 index 000000000..248082080 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/18.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/19.png b/whatsapp_mail_messaging/static/description/assets/screenshots/19.png new file mode 100644 index 000000000..763b9d1e9 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/19.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/2.png b/whatsapp_mail_messaging/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..8eb55e209 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/2.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/20.png b/whatsapp_mail_messaging/static/description/assets/screenshots/20.png new file mode 100644 index 000000000..749c55a27 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/20.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/21.png b/whatsapp_mail_messaging/static/description/assets/screenshots/21.png new file mode 100644 index 000000000..0626e94bd Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/21.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/22.png b/whatsapp_mail_messaging/static/description/assets/screenshots/22.png new file mode 100644 index 000000000..7266cafb0 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/22.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/3.png b/whatsapp_mail_messaging/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..d9978044d Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/3.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/4.png b/whatsapp_mail_messaging/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..7b111bb92 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/4.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/5.png b/whatsapp_mail_messaging/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..e71c5d774 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/5.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/6.png b/whatsapp_mail_messaging/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..93c544b9d Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/6.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/7.png b/whatsapp_mail_messaging/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..0110180b5 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/7.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/8.png b/whatsapp_mail_messaging/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..7ca4930a1 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/8.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/9.png b/whatsapp_mail_messaging/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..6c94c4549 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/9.png differ diff --git a/whatsapp_mail_messaging/static/description/assets/screenshots/hero.gif b/whatsapp_mail_messaging/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..e8595284a Binary files /dev/null and b/whatsapp_mail_messaging/static/description/assets/screenshots/hero.gif differ diff --git a/whatsapp_mail_messaging/static/description/banner.png b/whatsapp_mail_messaging/static/description/banner.png new file mode 100644 index 000000000..eb3f8652f Binary files /dev/null and b/whatsapp_mail_messaging/static/description/banner.png differ diff --git a/whatsapp_mail_messaging/static/description/icon.png b/whatsapp_mail_messaging/static/description/icon.png new file mode 100644 index 000000000..32d7926a8 Binary files /dev/null and b/whatsapp_mail_messaging/static/description/icon.png differ diff --git a/whatsapp_mail_messaging/static/description/index.html b/whatsapp_mail_messaging/static/description/index.html new file mode 100644 index 000000000..bdfdb7c2b --- /dev/null +++ b/whatsapp_mail_messaging/static/description/index.html @@ -0,0 +1,675 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + + +

Odoo WhatsApp Connector

+

Send WhatsApp messages and mails from Odoo.

+ + + +
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Added options for sending Whatsapp messages and Mails in systray bar,sale order, invoices, website + portal view and share the access url of + documents using share option available in each records through Whatsapp web. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Community & Enterprise Support. +
+
+ + Whatsapp/Mail Icon in systray bar. +
+
+ + Whatsapp floating icon in website. +
+
+ + Whatsapp button in Sales and Invoice +
+
+
+
+ + Added Whatsapp as a share option. +
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

Added Whatsapp and Mail icon in the systray bar.

+ + + +
+ +
+

Create Mail from Systray Bar

+

By clicking on the mail icon we will have a mail composing screen like below + which we can specify the content,customer,subject and attachments.

+ +
+ +
+

Send Mail

+

After click on send from the composing wizard the corresponding recipients will receive the mail.

+ +
+ +
+

Add Mobile Number

+

We have to specify the mobile field in contact form along with the country code for filling + the mobile number automatically in the whatsapp message composing wizard.

+ +
+ +
+

Create Whatsapp Message from Systray Bar

+

After click on the whatsapp icon in systray, we will have a message composing screen like this.

+ +
+ + +
+

Option to Add Emojis

+

We can use the below emojis in our message

+ +
+ +
+

Send Whatsapp Message

+

After click on send , we will redirected to the whatsapp web along with our message.

+ +
+ +
+

+ The message we entered in odoo will carried to the corresponding number in our contact.

+ +
+ +
+

Send by Whatsapp in Invoice

+

In Invoice form view we will have a button "Send by Whatsapp"

+ +
+ +
+

Whatsapp Wizard in Invoice

+

By clicking on "Send by Whatsapp" button ,a popup will arrive with auto filled details such as + recipient,number and required content, + we can edit those details if required.

+ +
+ +
+

The message will redirect to the whatsapp web with the details in the popup.

+ +
+ +
+

Send by Whatsapp in Sale Order

+

In Sale Order form view we will have a button "Send by Whatsapp".

+ +
+ +
+

Whatsapp Wizard in Sale Order

+

By clicking on "Send by Whatsapp" button ,a popup will arrive with auto filled details such as + recipient,number and required content, + we can edit those details if required.

+ +
+ +
+

The message will redirect to the whatsapp web with the details in the popup.

+ +
+ +
+

Add Mobile in Website

+

In the website form view we can define the number along with country code required for communicating + with the + website responsible.

+ +
+ +
+

Whatsapp Icon in Website

+

There will be a whatsapp icon present in the website.

+ +
+ +
+

Send Whatsapp Message From Website

+

By clicking on the whatsapp floating icon it will redirect to whatsapp web with the recipient as the + number specified in corresponding website

+ +
+ +
+

Share Documents through Whatsapp

+

We will have a share menu in documents like sales order, invoices, purchase etc.

+ +
+ +
+

Add Customer And Additional Contents

+

By clicking on that there will be an additional option 'Whatsapp" in the popup screen where we can add + the customer + and additional contents if we need.

+ +
+ +
+

Send Documents through Whatsapp

+

After click on send first it will redirected to then whatsapp web and then to corresponding contact in + our whatsapp + along with the custom message and link for accessing the document.

+ +
+ +
+

Send Multiple Documents through Whatsapp

+

In the sales and invoice list view, we will have an option after selecting the records in the list view.

+ +
+ +
+

We can send multiple document references to a single customer using this option, + we can only send documents of a single customer at a time.

+ +
+ +
+
+ + + +
+
+ +
+

Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+
+ \ No newline at end of file diff --git a/whatsapp_mail_messaging/static/src/css/whatsapp.css b/whatsapp_mail_messaging/static/src/css/whatsapp.css new file mode 100644 index 000000000..91dd355b3 --- /dev/null +++ b/whatsapp_mail_messaging/static/src/css/whatsapp.css @@ -0,0 +1,22 @@ +.cy_whatsapp_web{ + position:fixed; + width:60px; + height:60px; + bottom:40px; + right:40px; + background-color:#25d366; + color:#FFF; + border-radius:50px; + text-align:center; + font-size:30px; + z-index:100; +} + +.cy-icon{ + margin-top:16px; + color: white; +} + +.fa-whatsapp { + color:#FFF; +} \ No newline at end of file diff --git a/whatsapp_mail_messaging/static/src/js/mail_button.js b/whatsapp_mail_messaging/static/src/js/mail_button.js new file mode 100644 index 000000000..bedaedb48 --- /dev/null +++ b/whatsapp_mail_messaging/static/src/js/mail_button.js @@ -0,0 +1,28 @@ +/** @odoo-module **/ + +import SystrayMenu from 'web.SystrayMenu'; +import Widget from 'web.Widget'; + +const { Component } = owl; + +var ActionMenu = Widget.extend({ + template: 'global_mail_message.mail_icon', + events: { + 'click .mail_icon': 'onclick_mail_icon', + }, + onclick_mail_icon: function() { + var self = this; + self.do_action({ + name: 'Compose Mail', + res_model: 'mail.compose.message', + views: [[false, 'form']], + type: 'ir.actions.act_window', + view_mode: 'form', + target: 'new' + }); + }, +}); + +SystrayMenu.Items.push(ActionMenu); + +export default ActionMenu; diff --git a/whatsapp_mail_messaging/static/src/js/whatsapp_button.js b/whatsapp_mail_messaging/static/src/js/whatsapp_button.js new file mode 100644 index 000000000..55488380a --- /dev/null +++ b/whatsapp_mail_messaging/static/src/js/whatsapp_button.js @@ -0,0 +1,28 @@ +/** @odoo-module **/ + +import SystrayMenu from 'web.SystrayMenu'; +import Widget from 'web.Widget'; + +const { Component } = owl; + +var ActionMenu = Widget.extend({ + template: 'whatsapp_mail_messaging.whatsapp_icon', + events: { + 'click .whatsapp_icon': 'onclick_whatsapp_icon', + }, + onclick_whatsapp_icon: function() { + var self = this; + self.do_action({ + name: 'Compose Whatsapp Message', + res_model: 'whatsapp.message.wizard', + views: [[false, 'form']], + type: 'ir.actions.act_window', + view_mode: 'form', + target: 'new' + }); + }, +}); + +SystrayMenu.Items.push(ActionMenu); + +export default ActionMenu; diff --git a/whatsapp_mail_messaging/static/src/xml/mail_button.xml b/whatsapp_mail_messaging/static/src/xml/mail_button.xml new file mode 100644 index 000000000..d31747eb9 --- /dev/null +++ b/whatsapp_mail_messaging/static/src/xml/mail_button.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml b/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml new file mode 100644 index 000000000..4c0b40662 --- /dev/null +++ b/whatsapp_mail_messaging/static/src/xml/whatsapp_button.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/whatsapp_mail_messaging/views/account_move_inherited.xml b/whatsapp_mail_messaging/views/account_move_inherited.xml new file mode 100644 index 000000000..0b745582e --- /dev/null +++ b/whatsapp_mail_messaging/views/account_move_inherited.xml @@ -0,0 +1,25 @@ + + + + account.move.form.view.inherited + account.move + + + +