Merge branch 'development' into 'master'
Development See merge request prakash.jain/cor-odoo!186
|
@ -0,0 +1,15 @@
|
|||
|
||||
Most of the files are
|
||||
|
||||
Copyright (c) 2012-TODAY Kanak Infosystems LLP
|
||||
|
||||
Many files also contain contributions from third
|
||||
parties. In this case the original copyright of
|
||||
the contributions can be traced through the
|
||||
history of the source version control system.
|
||||
|
||||
When that is not the case, the files contain a prominent
|
||||
notice stating the original copyright and applicable
|
||||
license, or come with their own dedicated COPYRIGHT
|
||||
and/or LICENSE file.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
Kanak Infosystems LLP Proprietary License v1.0
|
||||
|
||||
This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Kanak Infosystems LLP Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).
|
||||
|
||||
You may develop Kanak Infosystems LLP modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Kanak Infosystems LLP Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).
|
||||
|
||||
It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.
|
||||
|
||||
The above copyright notice and this permission notice must be included in all copies or substantial portions 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.
|
|
@ -0,0 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Powered by Kanak Infosystems LLP.
|
||||
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
|
||||
|
||||
from . import models
|
|
@ -0,0 +1,47 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
# Author : Kanak Infosystems LLP. (<https://www.kanakinfosystems.com/>)
|
||||
# Copyright(c): 2012-Present Kanak Infosystems LLP.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
#
|
||||
# This program is copyright property of the author mentioned above.
|
||||
# You can`t redistribute it and/or modify it.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the License along with this program.
|
||||
# If not, see <https://www.kanakinfosystems.com/license>
|
||||
###############################################################################
|
||||
{
|
||||
'name': 'Company Public Holiday(Global Leaves)',
|
||||
'version': '1.0',
|
||||
'category': 'Human Resources',
|
||||
'author': 'Kanak Infosystems LLP.',
|
||||
'website': 'https://www.kankinfosystems.com',
|
||||
'summary': "This odoo module is allow to add company holiday, company can create a public holiday and send holiday list through mail to employees, update calendar and print holiday report.",
|
||||
'description': """
|
||||
- module allows to add company holiday in Odoo.
|
||||
===============================================
|
||||
Key Features:
|
||||
* Add company public holiday in odoo.
|
||||
* Company holiday list can be send all employee by the email.
|
||||
* Holiday list will be automatically update on globel leaves.
|
||||
* Holiday list will be automatically update on calendar.
|
||||
|
||||
""",
|
||||
'depends': ['resource', 'mail', 'hr', 'hr_holidays'],
|
||||
'data': [
|
||||
'data/company_resource_calendar_mail.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/company_public_holidays_rule_security.xml',
|
||||
'reports/public_holiday_report_template.xml',
|
||||
'views/company_resource_calendar_view.xml',
|
||||
],
|
||||
'images': ['static/description/banner.jpg'],
|
||||
'sequence': 1,
|
||||
'installable': True,
|
||||
'application': True,
|
||||
'auto_install': False,
|
||||
'price': 35,
|
||||
'currency': 'EUR',
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="0">
|
||||
<record id="categ_meet6" model="calendar.event.type">
|
||||
<field name="name">Public Holiday</field>
|
||||
</record>
|
||||
|
||||
<record id="email_template_company_public_holidays" model="mail.template">
|
||||
<field name="name">Public Holiday - Send by Email</field>
|
||||
<field name="email_from">${ctx.get('user_email') or ''|safe}</field>
|
||||
<field name="subject">${object.name}</field>
|
||||
<field name="model_id" ref="company_public_holidays_kanak.model_company_resource_calendar"/>
|
||||
<field name="auto_delete" eval="False"/>
|
||||
<field name="lang">${object.employee_id.lang}</field>
|
||||
<field name="body_html" type="html">
|
||||
<div style="margin: 0px; padding: 0px;">
|
||||
<p style="margin: 0px; padding: 0px; font-size: 12px;">
|
||||
Hello All,
|
||||
<br/><br/>
|
||||
Here the List of ${object.name}
|
||||
<br/><br/>
|
||||
</p>
|
||||
<div style="margin: 0px; padding: 0px;">
|
||||
<table style="font-family: Trebuchet MS, Arial, Helvetica, sans-serif;border-collapse: collapse;width: 100%;">
|
||||
<tr style="border-bottom: 2px solid #dee2e6;">
|
||||
<th style="width:33.3%; padding-top: 12px;padding-bottom: 12px;background-color:#06386e;color: white; text-align:center;"><strong>Name</strong></th>
|
||||
<th style="width:33.3%; padding-top: 12px;padding-bottom: 12px; background-color:#06386e;color: white; text-align:center;"><strong>Start Date</strong></th>
|
||||
<th style="width:33.3%; padding-top: 12px;padding-bottom: 12px;text-align:center;background-color:#06386e;color: white;"><strong>End Date</strong></th>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="font-family: Trebuchet MS, Arial, Helvetica, sans-serif;border-collapse: collapse;width: 100%;">
|
||||
% for line in object.company_global_leave_ids:
|
||||
<tr style="${loop.cycle('background-color: #f2f2f2', 'background-color: #ffffff')}">
|
||||
<td style="width:33.3%; border: 1px solid #ddd;padding: 8px; text-align:center;">
|
||||
<strong>${line.name}</strong>
|
||||
</td>
|
||||
<td style="width:33.3%; border: 1px solid #ddd;padding: 8px; text-align:center;">
|
||||
<strong>${line.date_from}</strong>
|
||||
</td>
|
||||
<td style="width:33.3%; border: 1px solid #ddd;padding: 8px; text-align:center;">
|
||||
<strong>${line.date_to}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
% endfor
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
|
@ -0,0 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Powered by Kanak Infosystems LLP.
|
||||
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
|
||||
|
||||
from . import company_resource_calendar
|
|
@ -0,0 +1,163 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Powered by Kanak Infosystems LLP.
|
||||
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
|
||||
|
||||
import datetime
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class CompanyResourceCalendar(models.Model):
|
||||
_name = 'company.resource.calendar'
|
||||
_description = 'Company Resouce Calendar'
|
||||
_inherit = ['mail.thread']
|
||||
|
||||
def _compute_selection(self):
|
||||
flag = 0
|
||||
year_list = []
|
||||
year = datetime.datetime.now().year
|
||||
while flag <= 10:
|
||||
year_list.append((str(year), str(year)))
|
||||
flag += 1
|
||||
year += 1
|
||||
return year_list
|
||||
|
||||
name = fields.Char('Name', required=1)
|
||||
company_global_leave_ids = fields.One2many(
|
||||
'company.resource.calendar.leaves', 'company_calendar_id', string='Company Global Leaves')
|
||||
employee_id = fields.Many2one('hr.employee', string='Employee')
|
||||
year = fields.Datetime()
|
||||
year_list = fields.Selection(selection=lambda self: self._compute_selection())
|
||||
company_id = fields.Many2one('res.company', string='Company', index=True, default=lambda self: self.env.company)
|
||||
|
||||
@api.constrains('company_global_leave_ids')
|
||||
def _check_exist_dates(self):
|
||||
exist_product_list = []
|
||||
for global_leaves in self:
|
||||
for line in global_leaves.company_global_leave_ids:
|
||||
if datetime.datetime.strftime(line.date_from, "%Y-%m-%d") in exist_product_list:
|
||||
raise ValidationError(_('You can not Add Twice Same Date Public Holiday'))
|
||||
exist_product_list.append(datetime.datetime.strftime(line.date_from, "%Y-%m-%d"))
|
||||
|
||||
def action_public_holiday_send(self):
|
||||
self.ensure_one()
|
||||
template = self.env.ref('company_public_holidays_kanak.email_template_company_public_holidays', False)
|
||||
compose_form = self.env.ref('mail.email_compose_message_wizard_form', False)
|
||||
employee_partner = self.env['hr.employee'].search([]).mapped('user_id').mapped('partner_id')
|
||||
ctx = dict(
|
||||
default_model='company.resource.calendar',
|
||||
default_res_id=self.id,
|
||||
default_use_template=bool(template),
|
||||
default_template_id=template and template.id or False,
|
||||
default_composition_mode='mass_mail',
|
||||
user_email=self.env.user.email,
|
||||
default_partner_ids=[(6, 0, employee_partner.ids)]
|
||||
)
|
||||
return {
|
||||
'name': _('Compose Email'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'mail.compose.message',
|
||||
'views': [(compose_form.id, 'form')],
|
||||
'view_id': compose_form.id,
|
||||
'target': 'new',
|
||||
'context': ctx
|
||||
}
|
||||
|
||||
def action_holiday_update_calendar(self):
|
||||
public_holiday = []
|
||||
Calendar = self.env['calendar.event']
|
||||
for comp_global_leave in self.company_global_leave_ids:
|
||||
public_holiday.append({
|
||||
'name': "Holiday" + "/" + comp_global_leave.name,
|
||||
'start': comp_global_leave.date_from,
|
||||
'stop': comp_global_leave.date_to,
|
||||
'categ_ids': [(6, 0, [self.env.ref('company_public_holidays_kanak.categ_meet6').id])]
|
||||
|
||||
})
|
||||
for holiday in public_holiday:
|
||||
existing_calender = Calendar.search([('start', '=', holiday['start'])])
|
||||
if not existing_calender:
|
||||
Calendar.create(holiday)
|
||||
|
||||
def action_holiday_update_timeoff_calendar(self):
|
||||
public_holiday = []
|
||||
holiday_id = self.env['hr.leave.type'].search([], limit=1)
|
||||
employees = self.env['hr.employee'].search([])
|
||||
# leave_calendar = self.env['hr.leave']
|
||||
leave_calendar = self.env['hr.leave']
|
||||
for comp_global_leave in self.company_global_leave_ids:
|
||||
for employee in employees:
|
||||
existing_calender = leave_calendar.search([('date_from', '=', comp_global_leave.date_from),('employee_id', '=', employee.id)])
|
||||
if not existing_calender:
|
||||
leave_calendar.with_context(
|
||||
tracking_disable=True,
|
||||
mail_activity_automation_skip=True,
|
||||
leave_fast_create=True,
|
||||
leave_skip_state_check=True,
|
||||
).create({
|
||||
'name': "Holiday" + "/" + comp_global_leave.name,
|
||||
'date_from': comp_global_leave.date_from,
|
||||
'date_to': comp_global_leave.date_to,
|
||||
'holiday_status_id': holiday_id.id,
|
||||
'employee_id': employee.id,
|
||||
'state': 'validate'
|
||||
})
|
||||
|
||||
self.action_holiday_update_calendar()
|
||||
|
||||
|
||||
class CompanyResourceCalendarLeaves(models.Model):
|
||||
_name = 'company.resource.calendar.leaves'
|
||||
_description = 'Company Resouce Calendar Leaves'
|
||||
|
||||
name = fields.Char('Reason', required=True)
|
||||
company_calendar_id = fields.Many2one('company.resource.calendar', 'Working Hours')
|
||||
date_from = fields.Datetime('Start Date', required=True)
|
||||
date_to = fields.Datetime('End Date', required=True)
|
||||
company_id = fields.Many2one('res.company', string='Company', index=True, default=lambda self: self.env.company)
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
res = super(CompanyResourceCalendarLeaves, self).create(values)
|
||||
resource_calendar = self.env['resource.calendar'].search([])
|
||||
for comp_global_leave in res:
|
||||
res_cal_leaves_vals = {
|
||||
'name': comp_global_leave.name,
|
||||
'date_from': comp_global_leave.date_from,
|
||||
'date_to': comp_global_leave.date_to,
|
||||
'company_res_calendar_leaves_id': comp_global_leave.id
|
||||
}
|
||||
for calendar in resource_calendar:
|
||||
calendar.global_leave_ids = [(0, 0, res_cal_leaves_vals)]
|
||||
return res
|
||||
|
||||
def write(self, values):
|
||||
resource_calendar = self.env['resource.calendar.leaves'].search(
|
||||
[('company_res_calendar_leaves_id', '=', self.id)])
|
||||
resource_calendar.write(values)
|
||||
res = super(CompanyResourceCalendarLeaves, self).write(values)
|
||||
return res
|
||||
|
||||
def unlink(self):
|
||||
resource_calendar = self.env['resource.calendar.leaves'].search(
|
||||
[('company_res_calendar_leaves_id', '=', self.id)])
|
||||
resource_calendar.unlink()
|
||||
res = super(CompanyResourceCalendarLeaves, self).unlink()
|
||||
return res
|
||||
|
||||
|
||||
class ResourceCalendarLeaves(models.Model):
|
||||
_inherit = "resource.calendar.leaves"
|
||||
|
||||
company_res_calendar_leaves_id = fields.Many2one('company.resource.calendar.leaves',
|
||||
string='Company Resouce Calendar')
|
||||
|
||||
|
||||
class MailComposer(models.TransientModel):
|
||||
_inherit = 'mail.compose.message'
|
||||
|
||||
employee_ids = fields.Many2many(
|
||||
'hr.employee', 'mail_compose_message_hr_employee_rel', 'wizard_id', 'employee_id', 'Employee')
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record id="holiday_report_pdf" model="ir.actions.report">
|
||||
<field name="name">Holiday Report</field>
|
||||
<field name="model">company.resource.calendar</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">company_public_holidays_kanak.holiday_report</field>
|
||||
<field name="report_file">company_public_holidays_kanak.holiday_report</field>
|
||||
<field name="binding_model_id" ref="model_company_resource_calendar" />
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
<template id="holiday_report">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="company_public_holidays_kanak.holiday_report_document" />
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
<template id="holiday_report_document">
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page">
|
||||
<h3>Public Holiday Report <span t-esc="o.year_list" /></h3>
|
||||
<div>
|
||||
<table class="table table-bordered table-sm o_main_table" style="margin-top: 50px; text-align:center;">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Start Date</th>
|
||||
<th>End Date</th>
|
||||
</tr>
|
||||
<t t-foreach="o.company_global_leave_ids" t-as="cgl">
|
||||
<tr>
|
||||
<td>
|
||||
<span t-esc="cgl.name" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="cgl.date_from" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="cgl.date_to" />
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Multi - Company Rules -->
|
||||
<record id="company_resource_calendar_rule" model="ir.rule">
|
||||
<field name="name">Company Resouce Calendar Rules Multi-company</field>
|
||||
<field name="model_id" ref="model_company_resource_calendar"/>
|
||||
<field name="global" eval="True" />
|
||||
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
<record id="company_resource_calendar_leaves_rule" model="ir.rule">
|
||||
<field name="name">Company Resouce Calendar Leaves Rules Line Multi-company</field>
|
||||
<field name="model_id" ref="model_company_resource_calendar_leaves"/>
|
||||
<field name="global" eval="True" />
|
||||
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
|
@ -0,0 +1,3 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_company_resource_calendar,access_company_resource_calendar,model_company_resource_calendar,base.group_user,1,1,1,1
|
||||
accesscompany_resource_calendar_leaves,accesscompany_resource_calendar_leaves,model_company_resource_calendar_leaves,base.group_user,1,1,1,1
|
|
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 843 KiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 24 KiB |
|
@ -0,0 +1,581 @@
|
|||
<div class="oe_styling_v8">
|
||||
<section style="background-color: white;margin-bottom: 20px;">
|
||||
<div class="row justify-content-center">
|
||||
<div class="text-center">
|
||||
<h3 style="font-size: 40px;padding-top: 5px;color: #07386f;font-weight: 700;">
|
||||
Company Public Holiday
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="text-center">
|
||||
<i class=" fa fa-arrow-down" style="font-size:20px;color: #07386f;">
|
||||
</i></div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="pt16" style="background-color: #f8f9fa;margin-bottom: 35px;">
|
||||
<div class="text-center">
|
||||
<h6 class="mb-0 mt-2" style="font-size: 14px;">Supported Editions</h6>
|
||||
<div class="row justify-content-center">
|
||||
<h6 class="mb-0 mt-2 mr4" style="font-size: 14px;min-width: 90px;"><span class="badge badge-pill badge-light" style="color: #ffffff;background-color: #7c7bad;border-radius: 0.4rem;padding: 1.00em 0.4em;padding-right: 2em;padding-left: 2em;"> Community </span></h6>
|
||||
<h6 class="mb-0 mt-2 text-right" style="font-size: 14px;min-width:90px"><span class="badge badge-pill badge-light" style="color: #ffffff;background-color: #007a77;border-radius: 0.4rem;padding: 1.00em 0.4em;padding-right: 2em;padding-left: 2em;"> Enterprise </span></h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-10 mx-auto pt16 pb16">
|
||||
<div class="text-center">
|
||||
<p style="font-size: 21px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #ffffff;" class="px-sm-4 p-2 pt-4"><b>Company Public Holiday</b> module allows to add company holiday in <b>odoo</b>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section style="background-color: #ffffff;margin-bottom: 18px;">
|
||||
<div class="row">
|
||||
<h2 class="text-center mx-auto" style="font-size: 30px;font-weight: 700;border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;padding: 12px;width: 283px;"><span style="color: #09436d;">Key</span><span style="color: #f90829;"> Features</span></h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12 mt32">
|
||||
<p style="font-size: 16px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;padding: 4px;"><i class="fa fa-circle" style="font-size: 11px;color: #cfd2d4;"></i>
|
||||
Add Company Public Holiday in Odoo.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12 mt32">
|
||||
<p style="font-size: 16px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #ffffff;padding: 4px;"><i class="fa fa-circle" style="font-size: 11px;color: #cfd2d4;"></i>
|
||||
Company Holiday List can be Send all Employee via Email.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12 mt30">
|
||||
<p style="font-size: 16px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #ffffff;padding: 4px;"><i class="fa fa-circle" style="font-size: 11px;color: #cfd2d4;"></i>
|
||||
Holiday List will be Automatically Update on Global Time Off.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12 mt30">
|
||||
<p style="font-size: 16px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;padding: 4px;"><i class="fa fa-circle" style="font-size: 11px;color: #cfd2d4;"></i>
|
||||
You can also Update Holiday list on Calendar.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-12 mt30">
|
||||
<p style="font-size: 16px;color: #113246;border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;padding: 4px;"><i class="fa fa-circle" style="font-size: 11px;color: #cfd2d4;"></i>
|
||||
You can also print public holiday report.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="oe_container">
|
||||
<div style="padding: 15px 0px;" id="loempia_tabs">
|
||||
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab" style="background: transparent;">
|
||||
<li class="nav-item col-12 col-sm-6 col-md-4" style="padding-right: 1em;">
|
||||
<a id="pills-config-tab" data-toggle="pill" href="#pills-config" role="tab" aria-controls="pills-config" aria-selected="true" class="nav-link show active mb-sm-2 mb-md-0 mb-lg-0" style="background-color: #f3452b;color: ivory;margin-bottom: 0.5rem;">Configuration & Setup</a>
|
||||
</li>
|
||||
<li class="nav-item col-12 col-sm-6 col-md-3">
|
||||
<a id="pills-release-tab" data-toggle="pill" href="#pills-release" role="tab" aria-controls="pills-release" aria-selected="false" class="nav-link mb-sm-2 mb-md-0 mb-lg-0" style="background-color: #f37e2b;color: ivory;margin-bottom: 0.5rem;">Release Notes</a>
|
||||
</li>
|
||||
<li class="nav-item col-12 col-sm-6 col-md-3" style="padding-left:1em;">
|
||||
<a id="pills-demo-tab" data-toggle="pill" href="#pills-demo" role="tab" aria-controls="pills-demo" aria-selected="false" class="nav-link mb-sm-2 mb-md-0 mb-lg-0" style="background-color: #0870b9;color: ivory;margin-bottom: 0.5rem;">Demo</a>
|
||||
</li>
|
||||
<li class="nav-item col-12 col-sm-6 col-md-2" style="padding-left:1em;">
|
||||
<a style="background-color: #48a03dab;color: ivory;margin-bottom: 0.5rem;" class="nav-link mb-sm-2 mb-md-0 mb-lg-0" aria-selected="false" aria-controls="pills-faq" role="tab" href="#pills-faq" data-toggle="pill" id="pills-faq-tab">FAQ'S</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="pills-tabContent">
|
||||
<div class="px-3 pt-1 tab-pane fade active show" id="pills-config" role="tabpanel" aria-labelledby="pills-config-tab"><br>
|
||||
<section>
|
||||
<div class="col-md-12 pl-0 pr-0 mx-auto mb16 d-block">
|
||||
<div>
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Multi Company</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
<ul class="list-unstyled" style="font-size:17px;border-radius: 9px;padding-top: 4px;">
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">multi company allow to use public holiday.</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="multi_company.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="col-md-12 pl-0 pr-0 mx-auto mb16 d-block">
|
||||
<div>
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Company Public Holiday</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
<ul class="list-unstyled" style="font-size:17px;border-radius: 9px;padding-top: 4px;">
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Navigate to Leaves and click on Company Public Holiday menu.</span>
|
||||
</li>
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Create holiday list.</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="create_holiday.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="">
|
||||
<div class="">
|
||||
<div class="p-3 mt32" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Global Time Off</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
<ul class="list-unstyled" style="font-size:17px;border-radius: 9px;padding-top: 4px;">
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Navigate to technical menu and click on working times.</span>
|
||||
</li>
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Now, open global time off tab, public holiday auto update in list.</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="globel_leave.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="mt32">
|
||||
<div class="">
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Holiday list send by email</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
<ul class="list-unstyled" style="font-size:17px;border-radius: 9px;padding-top: 4px;">
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Send holiday list to all employees, click on send by email button.</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="click_email.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="mt32">
|
||||
<div class="">
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Holiday list</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="mail.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="mt32">
|
||||
<div class="">
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Update calendar</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
<ul class="list-unstyled" style="font-size:17px;border-radius: 9px;padding-top: 4px;">
|
||||
<li class="d-flex align-items-baseline mb-2">
|
||||
<i class="fa fa-circle" style="font-size:15px;color: #113246;padding-right: 9px;"></i><span style="padding-bottom: 3px;">Now, update holiday list in calendar by the clicking on Update Holiday Calendar button.</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="upcal_button.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<br />
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="calendar.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="mt32">
|
||||
<div class="">
|
||||
<div class="p-3" style="border: 1px solid;border-color: #dee2e6;background-color: #f8f9fa;">
|
||||
<span class="oe_slogan" style="color:#113246;font-size: 35px;font-weight: 800;">Public Holiday Report</span>
|
||||
<p style="border-bottom: 2px solid black;width:1cm;border-color:red;display: inline-flex;margin-left: 14px;position: relative;vertical-align: -webkit-baseline-middle;"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="get_holiday_report.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
<br />
|
||||
<section>
|
||||
<div class="p-3 p-sm-5 mt32" style="border: 1px solid #dee2e6;background-color: #f8f9fa;">
|
||||
<img src="holiday_report.png" style="width: 99%;margin-bottom:inherit;" class="oe_screenshot oe_centered">
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="px-3 pt-1 tab-pane fade" id="pills-release" role="tabpanel" aria-labelledby="pills-release-tab"><br>
|
||||
<section class="card mb-5" style="border:none">
|
||||
<div class="card-body pb-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="pr-0 pl-0 col-sm-12 col-md-8 col-xl-6 mx-auto">
|
||||
<span style="background-color:#203038;width: 4px;height: 100%;height: 99%;"></span>
|
||||
<div class="pb-3">
|
||||
<div class="" style="background-color: #05386e;padding: 9px;text-align: center;color:#fff;border-radius: 10px 10px 10px 10px;">
|
||||
<span style="font-size:20px; font-weight:700; display:block">22nd</span>
|
||||
<span style="display:block;font-size: 1.0em;text-transform:uppercase;">January, 2020 </span>
|
||||
</div>
|
||||
<div style="padding:1.5rem 2rem; border-top-right-radius:10px; background-color:#fff; border-bottom-right-radius:10px">
|
||||
<div class="timeline__content">
|
||||
<h3 style="font-weight:400;margin-bottom: 6px;">Latest Release 1.0</h3>
|
||||
<p style="color:#666; margin-bottom:10px"><span style="font-size:17px"><i class="fa fa-hand-o-right"></i>
|
||||
First version to release.</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="px-3 pt-1 tab-pane fade" id="pills-demo" role="tabpanel" aria-labelledby="pills-demo-tab"><br>
|
||||
<h2 style="font-weight:600;font-size: 2.5rem;color: #06386e;margin-top: 4px;margin-bottom: 31px;text-align: center;">Here See Demo Video:-</h2>
|
||||
<div class="oe_centeralign oe_websiteonly" style="margin-bottom: 30px;">
|
||||
<a href="https://www.youtube.com/watch?v=vx1Vdo6kVTc&feature=youtu.be" target="new" style="background-color:#06416b;font-size: 20px;">Demo Video</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-3 pt-1 tab-pane fade" id="pills-faq" role="tabpanel" aria-labelledby="pills-faq-tab"><br>
|
||||
<section>
|
||||
<div class="card-body p-0">
|
||||
<div class="text-center pb-5">
|
||||
<h2 style="color: #06386e;font-weight:600;font-size: 2.5rem;">Frequently Asked Question:-</h2>
|
||||
</div>
|
||||
<div class="s_faq mx-2 mx-md-5 mb-5" style="background-color: #fefefe;">
|
||||
<div id="accordion">
|
||||
<div class="card shadow mb-4" style="border:none">
|
||||
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none;">
|
||||
<div class="pr-5" style="font-size: 1.4rem;font-weight:600;color: #05376d;">Is this app compatible with Odoo Enterprise?
|
||||
</div>
|
||||
<a class="card-link collapsed" data-toggle="collapse" href="#faqOne" style="width:48px;height:40px;line-height:11px;background-color: rgba(5, 55, 109, 0);border-radius:2px;padding:0;font-size: 23px;" aria-expanded="false"></a>
|
||||
</div>
|
||||
<div id="faqOne" class="collapse" data-parent="#accordion" style="">
|
||||
<div class="card-body pt-0 pl-4">
|
||||
<div style="font-size: 1.2rem;color: #0b3b52a1;">
|
||||
Yes, our app works with Odoo Enterprise as well as Community.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="s_faq mx-2 mx-md-5 mb-5" style="background-color: #fefefe;">
|
||||
<div id="accordion">
|
||||
<div class="card shadow mb-4" style="border:none">
|
||||
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none;">
|
||||
<div class="pr-5" style="font-size: 1.4rem;font-weight:600;color: #05376d;">Is this app compatible with Windows or Ubuntu?
|
||||
</div>
|
||||
<a class="card-link collapsed" data-toggle="collapse" href="#faqOne" style="width:48px;height:40px;line-height:11px;background-color: rgba(5, 55, 109, 0);border-radius:2px;padding:0;font-size: 23px;" aria-expanded="false"></a>
|
||||
</div>
|
||||
<div id="faqOne" class="collapse" data-parent="#accordion" style="">
|
||||
<div class="card-body pt-0 pl-4">
|
||||
<div style="font-size: 1.2rem;color: #0b3b52a1;">
|
||||
Yes, our app works with Windows or Ununtu operating system.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="s_faq mx-2 mx-md-5 mb-5" style="background-color: #fefefe;">
|
||||
<div id="accordion">
|
||||
<div class="card shadow mb-4" style="border:none">
|
||||
<div class="card-header py-4 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none;">
|
||||
<div class="pr-5" style="font-size: 1.4rem;font-weight:600;color: #05376d;">Is this app required any additional configuration?
|
||||
</div>
|
||||
<a class="card-link collapsed" data-toggle="collapse" href="#faqOne" style="width:48px;height:40px;line-height:11px;background-color: rgba(5, 55, 109, 0);border-radius:2px;padding:0;font-size: 23px;" aria-expanded="false"></a>
|
||||
</div>
|
||||
<div id="faqOne" class="collapse" data-parent="#accordion" style="">
|
||||
<div class="card-body pt-0 pl-4">
|
||||
<div style="font-size: 1.2rem;color: #0b3b52a1;">
|
||||
No, install module and use this features.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="pt32" style="background-color: #f8f9fa;margin-bottom: 35px;">
|
||||
<div class="text-center mx-auto" style="border:1px solid;background-color: #9e9c9c4f;height: 69px;width: 318px;">
|
||||
<h2 class="mb-0 mt-2" style="font-size: 20px;font-weight: 900;border: 1px solid;margin-left: 8px;background-color: #06386e;color: white;padding: 12px;width: 300px;">FREE 3 MONTHS SUPPORT</h2>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="text-center">
|
||||
<p style="font-size: 21px;color: #686868;font-weight: 300;" class="px-sm-4 p-2 pt-4"> Kanak Infosystems will provide free 3 months support for bug fixes, any doubts or queries, installation, configuration support or any types of issues related to this module.<br></p>
|
||||
<p class="mx-auto" style="border-bottom:1px solid black;width:4cm;border-color:#dee2e6;"></p>
|
||||
<span style="color: #113246;font-size: 20px;font-weight: 600;">NOTE:</span> <span style="color: #686868;font-size: 21px;font-weight: 300;">This module do not required extra configuration.</span>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="row mx-0 justify-content-sm-between justify-content-center" style="margin-top: 23px;">
|
||||
<div class="mb-sm-0 mb-3 ml-0 ml-sm-5">
|
||||
<i class="fa fa-envelope-o" style="margin-right: 10px;color:#05386e;font-size: 22px;"></i>
|
||||
<span style="font-size: 20px;color: #686868;">sales@kanakinfosystems.com</span>
|
||||
</div>
|
||||
<div class="d-sm-block">
|
||||
<i class="fa fa-skype" style="margin-right: 10px;color: #3a96cc;font-size: 27px;"></i>
|
||||
<span style="font-size: 20px;color: #686868;">kanakinfosystems</span>
|
||||
</div>
|
||||
<div style="margin-right: 120px;">
|
||||
<i class="fa fa-whatsapp" style="margin-right:10px;color: #29f311;font-size: 30px;"></i>
|
||||
<span style="font-size: 20px;color: #686868;">+91 9818108884 </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="d-none d-sm-block" style="text-align:center;">
|
||||
<div style="width: 450px;height: 450px;background-color: #FFFFFF;border-radius: 50%;border: 1px dotted grey;display: inline-block; margin-top: 65px;margin-bottom: 65px;display: inline-flex;">
|
||||
<div style="display:inline-block;margin-left: 165px;margin-top:-65px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/payment_atom/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #f98133;">
|
||||
<div>
|
||||
<img src="Atom-Payment-Gateway.png" width="46px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Atom Payment Gateway</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: -337px;margin-top:46px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/10.0/payment_authorize_cim_kanak/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #7788fa;">
|
||||
<div>
|
||||
<img src="Authorize-Payment-gateway---CM.png" width="48px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Authorize Payment Gateway - CIM</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: -172px;margin-top:254px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/12.0/email_paypal_payment/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #57c96a;">
|
||||
<div>
|
||||
<img src="Email-paypal.png" width="58px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Email Paypal Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: 54px;margin-top:356px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/paypal_adaptive_payment/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #1e72be;">
|
||||
<div>
|
||||
<img src="Paypal-Adaptive-Payment.png" width="61px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">PayPal Adaptive Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: 37px;margin-top:253px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/payment_paytrail/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #ffcd58;">
|
||||
<div>
|
||||
<img src="Paytrail-Payment-Acquirer.png" width="68px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Paytrail Payment Acquirer</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: -150px;margin-top:46px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/12.0/payment_payvalida/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #7fca5a;">
|
||||
<div>
|
||||
<img src="Payvalida-Payment.png" width="64px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Payvalida Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
<div style="display:inline-block;margin-left: -357px;margin-top: 146px;">
|
||||
<div style="width: 184px;">
|
||||
<span style="color: #03426a;font-weight: bold;font-size: 26px;text-align: center;display: inline-block;line-height: 33px;">SUGGESTED APPS</span>
|
||||
<i class="fa fa-arrow-down" style="display: block;text-align: center;color: #3ca89b;height: 40px;font-size: 24px;margin-top: 4px;"></i>
|
||||
<a href="https://apps.odoo.com/apps/modules/browse?author=Kanak%20Infosystems%20LLP." target="_blank" style="padding: 10px 46px;color: white;background-color: #3ca89b;font-size: 20px;">App Link</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="d-block d-sm-none" style="text-align:center;">
|
||||
<div class="row mt16">
|
||||
<div class="col-12 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<div style="width: 184px;">
|
||||
<span style="color: #03426a;font-weight: bold;font-size: 26px;text-align: center;display: inline-block;line-height: 33px;">SUGGESTED APPS</span>
|
||||
<i class="fa fa-arrow-down" style="display: block;text-align: center;color: #3ca89b;height: 40px;font-size: 24px;margin-top: 4px;"></i>
|
||||
<a href="https://apps.odoo.com/apps/modules/browse?author=Kanak%20Infosystems%20LLP." target="_blank" style="padding: 10px 46px;color: white;background-color: #3ca89b;font-size: 20px;">App Link</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt32">
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/payment_atom/" target="_blank" style="width:150px;height: 150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #f98133;">
|
||||
<div>
|
||||
<img src="Atom-Payment-Gateway.png" width="43px">
|
||||
</div>
|
||||
<span style="font-size: 13px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Atom Payment Gateway</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/10.0/payment_authorize_cim_kanak/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #7788fa;">
|
||||
<div>
|
||||
<img src="Authorize-Payment-gateway---CM.png" width="48px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Authorize Payment Gateway - CIM</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt32">
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/12.0/email_paypal_payment/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #57c96a;">
|
||||
<div>
|
||||
<img src="Email-paypal.png" width="58px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Email Paypal Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/paypal_adaptive_payment/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #1e72be;">
|
||||
<div>
|
||||
<img src="Paypal-Adaptive-Payment.png" width="61px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">PayPal Adaptive Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/13.0/payment_paytrail/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #ffcd58;">
|
||||
<div>
|
||||
<img src="Paytrail-Payment-Acquirer.png" width="68px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Paytrail Payment Acquirer</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 mx-auto">
|
||||
<div style="display:inline-block;">
|
||||
<a href="https://apps.odoo.com/apps/modules/12.0/payment_payvalida/" target="_blank" style="width:150px;height:150px;display:inline-block;border-radius:50%;text-align:center;padding:30px;background-color: #7fca5a;">
|
||||
<div>
|
||||
<img src="Payvalida-Payment.png" width="64px">
|
||||
</div>
|
||||
<span style="font-size: 14px;color: white;padding-top: 10px;display: block;font-weight: normal;line-height: 16px;">Payvalida Payment</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section style="background-color:white">
|
||||
<div class="row pb-sm-1 px-4 text-center">
|
||||
<div class="col-12">
|
||||
<h2 class="text-center my-3 mx-auto" style="font-weight:800;color:#05386e;font-size:xx-large;border:1px solid #dee2e6;border-radius:5px;background-color:#f8f9fa;padding:10px;width: 310px !important;">OUR SERVICES</h2>
|
||||
</div>
|
||||
<div style="margin-bottom:20px;" class="col-md-3">
|
||||
<div class="text-center" style="min-height: 90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Hire-Odoo-Developer.jpg" alt="Developer" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px;font-weight:400;margin-top: -37px;margin-left: 30px;">Hire Odoo Developer</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Customization.jpg" alt="custom" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Customization</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Development.jpg" alt="Develop" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Development</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Installation.jpg" alt="Install" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Installation</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Integration.jpg" alt="Integ" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Integration</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Resources.jpg" alt="Resource" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Resources</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Themes.jpg" alt="Themes" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;margin-top: -37px;margin-left: 30px;">Odoo Themes</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="margin-bottom:20px">
|
||||
<div class="text-center" style="min-height:90px;border-style: none;display: inline-block;box-shadow: none !important;">
|
||||
<div class="pt-4">
|
||||
<img src="Odoo-Training.jpg" alt="Training" style="width: 273px;">
|
||||
</div>
|
||||
<div>
|
||||
<h5 class="card-title text-white" style="font-size:19px; font-weight:400;;margin-top: -37px;margin-left: 30px;">Odoo Training</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 3.4 MiB |
After Width: | Height: | Size: 3.4 MiB |
|
@ -0,0 +1,84 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="resource_calendar_form_cust" model="ir.ui.view">
|
||||
<field name="name">resource.calendar.form.cust</field>
|
||||
<field name="model">resource.calendar</field>
|
||||
<field name="inherit_id" ref="resource.resource_calendar_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='global_leave_ids']//field[@name='date_to']" position="after">
|
||||
<field name="company_res_calendar_leaves_id" invisible="1"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_company_resource_calendar_search" model="ir.ui.view">
|
||||
<field name="name">company.resource.calendar.search</field>
|
||||
<field name="model">company.resource.calendar</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Company Public Holiday">
|
||||
<field name="name" string="Resource"/>
|
||||
<field name="company_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_company_resource_calendar_form" model="ir.ui.view">
|
||||
<field name="name">company.resource.calendar.form</field>
|
||||
<field name="model">company.resource.calendar</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Company Public Holiday">
|
||||
<header>
|
||||
<button name="action_public_holiday_send" string="Send by Email" type="object" class="btn-primary"/>
|
||||
<!--<button name="action_holiday_update_calendar" string="Update Holiday Calendar" type="object" class="btn-primary"/>-->
|
||||
<button name="action_holiday_update_timeoff_calendar" string="Update Holiday Calendar" type="object" class="btn-primary"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="year_list"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id" options="{'no_create': True}"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="company_resource_calendar" string="Resouce Calendar Holiday">
|
||||
<field name="company_global_leave_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_company_resource_calendar_tree" model="ir.ui.view">
|
||||
<field name="name">company.resource.calendar.tree</field>
|
||||
<field name="model">company.resource.calendar</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Company Public Holiday">
|
||||
<field name="name"/>
|
||||
<field name="company_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_company_resource_calendar" model="ir.actions.act_window">
|
||||
<field name="name">Company Public Holiday</field>
|
||||
<field name="res_model">company.resource.calendar</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<!-- MENU ITEMS -->
|
||||
<menuitem id="menu_comp_resource_config" name="Company Public Holiday" parent="hr_holidays.menu_hr_holidays_root" sequence="7"/>
|
||||
<menuitem id="menu_comp_resource" parent="menu_comp_resource_config" action="action_view_company_resource_calendar" sequence="1"/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
|
@ -224,3 +224,17 @@ class AccountAnalyticLine(models.Model):
|
|||
for rec in self:
|
||||
if rec.start_datetime:
|
||||
rec.date = rec.start_datetime.date()
|
||||
|
||||
@api.constrains('start_datetime', 'end_datetime', 'employee_id')
|
||||
def _check_date(self):
|
||||
for entry in self.filtered('employee_id'):
|
||||
domain = [
|
||||
('start_datetime', '<', entry.end_datetime),
|
||||
('end_datetime', '>', entry.start_datetime),
|
||||
('employee_id', '=', entry.employee_id.id),
|
||||
('id', '!=', entry.id),
|
||||
]
|
||||
entries = self.search_count(domain)
|
||||
if entries:
|
||||
raise ValidationError(
|
||||
_('You can not set 2 timesheet entries that overlaps on the same day for the same employee.'))
|
||||
|
|
|
@ -1,49 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="project_project_analytic_view_form" model="ir.ui.view">
|
||||
<field name="name">Project Analytic</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<!--<div name="button_box" position="inside">
|
||||
<button class="oe_stat_button" type="object" name="action_view_account_analytic_line" icon="fa-usd"
|
||||
attrs="{'invisible': [('allow_billable','=',False)]}" string="Cost/Revenue" widget="statinfo">
|
||||
</button>
|
||||
</div>-->
|
||||
<xpath expr="//field[@name='user_id']" position="replace">
|
||||
<field name="user_id" string="Project Manager" widget="many2one_avatar_user" required="0"
|
||||
attrs="{'readonly':[('active','=',False)]}" domain="[('share', '=', False)]"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='partner_id']" position="replace">
|
||||
<field name="partner_id" string="Client" required="0"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='settings']" position="after">
|
||||
<page string="Consultant Allocation"
|
||||
attrs="{'invisible':['|',('pricing_type','!=','employee_rate'),('project_type','!=','hours_in_consultant')]}">
|
||||
<field name="project_cons_hrs">
|
||||
<tree editable="top">
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="employee_id" options="{'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="percentage"/>
|
||||
<field name="budgeted_hours"/>
|
||||
<field name="actual_percentage"/>
|
||||
<field name="actual_hours"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='privacy_visibility']" position="before">
|
||||
<field name="tag_ids" widget="many2many_tags"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="inherit_project_project_view_form" model="ir.ui.view">
|
||||
<field name="name">project.project.form.inherit</field>
|
||||
<field name="model">project.project</field>
|
||||
|
@ -169,6 +126,48 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="project_project_analytic_view_form" model="ir.ui.view">
|
||||
<field name="name">Project Analytic</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<!--<div name="button_box" position="inside">
|
||||
<button class="oe_stat_button" type="object" name="action_view_account_analytic_line" icon="fa-usd"
|
||||
attrs="{'invisible': [('allow_billable','=',False)]}" string="Cost/Revenue" widget="statinfo">
|
||||
</button>
|
||||
</div>-->
|
||||
<xpath expr="//field[@name='user_id']" position="replace">
|
||||
<field name="user_id" string="Project Manager" widget="many2one_avatar_user" required="0"
|
||||
attrs="{'readonly':[('active','=',False)]}" domain="[('share', '=', False)]"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='partner_id']" position="replace">
|
||||
<field name="partner_id" string="Client" required="0"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='settings']" position="after">
|
||||
<page string="Consultant Allocation"
|
||||
attrs="{'invisible':['|',('pricing_type','!=','employee_rate'),('project_type','!=','hours_in_consultant')]}">
|
||||
<field name="project_cons_hrs">
|
||||
<tree editable="top">
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="employee_id" options="{'no_create_edit': True, 'no_quick_create': True}"/>
|
||||
<field name="start_date"/>
|
||||
<field name="end_date"/>
|
||||
<field name="percentage"/>
|
||||
<field name="budgeted_hours"/>
|
||||
<field name="actual_percentage"/>
|
||||
<field name="actual_hours"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='privacy_visibility']" position="before">
|
||||
<field name="tag_ids" widget="many2many_tags"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="inherit_view_project_tree" model="ir.ui.view">
|
||||
<field name="name">project.project.tree.inherit</field>
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import controllers
|
||||
from . import models
|
|
@ -0,0 +1,35 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': "cor_leave",
|
||||
|
||||
'summary': """
|
||||
Short (1 phrase/line) summary of the module's purpose, used as
|
||||
subtitle on modules listing or apps.openerp.com""",
|
||||
|
||||
'description': """
|
||||
Long description of module's purpose
|
||||
""",
|
||||
|
||||
'author': "My Company",
|
||||
'website': "http://www.yourcompany.com",
|
||||
|
||||
# Categories can be used to filter modules in modules listing
|
||||
# Check https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/data/ir_module_category_data.xml
|
||||
# for the full list
|
||||
'category': 'Uncategorized',
|
||||
'version': '0.1',
|
||||
|
||||
# any module necessary for this one to work correctly
|
||||
'depends': ['base', 'cor_custom'],
|
||||
|
||||
# always loaded
|
||||
'data': [
|
||||
# 'security/ir.model.access.csv',
|
||||
'views/views.xml',
|
||||
'views/templates.xml',
|
||||
],
|
||||
# only loaded in demonstration mode
|
||||
'demo': [
|
||||
'demo/demo.xml',
|
||||
],
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import controllers
|
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# from odoo import http
|
||||
|
||||
|
||||
# class CorLeave(http.Controller):
|
||||
# @http.route('/cor_leave/cor_leave/', auth='public')
|
||||
# def index(self, **kw):
|
||||
# return "Hello, world"
|
||||
|
||||
# @http.route('/cor_leave/cor_leave/objects/', auth='public')
|
||||
# def list(self, **kw):
|
||||
# return http.request.render('cor_leave.listing', {
|
||||
# 'root': '/cor_leave/cor_leave',
|
||||
# 'objects': http.request.env['cor_leave.cor_leave'].search([]),
|
||||
# })
|
||||
|
||||
# @http.route('/cor_leave/cor_leave/objects/<model("cor_leave.cor_leave"):obj>/', auth='public')
|
||||
# def object(self, obj, **kw):
|
||||
# return http.request.render('cor_leave.object', {
|
||||
# 'object': obj
|
||||
# })
|
|
@ -0,0 +1,30 @@
|
|||
<odoo>
|
||||
<data>
|
||||
<!--
|
||||
<record id="object0" model="cor_leave.cor_leave">
|
||||
<field name="name">Object 0</field>
|
||||
<field name="value">0</field>
|
||||
</record>
|
||||
|
||||
<record id="object1" model="cor_leave.cor_leave">
|
||||
<field name="name">Object 1</field>
|
||||
<field name="value">10</field>
|
||||
</record>
|
||||
|
||||
<record id="object2" model="cor_leave.cor_leave">
|
||||
<field name="name">Object 2</field>
|
||||
<field name="value">20</field>
|
||||
</record>
|
||||
|
||||
<record id="object3" model="cor_leave.cor_leave">
|
||||
<field name="name">Object 3</field>
|
||||
<field name="value">30</field>
|
||||
</record>
|
||||
|
||||
<record id="object4" model="cor_leave.cor_leave">
|
||||
<field name="name">Object 4</field>
|
||||
<field name="value">40</field>
|
||||
</record>
|
||||
-->
|
||||
</data>
|
||||
</odoo>
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
from . import hr_holidays
|
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class Holidays(models.Model):
|
||||
_inherit = "hr.leave"
|
||||
|
||||
timesheet_ids = fields.One2many('account.analytic.line', 'holiday_id', string="Analytic Lines")
|
||||
|
||||
def _timesheet_create_lines(self):
|
||||
self.ensure_one()
|
||||
vals_list = []
|
||||
work_hours_data = self.employee_id.list_work_time_per_day(
|
||||
self.date_from,
|
||||
self.date_to,
|
||||
)
|
||||
print('hhhhhhhhhh')
|
||||
for index, (day_date, work_hours_count) in enumerate(work_hours_data):
|
||||
vals_list.append(self._timesheet_prepare_line_values(index, work_hours_data, day_date, work_hours_count))
|
||||
timesheets = self.env['account.analytic.line'].sudo().create(vals_list)
|
||||
print('ggggggggggg', timesheets)
|
||||
return timesheets
|
||||
|
||||
def _timesheet_prepare_line_values(self, index, work_hours_data, day_date, work_hours_count):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': "%s (%s/%s)" % (self.holiday_status_id.name or '', index + 1, len(work_hours_data)),
|
||||
'project_id': self.holiday_status_id.timesheet_project_id.id,
|
||||
'task_id': self.holiday_status_id.timesheet_task_id.id,
|
||||
'account_id': self.holiday_status_id.timesheet_project_id.analytic_account_id.id,
|
||||
'unit_amount': work_hours_count,
|
||||
'user_id': self.employee_id.user_id.id,
|
||||
'date': day_date,
|
||||
'holiday_id': self.id,
|
||||
'employee_id': self.employee_id.id,
|
||||
'company_id': self.holiday_status_id.timesheet_task_id.company_id.id or self.holiday_status_id.timesheet_project_id.company_id.id,
|
||||
#####
|
||||
'start_datetime': self.date_from,
|
||||
'end_datetime': self.date_to
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# from odoo import models, fields, api
|
||||
|
||||
|
||||
# class cor_leave(models.Model):
|
||||
# _name = 'cor_leave.cor_leave'
|
||||
# _description = 'cor_leave.cor_leave'
|
||||
|
||||
# name = fields.Char()
|
||||
# value = fields.Integer()
|
||||
# value2 = fields.Float(compute="_value_pc", store=True)
|
||||
# description = fields.Text()
|
||||
#
|
||||
# @api.depends('value')
|
||||
# def _value_pc(self):
|
||||
# for record in self:
|
||||
# record.value2 = float(record.value) / 100
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_cor_leave_cor_leave,cor_leave.cor_leave,model_cor_leave_cor_leave,base.group_user,1,1,1,1
|
|
|
@ -0,0 +1,24 @@
|
|||
<odoo>
|
||||
<data>
|
||||
<!--
|
||||
<template id="listing">
|
||||
<ul>
|
||||
<li t-foreach="objects" t-as="object">
|
||||
<a t-attf-href="#{ root }/objects/#{ object.id }">
|
||||
<t t-esc="object.display_name"/>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</template>
|
||||
<template id="object">
|
||||
<h1><t t-esc="object.display_name"/></h1>
|
||||
<dl>
|
||||
<t t-foreach="object._fields" t-as="field">
|
||||
<dt><t t-esc="field"/></dt>
|
||||
<dd><t t-esc="object[field]"/></dd>
|
||||
</t>
|
||||
</dl>
|
||||
</template>
|
||||
-->
|
||||
</data>
|
||||
</odoo>
|
|
@ -0,0 +1,60 @@
|
|||
<odoo>
|
||||
<data>
|
||||
<!-- explicit list view definition -->
|
||||
<!--
|
||||
<record model="ir.ui.view" id="cor_leave.list">
|
||||
<field name="name">cor_leave list</field>
|
||||
<field name="model">cor_leave.cor_leave</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="value"/>
|
||||
<field name="value2"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
-->
|
||||
|
||||
<!-- actions opening views on models -->
|
||||
<!--
|
||||
<record model="ir.actions.act_window" id="cor_leave.action_window">
|
||||
<field name="name">cor_leave window</field>
|
||||
<field name="res_model">cor_leave.cor_leave</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
-->
|
||||
|
||||
<!-- server action to the one above -->
|
||||
<!--
|
||||
<record model="ir.actions.server" id="cor_leave.action_server">
|
||||
<field name="name">cor_leave server</field>
|
||||
<field name="model_id" ref="model_cor_leave_cor_leave"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
action = {
|
||||
"type": "ir.actions.act_window",
|
||||
"view_mode": "tree,form",
|
||||
"res_model": model._name,
|
||||
}
|
||||
</field>
|
||||
</record>
|
||||
-->
|
||||
|
||||
<!-- Top menu item -->
|
||||
<!--
|
||||
<menuitem name="cor_leave" id="cor_leave.menu_root"/>
|
||||
-->
|
||||
<!-- menu categories -->
|
||||
<!--
|
||||
<menuitem name="Menu 1" id="cor_leave.menu_1" parent="cor_leave.menu_root"/>
|
||||
<menuitem name="Menu 2" id="cor_leave.menu_2" parent="cor_leave.menu_root"/>
|
||||
-->
|
||||
<!-- actions -->
|
||||
<!--
|
||||
<menuitem name="List" id="cor_leave.menu_1_list" parent="cor_leave.menu_1"
|
||||
action="cor_leave.action_window"/>
|
||||
<menuitem name="Server to list" id="cor_leave" parent="cor_leave.menu_2"
|
||||
action="cor_leave.action_server"/>
|
||||
-->
|
||||
</data>
|
||||
</odoo>
|