diff --git a/employee_late_check_in/README.rst b/employee_late_check_in/README.rst new file mode 100644 index 000000000..95066e7c7 --- /dev/null +++ b/employee_late_check_in/README.rst @@ -0,0 +1,19 @@ +Employee Late Check-in Penalty v15 +================================== +Employee Late Check-in + +Installation +============ + - www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +Configuration +============= + + No additional configurations needed + +Credits +======= + Developer: Ijaz Ahammed v13 @ cybrosys, Contact: odoo@cybrosys.com + Minhaj v14 @ cybrosys, Contact: odoo@cybrosys.com + diff --git a/employee_late_check_in/__init__.py b/employee_late_check_in/__init__.py new file mode 100644 index 000000000..107f73b07 --- /dev/null +++ b/employee_late_check_in/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models diff --git a/employee_late_check_in/__manifest__.py b/employee_late_check_in/__manifest__.py new file mode 100644 index 000000000..77a7afdb5 --- /dev/null +++ b/employee_late_check_in/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Employee Late Check-in', + 'version': '15.0.1.0.0', + 'summary': """This module Allows Employee Late check-in deduction/penalty""", + 'description': """This module Allows Employee Late check-in deduction/penalty""", + 'author': "Cybrosys Techno Solutions", + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'maintainer': 'Cybrosys Techno Solutions', + 'category': 'Human Resources', + 'depends': ['hr_attendance', 'hr_payroll_community', 'hr_contract'], + 'data': [ + 'views/res_config_settings.xml', + 'views/hr_attendance_view.xml', + 'views/late_check_in_view.xml', + 'views/hr_employee.xml', + 'security/ir.model.access.csv', + 'data/cron.xml', + 'data/salary_rule.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_late_check_in/data/cron.xml b/employee_late_check_in/data/cron.xml new file mode 100644 index 000000000..adac90421 --- /dev/null +++ b/employee_late_check_in/data/cron.xml @@ -0,0 +1,16 @@ + + + + + Attendance: Late Check-in + + code + model.late_check_in_records() + + 1 + days + -1 + + + + \ No newline at end of file diff --git a/employee_late_check_in/data/salary_rule.xml b/employee_late_check_in/data/salary_rule.xml new file mode 100644 index 000000000..185e07859 --- /dev/null +++ b/employee_late_check_in/data/salary_rule.xml @@ -0,0 +1,29 @@ + + + + Late Check-in + + LC + + code + code + +amount = 0 +try: + if inputs.LC: + amount = inputs.LC.amount +except: + amount = 0 +result = -amount + + + + + LCS + Base Salary Structure For Late Check-in + + + + + \ No newline at end of file diff --git a/employee_late_check_in/doc/RELEASE_NOTES.md b/employee_late_check_in/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..195e5404d --- /dev/null +++ b/employee_late_check_in/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 02.05.2020 +#### Version 15.0.1.0.0 +#### ADD + +Initial Commit for employee_late_check_in + diff --git a/employee_late_check_in/models/__init__.py b/employee_late_check_in/models/__init__.py new file mode 100644 index 000000000..f76df1bae --- /dev/null +++ b/employee_late_check_in/models/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import res_config_settings +from . import hr_attendance +from . import late_check_in +from . import hr_payslip +from . import hr_employee diff --git a/employee_late_check_in/models/hr_attendance.py b/employee_late_check_in/models/hr_attendance.py new file mode 100644 index 000000000..1e0767669 --- /dev/null +++ b/employee_late_check_in/models/hr_attendance.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from datetime import datetime, timedelta, date +from pytz import timezone, UTC +import pytz +from odoo import models, fields, api + + +class HrAttendance(models.Model): + _inherit = 'hr.attendance' + + late_check_in = fields.Integer(string="Late Check-in(Minutes)", compute="get_late_minutes") + + def get_late_minutes(self): + for rec in self: + + rec.late_check_in = 0.0 + week_day = rec.sudo().check_in.weekday() + if rec.employee_id.contract_id: + work_schedule = rec.sudo().employee_id.contract_id.resource_calendar_id + for schedule in work_schedule.sudo().attendance_ids: + if schedule.dayofweek == str(week_day) and schedule.day_period == 'morning': + work_from = schedule.hour_from + result = '{0:02.0f}:{1:02.0f}'.format(*divmod(work_from * 60, 60)) + + user_tz = self.env.user.tz + dt = rec.check_in + + if user_tz in pytz.all_timezones: + old_tz = pytz.timezone('UTC') + new_tz = pytz.timezone(user_tz) + dt = old_tz.localize(dt).astimezone(new_tz) + str_time = dt.strftime("%H:%M") + check_in_date = datetime.strptime(str_time, "%H:%M").time() + start_date = datetime.strptime(result, "%H:%M").time() + t1 = timedelta(hours=check_in_date.hour, minutes=check_in_date.minute) + t2 = timedelta(hours=start_date.hour, minutes=start_date.minute) + if check_in_date > start_date: + final = t1 - t2 + rec.sudo().late_check_in = final.total_seconds() / 60 + + def late_check_in_records(self): + existing_records = self.env['late.check_in'].sudo().search([]).attendance_id.ids + minutes_after = int(self.env['ir.config_parameter'].sudo().get_param('late_check_in_after')) or 0 + max_limit = int(self.env['ir.config_parameter'].sudo().get_param('maximum_minutes')) or 0 + late_check_in_ids = self.sudo().search([('id', 'not in', existing_records)]) + for rec in late_check_in_ids: + late_check_in = rec.sudo().late_check_in + 210 + if rec.late_check_in > minutes_after and late_check_in > minutes_after and late_check_in < max_limit: + self.env['late.check_in'].sudo().create({ + 'employee_id': rec.employee_id.id, + 'late_minutes': late_check_in, + 'date': rec.check_in.date(), + 'attendance_id': rec.id, + }) diff --git a/employee_late_check_in/models/hr_employee.py b/employee_late_check_in/models/hr_employee.py new file mode 100644 index 000000000..72b1d9f3b --- /dev/null +++ b/employee_late_check_in/models/hr_employee.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import models, fields, _ + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + late_check_in_count = fields.Integer(string="Late Check-In", compute="get_late_check_in_count") + + def action_to_open_late_check_in_records(self): + domain = [ + ('employee_id', '=', self.id), + ] + return { + 'name': _('Employee Late Check-in'), + 'domain': domain, + 'res_model': 'late.check_in', + 'type': 'ir.actions.act_window', + 'view_mode': 'tree,form', + 'limit': 80, + } + + def get_late_check_in_count(self): + self.late_check_in_count = self.env['late.check_in'].search_count([('employee_id', '=', self.id)]) + + +class HrEmployees(models.Model): + _inherit = 'hr.employee.public' + + late_check_in_count = fields.Integer(string="Late Check-In", compute="get_late_check_in_count") + + def action_to_open_late_check_in_records(self): + domain = [ + ('employee_id', '=', self.id), + ] + return { + 'name': _('Employee Late Check-in'), + 'domain': domain, + 'res_model': 'late.check_in', + 'type': 'ir.actions.act_window', + 'view_mode': 'tree,form', + 'limit': 80, + } + + def get_late_check_in_count(self): + self.late_check_in_count = self.env['late.check_in'].search_count([('employee_id', '=', self.id)]) diff --git a/employee_late_check_in/models/hr_payslip.py b/employee_late_check_in/models/hr_payslip.py new file mode 100644 index 000000000..27a8cc2fc --- /dev/null +++ b/employee_late_check_in/models/hr_payslip.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import models, api, fields + + +class PayslipLateCheckIn(models.Model): + _inherit = 'hr.payslip' + + late_check_in_ids = fields.Many2many('late.check_in') + + @api.model + def get_inputs(self, contracts, date_from, date_to): + """ + function used for writing late check-in record in payslip + input tree. + + """ + res = super(PayslipLateCheckIn, self).get_inputs(contracts, date_to, date_from) + late_check_in_type = self.env.ref('employee_late_check_in.late_check_in') + contract = self.contract_id + late_check_in_id = self.env['late.check_in'].search([('employee_id', '=', self.employee_id.id), + ('date', '<=', self.date_to), + ('date', '>=', self.date_from), + ('state', '=', 'approved'), + ]) + amount = late_check_in_id.mapped('amount') + cash_amount = sum(amount) + if late_check_in_id: + self.late_check_in_ids = late_check_in_id + input_data = { + 'name': late_check_in_type.name, + 'code': late_check_in_type.code, + 'amount': cash_amount, + 'contract_id': contract.id, + } + res.append(input_data) + return res + + def action_payslip_done(self): + """ + function used for marking deducted Late check-in + request. + + """ + for recd in self.late_check_in_ids: + recd.state = 'deducted' + return super(PayslipLateCheckIn, self).action_payslip_done() diff --git a/employee_late_check_in/models/late_check_in.py b/employee_late_check_in/models/late_check_in.py new file mode 100644 index 000000000..34771d89c --- /dev/null +++ b/employee_late_check_in/models/late_check_in.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +from odoo import models, fields, api + + +class LateCheckIn(models.Model): + _name = 'late.check_in' + + name = fields.Char() + employee_id = fields.Many2one('hr.employee', string="Employee") + late_minutes = fields.Integer(string="Late Minutes") + date = fields.Date(string="Date") + amount = fields.Float(string="Amount", compute="get_penalty_amount") + state = fields.Selection([('draft', 'Draft'), + ('approved', 'Approved'), + ('refused', 'Refused'), + ('deducted', 'Deducted')], string="state", + default="draft") + attendance_id = fields.Many2one('hr.attendance', string='attendance') + + # current_user_boolean = fields.Boolean() + @api.model + def create(self, values): + seq = self.env['ir.sequence'].next_by_code('late.check_in') or '/' + values['name'] = seq + return super(LateCheckIn, self.sudo()).create(values) + + def get_penalty_amount(self): + for rec in self: + amount = float(self.env['ir.config_parameter'].sudo().get_param('deduction_amount')) + rec.amount = amount + if self.env['ir.config_parameter'].sudo().get_param('deduction_type') == 'minutes': + rec.amount = amount * rec.late_minutes + + def approve(self): + self.state = 'approved' + + def reject(self): + self.state = 'refused' diff --git a/employee_late_check_in/models/res_config_settings.py b/employee_late_check_in/models/res_config_settings.py new file mode 100644 index 000000000..461af39f3 --- /dev/null +++ b/employee_late_check_in/models/res_config_settings.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Ijaz Ahammed (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import models, fields + + +class LateCheckinSettings(models.TransientModel): + _inherit = 'res.config.settings' + + deduction_amount = fields.Float(string="Deduction Amount", + config_parameter='employee_late_check_in.deduction_amount') + maximum_minutes = fields.Char(string="Maximum Late Minute", + config_parameter='employee_late_check_in.maximum_minutes') + late_check_in_after = fields.Char(string="Late Check-in Starts After", + config_parameter='employee_late_check_in.late_check_in_after') + unpaid_leave = fields.Boolean(string="Unpaid Leave", + config_parameter='employee_late_check_in.unpaid_leave') + deduction_type = fields.Selection([('minutes', 'Per Minutes'), ('total', 'Per Total')], + config_parameter='employee_late_check_in.deduction_type', default="minutes") + + def set_values(self): + res = super(LateCheckinSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param('deduction_amount', self.deduction_amount) + self.env['ir.config_parameter'].sudo().set_param('maximum_minutes', self.maximum_minutes) + self.env['ir.config_parameter'].sudo().set_param('late_check_in_after', self.late_check_in_after) + self.env['ir.config_parameter'].sudo().set_param('unpaid_leave', self.unpaid_leave) + self.env['ir.config_parameter'].sudo().set_param('deduction_type', self.deduction_type) + return res diff --git a/employee_late_check_in/security/ir.model.access.csv b/employee_late_check_in/security/ir.model.access.csv new file mode 100644 index 000000000..9f0811965 --- /dev/null +++ b/employee_late_check_in/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_late_checkin_manager,access.late_check_in.manager,model_late_check_in,hr.group_hr_manager,1,1,0,1 +access_late_checkin_officer,access.late_check_in.officer,model_late_check_in,hr.group_hr_user,1,1,0,0 +access_late_checkin_user,access.late_check_in.user,model_late_check_in,base.group_user,1,0,0,0 \ No newline at end of file diff --git a/employee_late_check_in/static/description/assets/icons/check.png b/employee_late_check_in/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/check.png differ diff --git a/employee_late_check_in/static/description/assets/icons/chevron.png b/employee_late_check_in/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/chevron.png differ diff --git a/employee_late_check_in/static/description/assets/icons/cogs.png b/employee_late_check_in/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/cogs.png differ diff --git a/employee_late_check_in/static/description/assets/icons/consultation.png b/employee_late_check_in/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/consultation.png differ diff --git a/employee_late_check_in/static/description/assets/icons/ecom-black.png b/employee_late_check_in/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/ecom-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/education-black.png b/employee_late_check_in/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/education-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/hotel-black.png b/employee_late_check_in/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/hotel-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/license.png b/employee_late_check_in/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/license.png differ diff --git a/employee_late_check_in/static/description/assets/icons/lifebuoy.png b/employee_late_check_in/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/lifebuoy.png differ diff --git a/employee_late_check_in/static/description/assets/icons/logo.png b/employee_late_check_in/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/logo.png differ diff --git a/employee_late_check_in/static/description/assets/icons/manufacturing-black.png b/employee_late_check_in/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/manufacturing-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/pos-black.png b/employee_late_check_in/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/pos-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/puzzle.png b/employee_late_check_in/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/puzzle.png differ diff --git a/employee_late_check_in/static/description/assets/icons/restaurant-black.png b/employee_late_check_in/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/restaurant-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/service-black.png b/employee_late_check_in/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/service-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/trading-black.png b/employee_late_check_in/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/trading-black.png differ diff --git a/employee_late_check_in/static/description/assets/icons/training.png b/employee_late_check_in/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/training.png differ diff --git a/employee_late_check_in/static/description/assets/icons/update.png b/employee_late_check_in/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/update.png differ diff --git a/employee_late_check_in/static/description/assets/icons/user.png b/employee_late_check_in/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/user.png differ diff --git a/employee_late_check_in/static/description/assets/icons/wrench.png b/employee_late_check_in/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/employee_late_check_in/static/description/assets/icons/wrench.png differ diff --git a/employee_late_check_in/static/description/assets/modules/approval_image.png b/employee_late_check_in/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/approval_image.png differ diff --git a/employee_late_check_in/static/description/assets/modules/budget_image.png b/employee_late_check_in/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/budget_image.png differ diff --git a/employee_late_check_in/static/description/assets/modules/export_image.png b/employee_late_check_in/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/export_image.png differ diff --git a/employee_late_check_in/static/description/assets/modules/magento_image.png b/employee_late_check_in/static/description/assets/modules/magento_image.png new file mode 100644 index 000000000..39de0820f Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/magento_image.png differ diff --git a/employee_late_check_in/static/description/assets/modules/pos_image.png b/employee_late_check_in/static/description/assets/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/pos_image.png differ diff --git a/employee_late_check_in/static/description/assets/modules/shopify_image.png b/employee_late_check_in/static/description/assets/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/employee_late_check_in/static/description/assets/modules/shopify_image.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-1.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-1.png new file mode 100644 index 000000000..2260f6585 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-1.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-2.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-2.png new file mode 100644 index 000000000..83039f85a Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-2.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-3.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-3.png new file mode 100644 index 000000000..6c1633161 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-3.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-4.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-4.png new file mode 100644 index 000000000..f90181758 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-4.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-5.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-5.png new file mode 100644 index 000000000..66ab3fada Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-5.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-6.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-6.png new file mode 100644 index 000000000..7818b97a6 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-6.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-7.png b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-7.png new file mode 100644 index 000000000..4ccd74d62 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/employee_late_check_in-7.png differ diff --git a/employee_late_check_in/static/description/assets/screenshots/hero.png b/employee_late_check_in/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..374a618d4 Binary files /dev/null and b/employee_late_check_in/static/description/assets/screenshots/hero.png differ diff --git a/employee_late_check_in/static/description/banner.png b/employee_late_check_in/static/description/banner.png new file mode 100644 index 000000000..afdda5cfc Binary files /dev/null and b/employee_late_check_in/static/description/banner.png differ diff --git a/employee_late_check_in/static/description/icon.png b/employee_late_check_in/static/description/icon.png new file mode 100644 index 000000000..a8567b95e Binary files /dev/null and b/employee_late_check_in/static/description/icon.png differ diff --git a/employee_late_check_in/static/description/index.html b/employee_late_check_in/static/description/index.html new file mode 100644 index 000000000..75b1594f6 --- /dev/null +++ b/employee_late_check_in/static/description/index.html @@ -0,0 +1,629 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ Employee Late Check-in Penalty

+

+ Employee Late Check-in deduction from payroll +

+ +
+
+ + + + +
+
+

+ Overview +

+
+ +
+

+ This module Allows Employee Late check-in deduction/penalty

+ +
+
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Late Check-in minutes in Attendance log

+ +
+
+
+
+ +
+
+

+ Deduction based on configuration

+ +
+
+ +
+
+ +
+
+

+ Manager Approval

+ +
+
+ +
+
+ +
+
+

+ Late check-in deduction from payslip

+ +
+
+ + +
+ +
+
+

+ Screenshots +

+
+
+

+ After installation, open Attendance >> Configuration

+ + +
+ +
+

+ Late Check-in Minutes

+ + +
+ +
+

+ Late check-in records(Group by employees). Attendance >> Late Check-in

+ + +
+ + +
+

+ Manager approve the late Check-in entry and when confirm the payslip it will set to 'Deduct' state

+ + +
+ + +
+

+ Select the Salary Structure

+ + +
+ + +
+

+ Payslip Input Lines

+ + +
+ +
+

+ Salary Computation

+ + +
+ + +
+ + +
+
+

Suggested 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

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

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/employee_late_check_in/views/hr_attendance_view.xml b/employee_late_check_in/views/hr_attendance_view.xml new file mode 100644 index 000000000..5888a7894 --- /dev/null +++ b/employee_late_check_in/views/hr_attendance_view.xml @@ -0,0 +1,14 @@ + + + + + inherited_hr.attendance.tree + hr.attendance + + + + + + + + \ No newline at end of file diff --git a/employee_late_check_in/views/hr_employee.xml b/employee_late_check_in/views/hr_employee.xml new file mode 100644 index 000000000..57530e9db --- /dev/null +++ b/employee_late_check_in/views/hr_employee.xml @@ -0,0 +1,36 @@ + + + + view.employee.form + hr.employee.public + + +
+ +
+
+
+ + + + view.employee.form + hr.employee + + +
+ +
+
+
+
+
\ No newline at end of file diff --git a/employee_late_check_in/views/late_check_in_view.xml b/employee_late_check_in/views/late_check_in_view.xml new file mode 100644 index 000000000..dd481a04b --- /dev/null +++ b/employee_late_check_in/views/late_check_in_view.xml @@ -0,0 +1,117 @@ + + + + + late.check_in.sequence + late.check_in + LC + + + 5 + + + + + + + late.check_in.form + late.check_in + +
+
+ +
+ +
+

+ +

+
+ + + + + + + + + + + +
+
+
+
+ + + late.check_in.search.view + late.check_in + + + + + + + + + + + + late.check_in.tree + late.check_in + + + + + + + + + + + + + + + Late Check-in + late.check_in + tree,form + { + 'search_default_group_employee': 1, + } + + + + + + + + + late_check_in.Inherited.View + hr.payslip + + + + + + + + + +
+
diff --git a/employee_late_check_in/views/res_config_settings.xml b/employee_late_check_in/views/res_config_settings.xml new file mode 100644 index 000000000..6a5c7ce0c --- /dev/null +++ b/employee_late_check_in/views/res_config_settings.xml @@ -0,0 +1,75 @@ + + + + + Late Check-in Configurations + res.config.settings + + + + +

Late Check-in

+
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/hr_timesheet_description/README.rst b/hr_timesheet_description/README.rst new file mode 100644 index 000000000..09ce873ed --- /dev/null +++ b/hr_timesheet_description/README.rst @@ -0,0 +1,46 @@ +Timesheet Description from Grid View +==================================== + +This module is used for simply adding description with timesheet +in kanban and grid view + +Usage +===== + +After installation open Timesheets module ther we can add timesheet +for task by clicking add a line from the grid view here added a new +field for adding description of task. + + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: + Noushid Khan.P + +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/hr_timesheet_description/__init__.py b/hr_timesheet_description/__init__.py new file mode 100644 index 000000000..2f83ce75b --- /dev/null +++ b/hr_timesheet_description/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +###################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Noushid Khan P (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) +# It is forbidden to publish, distribute, sublicense, or sell copies of the Software +# or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +######################################################################################## diff --git a/hr_timesheet_description/__manifest__.py b/hr_timesheet_description/__manifest__.py new file mode 100644 index 000000000..bcec1bf4e --- /dev/null +++ b/hr_timesheet_description/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +###################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies(). +# Author: Noushid Khan P (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) +# It is forbidden to publish, distribute, sublicense, or sell copies of the Software +# or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +######################################################################################## +{ + 'name': 'Timesheet Description from Grid View', + 'version': '15.0.1.0.0', + 'summary': 'Add Timesheet Description from Grid view and Kanban View', + 'description': 'Add Timesheet Description from Grid view and Kanban View', + 'category': 'Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': [ + 'base','timesheet_grid' + ], + 'data': [ + 'views/account_analytic_line.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'OPL-1', + 'installable': True, + 'application': False, + 'auto_install': False, +} diff --git a/hr_timesheet_description/doc/RELEASE_NOTES.md b/hr_timesheet_description/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..963554d27 --- /dev/null +++ b/hr_timesheet_description/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 30.01.2022 +#### Version 15.0.1.0.0 +##### ADD +- Initial commit for hr_timesheet_description. + diff --git a/hr_timesheet_description/static/description/assets/icons/check.png b/hr_timesheet_description/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/check.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/chevron.png b/hr_timesheet_description/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/chevron.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/cogs.png b/hr_timesheet_description/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/cogs.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/consultation.png b/hr_timesheet_description/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/consultation.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/ecom-black.png b/hr_timesheet_description/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/ecom-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/education-black.png b/hr_timesheet_description/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/education-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/hotel-black.png b/hr_timesheet_description/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/hotel-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/license.png b/hr_timesheet_description/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/license.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/lifebuoy.png b/hr_timesheet_description/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/lifebuoy.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/logo.png b/hr_timesheet_description/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/logo.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/manufacturing-black.png b/hr_timesheet_description/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/manufacturing-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/pos-black.png b/hr_timesheet_description/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/pos-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/puzzle.png b/hr_timesheet_description/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/puzzle.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/restaurant-black.png b/hr_timesheet_description/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/restaurant-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/service-black.png b/hr_timesheet_description/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/service-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/trading-black.png b/hr_timesheet_description/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/trading-black.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/training.png b/hr_timesheet_description/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/training.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/update.png b/hr_timesheet_description/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/update.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/user.png b/hr_timesheet_description/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/user.png differ diff --git a/hr_timesheet_description/static/description/assets/icons/wrench.png b/hr_timesheet_description/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/hr_timesheet_description/static/description/assets/icons/wrench.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/approval_image.png b/hr_timesheet_description/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/approval_image.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/budget_image.png b/hr_timesheet_description/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/budget_image.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/export_image.png b/hr_timesheet_description/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/export_image.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/magento_image.png b/hr_timesheet_description/static/description/assets/modules/magento_image.png new file mode 100644 index 000000000..39de0820f Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/magento_image.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/pos_image.png b/hr_timesheet_description/static/description/assets/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/pos_image.png differ diff --git a/hr_timesheet_description/static/description/assets/modules/shopify_image.png b/hr_timesheet_description/static/description/assets/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/hr_timesheet_description/static/description/assets/modules/shopify_image.png differ diff --git a/hr_timesheet_description/static/description/assets/screenshots/hero.png b/hr_timesheet_description/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..a52641cab Binary files /dev/null and b/hr_timesheet_description/static/description/assets/screenshots/hero.png differ diff --git a/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-1.png b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-1.png new file mode 100644 index 000000000..dbc2ef76c Binary files /dev/null and b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-1.png differ diff --git a/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-2.png b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-2.png new file mode 100644 index 000000000..b267ee9e2 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-2.png differ diff --git a/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-3.png b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-3.png new file mode 100644 index 000000000..9c584e3d8 Binary files /dev/null and b/hr_timesheet_description/static/description/assets/screenshots/hr_timesheet_description-3.png differ diff --git a/hr_timesheet_description/static/description/banner.png b/hr_timesheet_description/static/description/banner.png new file mode 100644 index 000000000..90e93aaa3 Binary files /dev/null and b/hr_timesheet_description/static/description/banner.png differ diff --git a/hr_timesheet_description/static/description/icon.png b/hr_timesheet_description/static/description/icon.png new file mode 100644 index 000000000..4f62bed5e Binary files /dev/null and b/hr_timesheet_description/static/description/icon.png differ diff --git a/hr_timesheet_description/static/description/images/checked.png b/hr_timesheet_description/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/hr_timesheet_description/static/description/images/checked.png differ diff --git a/hr_timesheet_description/static/description/images/cybrosys.png b/hr_timesheet_description/static/description/images/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/hr_timesheet_description/static/description/images/cybrosys.png differ diff --git a/hr_timesheet_description/static/description/images/deadline_reminder.png b/hr_timesheet_description/static/description/images/deadline_reminder.png new file mode 100644 index 000000000..218abe026 Binary files /dev/null and b/hr_timesheet_description/static/description/images/deadline_reminder.png differ diff --git a/hr_timesheet_description/static/description/images/desc01.png b/hr_timesheet_description/static/description/images/desc01.png new file mode 100644 index 000000000..dbc2ef76c Binary files /dev/null and b/hr_timesheet_description/static/description/images/desc01.png differ diff --git a/hr_timesheet_description/static/description/images/desc02.png b/hr_timesheet_description/static/description/images/desc02.png new file mode 100644 index 000000000..b267ee9e2 Binary files /dev/null and b/hr_timesheet_description/static/description/images/desc02.png differ diff --git a/hr_timesheet_description/static/description/images/desc03.png b/hr_timesheet_description/static/description/images/desc03.png new file mode 100644 index 000000000..9c584e3d8 Binary files /dev/null and b/hr_timesheet_description/static/description/images/desc03.png differ diff --git a/hr_timesheet_description/static/description/images/employee_docs.png b/hr_timesheet_description/static/description/images/employee_docs.png new file mode 100644 index 000000000..bc39822ea Binary files /dev/null and b/hr_timesheet_description/static/description/images/employee_docs.png differ diff --git a/hr_timesheet_description/static/description/images/front.png b/hr_timesheet_description/static/description/images/front.png new file mode 100644 index 000000000..286e793dd Binary files /dev/null and b/hr_timesheet_description/static/description/images/front.png differ diff --git a/hr_timesheet_description/static/description/images/log_details.png b/hr_timesheet_description/static/description/images/log_details.png new file mode 100644 index 000000000..e94f0afe9 Binary files /dev/null and b/hr_timesheet_description/static/description/images/log_details.png differ diff --git a/hr_timesheet_description/static/description/images/project_report.png b/hr_timesheet_description/static/description/images/project_report.png new file mode 100644 index 000000000..46288555e Binary files /dev/null and b/hr_timesheet_description/static/description/images/project_report.png differ diff --git a/hr_timesheet_description/static/description/images/task_timer.png b/hr_timesheet_description/static/description/images/task_timer.png new file mode 100644 index 000000000..6b8415776 Binary files /dev/null and b/hr_timesheet_description/static/description/images/task_timer.png differ diff --git a/hr_timesheet_description/static/description/images/timesheet_pdf.png b/hr_timesheet_description/static/description/images/timesheet_pdf.png new file mode 100644 index 000000000..2c4c891a0 Binary files /dev/null and b/hr_timesheet_description/static/description/images/timesheet_pdf.png differ diff --git a/hr_timesheet_description/static/description/index.html b/hr_timesheet_description/static/description/index.html new file mode 100644 index 000000000..605a774ac --- /dev/null +++ b/hr_timesheet_description/static/description/index.html @@ -0,0 +1,576 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ Timesheet Description from Grid View

+

+ Add Timesheet Description from Grid view and Kanban View +

+ +
+
+ + + + +
+
+

+ Overview +

+
+ +
+

+ The module will be useful for adding description for timesheet from Grid view and Kanban View.

+ +
+
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Extra field for setting description to timesheet

+ +
+
+
+
+ +
+
+

+ Can add timesheet description from Grid view and Kanban View

+ +
+
+ +
+ +
+
+

+ Screenshots +

+
+
+

+ Tasks

+

+ In Timesheets module we can add timesheet for the tasks like below. In here we can see a new field for + adding description of the current task.

+ +
+
+

+ Add Description

+

+ You can add Description for a task timesheet like below. After setting all the fields timesheet can + update by click save button.

+ +
+ +
+

+ Update Timesheet

+

+ In project module timesheet will be updated like below. +

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

Suggested 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

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

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/hr_timesheet_description/views/account_analytic_line.xml b/hr_timesheet_description/views/account_analytic_line.xml new file mode 100644 index 000000000..b2fb602f8 --- /dev/null +++ b/hr_timesheet_description/views/account_analytic_line.xml @@ -0,0 +1,16 @@ + + + + + timeSheet.grid.creation.inherited.desc + account.analytic.line + + + + + + + + + + \ No newline at end of file diff --git a/pos_restrict/README.rst b/pos_restrict/README.rst new file mode 100644 index 000000000..8fa4e5619 --- /dev/null +++ b/pos_restrict/README.rst @@ -0,0 +1,17 @@ +POS User Restrict v15 +===================== +Restricts User access to pos and orders + +Installation +============ + - www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +Configuration +============= + + No additional configurations needed + +Credits +======= + Developer: Risha C.T @ cybrosys, odoo@cybrosys.com diff --git a/pos_restrict/__init__.py b/pos_restrict/__init__.py new file mode 100644 index 000000000..e6d6019cf --- /dev/null +++ b/pos_restrict/__init__.py @@ -0,0 +1,22 @@ +# -*- 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 . import models \ No newline at end of file diff --git a/pos_restrict/__manifest__.py b/pos_restrict/__manifest__.py new file mode 100644 index 000000000..4b53a8fc9 --- /dev/null +++ b/pos_restrict/__manifest__.py @@ -0,0 +1,40 @@ +# -*- 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': 'POS User Restrict', + 'summary': """Restricts User access to pos and orders""", + 'version': '15.0.1.0.0', + 'description': """Restricts User access to pos and orders""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://cybrosys.com', + 'category': 'Tools', + 'depends': ['point_of_sale'], + 'license': 'AGPL-3', + 'data': [ + 'security/security.xml', + 'views/res_users_inherit.xml' + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'auto_install': False, +} diff --git a/pos_restrict/doc/RELEASE_NOTES.md b/pos_restrict/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8973a3b65 --- /dev/null +++ b/pos_restrict/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 04.01.2022 +#### Version 15.0.1.0.0 +##### ADD +- Initial commit for POS User Restrict diff --git a/pos_restrict/models/__init__.py b/pos_restrict/models/__init__.py new file mode 100644 index 000000000..24cab5c93 --- /dev/null +++ b/pos_restrict/models/__init__.py @@ -0,0 +1,22 @@ +# -*- 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 . import res_users_inherit \ No newline at end of file diff --git a/pos_restrict/models/res_users_inherit.py b/pos_restrict/models/res_users_inherit.py new file mode 100644 index 000000000..dc71c4c97 --- /dev/null +++ b/pos_restrict/models/res_users_inherit.py @@ -0,0 +1,55 @@ +# -*- 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 odoo import api, fields, models + + +class ResUsers(models.Model): + _inherit = 'res.users' + + allowed_pos = fields.Many2many('pos.config', string='Allowed Pos', + help='Allowed Pos for this user') + show_users = fields.Boolean(string="Show users of pos", default=True, help='Show users in dashboard ( for pos administrators only)') + + @api.model + def create(self, vals): + self.clear_caches() + return super(ResUsers, self).create(vals) + + def write(self, vals): + # for clearing out existing values and update with new values + self.clear_caches() + return super(ResUsers, self).write(vals) + + +class PosConfig(models.Model): + _inherit = 'pos.config' + + users_allowed = fields.Many2many('res.users', compute='get_allowed_users') + + def get_allowed_users(self): + # computes the allowed users in pos + for this in self: + # checks is show_users is ticked in user settings + if this.env.user.show_users: + this.users_allowed = self.env['res.users'].search([('allowed_pos', '=', this.id)]) + else: + this.users_allowed = None diff --git a/pos_restrict/security/security.xml b/pos_restrict/security/security.xml new file mode 100644 index 000000000..ac09f8031 --- /dev/null +++ b/pos_restrict/security/security.xml @@ -0,0 +1,29 @@ + + + + Config User + + [('id','in',user.allowed_pos.ids)] + + + + + Config Manager + + [] + + + + Orders User + + [('config_id','in',user.allowed_pos.ids)] + + + + + Orders Manager + + [] + + + \ No newline at end of file diff --git a/pos_restrict/static/description/assets/icons/check.png b/pos_restrict/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/pos_restrict/static/description/assets/icons/check.png differ diff --git a/pos_restrict/static/description/assets/icons/chevron.png b/pos_restrict/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/chevron.png differ diff --git a/pos_restrict/static/description/assets/icons/cogs.png b/pos_restrict/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/cogs.png differ diff --git a/pos_restrict/static/description/assets/icons/consultation.png b/pos_restrict/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/pos_restrict/static/description/assets/icons/consultation.png differ diff --git a/pos_restrict/static/description/assets/icons/ecom-black.png b/pos_restrict/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/ecom-black.png differ diff --git a/pos_restrict/static/description/assets/icons/education-black.png b/pos_restrict/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/pos_restrict/static/description/assets/icons/education-black.png differ diff --git a/pos_restrict/static/description/assets/icons/hotel-black.png b/pos_restrict/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/pos_restrict/static/description/assets/icons/hotel-black.png differ diff --git a/pos_restrict/static/description/assets/icons/license.png b/pos_restrict/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/pos_restrict/static/description/assets/icons/license.png differ diff --git a/pos_restrict/static/description/assets/icons/lifebuoy.png b/pos_restrict/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/pos_restrict/static/description/assets/icons/lifebuoy.png differ diff --git a/pos_restrict/static/description/assets/icons/logo.png b/pos_restrict/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/pos_restrict/static/description/assets/icons/logo.png differ diff --git a/pos_restrict/static/description/assets/icons/manufacturing-black.png b/pos_restrict/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/pos_restrict/static/description/assets/icons/manufacturing-black.png differ diff --git a/pos_restrict/static/description/assets/icons/pos-black.png b/pos_restrict/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/pos-black.png differ diff --git a/pos_restrict/static/description/assets/icons/puzzle.png b/pos_restrict/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/puzzle.png differ diff --git a/pos_restrict/static/description/assets/icons/restaurant-black.png b/pos_restrict/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/restaurant-black.png differ diff --git a/pos_restrict/static/description/assets/icons/service-black.png b/pos_restrict/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/pos_restrict/static/description/assets/icons/service-black.png differ diff --git a/pos_restrict/static/description/assets/icons/trading-black.png b/pos_restrict/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/pos_restrict/static/description/assets/icons/trading-black.png differ diff --git a/pos_restrict/static/description/assets/icons/training.png b/pos_restrict/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/pos_restrict/static/description/assets/icons/training.png differ diff --git a/pos_restrict/static/description/assets/icons/update.png b/pos_restrict/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/pos_restrict/static/description/assets/icons/update.png differ diff --git a/pos_restrict/static/description/assets/icons/user.png b/pos_restrict/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/pos_restrict/static/description/assets/icons/user.png differ diff --git a/pos_restrict/static/description/assets/icons/wrench.png b/pos_restrict/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/pos_restrict/static/description/assets/icons/wrench.png differ diff --git a/pos_restrict/static/description/assets/modules/approval_image.png b/pos_restrict/static/description/assets/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/pos_restrict/static/description/assets/modules/approval_image.png differ diff --git a/pos_restrict/static/description/assets/modules/budget_image.png b/pos_restrict/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..fe6aa6fe4 Binary files /dev/null and b/pos_restrict/static/description/assets/modules/budget_image.png differ diff --git a/pos_restrict/static/description/assets/modules/export_image.png b/pos_restrict/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/pos_restrict/static/description/assets/modules/export_image.png differ diff --git a/pos_restrict/static/description/assets/modules/magento_image.png b/pos_restrict/static/description/assets/modules/magento_image.png new file mode 100644 index 000000000..39de0820f Binary files /dev/null and b/pos_restrict/static/description/assets/modules/magento_image.png differ diff --git a/pos_restrict/static/description/assets/modules/pos_image.png b/pos_restrict/static/description/assets/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/pos_restrict/static/description/assets/modules/pos_image.png differ diff --git a/pos_restrict/static/description/assets/modules/shopify_image.png b/pos_restrict/static/description/assets/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/pos_restrict/static/description/assets/modules/shopify_image.png differ diff --git a/pos_restrict/static/description/assets/screenshots/hero.png b/pos_restrict/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..7e65e5ed0 Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/hero.png differ diff --git a/pos_restrict/static/description/assets/screenshots/pos_restrict-1.png b/pos_restrict/static/description/assets/screenshots/pos_restrict-1.png new file mode 100644 index 000000000..9c63eba4b Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/pos_restrict-1.png differ diff --git a/pos_restrict/static/description/assets/screenshots/pos_restrict-2.png b/pos_restrict/static/description/assets/screenshots/pos_restrict-2.png new file mode 100644 index 000000000..77572321a Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/pos_restrict-2.png differ diff --git a/pos_restrict/static/description/assets/screenshots/pos_restrict-3.png b/pos_restrict/static/description/assets/screenshots/pos_restrict-3.png new file mode 100644 index 000000000..cf09136f2 Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/pos_restrict-3.png differ diff --git a/pos_restrict/static/description/assets/screenshots/pos_restrict-4.png b/pos_restrict/static/description/assets/screenshots/pos_restrict-4.png new file mode 100644 index 000000000..a61ffb513 Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/pos_restrict-4.png differ diff --git a/pos_restrict/static/description/assets/screenshots/pos_restrict-5.png b/pos_restrict/static/description/assets/screenshots/pos_restrict-5.png new file mode 100644 index 000000000..f59b1ad37 Binary files /dev/null and b/pos_restrict/static/description/assets/screenshots/pos_restrict-5.png differ diff --git a/pos_restrict/static/description/banner.png b/pos_restrict/static/description/banner.png new file mode 100644 index 000000000..bf412a972 Binary files /dev/null and b/pos_restrict/static/description/banner.png differ diff --git a/pos_restrict/static/description/icon.png b/pos_restrict/static/description/icon.png new file mode 100644 index 000000000..d7bc0df1b Binary files /dev/null and b/pos_restrict/static/description/icon.png differ diff --git a/pos_restrict/static/description/index.html b/pos_restrict/static/description/index.html new file mode 100644 index 000000000..014e4a559 --- /dev/null +++ b/pos_restrict/static/description/index.html @@ -0,0 +1,633 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ POS User Restrict

+

+ Restricts available POS for Users. +

+ +
+
+ + + + +
+
+

+ Overview +

+
+ +
+

+ This application allows you to set allowed POS for each user in the user settings form. When the + user logs in, he can have access to the allowed POS only. Manager can see the users assigned to each + POS and also can view POS of all users.

+ +
+
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Set Set point of sale user or manager

+ +
+
+
+
+ +
+
+

+ Set Set allowed POS for each user

+ +
+
+ +
+
+ +
+
+

+ Pos POS admin can see all POS and the users assigned to each POS

+ +
+
+ + +
+ +
+
+

+ Screenshots +

+
+
+

+ Configuration

+

+ For setting access to each user, go to Settings --> Users and select point of sale user.

+ +
+ +
+

+ POS Users tab

+

+ Next, Select the POS Users tab and set the Allowed POS for this user. +

+ +
+ +
+

+ Allowed POS

+

+ Now when the user logs in, he can see only the Allowed POS in his dashboard. +

+ +
+ + +
+

+ POS as Administrator

+

+ For Managers set point of sale as Administrator. +

+ +
+ + +
+

+ POS without restriction

+

+ Administrator can see POS without restriction. He can also see the allowed users for each POS if the + option-show allowed users is set. +

+ +
+ + +
+ + + +
+
+

Suggested 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

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

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/pos_restrict/views/res_users_inherit.xml b/pos_restrict/views/res_users_inherit.xml new file mode 100644 index 000000000..ca74581b1 --- /dev/null +++ b/pos_restrict/views/res_users_inherit.xml @@ -0,0 +1,31 @@ + + + + res.users.form.view + res.users + + + + + + + + + + + + + + pos.config.restrict.kanban.view + pos.config + + + + + + + + + + + diff --git a/product_combo_pack/README.rst b/product_combo_pack/README.rst new file mode 100644 index 000000000..e39c0255b --- /dev/null +++ b/product_combo_pack/README.rst @@ -0,0 +1,41 @@ +Product Pack +============ +* Create product pack which is a great way to raise average sales price per product, to serve customers with products that make their lives easier, and to leverage current products into new and different ones. + +Installation +============ + - www.odoo.com/documentation/13.0/setup/install.html + - Install our custom addon + +License +======= +GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3) +(http://www.gnu.org/licenses/agpl.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: +Afras @ Cybrosys, Contact: afras@cybrosys.in + +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/product_combo_pack/__init__.py b/product_combo_pack/__init__.py new file mode 100644 index 000000000..c4b2a59a5 --- /dev/null +++ b/product_combo_pack/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models +from . import wizard \ No newline at end of file diff --git a/product_combo_pack/__manifest__.py b/product_combo_pack/__manifest__.py new file mode 100644 index 000000000..d36a2a47a --- /dev/null +++ b/product_combo_pack/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Product Pack', + 'version': '15.0.1.0.0', + 'summary': 'Manage Products as Pack', + 'description': 'Manage Products as Pack', + 'category': 'Sales', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'sale_management', 'stock'], + 'data': [ + 'security/ir.model.access.csv', + 'views/product_form_view.xml', + 'wizard/select_product_pack_view.xml', + 'views/sale_order_view.xml', + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'license': 'AGPL-3', + 'auto_install': False, +} diff --git a/product_combo_pack/doc/RELEASE_NOTES.md b/product_combo_pack/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..d31a971c9 --- /dev/null +++ b/product_combo_pack/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module + +#### 02.05.2020 +#### Version 15.0.1.0.0 +Initial Commit for product_combo_pack diff --git a/product_combo_pack/models/__init__.py b/product_combo_pack/models/__init__.py new file mode 100644 index 000000000..3ffdc8c37 --- /dev/null +++ b/product_combo_pack/models/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import product_form +from . import pack_products +from . import sale_order diff --git a/product_combo_pack/models/pack_products.py b/product_combo_pack/models/pack_products.py new file mode 100644 index 000000000..192c0f47d --- /dev/null +++ b/product_combo_pack/models/pack_products.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError + + +class PackProducts(models.Model): + _name = 'pack.products' + _rec_name = 'product_tmpl_id' + _description = 'Select Pack Products' + + product_id = fields.Many2one('product.product', string = 'Product', required = True, + domain = [('is_pack', '=', False)]) + product_tmpl_id = fields.Many2one('product.template', string = 'Product') + price = fields.Float('Price', compute = 'compute_price', store = True) + quantity = fields.Integer('Quantity', default = 1) + qty_available = fields.Float('Quantity Available', compute = 'compute_quantity_of_product', store = True, readonly = False) + total_available_quantity = fields.Float('Total Quantity') + + @api.depends('product_id', 'total_available_quantity', 'product_id.qty_available') + def compute_quantity_of_product(self): + for record in self: + location_id = record.product_tmpl_id.pack_location_id + if location_id: + stock_quant = self.env['stock.quant'].search([('product_id','=',record.product_id.id),('location_id','=',location_id.id)]) + if stock_quant: + record.qty_available = stock_quant.quantity + else: + record.qty_available = False + else: + record.qty_available = False + + @api.depends('product_id', 'quantity') + def compute_price(self): + for record in self: + record.price = record.product_id.lst_price * record.quantity + + @api.onchange('quantity') + def set_price(self): + self.price = self.product_id.lst_price * self.quantity + + @api.constrains('quantity') + def _check_positive_qty(self): + if any([ml.quantity < 0 for ml in self]): + raise ValidationError(_('You can not enter negative quantities.')) \ No newline at end of file diff --git a/product_combo_pack/models/product_form.py b/product_combo_pack/models/product_form.py new file mode 100644 index 000000000..0bba24d0c --- /dev/null +++ b/product_combo_pack/models/product_form.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class ProductPack(models.Model): + _inherit = 'product.template' + + def default_pack_location(self): + company_user = self.env.company + warehouse = self.env['stock.warehouse'].search([('company_id', '=', company_user.id)], limit = 1) + if warehouse: + return warehouse.lot_stock_id.id + + is_pack = fields.Boolean('Is a Pack') + pack_price = fields.Integer(string = "Pack Price", compute = 'set_pack_price', store = True) + pack_products_ids = fields.One2many('pack.products', 'product_tmpl_id', string = 'Pack Products') + pack_quantity = fields.Integer('Pack Quantity') + pack_location_id = fields.Many2one('stock.location', + domain = [('usage', 'in', ['internal', 'transit'])], + default = default_pack_location) + + @api.depends('pack_products_ids', 'pack_products_ids.price') + def set_pack_price(self): + price = 0 + for record in self: + for line in record.pack_products_ids: + price = price + line.price + record.pack_price = price + + @api.model + def create(self, values): + if values.get('is_pack', False): + if not values.get('pack_products_ids', []): + raise UserError(_( + 'You need to add atleast one product in the Pack...!')) + if values.get('type', False) == 'service': + raise UserError(_('You cannot define a pack product as a service..!')) + return super(ProductPack, self).create(values) + + def write(self, values): + super(ProductPack, self).write(values) + if self.is_pack: + if not self.pack_products_ids: + raise UserError(_( + 'You need to add atleast one product in the Pack...!')) + if self.type == 'service': + raise UserError(_('You cannot define a pack product as a service..!')) + + def update_price_product(self): + self.lst_price = self.pack_price + + def get_quantity(self): + total_quantity = 1 + flag = 1 + while flag: + for line in self.pack_products_ids: + if line.qty_available >= line.quantity * total_quantity: + continue + else: + if line.product_id.type != 'product': + continue + flag = 0 + break + if flag: + total_quantity = total_quantity + 1 + self.pack_quantity = total_quantity - 1 + + def update_quantity(self): + company_user = self.env.company + product_id = len(self.product_variant_ids) == 1 and self.product_variant_id.id + location_id = self.pack_location_id.id + if not location_id: + warehouse = self.env['stock.warehouse'].search([('company_id', '=', company_user.id)], limit = 1) + location_id = warehouse.lot_stock_id.id + if not location_id: + raise UserError(_( + 'You need to select the location to update the pack quantity...!')) + self.env['stock.quant'].with_context(inventory_mode = True).sudo().create({ + 'product_id': product_id, + 'location_id': location_id, + 'inventory_quantity': self.pack_quantity, + }) + + @api.onchange('pack_location_id') + def change_quantity_based_on_location(self): + for line in self.pack_products_ids: + stock_quant = self.env['stock.quant'].search( + [('product_id', '=', line.product_id.id), ('location_id', '=', self.pack_location_id.id)]) + if stock_quant: + line.total_available_quantity = stock_quant.quantity + + else: + line.total_available_quantity = stock_quant.quantity \ No newline at end of file diff --git a/product_combo_pack/models/sale_order.py b/product_combo_pack/models/sale_order.py new file mode 100644 index 000000000..7afe00ec4 --- /dev/null +++ b/product_combo_pack/models/sale_order.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# Author: Afras Habis (odoo@cybrosys.com) +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import api, fields, models + + +class SalePack(models.Model): + _inherit = 'sale.order' + + def action_confirm(self): + super(SalePack, self).action_confirm() + for line in self.order_line: + if line.product_id.is_pack: + for record in line.product_id.pack_products_ids: + dest_loc = self.env.ref('stock.stock_location_customers').id + self.env['stock.move'].create({ + 'name': record.product_id.name, + 'product_id': record.product_id.id, + 'product_uom_qty': record.quantity * line.product_uom_qty, + 'product_uom': record.product_id.uom_id.id, + 'picking_id': self.picking_ids[0].id, + 'location_id': self.picking_ids.picking_type_id.default_location_src_id.id, + 'location_dest_id': dest_loc, + }) diff --git a/product_combo_pack/security/ir.model.access.csv b/product_combo_pack/security/ir.model.access.csv new file mode 100644 index 000000000..b737db5c9 --- /dev/null +++ b/product_combo_pack/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_pack_products,access.pack.products,model_pack_products,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/product_combo_pack/static/description/banner.png b/product_combo_pack/static/description/banner.png new file mode 100644 index 000000000..2c260531d Binary files /dev/null and b/product_combo_pack/static/description/banner.png differ diff --git a/product_combo_pack/static/description/icon.png b/product_combo_pack/static/description/icon.png new file mode 100644 index 000000000..4f89cc3c6 Binary files /dev/null and b/product_combo_pack/static/description/icon.png differ diff --git a/product_combo_pack/static/description/images/banner_barcode_scanning.jpeg b/product_combo_pack/static/description/images/banner_barcode_scanning.jpeg new file mode 100644 index 000000000..529143e4e Binary files /dev/null and b/product_combo_pack/static/description/images/banner_barcode_scanning.jpeg differ diff --git a/product_combo_pack/static/description/images/banner_currency_total.png b/product_combo_pack/static/description/images/banner_currency_total.png new file mode 100644 index 000000000..6153ed719 Binary files /dev/null and b/product_combo_pack/static/description/images/banner_currency_total.png differ diff --git a/product_combo_pack/static/description/images/banner_customer_sequence.jpeg b/product_combo_pack/static/description/images/banner_customer_sequence.jpeg new file mode 100644 index 000000000..7451342d6 Binary files /dev/null and b/product_combo_pack/static/description/images/banner_customer_sequence.jpeg differ diff --git a/product_combo_pack/static/description/images/banner_previous_rates.jpeg b/product_combo_pack/static/description/images/banner_previous_rates.jpeg new file mode 100644 index 000000000..e10c28799 Binary files /dev/null and b/product_combo_pack/static/description/images/banner_previous_rates.jpeg differ diff --git a/product_combo_pack/static/description/images/banner_product_branding.png b/product_combo_pack/static/description/images/banner_product_branding.png new file mode 100644 index 000000000..aa12beabb Binary files /dev/null and b/product_combo_pack/static/description/images/banner_product_branding.png differ diff --git a/product_combo_pack/static/description/images/banner_product_expiry.jpeg b/product_combo_pack/static/description/images/banner_product_expiry.jpeg new file mode 100644 index 000000000..84a872d44 Binary files /dev/null and b/product_combo_pack/static/description/images/banner_product_expiry.jpeg differ diff --git a/product_combo_pack/static/description/images/checked.png b/product_combo_pack/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/product_combo_pack/static/description/images/checked.png differ diff --git a/product_combo_pack/static/description/images/cybrosys.png b/product_combo_pack/static/description/images/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/product_combo_pack/static/description/images/cybrosys.png differ diff --git a/product_combo_pack/static/description/images/pack1.png b/product_combo_pack/static/description/images/pack1.png new file mode 100644 index 000000000..81536d5ab Binary files /dev/null and b/product_combo_pack/static/description/images/pack1.png differ diff --git a/product_combo_pack/static/description/images/pack10.png b/product_combo_pack/static/description/images/pack10.png new file mode 100644 index 000000000..09c07f10e Binary files /dev/null and b/product_combo_pack/static/description/images/pack10.png differ diff --git a/product_combo_pack/static/description/images/pack11.png b/product_combo_pack/static/description/images/pack11.png new file mode 100644 index 000000000..fc5ea8c88 Binary files /dev/null and b/product_combo_pack/static/description/images/pack11.png differ diff --git a/product_combo_pack/static/description/images/pack12.png b/product_combo_pack/static/description/images/pack12.png new file mode 100644 index 000000000..d125f945d Binary files /dev/null and b/product_combo_pack/static/description/images/pack12.png differ diff --git a/product_combo_pack/static/description/images/pack13.png b/product_combo_pack/static/description/images/pack13.png new file mode 100644 index 000000000..3fd7e3783 Binary files /dev/null and b/product_combo_pack/static/description/images/pack13.png differ diff --git a/product_combo_pack/static/description/images/pack14.png b/product_combo_pack/static/description/images/pack14.png new file mode 100644 index 000000000..89a5cc2b4 Binary files /dev/null and b/product_combo_pack/static/description/images/pack14.png differ diff --git a/product_combo_pack/static/description/images/pack2.png b/product_combo_pack/static/description/images/pack2.png new file mode 100644 index 000000000..0407fb11d Binary files /dev/null and b/product_combo_pack/static/description/images/pack2.png differ diff --git a/product_combo_pack/static/description/images/pack3.png b/product_combo_pack/static/description/images/pack3.png new file mode 100644 index 000000000..bd162158a Binary files /dev/null and b/product_combo_pack/static/description/images/pack3.png differ diff --git a/product_combo_pack/static/description/images/pack4.png b/product_combo_pack/static/description/images/pack4.png new file mode 100644 index 000000000..440aa4186 Binary files /dev/null and b/product_combo_pack/static/description/images/pack4.png differ diff --git a/product_combo_pack/static/description/images/pack5.png b/product_combo_pack/static/description/images/pack5.png new file mode 100644 index 000000000..0cf72eae2 Binary files /dev/null and b/product_combo_pack/static/description/images/pack5.png differ diff --git a/product_combo_pack/static/description/images/pack6.png b/product_combo_pack/static/description/images/pack6.png new file mode 100644 index 000000000..a1b2661ef Binary files /dev/null and b/product_combo_pack/static/description/images/pack6.png differ diff --git a/product_combo_pack/static/description/images/pack7.png b/product_combo_pack/static/description/images/pack7.png new file mode 100644 index 000000000..92c1bebf7 Binary files /dev/null and b/product_combo_pack/static/description/images/pack7.png differ diff --git a/product_combo_pack/static/description/images/pack8.png b/product_combo_pack/static/description/images/pack8.png new file mode 100644 index 000000000..cf636bb58 Binary files /dev/null and b/product_combo_pack/static/description/images/pack8.png differ diff --git a/product_combo_pack/static/description/images/pack9.png b/product_combo_pack/static/description/images/pack9.png new file mode 100644 index 000000000..754b572b7 Binary files /dev/null and b/product_combo_pack/static/description/images/pack9.png differ diff --git a/product_combo_pack/static/description/images/pack_main.png b/product_combo_pack/static/description/images/pack_main.png new file mode 100644 index 000000000..8b2b5b854 Binary files /dev/null and b/product_combo_pack/static/description/images/pack_main.png differ diff --git a/product_combo_pack/static/description/index.html b/product_combo_pack/static/description/index.html new file mode 100644 index 000000000..ad788dfc0 --- /dev/null +++ b/product_combo_pack/static/description/index.html @@ -0,0 +1,432 @@ +
cybrosys-logo
+
+
+
+

Product Pack

+
+

Key Highlights

+
    +
  • Sell Product as Pack Easily
  • +
+
    +
  • Manage the stock of Pack as well as Individual Product
  • +
+
+
+
+
+
+
+
+ +
+
+ +

Overview

+
+

+ Selling products in a pack is a great way to raise average sales price per product, to serve customers with products that make their lives easier, and to leverage current products into new and different ones. They are profitable for smaller businesses as well as large ones. +

+
+
+ +

Product Pack

+
+
    +
  • + Create a Product Pack Easily. +
  • +
+
    +
  • + Manage the stock of the Product. +
  • +
+
    +
  • + Compute the Price of the Pack. +
  • +
+
    +
  • + Compute the Quantity of the Pack with respect to the quantity of Pack items. +
  • +
+
    +
  • + Update the quantity of pack easily . +
  • +
+
    +
  • + Adding Pack into Sale order Easily. +
  • +
+
    +
  • + Filter Pack from Products. +
  • +
+
+ +
+
+

Screenshots

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

Suggested Products

+
+ +
+
+

Our Service

+
+ +
+
+
+

Our Industries

+
+ +
+
+
+ +
+
+

Trading

+

Easily procure and sell your products.

+
+
+
+
+ +
+
+

Manufacturing

+

Plan, track and schedule your operations.

+
+
+
+
+ +
+
+

Restaurant

+

Run your bar or restaurant methodical.

+
+
+
+
+ +
+
+

POS

+

Easy configuring and convivial selling.

+
+
+
+
+ +
+
+

E-commerce & Website

+

Mobile friendly, awe-inspiring product pages.

+
+
+
+
+ +
+
+

Hotel Management

+

An all-inclusive hotel management application.

+
+
+
+
+ +
+
+

Education

+

A Collaborative platform for educational management.

+
+
+
+
+ +
+
+

Service Management

+

Keep track of services and invoice accordingly.

+
+
+
+
+
+ +
+
+
+

Need Any Help?

+
+

If you have anything to share with us based on your use of this module, please let us know. We are ready to offer our support.

+
+

Email us

+

odoo@cybrosys.com

+
+
+

Contact Us

+ www.cybrosys.com +
+
+
+
+
+
+
+
+
+ +
+ + + + + + + +
+
+
+ \ No newline at end of file diff --git a/product_combo_pack/views/product_form_view.xml b/product_combo_pack/views/product_form_view.xml new file mode 100644 index 000000000..aab0211ad --- /dev/null +++ b/product_combo_pack/views/product_form_view.xml @@ -0,0 +1,105 @@ + + + + + product.product.inherit.pack + product.product + + + +
+ +
+
+
+
+ + + product.template.inherit.pack + product.template + + + +
+ +
+
+ + {'invisible': [('is_pack','=',True)]} + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + Product Pack + ir.actions.act_window + product.template + kanban,form + [('is_pack','=',True)] + {'default_is_pack' : True} + +

+ There is no product pack to show...! +

+
+
+ + + product.template.search.inherit + product.template + + + + + + + + + + +
+
\ No newline at end of file diff --git a/product_combo_pack/views/sale_order_view.xml b/product_combo_pack/views/sale_order_view.xml new file mode 100644 index 000000000..2d6ffa4ba --- /dev/null +++ b/product_combo_pack/views/sale_order_view.xml @@ -0,0 +1,15 @@ + + + + + Product Pack in sale order + sale.order + + + +